{"version":3,"file":"static/js/main.e617e5e7.js","mappings":";6BAAA,IAAIA,EAAM,CACT,KAAM,CACL,OAED,uBAAwB,CACvB,OAED,0BAA2B,CAC1B,OAED,yBAA0B,CACzB,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,uBAAwB,CACvB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,gCAAiC,CAChC,MACA,MAED,mCAAoC,CACnC,MACA,MAED,oBAAqB,CACpB,OAED,uBAAwB,CACvB,OAED,0BAA2B,CAC1B,OAED,6BAA8B,CAC7B,OAED,kBAAmB,CAClB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,2BAA4B,CAC3B,MACA,IAED,8BAA+B,CAC9B,MACA,IAED,6BAA8B,CAC7B,MACA,MAED,gCAAiC,CAChC,MACA,MAED,gCAAiC,CAChC,OAED,mCAAoC,CACnC,OAED,gCAAiC,CAChC,OAED,mCAAoC,CACnC,OAED,oBAAqB,CACpB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,kCAAmC,CAClC,OAED,qCAAsC,CACrC,OAED,qBAAsB,CACrB,OAED,wBAAyB,CACxB,OAED,UAAW,CACV,OAED,mBAAoB,CACnB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,mBAAoB,CACnB,OAED,sBAAuB,CACtB,OAED,mBAAoB,CACnB,OAED,sBAAuB,CACtB,OAED,mBAAoB,CACnB,OAED,sBAAuB,CACtB,OAED,mBAAoB,CACnB,OAED,sBAAuB,CACtB,OAED,mBAAoB,CACnB,OAED,sBAAuB,CACtB,OAED,mBAAoB,CACnB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,mBAAoB,CACnB,OAED,sBAAuB,CACtB,OAED,aAAc,CACb,OAED,yBAA0B,CACzB,MACA,KAED,4BAA6B,CAC5B,MACA,KAED,yBAA0B,CACzB,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,6BAA8B,CAC7B,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,oBAAqB,CACpB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,6BAA8B,CAC7B,MACA,MAED,uBAAwB,CACvB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,2BAA4B,CAC3B,MACA,KAED,8BAA+B,CAC9B,MACA,KAED,uBAAwB,CACvB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,qBAAsB,CACrB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,mBAAoB,CACnB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,8BAA+B,CAC9B,MACA,KACA,MAED,iCAAkC,CACjC,MACA,KACA,MAED,yBAA0B,CACzB,MACA,KACA,MAED,4BAA6B,CAC5B,MACA,KACA,MAED,oBAAqB,CACpB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,gCAAiC,CAChC,KACA,MAED,mCAAoC,CACnC,KACA,MAED,oBAAqB,CACpB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,+BAAgC,CAC/B,MACA,MAED,qBAAsB,CACrB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,oBAAqB,CACpB,MACA,KAED,uBAAwB,CACvB,MACA,KAED,oBAAqB,CACpB,MACA,KAED,uBAAwB,CACvB,MACA,KAED,qCAAsC,CACrC,MACA,KAED,wCAAyC,CACxC,MACA,KAED,8BAA+B,CAC9B,MACA,MAED,iCAAkC,CACjC,MACA,MAED,sBAAuB,CACtB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,sBAAuB,CACtB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,0BAA2B,CAC1B,MACA,KAED,6BAA8B,CAC7B,MACA,KAED,wBAAyB,CACxB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,+BAAgC,CAC/B,MACA,MAED,sBAAuB,CACtB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,wBAAyB,CACxB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,uBAAwB,CACvB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,sBAAuB,CACtB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,yBAA0B,CACzB,MACA,KAED,4BAA6B,CAC5B,MACA,KAED,wBAAyB,CACxB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,oBAAqB,CACpB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,mBAAoB,CACnB,KACA,MAED,sBAAuB,CACtB,KACA,MAED,uBAAwB,CACvB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,oBAAqB,CACpB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,UAAW,CACV,MACA,MAED,0BAA2B,CAC1B,OAED,6BAA8B,CAC7B,OAED,aAAc,CACb,MACA,MAED,4BAA6B,CAC5B,OAED,+BAAgC,CAC/B,OAED,sBAAuB,CACtB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,sBAAuB,CACtB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,iCAAkC,CACjC,MACA,MAED,oCAAqC,CACpC,MACA,MAED,WAAY,CACX,MACA,MAED,cAAe,CACd,MACA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ACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,SAAY,WACpC,WAAY,WAAY,SAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACp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,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM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","sources":["../node_modules/@ionic/core/dist/esm-es5|lazy|/^/.//.*$/|groupOptions: {}|namespace object","../node_modules/@ionic/core/node_modules/@stencil/core/internal/client|lazy|/^/.//.*/.entry/.js.*$/|include: //.entry/.js$/|exclude: //.system/.entry/.js$/|groupOptions: {}|namespace object","../node_modules/@ionic/react/node_modules/@stencil/core/internal/client|lazy|/^/.//.*/.entry/.js.*$/|include: //.entry/.js$/|exclude: //.system/.entry/.js$/|groupOptions: {}|namespace object","api/index.ts","components/Autocomplete.tsx","utils/hooks/useRecentAddressSearch.ts","components/BackendSyncLoader/LoaderComponent.tsx","components/BackendSyncLoader/MapsWrapper.tsx","components/BestPlans/CompareToolbar.tsx","components/CarrierDisplay/CarrierDisplay.tsx","components/CloseButton/CloseButton.tsx","components/Content.tsx","components/CoverageMap/BottomTray/MinimapEventController.ts","components/CoverageMap/BottomTray/useSwipeGesture.ts","components/CoverageMap/LegendModal.tsx","components/CoverageMap/address-book-button/AddressBookButton.tsx","components/CoverageMap/TopBar/TopBar.tsx","components/CoverageMap/BottomTray/CarrierCoverageList.tsx","components/CoverageMap/BottomTray/useMapOnboardingStore.ts","components/CoverageMap/BottomTray/useBottomTrayGesture.ts","components/CoverageMap/BottomTray/HandTutorial.tsx","components/CoverageMap/BottomTray/Minimap.tsx","components/CoverageMap/BottomTray/BottomTray.tsx","utils/hooks/useNavigateAway.ts","components/CoverageMap/side-bar.tsx","components/CoverageMap/CoverageMapComponent/useMapStateByParams.ts","components/CoverageMap/CoverageMapComponent/CoverageMap.tsx","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/env-utils/assert.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/env-utils/version.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/env-utils/globals.ts","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/node/worker_threads-browser.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-utils/get-loadable-worker-url.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-utils/get-transfer-list.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-thread.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-job.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-pool.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-farm.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-api/get-worker-url.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/worker-loader-utils/parse-with-worker.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/env-utils/assert.ts","../node_modules/@loaders.gl/core/src/lib/loader-utils/normalize-loader.ts","../node_modules/@loaders.gl/core/src/javascript-utils/is-type.ts","../node_modules/@loaders.gl/core/node_modules/@probe.gl/env/src/lib/is-browser.ts","../node_modules/@loaders.gl/core/node_modules/@probe.gl/env/src/lib/is-electron.ts","../node_modules/@loaders.gl/core/node_modules/@probe.gl/env/src/utils/globals.ts","../node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/local-storage.ts","../node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/formatters.ts","../node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/color.ts","../node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/assert.ts","../node_modules/@loaders.gl/core/node_modules/@probe.gl/env/src/lib/globals.ts","../node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/hi-res-timestamp.ts","../node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/log.ts","../node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/autobind.ts","../node_modules/@loaders.gl/core/src/lib/loader-utils/loggers.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/env-utils/globals.ts","../node_modules/@loaders.gl/core/src/lib/loader-utils/option-defaults.ts","../node_modules/@loaders.gl/core/src/lib/loader-utils/option-utils.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/iterators/async-iteration.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/binary-utils/array-buffer-utils.ts","../node_modules/@loaders.gl/core/src/iterators/make-iterator/make-string-iterator.ts","../node_modules/@loaders.gl/core/src/iterators/make-iterator/make-array-buffer-iterator.ts","../node_modules/@loaders.gl/core/src/iterators/make-iterator/make-blob-iterator.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/binary-utils/memory-conversion-utils.ts","../node_modules/@loaders.gl/core/src/iterators/make-iterator/make-stream-iterator.ts","../node_modules/@loaders.gl/core/src/iterators/make-iterator/make-iterator.ts","../node_modules/@loaders.gl/core/src/lib/utils/mime-type-utils.ts","../node_modules/@loaders.gl/core/src/lib/utils/url-utils.ts","../node_modules/@loaders.gl/core/src/lib/utils/resource-utils.ts","../node_modules/@loaders.gl/core/src/lib/utils/response-utils.ts","../node_modules/@loaders.gl/core/src/lib/loader-utils/get-data.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/path-utils/file-aliases.ts","../node_modules/@loaders.gl/core/src/lib/fetch/fetch-file.ts","../node_modules/@loaders.gl/core/src/lib/loader-utils/get-fetch-function.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/path-utils/path.ts","../node_modules/@loaders.gl/core/src/lib/loader-utils/loader-context.ts","../node_modules/@loaders.gl/core/src/lib/utils/log.ts","../node_modules/@loaders.gl/core/src/lib/api/register-loaders.ts","../node_modules/@loaders.gl/core/src/lib/api/select-loader.ts","../node_modules/@loaders.gl/core/src/lib/api/parse.ts","../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-api/validate-worker-version.ts","../node_modules/@loaders.gl/gis/src/lib/binary-to-geojson.ts","../node_modules/@math.gl/polygon/src/polygon-utils.ts","../node_modules/@math.gl/polygon/src/earcut.ts","../node_modules/@math.gl/polygon/src/lineclip.ts","../node_modules/@math.gl/polygon/src/utils.ts","../node_modules/@math.gl/polygon/src/cut-by-grid.ts","../node_modules/@math.gl/polygon/src/cut-by-mercator-bounds.ts","../node_modules/@loaders.gl/gis/src/lib/flat-geojson-to-binary.ts","../node_modules/@loaders.gl/mvt/src/helpers/mapbox-util-functions.ts","../node_modules/@loaders.gl/mvt/src/lib/mapbox-vector-tile/vector-tile-feature.ts","../node_modules/@loaders.gl/mvt/src/lib/mapbox-vector-tile/vector-tile-layer.ts","../node_modules/@loaders.gl/mvt/src/lib/mapbox-vector-tile/vector-tile.ts","../node_modules/@loaders.gl/mvt/src/helpers/binary-util-functions.ts","../node_modules/@loaders.gl/mvt/src/lib/binary-vector-tile/vector-tile-feature.ts","../node_modules/@loaders.gl/mvt/src/lib/binary-vector-tile/vector-tile-layer.ts","../node_modules/@loaders.gl/mvt/src/lib/binary-vector-tile/vector-tile.ts","../node_modules/@loaders.gl/mvt/src/lib/parse-mvt.ts","../node_modules/@loaders.gl/mvt/src/mvt-loader.ts","../node_modules/@probe.gl/env/src/lib/is-electron.ts","../node_modules/@probe.gl/env/src/lib/is-browser.ts","../node_modules/@probe.gl/env/src/utils/globals.ts","../node_modules/@probe.gl/log/src/utils/local-storage.ts","../node_modules/@probe.gl/log/src/utils/formatters.ts","../node_modules/@probe.gl/log/src/utils/color.ts","../node_modules/@probe.gl/log/src/utils/assert.ts","../node_modules/@probe.gl/env/src/lib/globals.ts","../node_modules/@probe.gl/log/src/utils/hi-res-timestamp.ts","../node_modules/@probe.gl/log/src/log.ts","../node_modules/@probe.gl/log/src/utils/autobind.ts","../node_modules/@luma.gl/gltools/src/utils/log.js","../node_modules/@luma.gl/gltools/src/utils/assert.js","../node_modules/@luma.gl/gltools/src/utils/webgl-checks.js","../node_modules/@luma.gl/gltools/src/polyfill/polyfill-vertex-array-object.js","../node_modules/@luma.gl/gltools/src/polyfill/get-parameter-polyfill.js","../node_modules/@luma.gl/gltools/src/polyfill/polyfill-table.js","../node_modules/@luma.gl/gltools/src/polyfill/polyfill-context.js","../node_modules/@luma.gl/gltools/src/state-tracker/webgl-parameter-tables.js","../node_modules/@luma.gl/gltools/src/utils/utils.js","../node_modules/@luma.gl/gltools/src/state-tracker/track-context-state.js","../node_modules/@luma.gl/gltools/src/state-tracker/unified-parameter-api.js","../node_modules/@luma.gl/gltools/src/utils/device-pixels.js","../node_modules/@luma.gl/gltools/src/context/context.js","../node_modules/@luma.gl/engine/src/animation/timeline.js","../node_modules/@deck.gl/core/src/lifecycle/constants.ts","../node_modules/@deck.gl/core/src/utils/log.ts","../node_modules/@deck.gl/core/src/debug/index.ts","../node_modules/@deck.gl/core/src/utils/flatten.ts","../node_modules/@probe.gl/stats/src/utils/hi-res-timestamp.ts","../node_modules/@probe.gl/stats/src/lib/stat.ts","../node_modules/@probe.gl/stats/src/lib/stats.ts","../node_modules/@loaders.gl/core/src/lib/api/load.ts","../node_modules/@deck.gl/core/src/lib/resource/resource.ts","../node_modules/@deck.gl/core/src/lib/resource/resource-manager.ts","../node_modules/@deck.gl/core/src/utils/typed-array-manager.ts","../node_modules/@math.gl/core/src/lib/common.ts","../node_modules/@math.gl/core/src/classes/base/math-array.ts","../node_modules/@math.gl/core/src/lib/validators.ts","../node_modules/@math.gl/core/src/lib/assert.ts","../node_modules/@math.gl/core/src/classes/base/vector.ts","../node_modules/gl-matrix/esm/common.js","../node_modules/gl-matrix/esm/vec3.js","../node_modules/@math.gl/core/src/lib/gl-matrix-extras.ts","../node_modules/@math.gl/core/src/classes/vector3.ts","../node_modules/@deck.gl/core/src/utils/math-utils.ts","../node_modules/@math.gl/core/src/classes/base/matrix.ts","../node_modules/gl-matrix/esm/mat4.js","../node_modules/gl-matrix/esm/vec2.js","../node_modules/gl-matrix/esm/vec4.js","../node_modules/@math.gl/core/src/classes/matrix4.ts","../node_modules/@math.gl/web-mercator/src/math-utils.ts","../node_modules/@math.gl/web-mercator/src/assert.ts","../node_modules/@math.gl/web-mercator/src/web-mercator-utils.ts","../node_modules/@math.gl/web-mercator/src/fit-bounds.ts","../node_modules/@math.gl/web-mercator/src/get-bounds.ts","../node_modules/@deck.gl/core/src/lib/constants.ts","../node_modules/@deck.gl/core/src/viewports/viewport.ts","../node_modules/@luma.gl/shadertools/src/lib/constants.js","../node_modules/@luma.gl/shadertools/src/utils/assert.js","../node_modules/@luma.gl/shadertools/src/lib/filters/prop-types.js","../node_modules/@luma.gl/shadertools/src/lib/shader-module.js","../node_modules/@luma.gl/shadertools/src/lib/resolve-modules.js","../node_modules/@luma.gl/shadertools/src/utils/webgl-info.js","../node_modules/@luma.gl/shadertools/src/utils/is-old-ie.js","../node_modules/@luma.gl/shadertools/src/lib/platform-defines.js","../node_modules/@luma.gl/shadertools/src/modules/module-injectors.js","../node_modules/@luma.gl/shadertools/src/lib/inject-shader.js","../node_modules/@luma.gl/shadertools/src/lib/transpile-shader.js","../node_modules/@luma.gl/shadertools/src/lib/assemble-shaders.js","../node_modules/@luma.gl/webgl/src/init.js","../node_modules/@luma.gl/webgl/src/utils/assert.js","../node_modules/@luma.gl/webgl/src/webgl-utils/constants-to-keys.js","../node_modules/@luma.gl/webgl/src/utils/utils.js","../node_modules/@luma.gl/webgl/src/utils/stub-methods.js","../node_modules/@luma.gl/webgl/src/classes/resource.js","../node_modules/@luma.gl/webgl/src/webgl-utils/typed-array-utils.js","../node_modules/@luma.gl/webgl/src/utils/check-props.js","../node_modules/@luma.gl/webgl/src/classes/accessor.js","../node_modules/@luma.gl/webgl/src/classes/buffer.js","../node_modules/@luma.gl/webgl/src/classes/texture-formats.js","../node_modules/@luma.gl/webgl/src/classes/texture.js","../node_modules/@luma.gl/webgl/src/utils/load-file.js","../node_modules/@luma.gl/webgl/src/classes/texture-2d.js","../node_modules/@luma.gl/webgl/src/classes/renderbuffer-formats.js","../node_modules/@luma.gl/webgl/src/classes/renderbuffer.js","../node_modules/@luma.gl/webgl/src/classes/clear.js","../node_modules/@luma.gl/webgl/src/classes/texture-cube.js","../node_modules/@luma.gl/webgl/src/classes/texture-3d.js","../node_modules/@luma.gl/webgl/src/webgl-utils/texture-utils.js","../node_modules/@luma.gl/webgl/src/classes/copy-and-blit.js","../node_modules/@luma.gl/webgl/src/webgl-utils/format-utils.js","../node_modules/@luma.gl/webgl/src/features/webgl-features-table.js","../node_modules/@luma.gl/webgl/src/features/features.js","../node_modules/@luma.gl/webgl/src/classes/framebuffer.js","../node_modules/@luma.gl/webgl/src/classes/uniforms.js","../node_modules/@luma.gl/webgl/src/glsl-utils/get-shader-name.js","../node_modules/@luma.gl/webgl/src/glsl-utils/get-shader-type-name.js","../node_modules/@luma.gl/webgl/src/glsl-utils/format-glsl-error.js","../node_modules/@luma.gl/webgl/src/classes/shader.js","../node_modules/@luma.gl/webgl/src/webgl-utils/attribute-utils.js","../node_modules/@luma.gl/webgl/src/classes/program-configuration.js","../node_modules/@luma.gl/webgl/src/classes/program.js","../node_modules/@luma.gl/engine/src/lib/program-manager.js","../node_modules/@luma.gl/shadertools/src/modules/fp32/fp32.js","../node_modules/@deck.gl/core/src/shaderlib/misc/geometry.ts","../node_modules/@deck.gl/core/src/shaderlib/project/project.glsl.ts","../node_modules/@deck.gl/core/src/utils/memoize.ts","../node_modules/@deck.gl/core/src/shaderlib/project/viewport-uniforms.ts","../node_modules/@deck.gl/core/src/shaderlib/project/project.ts","../node_modules/@deck.gl/core/src/shaderlib/index.ts","../node_modules/@deck.gl/core/src/lib/layer-manager.ts","../node_modules/@deck.gl/core/src/utils/deep-equal.ts","../node_modules/@deck.gl/core/src/lib/view-manager.ts","../node_modules/@deck.gl/core/src/utils/positions.ts","../node_modules/@deck.gl/core/src/utils/assert.ts","../node_modules/@deck.gl/core/src/views/view.ts","../node_modules/@deck.gl/core/src/viewports/web-mercator-viewport.ts","../node_modules/@deck.gl/core/src/transitions/transition.ts","../node_modules/@deck.gl/core/src/controllers/transition-manager.ts","../node_modules/@deck.gl/core/src/transitions/transition-interpolator.ts","../node_modules/@deck.gl/core/src/transitions/linear-interpolator.ts","../node_modules/@deck.gl/core/src/controllers/controller.ts","../node_modules/@deck.gl/core/src/controllers/view-state.ts","../node_modules/@deck.gl/core/src/controllers/map-controller.ts","../node_modules/@math.gl/web-mercator/src/normalize-viewport-props.ts","../node_modules/@deck.gl/core/src/views/map-view.ts","../node_modules/@deck.gl/core/src/effects/lighting/ambient-light.ts","../node_modules/@deck.gl/core/src/effects/lighting/directional-light.ts","../node_modules/@deck.gl/core/src/passes/pass.ts","../node_modules/@deck.gl/core/src/passes/layers-pass.ts","../node_modules/@deck.gl/core/src/passes/shadow-pass.ts","../node_modules/@deck.gl/core/src/shaderlib/shadow/shadow.ts","../node_modules/@deck.gl/core/src/effects/lighting/lighting-effect.ts","../node_modules/@deck.gl/core/src/lib/effect-manager.ts","../node_modules/@deck.gl/core/src/passes/draw-layers-pass.ts","../node_modules/@deck.gl/core/src/passes/pick-layers-pass.ts","../node_modules/@deck.gl/core/src/lib/deck-renderer.ts","../node_modules/@deck.gl/core/src/lib/picking/query-object.ts","../node_modules/@deck.gl/core/src/lib/picking/pick-info.ts","../node_modules/@deck.gl/core/src/lib/deck-picker.ts","../node_modules/@deck.gl/core/src/lib/tooltip.ts","../node_modules/@loaders.gl/loader-utils/src/lib/env-utils/assert.ts","../node_modules/@loaders.gl/loader-utils/src/lib/env-utils/globals.ts","../node_modules/@loaders.gl/images/src/lib/category-api/image-type.ts","../node_modules/@loaders.gl/images/src/lib/category-api/parsed-image-api.ts","../node_modules/@loaders.gl/images/src/lib/parsers/svg-utils.ts","../node_modules/@loaders.gl/images/src/lib/parsers/parse-to-image.ts","../node_modules/@loaders.gl/images/src/lib/parsers/parse-to-image-bitmap.ts","../node_modules/@loaders.gl/images/src/lib/category-api/parse-isobmff-binary.ts","../node_modules/@loaders.gl/images/src/lib/category-api/binary-image-api.ts","../node_modules/@loaders.gl/images/src/image-loader.ts","../node_modules/@loaders.gl/images/src/lib/utils/version.ts","../node_modules/@loaders.gl/images/src/lib/parsers/parse-image.ts","../node_modules/@loaders.gl/images/src/lib/parsers/parse-to-node-image.ts","../node_modules/@deck.gl/core/src/utils/json-loader.ts","../node_modules/@deck.gl/core/src/lib/init.ts","../node_modules/@probe.gl/env/src/lib/get-browser.ts","../node_modules/@luma.gl/webgl/src/classes/query.js","../node_modules/@luma.gl/engine/src/lib/animation-loop.js","../node_modules/@luma.gl/webgl/src/webgl-utils/request-animation-frame.js","../node_modules/mjolnir.js/src/utils/hammer-overrides.ts","../node_modules/mjolnir.js/src/utils/hammer.browser.ts","../node_modules/mjolnir.js/src/inputs/input.ts","../node_modules/mjolnir.js/src/constants.ts","../node_modules/mjolnir.js/src/utils/globals.ts","../node_modules/mjolnir.js/src/inputs/wheel-input.ts","../node_modules/mjolnir.js/src/inputs/move-input.ts","../node_modules/mjolnir.js/src/inputs/key-input.ts","../node_modules/mjolnir.js/src/inputs/contextmenu-input.ts","../node_modules/mjolnir.js/src/utils/event-utils.ts","../node_modules/mjolnir.js/src/utils/event-registrar.ts","../node_modules/mjolnir.js/src/event-manager.ts","../node_modules/@deck.gl/core/src/lib/deck.ts","../node_modules/@math.gl/core/src/classes/vector2.ts","../node_modules/@deck.gl/google-maps/src/utils.ts","../node_modules/@deck.gl/google-maps/src/google-maps-overlay.ts","../node_modules/@deck.gl/core/src/lib/attribute/shader-attribute.ts","../node_modules/@deck.gl/core/src/lib/attribute/data-column.ts","../node_modules/@deck.gl/core/src/lib/attribute/gl-utils.ts","../node_modules/@deck.gl/core/src/utils/iterable-utils.ts","../node_modules/@deck.gl/core/src/utils/range.ts","../node_modules/@deck.gl/core/src/utils/array-utils.ts","../node_modules/@deck.gl/core/src/lib/attribute/attribute-transition-utils.ts","../node_modules/@deck.gl/core/src/lib/attribute/attribute.ts","../node_modules/@luma.gl/shadertools/src/utils/shader-utils.js","../node_modules/@luma.gl/webgl/src/classes/transform-feedback.js","../node_modules/@luma.gl/engine/src/transform/buffer-transform.js","../node_modules/@luma.gl/webgl/src/glsl-utils/get-shader-version.js","../node_modules/@luma.gl/shadertools/src/modules/transform/transform.js","../node_modules/@luma.gl/engine/src/transform/transform-shader-utils.js","../node_modules/@luma.gl/engine/src/transform/texture-transform.js","../node_modules/@luma.gl/webgl/src/utils/array-utils-flat.js","../node_modules/@luma.gl/webgl/src/classes/vertex-array-object.js","../node_modules/@luma.gl/webgl/src/classes/vertex-array.js","../node_modules/@luma.gl/webgl/src/utils/format-value.js","../node_modules/@luma.gl/webgl/src/debug/debug-vertex-array.js","../node_modules/@luma.gl/webgl/src/debug/debug-uniforms.js","../node_modules/@luma.gl/webgl/src/debug/debug-program-configuration.js","../node_modules/@luma.gl/engine/src/lib/model-utils.js","../node_modules/@luma.gl/engine/src/lib/model.js","../node_modules/@luma.gl/engine/src/transform/transform.js","../node_modules/@deck.gl/core/src/transitions/gpu-interpolation-transition.ts","../node_modules/@deck.gl/core/src/lib/attribute/attribute-transition-manager.ts","../node_modules/@deck.gl/core/src/transitions/gpu-spring-transition.ts","../node_modules/@deck.gl/core/src/lib/attribute/attribute-manager.ts","../node_modules/@deck.gl/core/src/transitions/cpu-spring-transition.js","../node_modules/@deck.gl/core/src/lib/uniform-transition-manager.js","../node_modules/@deck.gl/core/src/transitions/cpu-interpolation-transition.js","../node_modules/@deck.gl/core/src/lifecycle/props.ts","../node_modules/@deck.gl/core/src/utils/count.ts","../node_modules/@deck.gl/core/src/utils/shader.ts","../node_modules/@deck.gl/core/src/shaderlib/project/project-functions.ts","../node_modules/@deck.gl/core/src/utils/texture.ts","../node_modules/@deck.gl/core/src/lifecycle/prop-types.ts","../node_modules/@deck.gl/core/src/lifecycle/create-props.ts","../node_modules/@deck.gl/core/src/lifecycle/component.ts","../node_modules/@deck.gl/core/src/lifecycle/component-state.ts","../node_modules/@deck.gl/core/src/lib/layer-state.ts","../node_modules/@deck.gl/core/src/lib/layer.ts","../node_modules/@deck.gl/core/src/lib/composite-layer.ts","../node_modules/@deck.gl/layers/src/utils.ts","../node_modules/@deck.gl/core/src/shaderlib/project32/project32.ts","../node_modules/@luma.gl/shadertools/src/modules/picking/picking.js","../node_modules/@deck.gl/core/src/shaderlib/picking/picking.ts","../node_modules/@luma.gl/engine/src/geometry/geometry.js","../node_modules/@deck.gl/layers/src/icon-layer/icon-layer-vertex.glsl.ts","../node_modules/@deck.gl/layers/src/icon-layer/icon-manager.ts","../node_modules/@deck.gl/layers/src/icon-layer/icon-layer.ts","../node_modules/@deck.gl/layers/src/icon-layer/icon-layer-fragment.glsl.ts","../node_modules/@deck.gl/layers/src/scatterplot-layer/scatterplot-layer-vertex.glsl.ts","../node_modules/@deck.gl/layers/src/scatterplot-layer/scatterplot-layer.ts","../node_modules/@deck.gl/layers/src/scatterplot-layer/scatterplot-layer-fragment.glsl.ts","../node_modules/@deck.gl/layers/src/text-layer/multi-icon-layer/multi-icon-layer-fragment.glsl.ts","../node_modules/@deck.gl/layers/src/text-layer/multi-icon-layer/multi-icon-layer.ts","../node_modules/@mapbox/tiny-sdf/index.js","../node_modules/@deck.gl/layers/src/text-layer/utils.ts","../node_modules/@deck.gl/layers/src/text-layer/lru-cache.ts","../node_modules/@deck.gl/layers/src/text-layer/font-atlas-manager.ts","../node_modules/@deck.gl/layers/src/text-layer/text-background-layer/text-background-layer-vertex.glsl.ts","../node_modules/@deck.gl/layers/src/text-layer/text-background-layer/text-background-layer.ts","../node_modules/@deck.gl/layers/src/text-layer/text-background-layer/text-background-layer-fragment.glsl.ts","../node_modules/@deck.gl/layers/src/text-layer/text-layer.ts","../node_modules/@deck.gl/core/src/utils/tesselator.ts","../node_modules/@deck.gl/layers/src/path-layer/path.ts","../node_modules/@deck.gl/layers/src/path-layer/path-tesselator.ts","../node_modules/@deck.gl/layers/src/path-layer/path-layer-vertex.glsl.ts","../node_modules/@deck.gl/layers/src/path-layer/path-layer.ts","../node_modules/@deck.gl/layers/src/path-layer/path-layer-fragment.glsl.ts","../node_modules/@luma.gl/shadertools/src/modules/lights/lights.glsl.js","../node_modules/@luma.gl/shadertools/src/modules/lights/lights.js","../node_modules/@luma.gl/shadertools/src/modules/phong-lighting/phong-lighting.glsl.js","../node_modules/@luma.gl/shadertools/src/modules/phong-lighting/phong-lighting.js","../node_modules/@deck.gl/layers/src/solid-polygon-layer/polygon.ts","../node_modules/@deck.gl/layers/src/solid-polygon-layer/polygon-tesselator.ts","../node_modules/@deck.gl/layers/src/solid-polygon-layer/solid-polygon-layer-vertex-main.glsl.ts","../node_modules/@deck.gl/layers/src/solid-polygon-layer/solid-polygon-layer-vertex-top.glsl.ts","../node_modules/@deck.gl/layers/src/solid-polygon-layer/solid-polygon-layer-vertex-side.glsl.ts","../node_modules/@deck.gl/layers/src/solid-polygon-layer/solid-polygon-layer.ts","../node_modules/@deck.gl/layers/src/solid-polygon-layer/solid-polygon-layer-fragment.glsl.ts","../node_modules/@deck.gl/layers/src/geojson-layer/sub-layer-map.ts","../node_modules/@deck.gl/layers/src/geojson-layer/geojson.ts","../node_modules/@deck.gl/layers/src/geojson-layer/geojson-layer-props.ts","../node_modules/@deck.gl/layers/src/geojson-layer/geojson-binary.ts","../node_modules/@deck.gl/layers/src/geojson-layer/geojson-layer.ts","../node_modules/@loaders.gl/loader-utils/node_modules/@probe.gl/stats/src/utils/hi-res-timestamp.ts","../node_modules/@loaders.gl/loader-utils/node_modules/@probe.gl/stats/src/lib/stat.ts","../node_modules/@loaders.gl/loader-utils/node_modules/@probe.gl/stats/src/lib/stats.ts","../node_modules/@loaders.gl/loader-utils/src/lib/request-utils/request-scheduler.ts","../node_modules/@deck.gl/geo-layers/src/tileset-2d/tile-2d-header.ts","../node_modules/@deck.gl/core/src/viewports/globe-viewport.ts","../node_modules/@math.gl/culling/src/constants.ts","../node_modules/@math.gl/culling/src/lib/bounding-volumes/axis-aligned-bounding-box.ts","../node_modules/@math.gl/culling/src/lib/bounding-volumes/bounding-sphere.ts","../node_modules/gl-matrix/esm/mat3.js","../node_modules/@math.gl/core/src/classes/matrix3.ts","../node_modules/@math.gl/core/src/classes/vector4.ts","../node_modules/gl-matrix/esm/quat.js","../node_modules/@math.gl/core/src/classes/quaternion.ts","../node_modules/@math.gl/culling/src/lib/bounding-volumes/oriented-bounding-box.ts","../node_modules/@math.gl/culling/src/lib/plane.ts","../node_modules/@math.gl/culling/src/lib/culling-volume.ts","../node_modules/@math.gl/culling/src/lib/perspective-off-center-frustum.ts","../node_modules/@math.gl/culling/src/lib/algorithms/bounding-sphere-from-points.ts","../node_modules/@math.gl/core/src/lib/math-utils.ts","../node_modules/@math.gl/culling/src/lib/algorithms/compute-eigen-decomposition.ts","../node_modules/@math.gl/culling/src/lib/algorithms/bounding-box-from-points.ts","../node_modules/@deck.gl/geo-layers/src/tileset-2d/tile-2d-traversal.ts","../node_modules/@deck.gl/geo-layers/src/tileset-2d/utils.ts","../node_modules/@deck.gl/geo-layers/src/tileset-2d/memoize.ts","../node_modules/@deck.gl/geo-layers/src/tileset-2d/tileset-2d.ts","../node_modules/@deck.gl/geo-layers/src/tile-layer/tile-layer.ts","utils/EventEmitter.ts","components/CoverageMap/Geodata.service.ts","components/CoverageMap/utils/bbox-calculations.ts","components/CoverageMap/CustomTileset.ts","utils/colors.ts","components/CoverageMap/DeckDebugger.ts","services/Bin.service.ts","components/CoverageMap/DeckManager.ts","components/CoverageMap/CoverageMapComponent/InnerCoverageMap.tsx","components/CoverageMap/CoverageMapComponent/useCoverageMap.ts","components/CoverageMap/DesktopWelcomeMapModal.tsx","components/CoverageMap/LoadingPopup.tsx","components/CoverageMap/TopBar/SplitCarriersList.tsx","components/CoverageMap/hooks/useUnsavedAddresses.ts","components/EllipseBackground/EllipseBackground.styles.tsx","components/EllipseBackground/EllipseBackground.tsx","components/EllipseBackground/EllipseBackgroundDesktop.tsx","components/EllipseBackground/EllipseBackgroundLong.tsx","components/Header/BackButton.tsx","components/Header/BaseHeader.tsx","components/Header/HeaderStyles.ts","components/Header/Header.tsx","components/Header/PlansHeader/ControlChip.tsx","components/Header/PlansHeader/DrawerSections.tsx","components/Header/PlansHeader/styles/toolbar.styles.ts","components/Header/PlansHeader/PlansHeaderSearchDrawer.tsx","components/CoverageMap/MobileMapAddressesHeader.tsx","components/Header/PlansHeader/DropdownSelector.tsx","components/Header/PlansHeader/PlansHeaderChips.tsx","components/Header/PlansHeader/PlansHeaderSearchDrawerDesktop.tsx","components/Header/PlansHeader/PlansHeader.tsx","utils/hooks/useRecentPlanSearch.ts","components/Header/PlansHeader/SortingOption.ts","components/Header/PlansHeader/useExpandedState.ts","components/Header/SummaryHeaderStyles.ts","components/Header/SummaryHeader.tsx","components/InfoDialog.tsx","components/ListBanner.tsx","../node_modules/@googlemaps/typescript-guards/dist/index.esm.js","utils/index.ts","components/Map/Map.tsx","components/Map/useHighlightRegion.ts","components/Marker.tsx","components/NetworkPerformanceDiagram/NetworkPerformanceDiagram.tsx","components/OnboardingCarousel/carousel-link-component.tsx","components/NextButton/NextButton.tsx","components/OnboardingCarousel/carousel-next-button.tsx","components/OnboardingCarousel/carouselOnboardingData.ts","components/Plan/PlanInfoStyles.ts","components/icons/IconSignalVoice.tsx","components/icons/IconSignalCellular.tsx","components/icons/IconText.tsx","components/icons/IconHotspot.tsx","components/icons/IconPremiumData.tsx","components/icons/IconPerks.tsx","components/icons/IconPlan.tsx","components/icons/IconAddons.tsx","components/Plan/PlanInfo.tsx","components/PlanResult/NetworkPerformance.tsx","components/PlanResult/PlanResultCard.styles.ts","utils/usdFormatter.ts","components/PlanResult/DealTag.tsx","components/PlanResult/PlanResultCard.tsx","components/PlanResult/PlanResultCardSkeleton.tsx","components/Separator/Separator.styles.ts","components/Separator/Separator.tsx","components/SignalMeter/MobileBrowserNetworkMeter/Measurement/MeasurementStyles.ts","components/SignalMeter/MobileBrowserNetworkMeter/Measurement/Measurement.tsx","components/SignalMeter/MobileBrowserNetworkMeter/Measurements/MeasurementsStyles.ts","components/SignalMeter/MobileBrowserNetworkMeter/Measurements/Measurements.tsx","components/SignalMeter/MobileBrowserNetworkMeter/MeterResultCard.tsx","components/SignalMeter/MobileBrowserNetworkMeter/MeterResultSummaryModal.tsx","components/SignalMeter/MobileBrowserNetworkMeter/MeterHistoryTable.tsx","components/SignalMeter/MobileBrowserNetworkMeter/MobileBrowserNetworkMeter.styles.ts","components/SignalMeter/MobileBrowserNetworkMeter/SpeedResult/SpeedResult.tsx","components/SignalMeter/SignalMeter.styles.ts","components/SignalMeter/SignalMeterStrength.tsx","components/SignalStrengthLabel.tsx","components/Swiper/SwiperContent.tsx","components/TModal/TModal.tsx","components/icons/IconTag.tsx","constants/appStoreUrls.ts","pages/address-book/AddressBookStyles.ts","pages/current-plan/PlanNotFound.ts","pages/deals/DealCard.tsx","pages/deals/DealExpirationText.tsx","pages/deals/DealModalSingleton.ts","pages/deals/DealsRedirectionModal.tsx","pages/deals/deal.service.ts","pages/deals/hooks/useDeals.ts","pages/home/DesktopFooter/desktop-footer-upper.tsx","pages/home/DesktopFooter/DesktopFooter.tsx","pages/home/DesktopHeader/DesktopHeader.styles.ts","pages/home/DesktopHeader/DesktopHeader.tsx","pages/home/ArrowControls/ArrowControls.tsx","pages/home/HomeCaroulsel/HomeCaroulsel.tsx","pages/llm/ChatFlow.ts","pages/llm/ServerResponse.ts","pages/llm/free/hooks/useMutationBuffer.ts","pages/llm/free/hooks/useFreeChat.ts","pages/llm/hooks/use-push-plan-finder.ts","pages/llm/hooks/getChatStatus.ts","pages/llm/hooks/useChatStorage.ts","pages/llm/types/ChatStep.ts","pages/llm/types/Suggestion.ts","pages/llm/utils/chatApiSource.ts","pages/llm/utils/chatToRecommendedPayload.ts","pages/llm/utils/gmaps-context.ts","pages/llm/utils/chatStorageSource.ts","pages/llm/utils/source-sets.ts","pages/llm/utils/track-plan-finder.ts","pages/map/useLocationPermissions.ts","services/SignalStrengthService.ts","plugin/SignalStrengthPlugin.ts","pages/map/LocationPermissionModal.tsx","pages/map/MapPermissionsPopup.tsx","pages/network-quality/AddressLabelDialog.tsx","pages/network-quality/AddressSearchbar.tsx","pages/network-quality/ResultsPage.tsx","pages/network-quality/autolabel-address.ts","pages/network-quality/hooks/useSetUserLocation.ts","pages/plan-filters/components/utils/filters-diff.ts","pages/plans/PlansPage.styles.tsx","pages/plans/tabs/EmptyListState.tsx","pages/plans/tabs/PlanTab.ts","../node_modules/react-virtuoso/dist/index.mjs","components/BestPlans/ComparePlanResultCard.tsx","pages/plans/tabs/PlansListTab.tsx","pages/plans/usePlansFilterState.ts","pages/profile/SavedPlans.styles.ts","pages/profile/SavedPlans.tsx","paths.ts","../node_modules/appsflyer-capacitor-plugin/src/Appsflyer_constants.ts","../node_modules/appsflyer-capacitor-plugin/src/appsflyer_interfaces.ts","../node_modules/appsflyer-capacitor-plugin/src/index.ts","plugin/AppsFlyerPlugin.ts","queryClient.ts","router-history.ts","services/Carrier.const.ts","services/Carrier.service.ts","services/NetworkMeter.service.ts","services/NetworkType.service.ts","services/RecentSearch.service.ts","services/backend-sync/profile.service.ts","services/carrier/get-logo-url.ts","services/chat/Chat.service.ts","services/planService/planCompare.ts","services/planService/Plan.ts","services/planService/Plan.service.ts","services/planService/Plan.utils.ts","services/planService/Preferences.ts","services/planService/getRecommendedPlans.ts","services/wizard/reason-for-switch.ts","store/address.ts","store/auth.ts","store/editStoreManagement.ts","components/OnboardingCarousel/onboardingStorage.ts","store/bestPlans.ts","store/carrierSelector.ts","store/currentPlan.ts","store/expandedPlans.ts","store/networkMeterResults.ts","store/networkQuality.ts","store/questions.ts","store/searchHistory.ts","store/selectedPlans.ts","../node_modules/zustand/esm/middleware.mjs","store/index.ts","store/navigation.ts","store/plansInteraction.ts","store/standalone/filters-store/filter-plans.ts","../node_modules/decode-uri-component/index.js","../node_modules/filter-obj/index.js","../node_modules/split-on-first/index.js","../node_modules/query-string/base.js","../node_modules/query-string/index.js","store/standalone/filters-store/filters-store.ts","store/standalone/permission-store.ts","utils/Address.ts","utils/Logger.ts","../node_modules/@amplitude/analytics-types/src/logger.ts","../node_modules/@amplitude/analytics-core/src/utils/debug.ts","../node_modules/@amplitude/analytics-types/src/status.ts","../node_modules/@amplitude/analytics-core/src/utils/return-wrapper.ts","../node_modules/@amplitude/analytics-core/src/messages.ts","../node_modules/@amplitude/analytics-core/src/constants.ts","../node_modules/@amplitude/analytics-core/src/utils/result-builder.ts","../node_modules/@amplitude/analytics-core/src/logger.ts","../node_modules/@amplitude/analytics-core/src/config.ts","../node_modules/@amplitude/analytics-core/src/plugins/destination.ts","../node_modules/@amplitude/analytics-types/src/event.ts","../node_modules/@amplitude/analytics-core/src/utils/chunk.ts","../node_modules/@amplitude/analytics-core/src/utils/uuid.ts","../node_modules/@amplitude/analytics-core/src/utils/valid-properties.ts","../node_modules/@amplitude/analytics-core/src/identify.ts","../node_modules/@amplitude/analytics-core/src/revenue.ts","../node_modules/@amplitude/analytics-core/src/timeline.ts","../node_modules/@amplitude/analytics-core/src/utils/event-builder.ts","../node_modules/@amplitude/analytics-core/src/core-client.ts","../node_modules/@amplitude/analytics-connector/dist/analytics-connector.esm.js","../node_modules/@amplitude/analytics-client-common/src/analytics-connector.ts","../node_modules/@amplitude/analytics-client-common/src/plugins/identity.ts","../node_modules/@amplitude/analytics-client-common/src/default-tracking.ts","../node_modules/@amplitude/analytics-client-common/src/session.ts","../node_modules/@amplitude/analytics-browser/src/utils/snippet-helper.ts","../node_modules/@amplitude/analytics-client-common/src/language.ts","../node_modules/@amplitude/analytics-browser/src/plugins/context.ts","../node_modules/@amplitude/analytics-browser/src/version.ts","../node_modules/@amplitude/analytics-core/src/storage/memory.ts","../node_modules/@amplitude/analytics-client-common/src/cookie-name.ts","../node_modules/@amplitude/analytics-client-common/src/global-scope.ts","../node_modules/@amplitude/analytics-client-common/src/query-params.ts","../node_modules/@amplitude/analytics-client-common/src/storage/cookie.ts","../node_modules/@amplitude/analytics-core/src/transports/base.ts","../node_modules/@amplitude/analytics-client-common/src/transports/fetch.ts","../node_modules/@amplitude/analytics-browser/src/storage/browser-storage.ts","../node_modules/@amplitude/analytics-browser/src/storage/local-storage.ts","../node_modules/@amplitude/analytics-browser/src/storage/session-storage.ts","../node_modules/@amplitude/analytics-browser/src/transports/xhr.ts","../node_modules/@amplitude/analytics-browser/src/transports/send-beacon.ts","../node_modules/@amplitude/analytics-browser/src/cookie-migration/index.ts","../node_modules/@amplitude/analytics-browser/src/constants.ts","../node_modules/@amplitude/analytics-browser/src/config.ts","../node_modules/@amplitude/analytics-client-common/src/attribution/constants.ts","../node_modules/@amplitude/analytics-client-common/src/attribution/campaign-parser.ts","../node_modules/@amplitude/analytics-client-common/src/attribution/campaign-helper.ts","../node_modules/@amplitude/plugin-web-attribution-browser/src/helpers.ts","../node_modules/@amplitude/plugin-web-attribution-browser/src/web-attribution.ts","../node_modules/@amplitude/plugin-page-view-tracking-browser/src/utils.ts","../node_modules/@amplitude/plugin-page-view-tracking-browser/src/page-view-tracking.ts","../node_modules/@amplitude/analytics-browser/src/plugins/form-interaction-tracking.ts","../node_modules/@amplitude/analytics-browser/src/plugins/file-download-tracking.ts","../node_modules/@amplitude/analytics-browser/src/det-notification.ts","../node_modules/@amplitude/analytics-browser/src/browser-client.ts","../node_modules/@amplitude/analytics-browser/src/browser-client-factory.ts","../node_modules/@amplitude/analytics-browser/src/index.ts","../node_modules/@amplitude/analytics-types/src/server-zone.ts","../node_modules/@amplitude/session-replay-browser/src/constants.ts","../node_modules/@amplitude/session-replay-browser/src/config/local-config.ts","../node_modules/@amplitude/rrweb-snapshot/dist/rrweb-snapshot.js","../node_modules/@amplitude/rrdom/dist/rrdom.js","../node_modules/@amplitude/utils/dist/rrweb-utils.js","../node_modules/@amplitude/rrweb/src/utils.ts","../node_modules/@amplitude/types/dist/rrweb-types.js","../node_modules/@amplitude/rrweb/src/record/mutation.ts","../node_modules/@amplitude/rrweb/src/record/error-handler.ts","../node_modules/@amplitude/rrweb/src/record/observer.ts","../node_modules/@amplitude/rrweb/src/record/cross-origin-iframe-mirror.ts","../node_modules/@amplitude/rrweb/src/record/iframe-manager.ts","../node_modules/@amplitude/rrweb/src/record/shadow-dom-manager.ts","../node_modules/node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/@amplitude/rrweb/src/record/observers/canvas/serialize-args.ts","../node_modules/@amplitude/rrweb/src/record/observers/canvas/canvas.ts","../node_modules/@amplitude/rrweb/src/record/observers/canvas/webgl.ts","../node_modules/@amplitude/rrweb/src/record/observers/canvas/canvas-manager.ts","../node_modules/@amplitude/rrweb/src/record/observers/canvas/2d.ts","../node_modules/@amplitude/rrweb/src/record/stylesheet-manager.ts","../node_modules/@amplitude/rrweb/src/record/processed-node-manager.ts","../node_modules/@amplitude/rrweb/src/record/index.ts","../node_modules/node_modules/mitt/dist/mitt.mjs","../node_modules/node_modules/@xstate/fsm/es/index.js","../node_modules/@amplitude/rrweb/src/index.ts","../node_modules/@amplitude/analytics-remote-config/src/remote-config.ts","../node_modules/@amplitude/analytics-remote-config/src/index.ts","../node_modules/@amplitude/rrweb-snapshot/src/utils.ts","../node_modules/@amplitude/rrweb-snapshot/src/css.ts","../node_modules/node_modules/picocolors/picocolors.browser.js","../node_modules/@amplitude/rrweb-snapshot/__vite-browser-external","../node_modules/node_modules/postcss/lib/css-syntax-error.js","../node_modules/node_modules/postcss/lib/symbols.js","../node_modules/node_modules/postcss/lib/stringifier.js","../node_modules/node_modules/postcss/lib/stringify.js","../node_modules/node_modules/postcss/lib/node.js","../node_modules/node_modules/postcss/lib/declaration.js","../node_modules/node_modules/postcss/node_modules/nanoid/non-secure/index.cjs","../node_modules/node_modules/postcss/lib/previous-map.js","../node_modules/node_modules/postcss/lib/input.js","../node_modules/node_modules/postcss/lib/map-generator.js","../node_modules/node_modules/postcss/lib/comment.js","../node_modules/node_modules/postcss/lib/container.js","../node_modules/node_modules/postcss/lib/document.js","../node_modules/node_modules/postcss/lib/warning.js","../node_modules/node_modules/postcss/lib/result.js","../node_modules/node_modules/postcss/lib/tokenize.js","../node_modules/node_modules/postcss/lib/at-rule.js","../node_modules/node_modules/postcss/lib/root.js","../node_modules/node_modules/postcss/lib/list.js","../node_modules/node_modules/postcss/lib/rule.js","../node_modules/node_modules/postcss/lib/parser.js","../node_modules/node_modules/postcss/lib/parse.js","../node_modules/node_modules/postcss/lib/lazy-result.js","../node_modules/node_modules/postcss/lib/no-work-result.js","../node_modules/node_modules/postcss/lib/processor.js","../node_modules/node_modules/postcss/lib/fromJSON.js","../node_modules/node_modules/postcss/lib/postcss.js","../node_modules/node_modules/postcss/lib/postcss.mjs","../node_modules/@amplitude/session-replay-browser/src/config/types.ts","../node_modules/@amplitude/session-replay-browser/src/helpers.ts","../node_modules/@amplitude/session-replay-browser/src/config/joined-config.ts","../node_modules/@amplitude/session-replay-browser/src/messages.ts","../node_modules/@amplitude/session-replay-browser/src/version.ts","../node_modules/@amplitude/session-replay-browser/src/track-destination.ts","../node_modules/@amplitude/session-replay-browser/node_modules/idb/build/index.js","../node_modules/@amplitude/session-replay-browser/src/events/base-events-store.ts","../node_modules/@amplitude/session-replay-browser/src/events/legacy-idb-types.ts","../node_modules/@amplitude/session-replay-browser/src/events/events-idb-store.ts","../node_modules/@amplitude/session-replay-browser/src/libs/finder.ts","../node_modules/@amplitude/session-replay-browser/src/events/events-memory-store.ts","../node_modules/@amplitude/session-replay-browser/src/events/events-manager.ts","../node_modules/@amplitude/session-replay-browser/src/events/multi-manager.ts","../node_modules/@amplitude/rrweb-types/src/index.ts","../node_modules/@amplitude/session-replay-browser/src/hooks/click.ts","../node_modules/@amplitude/session-replay-browser/src/beacon-transport.ts","../node_modules/@amplitude/session-replay-browser/src/hooks/scroll.ts","../node_modules/@amplitude/session-replay-browser/src/identifiers.ts","../node_modules/node_modules/fflate/esm/browser.js","../node_modules/@amplitude/rrweb-packer/src/base.ts","../node_modules/@amplitude/rrweb-packer/src/pack.ts","../node_modules/@amplitude/session-replay-browser/src/events/event-compressor.ts","../node_modules/@amplitude/session-replay-browser/src/session-replay.ts","../node_modules/@amplitude/session-replay-browser/src/session-replay-factory.ts","../node_modules/@amplitude/session-replay-browser/src/index.ts","../node_modules/@amplitude/plugin-session-replay-browser/src/version.ts","../node_modules/@amplitude/plugin-session-replay-browser/src/session-replay.ts","utils/amplitude.ts","utils/hooks/useGetPlansInfo.ts","utils/hooks/useGetRegionFilter.ts","utils/hooks/useNavigateToPlan.ts","services/googleAutocompleteService.ts","utils/hooks/usePredictions.ts","utils/hooks/useSafeLocation.ts","utils/hooks/useSyncStateWithSearchParam.ts","utils/hooks/useWindowSize.ts","utils/signalStrength.ts","utils/styles/MarginUtils.styles.ts","utils/styles/ViewportUtils.styles.ts","../node_modules/@aws-amplify/auth/node_modules/tslib/tslib.es6.js","../node_modules/@aws-amplify/auth/src/OAuth/urlOpener.ts","../node_modules/@aws-amplify/auth/src/OAuth/OAuth.ts","../node_modules/@aws-amplify/core/lib-esm/Util/StringUtils.js","../node_modules/@aws-amplify/auth/src/OAuth/oauthStorage.ts","../node_modules/@aws-amplify/auth/src/common/AuthErrorStrings.ts","../node_modules/@aws-amplify/auth/src/Errors.ts","../node_modules/@aws-amplify/auth/src/Auth.ts","../node_modules/@aws-amplify/auth/src/urlListener.ts","../node_modules/@aws-amplify/auth/src/types/Auth.ts","../node_modules/@aws-amplify/auth/node_modules/buffer/index.js","../node_modules/@aws-amplify/core/lib-esm/Amplify.js","../node_modules/@aws-amplify/core/lib-esm/OAuthHelper/GoogleOAuth.js","../node_modules/@aws-amplify/core/lib-esm/OAuthHelper/FacebookOAuth.js","../node_modules/@aws-amplify/core/lib-esm/OAuthHelper/index.js","../node_modules/@aws-amplify/core/lib-esm/clients/handlers/unauthenticated.js","../node_modules/@aws-amplify/core/lib-esm/AwsClients/CognitoIdentity/base.js","../node_modules/@aws-amplify/core/lib-esm/AwsClients/CognitoIdentity/getId.js","../node_modules/@aws-amplify/core/lib-esm/AwsClients/CognitoIdentity/getCredentialsForIdentity.js","../node_modules/@aws-amplify/core/lib-esm/Credentials.js","../node_modules/@aws-amplify/core/lib-esm/Hub.js","../node_modules/@aws-amplify/core/lib-esm/JS.js","../node_modules/@aws-amplify/core/lib-esm/Logger/ConsoleLogger.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/helpers.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/index.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detectFramework.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Expo.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/ReactNative.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Next.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Nuxt.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Angular.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/React.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Vue.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Svelte.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Web.js","../node_modules/@aws-amplify/core/lib-esm/Platform/version.js","../node_modules/@aws-amplify/core/lib-esm/Platform/index.js","../node_modules/@aws-amplify/core/lib-esm/Platform/types.js","../node_modules/@aws-amplify/core/lib-esm/StorageHelper/index.js","../node_modules/universal-cookie/es6/utils.js","../node_modules/universal-cookie/es6/Cookies.js","../node_modules/universal-cookie/es6/index.js","../node_modules/@aws-amplify/core/lib-esm/UniversalStorage/index.js","../node_modules/@aws-amplify/core/lib-esm/Util/Constants.js","../node_modules/@aws-amplify/core/lib-esm/Util/Retry.js","../node_modules/@aws-amplify/core/lib-esm/clients/endpoints/partitions.js","../node_modules/@aws-amplify/core/lib-esm/clients/endpoints/getDnsSuffix.js","../node_modules/@aws-amplify/core/lib-esm/clients/handlers/fetch.js","../node_modules/@aws-amplify/core/lib-esm/clients/internal/composeServiceApi.js","../node_modules/@aws-amplify/core/lib-esm/clients/internal/composeTransferHandler.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/isClockSkewError.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/defaultRetryDecider.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/jitteredBackoff.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/middleware.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/userAgent/middleware.js","../node_modules/@aws-amplify/core/lib-esm/clients/serde/json.js","../node_modules/@aws-amplify/core/lib-esm/clients/serde/responseInfo.js","../node_modules/@aws-amplify/core/lib-esm/clients/utils/memoization.js","../node_modules/@aws-amplify/core/lib-esm/constants.js","../node_modules/@aws-amplify/core/lib-esm/parseAWSExports.js","../node_modules/@aws-crypto/sha256-js/src/RawSha256.ts","../node_modules/@aws-crypto/sha256-js/src/constants.ts","../node_modules/@aws-crypto/sha256-js/src/index.ts","../node_modules/@aws-crypto/sha256-js/src/jsSha256.ts","../node_modules/@aws-crypto/sha256-js/node_modules/tslib/tslib.es6.js","../node_modules/@aws-crypto/util/src/convertToBuffer.ts","../node_modules/@aws-crypto/util/src/index.ts","../node_modules/@aws-crypto/util/src/isEmptyData.ts","../node_modules/@aws-crypto/util/src/numToUint8.ts","../node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts","../node_modules/@aws-sdk/util-utf8-browser/src/index.ts","../node_modules/@aws-sdk/util-utf8-browser/src/whatwgEncodingApi.ts","../node_modules/@aws-sdk/util-utf8-browser/src/pureJs.ts","../node_modules/@capacitor/core/build/platforms.js","../node_modules/@capacitor/core/build/util.js","../node_modules/@capacitor/core/build/runtime.js","../node_modules/@capacitor/core/build/global.js","../node_modules/@capacitor/core/build/web-plugin.js","../node_modules/@capacitor/core/build/core-plugins.js","../node_modules/@capacitor/geolocation/src/index.ts","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/css/create-instance/dist/emotion-css-create-instance.esm.js","../node_modules/@emotion/css/dist/emotion-css.esm.js","../node_modules/@googlemaps/react-wrapper/dist/index.umd.js","../node_modules/@ionic/core/components/animation.js","../node_modules/@ionic/core/components/capacitor.js","../node_modules/@ionic/core/components/dir.js","../node_modules/@ionic/core/components/gesture-controller.js","../node_modules/@ionic/core/components/hardware-back-button.js","../node_modules/@ionic/core/components/helpers.js","../node_modules/@ionic/core/components/index2.js","../node_modules/@ionic/core/components/index3.js","../node_modules/@ionic/core/components/index5.js","../node_modules/@ionic/core/components/index6.js","../node_modules/@ionic/core/components/index8.js","../node_modules/@ionic/core/components/ionic-global.js","../node_modules/@ionic/core/components/keyboard.js","../node_modules/@ionic/core/components/keyboard2.js","../node_modules/@ionic/core/dist/esm-es5/animation-6a0c5338.js","../node_modules/@ionic/core/dist/esm-es5/config-49c88215.js","../node_modules/@ionic/core/dist/esm-es5/cubic-bezier-fe2083dc.js","../node_modules/@ionic/core/dist/esm-es5/framework-delegate-ed4ba327.js","../node_modules/@ionic/core/dist/esm-es5/gesture-controller-1bf57181.js","../node_modules/@ionic/core/dist/esm-es5/hardware-back-button-6107a37c.js","../node_modules/@ionic/core/dist/esm-es5/helpers-be245865.js","../node_modules/@ionic/core/dist/esm-es5/index-2cf77112.js","../node_modules/@ionic/core/dist/esm-es5/index-6e05b96e.js","../node_modules/@ionic/core/dist/esm-es5/index-9b0d46f4.js","../node_modules/@ionic/core/dist/esm-es5/index-a1a47f01.js","../node_modules/@ionic/core/dist/esm-es5/index-a5d50daf.js","../node_modules/@ionic/core/dist/esm-es5/index-fae1515c.js","../node_modules/@ionic/core/dist/esm-es5/index.js","../node_modules/@ionic/core/dist/esm-es5/ionic-global-94f25d1b.js","../node_modules/@ionic/core/dist/esm-es5/ios.transition-a50a9a55.js","../node_modules/@ionic/core/dist/esm-es5/md.transition-0da92976.js","../node_modules/@ionic/core/dist/esm-es5/overlays-b874c3c3.js","../node_modules/@ionic/core/dist/esm-es5/theme-01f3f29c.js","../node_modules/@ionic/core/node_modules/@stencil/core/internal/app-data/index.js","../node_modules/@ionic/core/node_modules/@stencil/core/internal/client/index.js","../node_modules/@ionic/core/components/framework-delegate.js","../node_modules/@ionic/core/components/overlays.js","../node_modules/@ionic/core/components/index7.js","../node_modules/@ionic/core/components/icon.js","../node_modules/@ionic/core/components/ion-accordion.js","../node_modules/@ionic/core/components/ion-accordion-group.js","../node_modules/@ionic/core/components/backdrop.js","../node_modules/@ionic/core/components/ion-backdrop.js","../node_modules/@ionic/core/components/buttons.js","../node_modules/@ionic/core/components/ion-buttons.js","../node_modules/@ionic/core/components/ion-card-content.js","../node_modules/@ionic/core/components/form-controller.js","../node_modules/@ionic/core/components/theme.js","../node_modules/@ionic/core/components/checkbox.js","../node_modules/@ionic/core/components/ion-checkbox.js","../node_modules/@ionic/core/components/ripple-effect.js","../node_modules/@ionic/core/components/ion-chip.js","../node_modules/@ionic/core/components/ion-col.js","../node_modules/@ionic/core/components/ion-content.js","../node_modules/@ionic/core/components/keyboard-controller.js","../node_modules/@ionic/core/components/ion-footer.js","../node_modules/@ionic/core/components/ion-grid.js","../node_modules/@ionic/core/components/ion-header.js","../node_modules/@ionic/core/components/ion-img.js","../node_modules/@ionic/core/components/input.utils.js","../node_modules/@ionic/core/components/ion-input.js","../node_modules/@ionic/core/components/notch-controller.js","../node_modules/@ionic/core/components/ion-item-divider.js","../node_modules/@ionic/core/components/label.js","../node_modules/@ionic/core/components/ion-label.js","../node_modules/@ionic/core/components/list.js","../node_modules/@ionic/core/components/ion-list.js","../node_modules/@ionic/core/components/list-header.js","../node_modules/@ionic/core/components/ion-list-header.js","../node_modules/@ionic/core/components/cubic-bezier.js","../node_modules/@ionic/core/components/ion-nav.js","../node_modules/@ionic/core/components/ion-progress-bar.js","../node_modules/@ionic/core/components/ion-row.js","../node_modules/@ionic/core/components/ion-searchbar.js","../node_modules/@ionic/core/components/ion-skeleton-text.js","../node_modules/@ionic/core/components/spinner.js","../node_modules/@ionic/core/components/ion-spinner.js","../node_modules/@ionic/core/components/ion-text.js","../node_modules/@ionic/core/components/ion-thumbnail.js","../node_modules/@ionic/core/components/ion-title.js","../node_modules/@ionic/core/components/haptic.js","../node_modules/@ionic/core/components/ion-toggle.js","../node_modules/@ionic/core/components/ion-toolbar.js","../node_modules/@ionic/core/components/button.js","../node_modules/@ionic/core/components/ion-button.js","../node_modules/@ionic/core/components/ion-card.js","../node_modules/@ionic/core/components/ion-fab-button.js","../node_modules/@ionic/core/components/item.js","../node_modules/@ionic/core/components/ion-item.js","../node_modules/@ionic/core/components/ion-router-link.js","../node_modules/@ionic/core/components/config.js","../node_modules/@ionic/core/components/lock-controller.js","../node_modules/@ionic/core/components/ion-toast.js","../node_modules/@ionic/core/components/ion-modal.js","../node_modules/@ionic/core/components/popover.js","../node_modules/@ionic/core/components/ion-popover.js","../node_modules/@ionic/core/components/ion-app.js","../node_modules/@ionic/core/components/ion-back-button.js","../node_modules/@ionic/core/components/ion-router-outlet.js","../node_modules/@ionic/core/components/ion-tab-bar.js","../node_modules/@ionic/core/components/ion-tab-button.js","../node_modules/@ionic/react/node_modules/@stencil/core/internal/app-data/index.js","../node_modules/@ionic/react/node_modules/@stencil/core/internal/client/index.js","../node_modules/@ionic/react/node_modules/ionicons/components/utils.js","../node_modules/@ionic/react/node_modules/ionicons/components/ion-icon.js","../node_modules/@ionic/react/src/contexts/IonLifeCycleContext.tsx","../node_modules/@ionic/react/src/contexts/NavContext.ts","../node_modules/@ionic/react/src/components/react-component-lib/utils/case.ts","../node_modules/@ionic/react/src/components/react-component-lib/utils/attachProps.ts","../node_modules/@ionic/react/src/components/react-component-lib/utils/index.tsx","../node_modules/@ionic/react/src/components/react-component-lib/createComponent.tsx","../node_modules/@ionic/react/src/components/proxies.ts","../node_modules/@ionic/react/src/components/utils/index.tsx","../node_modules/@ionic/react/src/components/createRoutingComponent.tsx","../node_modules/@ionic/react/src/components/routing-proxies.ts","../node_modules/@ionic/react/src/components/utils/detachProps.ts","../node_modules/@ionic/react/src/components/createInlineOverlayComponent.tsx","../node_modules/@ionic/react/src/components/IonToast.tsx","../node_modules/@ionic/react/src/components/IonModal.tsx","../node_modules/@ionic/react/src/components/IonPopover.tsx","../node_modules/@ionic/react/src/contexts/IonContext.tsx","../node_modules/@ionic/react/src/components/IonOverlayManager.tsx","../node_modules/@ionic/react/src/components/inner-proxies.ts","../node_modules/@ionic/react/src/components/IonApp.tsx","../node_modules/@ionic/react/src/routing/StackContext.tsx","../node_modules/@ionic/react/src/routing/PageManager.tsx","../node_modules/@ionic/react/src/components/IonPage.tsx","../node_modules/@ionic/react/src/utils/generateId.ts","../node_modules/@ionic/react/src/components/navigation/IonNav.tsx","../node_modules/@ionic/react/src/components/navigation/IonTabsContext.tsx","../node_modules/@ionic/react/src/framework-delegate.tsx","../node_modules/@ionic/react/src/utils/HTMLElementSSR.ts","../node_modules/@ionic/react/src/routing/OutletPageManager.tsx","../node_modules/@ionic/react/src/components/IonRouterOutlet.tsx","../node_modules/@ionic/react/src/components/navigation/IonTabButton.tsx","../node_modules/@ionic/react/src/components/navigation/IonTabBar.tsx","../node_modules/@ionic/react/src/components/navigation/IonTabs.tsx","../node_modules/@ionic/react/src/components/navigation/IonBackButton.tsx","../node_modules/@ionic/react/src/components/IonIcon.tsx","../node_modules/@ionic/react/src/components/IonRoute.tsx","../node_modules/@ionic/react/src/components/IonRedirect.tsx","../node_modules/@ionic/react/src/components/IonRouterContext.tsx","../node_modules/@ionic/react/src/components/CreateAnimation.tsx","../node_modules/@ionic/react/src/hooks/useOverlay.ts","../node_modules/@ionic/react/src/hooks/useIonModal.ts","../node_modules/@ionic/react/src/hooks/useIonPopover.ts","../node_modules/@ionic/react/src/components/index.ts","../node_modules/@ionic/react/src/routing/RouteManagerContext.ts","../node_modules/@ionic/react/src/routing/ViewLifeCycleManager.tsx","../node_modules/@ionic/react/src/routing/LocationHistory.ts","../node_modules/@ionic/react/src/routing/NavManager.tsx","../node_modules/@ionic/react/src/routing/ViewStacks.ts","../node_modules/@smithy/eventstream-codec/node_modules/@aws-crypto/crc32/src/aws_crc32.ts","../node_modules/@smithy/eventstream-codec/node_modules/@aws-crypto/crc32/src/index.ts","../node_modules/@smithy/eventstream-codec/node_modules/@aws-crypto/crc32/node_modules/tslib/tslib.es6.js","../node_modules/@smithy/eventstream-codec/node_modules/@aws-crypto/util/src/convertToBuffer.ts","../node_modules/@smithy/eventstream-codec/node_modules/@aws-crypto/util/src/index.ts","../node_modules/@smithy/eventstream-codec/node_modules/@aws-crypto/util/src/isEmptyData.ts","../node_modules/@smithy/eventstream-codec/node_modules/@aws-crypto/util/src/numToUint8.ts","../node_modules/@smithy/eventstream-codec/node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts","../node_modules/amazon-cognito-identity-js/es/Platform/version.js","../node_modules/amazon-cognito-identity-js/es/Platform/index.js","../node_modules/amazon-cognito-identity-js/es/UserAgent.js","../node_modules/amazon-cognito-identity-js/es/Platform/constants.js","../node_modules/amazon-cognito-identity-js/es/AuthenticationDetails.js","../node_modules/amazon-cognito-identity-js/es/utils/cryptoSecureRandomInt.web.js","../node_modules/amazon-cognito-identity-js/es/utils/WordArray.js","../node_modules/amazon-cognito-identity-js/es/BigInteger.js","../node_modules/amazon-cognito-identity-js/es/AuthenticationHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoJwtToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoAccessToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoIdToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoRefreshToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserSession.js","../node_modules/amazon-cognito-identity-js/es/DateHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserAttribute.js","../node_modules/amazon-cognito-identity-js/es/StorageHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoUser.js","../node_modules/amazon-cognito-identity-js/es/Client.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserPool.js","../node_modules/amazon-cognito-identity-js/es/CookieStorage.js","../node_modules/amazon-cognito-identity-js/node_modules/buffer/index.js","../node_modules/aws-rum-web/node_modules/@aws-crypto/sha256-js/src/RawSha256.ts","../node_modules/aws-rum-web/node_modules/@aws-crypto/sha256-js/src/constants.ts","../node_modules/aws-rum-web/node_modules/@aws-crypto/sha256-js/src/index.ts","../node_modules/aws-rum-web/node_modules/@aws-crypto/sha256-js/src/jsSha256.ts","../node_modules/aws-rum-web/node_modules/@aws-crypto/sha256-js/node_modules/tslib/tslib.es6.js","../node_modules/aws-rum-web/node_modules/@aws-crypto/util/src/convertToBuffer.ts","../node_modules/aws-rum-web/node_modules/@aws-crypto/util/src/index.ts","../node_modules/aws-rum-web/node_modules/@aws-crypto/util/src/isEmptyData.ts","../node_modules/aws-rum-web/node_modules/@aws-crypto/util/src/numToUint8.ts","../node_modules/aws-rum-web/node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts","../node_modules/base64-js/index.js","../node_modules/earcut/src/earcut.js","../node_modules/fast-equals/src/utils.ts","../node_modules/fast-equals/src/comparator.ts","../node_modules/fast-equals/src/arrays.ts","../node_modules/fast-equals/src/dates.ts","../node_modules/fast-equals/src/maps.ts","../node_modules/fast-equals/src/objects.ts","../node_modules/fast-equals/src/regexps.ts","../node_modules/fast-equals/src/sets.ts","../node_modules/fast-equals/src/index.ts","../node_modules/hammerjs/hammer.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/ieee754/index.js","../node_modules/invariant/browser.js","../node_modules/isarray/index.js","../node_modules/isomorphic-unfetch/browser.js","../node_modules/js-cookie/src/js.cookie.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/errors.js","../node_modules/launchdarkly-js-client-sdk/node_modules/base64-js/index.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/node_modules/fast-deep-equal/index.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/utils.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/regex.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/validate.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/v1.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/parse.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/v35.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/md5.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/v3.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/sha1.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/v5.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/nil.js","../node_modules/launchdarkly-js-client-sdk/node_modules/uuid/dist/esm-browser/version.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/loggers.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/messages.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/configuration.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/headers.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/EventSender.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/context.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/EventSummarizer.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/attributeReference.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/EventProcessor.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/ContextFilter.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/InitializationState.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/Stream.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/Requestor.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/promiseCoalescer.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/AnonymousContextProcessor.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/diagnosticEvents.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/InspectorManager.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/SafeInspector.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/timedPromise.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/index.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/EventEmitter.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/PersistentStorage.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/Identity.js","../node_modules/launchdarkly-js-client-sdk/node_modules/launchdarkly-js-sdk-common/src/PersistentFlagStore.js","../node_modules/launchdarkly-js-client-sdk/src/basicLogger.js","../node_modules/launchdarkly-js-client-sdk/src/httpRequest.js","../node_modules/launchdarkly-js-client-sdk/node_modules/escape-string-regexp/index.js","../node_modules/launchdarkly-js-client-sdk/src/GoalTracker.js","../node_modules/launchdarkly-js-client-sdk/src/index.js","../node_modules/launchdarkly-js-client-sdk/src/browserPlatform.js","../node_modules/launchdarkly-js-client-sdk/src/GoalManager.js","../node_modules/launchdarkly-react-client-sdk/src/types.ts","../node_modules/launchdarkly-react-client-sdk/src/context.ts","../node_modules/launchdarkly-react-client-sdk/src/utils.ts","../node_modules/launchdarkly-react-client-sdk/src/initLDClient.ts","../node_modules/launchdarkly-react-client-sdk/src/getFlagsProxy.ts","../node_modules/launchdarkly-react-client-sdk/src/provider.tsx","../node_modules/launchdarkly-react-client-sdk/src/withLDProvider.tsx","../node_modules/launchdarkly-react-client-sdk/src/asyncWithLDProvider.tsx","../node_modules/launchdarkly-react-client-sdk/src/useFlags.ts","../node_modules/lodash.camelcase/index.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/debounce.js","../node_modules/lodash/eq.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/lodash.js","../node_modules/lodash/now.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/throttle.js","../node_modules/lodash/toNumber.js","../node_modules/path-to-regexp/index.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/pbf/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-helmet-async/lib/index.esm.js","../node_modules/react-query/es/core/focusManager.js","../node_modules/react-query/es/core/logger.js","../node_modules/react-query/es/core/mutation.js","../node_modules/react-query/es/core/notifyManager.js","../node_modules/react-query/es/core/onlineManager.js","../node_modules/react-query/es/core/query.js","../node_modules/react-query/es/core/queryCache.js","../node_modules/react-query/es/core/mutationCache.js","../node_modules/react-query/es/core/infiniteQueryBehavior.js","../node_modules/react-query/es/core/queryClient.js","../node_modules/react-query/es/core/retryer.js","../node_modules/react-query/es/core/subscribable.js","../node_modules/react-query/es/core/utils.js","../node_modules/react-query/es/react/reactBatchedUpdates.js","../node_modules/react-query/es/react/setBatchUpdatesFn.js","../node_modules/react-query/es/react/logger.js","../node_modules/react-query/es/react/setLogger.js","../node_modules/react-query/es/react/QueryClientProvider.js","../node_modules/react-query/es/core/mutationObserver.js","../node_modules/react-query/es/react/utils.js","../node_modules/react-query/es/react/useMutation.js","../node_modules/react-query/es/core/queryObserver.js","../node_modules/react-query/es/react/QueryErrorResetBoundary.js","../node_modules/react-query/es/react/useQuery.js","../node_modules/react-query/es/react/useBaseQuery.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/withRouter.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-router/node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../node_modules/shimmer/index.js","../node_modules/ua-parser-js/src/ua-parser.js","../node_modules/unfetch/src/index.mjs","../node_modules/universal-cookie/node_modules/cookie/index.js","../node_modules/url/node_modules/punycode/punycode.js","../node_modules/url/node_modules/querystring/decode.js","../node_modules/url/node_modules/querystring/encode.js","../node_modules/url/node_modules/querystring/index.js","../node_modules/url/url.js","../node_modules/url/util.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@googlemaps/js-api-loader/node_modules/tslib/tslib.es6.js","../node_modules/@googlemaps/js-api-loader/node_modules/fast-deep-equal/index.js","../node_modules/@googlemaps/js-api-loader/src/index.ts","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/plugins/mapset.ts","../node_modules/immer/src/immer.ts","../node_modules/immer/src/utils/env.ts","../node_modules/ionicons/icons/index.mjs","../node_modules/swiper/components-shared/utils.js","../node_modules/swiper/components-shared/params-list.js","../node_modules/swiper/react/get-children.js","../node_modules/swiper/react/use-isomorphic-layout-effect.js","../node_modules/swiper/react/context.js","../node_modules/swiper/react/swiper.js","../node_modules/swiper/components-shared/get-params.js","../node_modules/swiper/components-shared/mount-swiper.js","../node_modules/swiper/components-shared/get-changed-params.js","../node_modules/swiper/components-shared/update-swiper.js","../node_modules/swiper/components-shared/update-on-virtual-data.js","../node_modules/swiper/react/virtual.js","../node_modules/swiper/react/swiper-slide.js","../node_modules/ssr-window/ssr-window.esm.js","../node_modules/swiper/shared/utils.js","../node_modules/swiper/shared/get-support.js","../node_modules/swiper/shared/get-device.js","../node_modules/swiper/shared/get-browser.js","../node_modules/swiper/core/events-emitter.js","../node_modules/swiper/shared/process-lazy-preloader.js","../node_modules/swiper/core/update/index.js","../node_modules/swiper/core/update/updateSize.js","../node_modules/swiper/core/update/updateSlides.js","../node_modules/swiper/core/update/updateAutoHeight.js","../node_modules/swiper/core/update/updateSlidesOffset.js","../node_modules/swiper/core/update/updateSlidesProgress.js","../node_modules/swiper/core/update/updateProgress.js","../node_modules/swiper/core/update/updateSlidesClasses.js","../node_modules/swiper/core/update/updateActiveIndex.js","../node_modules/swiper/core/update/updateClickedSlide.js","../node_modules/swiper/core/translate/index.js","../node_modules/swiper/core/translate/getTranslate.js","../node_modules/swiper/core/translate/setTranslate.js","../node_modules/swiper/core/translate/minTranslate.js","../node_modules/swiper/core/translate/maxTranslate.js","../node_modules/swiper/core/translate/translateTo.js","../node_modules/swiper/core/transition/transitionEmit.js","../node_modules/swiper/core/slide/index.js","../node_modules/swiper/core/slide/slideTo.js","../node_modules/swiper/core/slide/slideToLoop.js","../node_modules/swiper/core/slide/slideNext.js","../node_modules/swiper/core/slide/slidePrev.js","../node_modules/swiper/core/slide/slideReset.js","../node_modules/swiper/core/slide/slideToClosest.js","../node_modules/swiper/core/slide/slideToClickedSlide.js","../node_modules/swiper/core/loop/index.js","../node_modules/swiper/core/loop/loopCreate.js","../node_modules/swiper/core/loop/loopFix.js","../node_modules/swiper/core/loop/loopDestroy.js","../node_modules/swiper/core/events/onTouchStart.js","../node_modules/swiper/core/events/onTouchMove.js","../node_modules/swiper/core/events/onTouchEnd.js","../node_modules/swiper/core/events/onResize.js","../node_modules/swiper/core/events/onClick.js","../node_modules/swiper/core/events/onScroll.js","../node_modules/swiper/core/events/onLoad.js","../node_modules/swiper/core/events/index.js","../node_modules/swiper/core/breakpoints/setBreakpoint.js","../node_modules/swiper/core/check-overflow/index.js","../node_modules/swiper/core/defaults.js","../node_modules/swiper/core/moduleExtendParams.js","../node_modules/swiper/core/core.js","../node_modules/swiper/core/transition/index.js","../node_modules/swiper/core/transition/setTransition.js","../node_modules/swiper/core/transition/transitionStart.js","../node_modules/swiper/core/transition/transitionEnd.js","../node_modules/swiper/core/grab-cursor/index.js","../node_modules/swiper/core/grab-cursor/setGrabCursor.js","../node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../node_modules/swiper/core/breakpoints/index.js","../node_modules/swiper/core/breakpoints/getBreakpoint.js","../node_modules/swiper/core/classes/index.js","../node_modules/swiper/core/classes/addClasses.js","../node_modules/swiper/core/classes/removeClasses.js","../node_modules/swiper/core/modules/resize/resize.js","../node_modules/swiper/core/modules/observer/observer.js","../node_modules/swiper/shared/classes-to-selector.js","../node_modules/swiper/modules/pagination/pagination.js","../node_modules/swiper/shared/create-element-if-not-defined.js","../node_modules/swiper/modules/history/history.js","../node_modules/swiper/modules/free-mode/free-mode.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/index.mjs","../node_modules/zustand/esm/shallow.mjs","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@ionic/react-router/src/ReactRouter/IonRouteInner.tsx","../node_modules/@ionic/react-router/src/ReactRouter/utils/matchPath.ts","../node_modules/@ionic/react-router/src/ReactRouter/ReactRouterViewStack.tsx","../node_modules/@ionic/react-router/src/ReactRouter/StackManager.tsx","../node_modules/@ionic/react-router/src/ReactRouter/clonePageElement.ts","../node_modules/@ionic/react-router/src/ReactRouter/IonRouter.tsx","../node_modules/@ionic/react-router/src/ReactRouter/IonReactRouter.tsx","../node_modules/@ionic/react-router/src/ReactRouter/IonReactMemoryRouter.tsx","../node_modules/@ionic/react-router/src/ReactRouter/IonReactHashRouter.tsx","utils/FeatureFlags.ts","services/backend-sync/backend-sync.service.ts","pages/home/hooks/useBackendUser.ts","components/BackendSyncLoader/BackendSyncLoader.tsx","pages/main-navigation/withSuspense.tsx","pages/summary/SummaryPageStyles.ts","components/GoToCarrierModal.tsx","pages/home/AppPromotionCard.tsx/AppPromotionCard.tsx","components/LocationsList/LocationsList.tsx","pages/home/JustForYou/JustForYouCard.tsx","pages/home/JustForYou/BestCarrierCard.tsx","pages/home/map-section/HomeMapBase.tsx","pages/home/PlanCallout/PlanCallout.tsx","pages/home/PlanCallout/PlanCalloutDesktop.tsx","components/PlanResult/LazyPlansCarousel.tsx","utils/styles/flex-utils.ts","pages/home/JustForYou/components/VireMoreLink.tsx","pages/home/JustForYou/constants/max_carousel_length.ts","pages/home/JustForYou/SavedPlans.tsx","pages/home/JustForYou/Top3Plans.tsx","pages/home/JustForYou/HomePlabTab.tsx","pages/home/styles/title-styles.ts","pages/home/JustForYou/BrowsePlans.tsx","pages/home/JustForYou/trending-promotions/HomeDealList.tsx","pages/home/JustForYou/trending-promotions/PromotionTab.ts","pages/home/JustForYou/trending-promotions/TrendingPromotions.tsx","pages/home/JustForYou/top-stories/BlogPost.tsx","pages/home/JustForYou/top-stories/TopStories.tsx","components/OnboardingCarousel/OnboardingDesktopCarousel.tsx","pages/home/PlanCallout/plan-finder-callout-modal.styles.ts","pages/home/PlanCallout/plan-finder-callout-modal.tsx","pages/home/JustForYou/JustForYou.tsx","utils/feature-flags/useFlag.ts","pages/summary/DealsAccordion.tsx","pages/summary/SummaryDeals.tsx","pages/summary/SummaryPage.tsx","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","pages/profile/ProfileMenuPageStyles.tsx","pages/profile/ProfileMenuPage.tsx","pages/home/HomePage.styles.ts","components/PopoverSelect/PopoverSelect.tsx","pages/home/map-section/HomeMapMissingLocation.tsx","pages/home/map-section/HomeMapWithLocation.tsx","pages/home/map-section/HomeMapSwitch.tsx","store/initializers/initCurrentAddress.ts","pages/home/desktop-hero/DesktopHero.tsx","pages/home/home-transition/HomeTransition.tsx","pages/main-navigation/useChatDrawerState.ts","../node_modules/@capacitor/keyboard/src/definitions.ts","../node_modules/@capacitor/keyboard/src/index.ts","pages/llm/ChatbotPage.styles.ts","components/WidthLimiter/WidthLimiter.tsx","pages/llm/components/SuggestionComponent.tsx","pages/llm/components/Message.tsx","pages/llm/components/ChatQuestionComponent.tsx","pages/llm/components/TransitionMessage.tsx","components/CoverageMapCard/CoverageMapCard.styles.tsx","pages/llm/tools/handlers/CoverageMapToolHandler.ts","pages/llm/components/tool-components/meter/NetworkMeterHistoryCardToolComponent.tsx","pages/llm/tools/handlers/PlanFinderToolHandler.ts","pages/llm/hooks/useChat.ts","pages/llm/plan-finder/useSendAnswerToLLM.ts","pages/llm/components/message-loading/message-loading.tsx","pages/llm/components/tool-components/plans/EmbeddedPlansCarousel.tsx","pages/llm/components/PlanSwipe/ChatInput/ChatInput.styles.ts","pages/llm/GojiInput.styles.tsx","pages/llm/tools/const/tool.const.ts","pages/llm/components/ChatTimeline.tsx","components/ResetButton/ResetButton.tsx","pages/llm/components/ChatComponent.tsx","pages/llm/hooks/useServerChat.ts","pages/main-navigation/ChatTooltip.tsx","pages/llm/components/chat-drawer/chat-drawer-desktop-button.tsx","pages/llm/components/chat-drawer/resizer.tsx","pages/llm/components/chat-drawer/chat-drawer.tsx","pages/main-navigation/MainNavigation.tsx","../node_modules/@capacitor/app/src/index.ts","../node_modules/@capacitor/browser/src/index.ts","components/AppUrlListener.tsx","pages/llm/components/PlanSwipe/PlanSwipe.styles.ts","pages/llm/components/PlanSwipe/PlanSwipeCard.tsx","pages/llm/components/PlanSwipe/PlanSwipeCardSkeleton.tsx","pages/llm/components/PlanSwipe/PlansSwipeDeck.tsx","pages/llm/PlanSwipePage.styles.ts","pages/llm/PlanSwipeTransitionPage.tsx","components/InstallPrompt.tsx","../node_modules/@smithy/protocol-http/node_modules/@smithy/types/dist-es/auth.js","../node_modules/@smithy/protocol-http/node_modules/@smithy/types/dist-es/endpoint.js","../node_modules/@smithy/protocol-http/node_modules/@smithy/types/dist-es/http.js","../node_modules/@smithy/protocol-http/node_modules/@smithy/types/dist-es/transfer.js","../node_modules/@smithy/protocol-http/dist-es/httpRequest.js","../node_modules/@smithy/protocol-http/dist-es/httpResponse.js","../node_modules/@smithy/util-uri-escape/dist-es/escape-uri.js","../node_modules/@smithy/querystring-builder/dist-es/index.js","../node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js","../node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js","../node_modules/@smithy/util-base64/dist-es/constants.browser.js","../node_modules/aws-rum-web/dist/es/dispatch/utils.js","../node_modules/aws-rum-web/dist/es/dispatch/StsClient.js","../node_modules/aws-rum-web/dist/es/utils/constants.js","../node_modules/aws-rum-web/dist/es/dispatch/CognitoIdentityClient.js","../node_modules/aws-rum-web/dist/es/dispatch/Authentication.js","../node_modules/aws-rum-web/dist/es/dispatch/BasicAuthentication.js","../node_modules/aws-rum-web/dist/es/dispatch/EnhancedAuthentication.js","../node_modules/aws-rum-web/dist/es/plugins/utils/constant.js","../node_modules/aws-rum-web/dist/es/plugins/InternalPlugin.js","../node_modules/aws-rum-web/dist/es/plugins/PluginManager.js","../node_modules/aws-rum-web/dist/es/plugins/event-plugins/DomEventPlugin.js","../node_modules/aws-rum-web/dist/es/plugins/utils/js-error-utils.js","../node_modules/aws-rum-web/dist/es/plugins/event-plugins/JsErrorPlugin.js","../node_modules/aws-rum-web/dist/es/utils/cookies-utils.js","../node_modules/aws-rum-web/node_modules/uuid/dist/esm-browser/native.js","../node_modules/aws-rum-web/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/aws-rum-web/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/aws-rum-web/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/aws-rum-web/dist/es/event-bus/EventBus.js","../node_modules/aws-rum-web/dist/es/sessions/SessionManager.js","../node_modules/aws-rum-web/dist/es/plugins/MonkeyPatched.js","../node_modules/aws-rum-web/dist/es/sessions/VirtualPageLoadTimer.js","../node_modules/aws-rum-web/dist/es/sessions/PageManager.js","../node_modules/aws-rum-web/dist/es/event-cache/EventCache.js","../node_modules/@smithy/util-hex-encoding/dist-es/index.js","../node_modules/@smithy/eventstream-codec/dist-es/HeaderMarshaller.js","../node_modules/@smithy/eventstream-codec/dist-es/Int64.js","../node_modules/@smithy/eventstream-codec/dist-es/MessageDecoderStream.js","../node_modules/@smithy/eventstream-codec/dist-es/MessageEncoderStream.js","../node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageDecoderStream.js","../node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageEncoderStream.js","../node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js","../node_modules/@smithy/util-utf8/dist-es/toUint8Array.js","../node_modules/@smithy/signature-v4/dist-es/constants.js","../node_modules/@smithy/signature-v4/dist-es/credentialDerivation.js","../node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js","../node_modules/@smithy/signature-v4/dist-es/getPayloadHash.js","../node_modules/@smithy/signature-v4/dist-es/cloneRequest.js","../node_modules/@smithy/signature-v4/dist-es/prepareRequest.js","../node_modules/@smithy/signature-v4/dist-es/utilDate.js","../node_modules/@smithy/signature-v4/dist-es/SignatureV4.js","../node_modules/@smithy/signature-v4/dist-es/moveHeadersToQuery.js","../node_modules/@smithy/signature-v4/dist-es/headerUtil.js","../node_modules/@smithy/signature-v4/dist-es/getCanonicalQuery.js","../node_modules/aws-rum-web/dist/es/dispatch/DataPlaneClient.js","../node_modules/aws-rum-web/dist/es/dispatch/BeaconHttpHandler.js","../node_modules/aws-rum-web/dist/es/dispatch/FetchHttpHandler.js","../node_modules/aws-rum-web/dist/es/dispatch/request-timeout.js","../node_modules/aws-rum-web/dist/es/utils/random.js","../node_modules/aws-rum-web/dist/es/plugins/utils/http-utils.js","../node_modules/aws-rum-web/dist/es/utils/common-utils.js","../node_modules/aws-rum-web/dist/es/dispatch/RetryHttpHandler.js","../node_modules/aws-rum-web/dist/es/dispatch/Dispatch.js","../node_modules/aws-rum-web/node_modules/web-vitals/dist/web-vitals.attribution.js","../node_modules/aws-rum-web/dist/es/orchestration/Orchestration.js","../node_modules/aws-rum-web/dist/es/plugins/utils/performance-utils.js","../node_modules/aws-rum-web/dist/es/plugins/event-plugins/NavigationPlugin.js","../node_modules/aws-rum-web/dist/es/plugins/event-plugins/ResourcePlugin.js","../node_modules/aws-rum-web/dist/es/plugins/event-plugins/WebVitalsPlugin.js","../node_modules/aws-rum-web/dist/es/errors/XhrError.js","../node_modules/aws-rum-web/dist/es/plugins/event-plugins/XhrPlugin.js","../node_modules/aws-rum-web/dist/es/plugins/event-plugins/FetchPlugin.js","../node_modules/aws-rum-web/dist/es/plugins/event-plugins/PageViewPlugin.js","components/ErrorBoundary/ErrorBoundary.tsx","components/Amplify/Amplify.tsx","pages/compare/ComparePage.styles.ts","pages/compare/components/AddressRow.tsx","../node_modules/react-number-format/dist/react-number-format.es.js","pages/compare/components/CarrierImage.tsx","pages/compare/ComparePage.tsx","pages/plans/embed/trending-promotions.embedded.tsx","pages/plans/embed/plans-page.embedded.tsx","components/OnboardingCarousel/onboarding-animation.tsx","pages/plan-finder-redirect/plan-finder-redirect.tsx","App.tsx","index.tsx"],"sourcesContent":["var map = {\n\t\"./\": [\n\t\t69067\n\t],\n\t\"./animation-6a0c5338\": [\n\t\t50997\n\t],\n\t\"./animation-6a0c5338.js\": [\n\t\t50997\n\t],\n\t\"./app-globals-318eef52\": [\n\t\t42285,\n\t\t2285\n\t],\n\t\"./app-globals-318eef52.js\": [\n\t\t42285,\n\t\t2285\n\t],\n\t\"./button-active-414be235\": [\n\t\t21133,\n\t\t1133\n\t],\n\t\"./button-active-414be235.js\": [\n\t\t21133,\n\t\t1133\n\t],\n\t\"./capacitor-59395cbd\": [\n\t\t11412,\n\t\t1412\n\t],\n\t\"./capacitor-59395cbd.js\": [\n\t\t11412,\n\t\t1412\n\t],\n\t\"./compare-with-utils-a96ff2ea\": [\n\t\t84302,\n\t\t4302\n\t],\n\t\"./compare-with-utils-a96ff2ea.js\": [\n\t\t84302,\n\t\t4302\n\t],\n\t\"./config-49c88215\": [\n\t\t10506\n\t],\n\t\"./config-49c88215.js\": [\n\t\t10506\n\t],\n\t\"./cubic-bezier-fe2083dc\": [\n\t\t33573\n\t],\n\t\"./cubic-bezier-fe2083dc.js\": [\n\t\t33573\n\t],\n\t\"./data-bb424ba8\": [\n\t\t56025,\n\t\t6025\n\t],\n\t\"./data-bb424ba8.js\": [\n\t\t56025,\n\t\t6025\n\t],\n\t\"./dir-babeabeb\": [\n\t\t44601,\n\t\t4601\n\t],\n\t\"./dir-babeabeb.js\": [\n\t\t44601,\n\t\t4601\n\t],\n\t\"./focus-visible-dd40d69f\": [\n\t\t20036,\n\t\t36\n\t],\n\t\"./focus-visible-dd40d69f.js\": [\n\t\t20036,\n\t\t36\n\t],\n\t\"./form-controller-21dd62b1\": [\n\t\t86351,\n\t\t6351\n\t],\n\t\"./form-controller-21dd62b1.js\": [\n\t\t86351,\n\t\t6351\n\t],\n\t\"./framework-delegate-ed4ba327\": [\n\t\t11084\n\t],\n\t\"./framework-delegate-ed4ba327.js\": [\n\t\t11084\n\t],\n\t\"./gesture-controller-1bf57181\": [\n\t\t74163\n\t],\n\t\"./gesture-controller-1bf57181.js\": [\n\t\t74163\n\t],\n\t\"./haptic-554688a5\": [\n\t\t78455,\n\t\t8455\n\t],\n\t\"./haptic-554688a5.js\": [\n\t\t78455,\n\t\t8455\n\t],\n\t\"./hardware-back-button-6107a37c\": [\n\t\t33455\n\t],\n\t\"./hardware-back-button-6107a37c.js\": [\n\t\t33455\n\t],\n\t\"./helpers-be245865\": [\n\t\t23260\n\t],\n\t\"./helpers-be245865.js\": [\n\t\t23260\n\t],\n\t\"./index\": [\n\t\t69067\n\t],\n\t\"./index-020f5464\": [\n\t\t76251,\n\t\t6251\n\t],\n\t\"./index-020f5464.js\": [\n\t\t76251,\n\t\t6251\n\t],\n\t\"./index-2cf77112\": [\n\t\t52283\n\t],\n\t\"./index-2cf77112.js\": [\n\t\t52283\n\t],\n\t\"./index-6e05b96e\": [\n\t\t18250\n\t],\n\t\"./index-6e05b96e.js\": [\n\t\t18250\n\t],\n\t\"./index-9b0d46f4\": [\n\t\t39155\n\t],\n\t\"./index-9b0d46f4.js\": [\n\t\t39155\n\t],\n\t\"./index-a1a47f01\": [\n\t\t37425\n\t],\n\t\"./index-a1a47f01.js\": [\n\t\t37425\n\t],\n\t\"./index-a5d50daf\": [\n\t\t75102\n\t],\n\t\"./index-a5d50daf.js\": [\n\t\t75102\n\t],\n\t\"./index-f3946ac1\": [\n\t\t27907,\n\t\t7907\n\t],\n\t\"./index-f3946ac1.js\": [\n\t\t27907,\n\t\t7907\n\t],\n\t\"./index-f7dc70ba\": [\n\t\t76752,\n\t\t6752\n\t],\n\t\"./index-f7dc70ba.js\": [\n\t\t76752,\n\t\t6752\n\t],\n\t\"./index-fae1515c\": [\n\t\t58129\n\t],\n\t\"./index-fae1515c.js\": [\n\t\t58129\n\t],\n\t\"./index.js\": [\n\t\t69067\n\t],\n\t\"./input-shims-a52daa3a\": [\n\t\t40415,\n\t\t415\n\t],\n\t\"./input-shims-a52daa3a.js\": [\n\t\t40415,\n\t\t415\n\t],\n\t\"./input.utils-a445f677\": [\n\t\t19921,\n\t\t9921\n\t],\n\t\"./input.utils-a445f677.js\": [\n\t\t19921,\n\t\t9921\n\t],\n\t\"./ion-accordion_2.entry\": [\n\t\t47641,\n\t\t7641\n\t],\n\t\"./ion-accordion_2.entry.js\": [\n\t\t47641,\n\t\t7641\n\t],\n\t\"./ion-action-sheet.entry\": [\n\t\t92788,\n\t\t2788\n\t],\n\t\"./ion-action-sheet.entry.js\": [\n\t\t92788,\n\t\t2788\n\t],\n\t\"./ion-alert.entry\": [\n\t\t33708,\n\t\t3708\n\t],\n\t\"./ion-alert.entry.js\": [\n\t\t33708,\n\t\t3708\n\t],\n\t\"./ion-app_8.entry\": [\n\t\t99438,\n\t\t9438\n\t],\n\t\"./ion-app_8.entry.js\": [\n\t\t99438,\n\t\t9438\n\t],\n\t\"./ion-avatar_3.entry\": [\n\t\t48183,\n\t\t8183\n\t],\n\t\"./ion-avatar_3.entry.js\": [\n\t\t48183,\n\t\t8183\n\t],\n\t\"./ion-back-button.entry\": [\n\t\t54764,\n\t\t4764\n\t],\n\t\"./ion-back-button.entry.js\": [\n\t\t54764,\n\t\t4764\n\t],\n\t\"./ion-backdrop.entry\": [\n\t\t44506,\n\t\t4506\n\t],\n\t\"./ion-backdrop.entry.js\": [\n\t\t44506,\n\t\t4506\n\t],\n\t\"./ion-breadcrumb_2.entry\": [\n\t\t90148,\n\t\t148\n\t],\n\t\"./ion-breadcrumb_2.entry.js\": [\n\t\t90148,\n\t\t148\n\t],\n\t\"./ion-button_2.entry\": [\n\t\t79105,\n\t\t9105\n\t],\n\t\"./ion-button_2.entry.js\": [\n\t\t79105,\n\t\t9105\n\t],\n\t\"./ion-card_5.entry\": [\n\t\t49586,\n\t\t9586\n\t],\n\t\"./ion-card_5.entry.js\": [\n\t\t49586,\n\t\t9586\n\t],\n\t\"./ion-checkbox.entry\": [\n\t\t67393,\n\t\t7393\n\t],\n\t\"./ion-checkbox.entry.js\": [\n\t\t67393,\n\t\t7393\n\t],\n\t\"./ion-chip.entry\": [\n\t\t38466,\n\t\t8466\n\t],\n\t\"./ion-chip.entry.js\": [\n\t\t38466,\n\t\t8466\n\t],\n\t\"./ion-col_3.entry\": [\n\t\t23430,\n\t\t3430\n\t],\n\t\"./ion-col_3.entry.js\": [\n\t\t23430,\n\t\t3430\n\t],\n\t\"./ion-datetime-button.entry\": [\n\t\t56538,\n\t\t6025,\n\t\t6538\n\t],\n\t\"./ion-datetime-button.entry.js\": [\n\t\t56538,\n\t\t6025,\n\t\t6538\n\t],\n\t\"./ion-datetime_3.entry\": [\n\t\t57651,\n\t\t6025,\n\t\t7651\n\t],\n\t\"./ion-datetime_3.entry.js\": [\n\t\t57651,\n\t\t6025,\n\t\t7651\n\t],\n\t\"./ion-fab_3.entry\": [\n\t\t24537,\n\t\t4537\n\t],\n\t\"./ion-fab_3.entry.js\": [\n\t\t24537,\n\t\t4537\n\t],\n\t\"./ion-img.entry\": [\n\t\t43861,\n\t\t3861\n\t],\n\t\"./ion-img.entry.js\": [\n\t\t43861,\n\t\t3861\n\t],\n\t\"./ion-infinite-scroll_2.entry\": [\n\t\t1985,\n\t\t1985\n\t],\n\t\"./ion-infinite-scroll_2.entry.js\": [\n\t\t1985,\n\t\t1985\n\t],\n\t\"./ion-input.entry\": [\n\t\t54646,\n\t\t4646\n\t],\n\t\"./ion-input.entry.js\": [\n\t\t54646,\n\t\t4646\n\t],\n\t\"./ion-item-option_3.entry\": [\n\t\t65795,\n\t\t5795\n\t],\n\t\"./ion-item-option_3.entry.js\": [\n\t\t65795,\n\t\t5795\n\t],\n\t\"./ion-item_8.entry\": [\n\t\t37740,\n\t\t7740\n\t],\n\t\"./ion-item_8.entry.js\": [\n\t\t37740,\n\t\t7740\n\t],\n\t\"./ion-loading.entry\": [\n\t\t47658,\n\t\t7658\n\t],\n\t\"./ion-loading.entry.js\": [\n\t\t47658,\n\t\t7658\n\t],\n\t\"./ion-menu_3.entry\": [\n\t\t42133,\n\t\t2133\n\t],\n\t\"./ion-menu_3.entry.js\": [\n\t\t42133,\n\t\t2133\n\t],\n\t\"./ion-modal.entry\": [\n\t\t70943,\n\t\t943\n\t],\n\t\"./ion-modal.entry.js\": [\n\t\t70943,\n\t\t943\n\t],\n\t\"./ion-nav_2.entry\": [\n\t\t70850,\n\t\t850\n\t],\n\t\"./ion-nav_2.entry.js\": [\n\t\t70850,\n\t\t850\n\t],\n\t\"./ion-picker-column-internal.entry\": [\n\t\t60635,\n\t\t635\n\t],\n\t\"./ion-picker-column-internal.entry.js\": [\n\t\t60635,\n\t\t635\n\t],\n\t\"./ion-picker-internal.entry\": [\n\t\t65190,\n\t\t5190\n\t],\n\t\"./ion-picker-internal.entry.js\": [\n\t\t65190,\n\t\t5190\n\t],\n\t\"./ion-popover.entry\": [\n\t\t29795,\n\t\t9795\n\t],\n\t\"./ion-popover.entry.js\": [\n\t\t29795,\n\t\t9795\n\t],\n\t\"./ion-progress-bar.entry\": [\n\t\t86719,\n\t\t6719\n\t],\n\t\"./ion-progress-bar.entry.js\": [\n\t\t86719,\n\t\t6719\n\t],\n\t\"./ion-radio_2.entry\": [\n\t\t58924,\n\t\t8924\n\t],\n\t\"./ion-radio_2.entry.js\": [\n\t\t58924,\n\t\t8924\n\t],\n\t\"./ion-range.entry\": [\n\t\t52443,\n\t\t2443\n\t],\n\t\"./ion-range.entry.js\": [\n\t\t52443,\n\t\t2443\n\t],\n\t\"./ion-refresher_2.entry\": [\n\t\t90923,\n\t\t923\n\t],\n\t\"./ion-refresher_2.entry.js\": [\n\t\t90923,\n\t\t923\n\t],\n\t\"./ion-reorder_2.entry\": [\n\t\t96928,\n\t\t6928\n\t],\n\t\"./ion-reorder_2.entry.js\": [\n\t\t96928,\n\t\t6928\n\t],\n\t\"./ion-ripple-effect.entry\": [\n\t\t99902,\n\t\t9902\n\t],\n\t\"./ion-ripple-effect.entry.js\": [\n\t\t99902,\n\t\t9902\n\t],\n\t\"./ion-route_4.entry\": [\n\t\t26016,\n\t\t6016\n\t],\n\t\"./ion-route_4.entry.js\": [\n\t\t26016,\n\t\t6016\n\t],\n\t\"./ion-searchbar.entry\": [\n\t\t52727,\n\t\t2727\n\t],\n\t\"./ion-searchbar.entry.js\": [\n\t\t52727,\n\t\t2727\n\t],\n\t\"./ion-segment_2.entry\": [\n\t\t81590,\n\t\t1590\n\t],\n\t\"./ion-segment_2.entry.js\": [\n\t\t81590,\n\t\t1590\n\t],\n\t\"./ion-select_3.entry\": [\n\t\t34994,\n\t\t4994\n\t],\n\t\"./ion-select_3.entry.js\": [\n\t\t34994,\n\t\t4994\n\t],\n\t\"./ion-spinner.entry\": [\n\t\t94423,\n\t\t4423\n\t],\n\t\"./ion-spinner.entry.js\": [\n\t\t94423,\n\t\t4423\n\t],\n\t\"./ion-split-pane.entry\": [\n\t\t30853,\n\t\t853\n\t],\n\t\"./ion-split-pane.entry.js\": [\n\t\t30853,\n\t\t853\n\t],\n\t\"./ion-tab-bar_2.entry\": [\n\t\t92740,\n\t\t2740\n\t],\n\t\"./ion-tab-bar_2.entry.js\": [\n\t\t92740,\n\t\t2740\n\t],\n\t\"./ion-tab_2.entry\": [\n\t\t82980,\n\t\t2980\n\t],\n\t\"./ion-tab_2.entry.js\": [\n\t\t82980,\n\t\t2980\n\t],\n\t\"./ion-text.entry\": [\n\t\t3887,\n\t\t3887\n\t],\n\t\"./ion-text.entry.js\": [\n\t\t3887,\n\t\t3887\n\t],\n\t\"./ion-textarea.entry\": [\n\t\t41206,\n\t\t1206\n\t],\n\t\"./ion-textarea.entry.js\": [\n\t\t41206,\n\t\t1206\n\t],\n\t\"./ion-toast.entry\": [\n\t\t13161,\n\t\t3161\n\t],\n\t\"./ion-toast.entry.js\": [\n\t\t13161,\n\t\t3161\n\t],\n\t\"./ion-toggle.entry\": [\n\t\t34928,\n\t\t4928\n\t],\n\t\"./ion-toggle.entry.js\": [\n\t\t34928,\n\t\t4928\n\t],\n\t\"./ionic\": [\n\t\t33613,\n\t\t3613\n\t],\n\t\"./ionic-global-94f25d1b\": [\n\t\t70301\n\t],\n\t\"./ionic-global-94f25d1b.js\": [\n\t\t70301\n\t],\n\t\"./ionic.js\": [\n\t\t33613,\n\t\t3613\n\t],\n\t\"./ios.transition-a50a9a55\": [\n\t\t87119\n\t],\n\t\"./ios.transition-a50a9a55.js\": [\n\t\t87119\n\t],\n\t\"./keyboard-52278bd7\": [\n\t\t77000,\n\t\t7000\n\t],\n\t\"./keyboard-52278bd7.js\": [\n\t\t77000,\n\t\t7000\n\t],\n\t\"./keyboard-73175e24\": [\n\t\t93377,\n\t\t3377\n\t],\n\t\"./keyboard-73175e24.js\": [\n\t\t93377,\n\t\t3377\n\t],\n\t\"./keyboard-controller-ec5c2bfa\": [\n\t\t15369,\n\t\t5369\n\t],\n\t\"./keyboard-controller-ec5c2bfa.js\": [\n\t\t15369,\n\t\t5369\n\t],\n\t\"./loader\": [\n\t\t33336,\n\t\t3336\n\t],\n\t\"./loader.js\": [\n\t\t33336,\n\t\t3336\n\t],\n\t\"./lock-controller-316928be\": [\n\t\t73516,\n\t\t3516\n\t],\n\t\"./lock-controller-316928be.js\": [\n\t\t73516,\n\t\t3516\n\t],\n\t\"./md.transition-0da92976\": [\n\t\t45884\n\t],\n\t\"./md.transition-0da92976.js\": [\n\t\t45884\n\t],\n\t\"./notch-controller-6bd3e0f9\": [\n\t\t97214,\n\t\t7214\n\t],\n\t\"./notch-controller-6bd3e0f9.js\": [\n\t\t97214,\n\t\t7214\n\t],\n\t\"./overlays-b874c3c3\": [\n\t\t79434\n\t],\n\t\"./overlays-b874c3c3.js\": [\n\t\t79434\n\t],\n\t\"./spinner-configs-964f7cf3\": [\n\t\t49601,\n\t\t9601\n\t],\n\t\"./spinner-configs-964f7cf3.js\": [\n\t\t49601,\n\t\t9601\n\t],\n\t\"./status-tap-dfea3607\": [\n\t\t7842,\n\t\t5461\n\t],\n\t\"./status-tap-dfea3607.js\": [\n\t\t7842,\n\t\t5461\n\t],\n\t\"./swipe-back-37a22d34\": [\n\t\t29378,\n\t\t6997\n\t],\n\t\"./swipe-back-37a22d34.js\": [\n\t\t29378,\n\t\t6997\n\t],\n\t\"./theme-01f3f29c\": [\n\t\t86579\n\t],\n\t\"./theme-01f3f29c.js\": [\n\t\t86579\n\t],\n\t\"./watch-options-c2911ace\": [\n\t\t52957,\n\t\t2957\n\t],\n\t\"./watch-options-c2911ace.js\": [\n\t\t52957,\n\t\t2957\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 19246;\nmodule.exports = webpackAsyncContext;","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 71233;\nmodule.exports = webpackEmptyAsyncContext;","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 82313;\nmodule.exports = webpackEmptyAsyncContext;","import { Logger } from '../utils/Logger'\nconst BACKEND_URL = process.env.REACT_APP_BACKEND_URL\n\nexport type IApi = {\n get(resource: string): Promise\n post>(resource: string, body: B): Promise\n put>(resource: string, body: B): Promise\n delete(resource: string): Promise\n}\n\nexport const apiName = 'tbirdapi'\n\nasync function getToken(): Promise {\n try {\n const Auth = (await import('aws-amplify')).Auth\n const session = await Auth.currentSession()\n const token = session.getAccessToken().getJwtToken()\n return token\n } catch (e) {\n if (e !== 'No current user') {\n Logger.error(e)\n }\n return ''\n }\n}\n\nexport async function handleRequest(url: string, requestInit: RequestInit = {}): Promise {\n if (!requestInit.headers) {\n requestInit.headers = {}\n }\n\n const token = await getToken()\n if (token && !Object.hasOwn(requestInit.headers, 'Authorization')) {\n // @ts-expect-error\n requestInit.headers['Authorization'] = 'Bearer ' + token\n }\n\n return fetch(BACKEND_URL + url, requestInit)\n}\n\nexport async function requestJson(url: string, requestInit: RequestInit = {}): Promise {\n return handleRequest(url, requestInit)\n .then((res) => {\n if (res.status === 204) {\n return {} as T\n }\n\n if (res.status === 403) {\n return Promise.reject({ error: new Error('Forbidden'), res })\n }\n if (res.status === 404) {\n return Promise.reject({ error: new Error('Not found'), res })\n }\n\n if (res.status === 500) {\n return Promise.reject({ error: new Error('Internal Server Error'), res })\n }\n\n return res.text().then((text) => {\n return text ? JSON.parse(text) : {}\n })\n })\n .then(\n (result) => Promise.resolve(result),\n (error) => Promise.reject(error)\n )\n}\n\nexport const HttpApi: IApi = {\n async get(resource: string): Promise {\n return await requestJson(resource)\n },\n\n async post>(resource: string, body: B): Promise {\n return await requestJson(resource, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(body)\n })\n },\n\n async put(resource: string, body: Record): Promise {\n return await requestJson(resource, {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(body)\n })\n },\n\n async delete(resource: string): Promise {\n return await requestJson(resource, {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n }\n })\n }\n}\n\nconst API = {\n api: HttpApi,\n\n async get(resource: string): Promise {\n return await this.api.get(resource)\n },\n\n async post(resource: string, body: Record | unknown[]): Promise {\n return await this.api.post(resource, body)\n },\n\n async put(resource: string, body: Record): Promise {\n return await this.api.put(resource, body)\n },\n\n async delete(resource: string): Promise {\n return await this.api.delete(resource)\n }\n}\n\nexport default API\n","import { css, cx } from '@emotion/css'\nimport { Separator } from './Separator/Separator'\nimport { IonCol, IonGrid, IonIcon, IonItem, IonLabel, IonRow, IonSearchbar, IonSpinner } from '@ionic/react'\nimport * as React from 'react'\nimport { useBoundStore } from '../store'\nimport { getBoundsFromAddresses, getAddressFromPlaceId } from '../utils/Address'\nimport { Address } from '../store/address'\nimport Content from './Content'\nimport { useRecentAddressSearch } from '../utils/hooks/useRecentAddressSearch'\nimport { useQuery } from 'react-query'\nimport shallow from 'zustand/shallow'\nimport useAddressPredictions from '../utils/hooks/usePredictions'\nimport { GmapsContext } from '../pages/llm/utils/gmaps-context'\n\nexport const CustomSearchbarStyles = css`\n --border-radius: 42px !important;\n --background: var(--ion-color-primary-contrast);\n --color: var(--ion-color-dark);\n --placeholder-color: var(--ion-placeholder-color);\n --icon-color: var(--ion-placeholder-color);\n --clear-button-color: var(--ion-placeholder-color);\n --box-shadow: none;\n\n padding: 0;\n\n & > div.searchbar-input-container.sc-ion-searchbar-ios {\n height: 100%;\n }\n\n & > div input:focus {\n border: solid 2px var(--ion-color-primary);\n }\n\n & > div > input.sc-ion-searchbar-ios {\n padding-left: 53px !important;\n }\n\n & > div.sc-ion-searchbar-ios > .searchbar-search-icon {\n margin-left: 8px !important;\n }\n\n & > div > .searchbar-search-icon {\n width: 18px;\n opacity: 0.5;\n top: 50%;\n transform: translateY(-50%);\n }\n\n &:not(.ios) .searchbar-cancel-button {\n width: 18px;\n left: 16px !important;\n top: 50%;\n transform: translateY(-50%);\n }\n`\nconst AutocompleteContentStyles = css`\n --background: var(--ion-item-background);\n`\n\nconst AutocompleteSearchbarStyles = css`\n height: 51px;\n min-height: 51px;\n padding: 0 24px;\n`\n\nconst getGeocodeResultFromPlaceId = async (placeIds: string[]) => {\n const geocoder = new google.maps.Geocoder()\n const searches = await Promise.all(\n placeIds.map(async (placeId) => {\n const { results } = await geocoder.geocode({ placeId })\n return results.length > 0 ? results[0] : null\n })\n )\n return searches.filter((result) => result !== null) as google.maps.GeocoderResult[]\n}\n\ninterface AutocompleteProps {\n ref?: React.Ref\n addresses: Address[]\n onAddressSelected: (newAddress: Address) => void\n onClose: () => void\n}\n\n/**\n * Autocomplete modal that renders a list of Addresses\n * @returns Autocomplete component\n */\nconst Autocomplete = React.forwardRef((props: AutocompleteProps, ref: React.Ref) => {\n const [searchTerm, setSearchTerm] = React.useState('')\n\n const { predictions } = useAddressPredictions({ value: searchTerm, bounds: getBoundsFromAddresses(props.addresses) })\n\n const cancelSearch = () => {\n clearSearchTerm()\n props.onClose()\n }\n const clearSearchTerm = () => {\n setSearchTerm('')\n }\n\n const { addRecentAddressSearch } = useRecentAddressSearch()\n const [searchedAddressHistory] = useBoundStore((state) => [state.searchedAddressHistory], shallow)\n\n const { data: RecentSearches = [] } = useQuery(\n ['recentSearches', searchedAddressHistory],\n () => getGeocodeResultFromPlaceId(searchedAddressHistory),\n { enabled: searchedAddressHistory.length > 0 }\n )\n\n const onChange = (e: React.SyntheticEvent) => {\n setSearchTerm((e.target as HTMLInputElement).value)\n }\n\n const { geocoder } = React.useContext(GmapsContext)\n const onClick = async (item: { place_id: string }) => {\n addRecentAddressSearch(item.place_id)\n cancelSearch()\n const address = await getAddressFromPlaceId(item.place_id, geocoder)\n if (address) {\n props.onAddressSelected(address)\n }\n }\n\n const isDisabled = (result: { place_id: string }) => {\n return props.addresses.map((addr) => addr.placeId).includes(result.place_id)\n }\n\n return (\n \n \n \n {predictions.isLoading ? (\n \n \n \n \n \n \n \n ) : null}\n {!predictions.isLoading &&\n predictions.data &&\n predictions.data.length > 0 &&\n predictions.data.map((result, i) => (\n onClick(result)}\n disabled={isDisabled(result)}\n lines='none'\n className='search-result-item'\n >\n {searchedAddressHistory.includes(result.place_id) ? (\n \n ) : (\n \n )}\n \n

{result.structured_formatting.main_text}

\n

{result.structured_formatting.secondary_text}

\n
\n \n ))}\n {!searchTerm &&\n RecentSearches.map((result, i) => (\n onClick(result)}\n disabled={isDisabled(result)}\n lines='none'\n className='search-result-item'\n >\n \n \n {/* street_number and route */}\n

{`${result.address_components[0]?.long_name} ${result.address_components[1]?.long_name}`}

\n {/* locality, administrative_area_level_1, country */}\n

\n {`${result.address_components[2]?.long_name}, ${result.address_components[5]?.long_name}, ${result.address_components[6]?.short_name}`}\n

\n
\n \n ))}\n {searchTerm && !predictions.isLoading && !predictions.data?.length ? (\n

No results

\n ) : null}\n
\n )\n})\n\nexport default Autocomplete\n","import { RecentSearchService } from '../../services/RecentSearch.service'\nimport { useBoundStore } from '../../store'\n\nexport const useRecentAddressSearch = () => {\n const setRecentAddressSearch = useBoundStore((state) => state.setSearchedAddressHistory)\n\n const addRecentAddressSearch = async (placeId: string) => {\n const newSearchHistory = await RecentSearchService.addRecentAddressSearch(placeId)\n if (!Array.isArray(newSearchHistory)) return\n setRecentAddressSearch(newSearchHistory)\n }\n\n return { addRecentAddressSearch }\n}\n","import { IonRow, IonSpinner } from '@ionic/react'\n\nexport const LoaderComponent = () => {\n return (\n \n \n \n )\n}\n","import { Status, Wrapper } from '@googlemaps/react-wrapper'\nimport shallow from 'zustand/shallow'\nimport { useBoundStore } from '../../store'\nimport { LoaderComponent } from './LoaderComponent'\n\nconst API_KEY = process.env.REACT_APP_MAPS_API_KEY\n\nconst render = (status: Status): any => {\n if (status === Status.LOADING) return \n if (status === Status.FAILURE) return

{status} ...

\n return null\n}\n\nexport function MapsWrapper(props: { children?: React.ReactNode | React.ReactNode[] }) {\n const [libraries] = useBoundStore((state) => [state.map.libraries], shallow)\n return (\n // TODO: figure out how to import LatLng without needing wrapper re-renders\n \n {props.children}\n \n )\n}\n","import { IonButton } from '@ionic/react'\nimport { css, cx } from '@emotion/css'\n\nconst CompareToolbarStyles = css`\n position: relative;\n display: flex;\n justify-content: flex-end;\n z-index: 10;\n\n & > .compare-button-fixed {\n position: fixed;\n bottom: var(--bottom-fixed, 15px);\n margin-right: 78px;\n\n .compare-button {\n --border-radius: 30px;\n text-transform: uppercase;\n border-radius: 30px;\n height: 48px;\n font-size: 16px;\n font-weight: 700;\n letter-spacing: normal;\n }\n }\n\n & > .fab-go-up-fixed {\n position: fixed;\n bottom: var(--bottom-fixed, 15px);\n margin-right: 16px;\n\n ion-fab-button {\n width: 48px;\n height: 48px;\n img {\n object-fit: contain;\n object-position: top;\n }\n }\n }\n`\n\nexport const CompareToolbar = (props: {\n toggleCompare: () => void\n className?: string\n showCompareButton: boolean\n children: React.ReactNode\n}) => {\n return (\n
\n
\n {props.showCompareButton ? (\n \n Compare\n \n ) : null}\n
\n\n
{props.children}
\n
\n )\n}\n","import * as React from 'react'\nimport { Carrier } from '../../store/carrierSelector'\nimport { css, cx } from '@emotion/css'\n\nconst carrierDisplayStyles = css`\n display: flex;\n`\n\nexport const smallImageStyles = css`\n height: 38px;\n min-height: 38px;\n`\n\ninterface CarrierDisplayProps {\n carrier: Pick\n className?: string\n smaller?: boolean\n}\nconst CarrierDisplay: React.FC = (props) => {\n return (\n
\n {props.carrier.logo_url ? (\n {props.carrier.name}\n ) : (\n props.carrier.name\n )}\n
\n )\n}\n\nexport default CarrierDisplay\n","import { css, cx } from '@emotion/css'\nimport { IonRouterLink } from '@ionic/react'\nimport * as React from 'react'\n\nconst CloseButtonStyles = css`\n color: inherit;\n &[role='button'] {\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n`\nconst CloseButton: React.FC<{\n onClose?: React.MouseEventHandler\n className?: string\n routerLink?: string\n tabIndex?: number\n}> = (props) => {\n const svg = (\n \n \n \n )\n const className = cx('close-button', CloseButtonStyles, props.className)\n\n if (props.routerLink) {\n return (\n \n {svg}\n \n )\n }\n return (\n
\n {svg}\n
\n )\n}\n\nexport default CloseButton\n","import * as React from 'react'\nimport { IonContent } from '@ionic/react'\n\nconst ContentRender: React.ForwardRefRenderFunction<\n HTMLIonContentElement,\n React.ComponentPropsWithoutRef\n> = ({ children, ...props }, ref) => {\n return (\n \n
{children}
\n
\n )\n}\n\nconst Content = React.forwardRef(ContentRender)\n\nexport default Content\n","import create from 'zustand'\nimport { getBoundsFromAddresses } from '../../../utils/Address'\nimport { Address } from '../../../store/address'\n\ninterface MinimapStore {\n owner: number | undefined\n setOwner: (newOwner: number | undefined) => void\n}\n\nexport const useMinimapStore = create()((set) => ({\n owner: undefined,\n setOwner: (newOwner) => set(() => ({ owner: newOwner }))\n}))\n\nconst getClosestAddress = (center: google.maps.LatLng, addresses: Address[]) => {\n const sortedAddresses = addresses\n .map((address) => {\n return {\n distance: google.maps.geometry.spherical.computeDistanceBetween(\n new google.maps.LatLng(address.latitude, address.longitude),\n center\n ),\n address\n }\n })\n .sort((address1, address2) => address1.distance - address2.distance)\n\n return sortedAddresses[0]?.address\n}\n\nexport const calcArea = (A: google.maps.LatLngBounds) => {\n return google.maps.geometry.spherical.computeArea(A)\n}\n\ninterface MinimapInitializer {\n map: google.maps.Map\n parentMap: google.maps.Map\n addresses: Address[]\n onChangeVisibility: (visible: boolean) => void\n}\n\nexport class MinimapEventController {\n private static instance: MinimapEventController\n static replaceInstance(initializer: MinimapInitializer) {\n if (MinimapEventController.instance) {\n MinimapEventController.instance.destroy()\n }\n MinimapEventController.instance = new MinimapEventController(initializer)\n return MinimapEventController.instance\n }\n\n private minimap: google.maps.Map\n private parentMap: google.maps.Map\n private addresses: Address[]\n constructor(private options: MinimapInitializer) {\n this.minimap = options.map\n this.parentMap = options.parentMap\n this.addresses = options.addresses\n }\n\n setAddresses(addresses: Address[]) {\n this.addresses = addresses\n }\n\n syncMap(sourceMap: google.maps.Map, destinationMap: google.maps.Map) {\n const center = sourceMap.getCenter()\n center && destinationMap.setCenter(center)\n }\n\n panToClosestAddress() {\n const center = this.minimap.getCenter()\n if (!center) {\n return\n }\n\n const closestAddress = getClosestAddress(center, this.addresses)\n\n this.parentMap.panTo(new google.maps.LatLng(closestAddress.latitude, closestAddress.longitude))\n this.minimap.panTo(new google.maps.LatLng(closestAddress.latitude, closestAddress.longitude))\n }\n\n fitsAddresses(): boolean {\n const parentBounds = this.parentMap.getBounds()\n if (!parentBounds) {\n return false\n }\n const addressesBounds = getBoundsFromAddresses(this.addresses)\n\n return (\n parentBounds.contains(addressesBounds.getNorthEast()) && parentBounds.contains(addressesBounds.getSouthWest())\n )\n }\n\n private largerThanParent(): boolean {\n const bounds = this.minimap.getBounds()\n const parentBounds = this.parentMap.getBounds()\n if (!bounds || !parentBounds) {\n return true\n }\n return calcArea(bounds) > calcArea(parentBounds)\n }\n\n private listeners: google.maps.MapsEventListener[] = []\n\n // owner is used so when one map updates, the other one is not listening.\n // It avoids a loop\n static readonly minimapId = 1\n static readonly parentMapId = 2\n\n getOwner(): number | undefined {\n return useMinimapStore.getState().owner\n }\n setOwner(newOwner: number | undefined) {\n useMinimapStore.getState().setOwner(newOwner)\n }\n\n listen() {\n const addListener = (map: google.maps.Map, evt: string, listener: Function) => {\n const l = map.addListener(evt, listener)\n this.listeners.push(l)\n return l\n }\n\n const addSyncedMap = (map: google.maps.Map, listener: Function, id: number) => {\n addListener(map, 'dragstart', () => {\n this.setOwner(id)\n })\n\n addListener(map, 'dragend', () => {\n this.setOwner(undefined)\n })\n\n addListener(map, 'bounds_changed', () => {\n if (this.getOwner() === id) {\n listener()\n }\n })\n\n return id\n }\n\n addSyncedMap(\n this.minimap,\n () => {\n this.syncMap(this.minimap, this.parentMap)\n },\n MinimapEventController.minimapId\n )\n\n addSyncedMap(\n this.parentMap,\n () => {\n this.syncMap(this.parentMap, this.minimap)\n },\n MinimapEventController.parentMapId\n )\n\n addListener(this.parentMap, 'bounds_changed', () => {\n if (!this.largerThanParent()) {\n this.options.onChangeVisibility(false)\n } else {\n this.options.onChangeVisibility(!this.fitsAddresses())\n }\n })\n\n addListener(this.minimap, 'dragend', () => {\n this.panToClosestAddress()\n })\n }\n\n destroy() {\n this.listeners.forEach((listener) => listener.remove())\n }\n}\n","import { createGesture, Gesture } from '@ionic/react'\nimport React from 'react'\n\ninterface UseBottomTrayGestureProps {\n element: HTMLElement | null\n enabled?: boolean\n onStart?: () => void\n onMove?: (ev: any) => void\n onEnd?: (ev: any) => void\n direction?: 'x' | 'y'\n}\n\nconst useSwipeGesture = ({ element, onStart, onMove, onEnd, direction = 'y' }: UseBottomTrayGestureProps) => {\n const gestureRef = React.useRef()\n\n React.useEffect(() => {\n if (element === null) {\n return\n }\n gestureRef.current = createGesture({\n el: element,\n gestureName: 'swipe',\n direction,\n onStart,\n onMove,\n onEnd\n })\n\n gestureRef.current.enable(true)\n const gesture = gestureRef.current\n\n return () => {\n gesture.destroy()\n }\n }, [direction, element, onEnd, onMove, onStart])\n}\n\nexport default useSwipeGesture\n","import { css, cx } from '@emotion/css'\nimport { GridColorScale } from '../../utils/signalStrength'\nimport { ResetMargin } from '../../utils/styles/MarginUtils.styles'\nimport CloseButton from '../CloseButton/CloseButton'\nimport TModal from '../TModal/TModal'\n\nconst DiamondStyles = (color: string) => css`\n width: 26px;\n height: 50px;\n background-color: ${color};\n border-radius: 4px;\n\n border: 1px solid #0000001f;\n`\nconst LegendColor: React.FC<{ color: string }> = (props) => {\n return
\n}\n\nconst LegendSectionStyles = css`\n font-size: 14px;\n display: flex;\n gap: 24px;\n\n .legend-column {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .descriptions-column {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: 8px 0;\n }\n`\n\nconst LegendTable: React.FC = () => {\n return (\n
\n
\n {Object.values(GridColorScale)\n .reverse()\n .map((color) => (\n \n ))}\n
\n
\n
\n Awesome signal with high reliability! Go ahead and stream those high-resolution videos.\n
\n
\n Meh signal with marginal reliability. You can probably do some low-resolution video chat and streaming.\n
\n
\n Weak signal with low reliability. You can do phone calls and some basic browsing, but forget about\n video.\n
\n
\n Terrible signal with poor reliability. You're likely only able to send text messages and emojis.\n
\n
\n
\n )\n}\n\nconst LegendModalStyles = css`\n background-color: var(--ion-background-color);\n max-height: 90vh;\n overflow-y: auto;\n .legend-modal-heading {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 21px;\n }\n\n .bottom-description {\n font-size: 14px;\n color: var(--ion-color-medium);\n }\n\n th {\n line-height: 125%;\n font-weight: 600;\n }\n tbody {\n background-color: var(--ion-color-primary-contrast);\n }\n`\nconst LegendModal: React.FC<{ onClose: () => void; isOpen: boolean }> = (props) => {\n return (\n \n
\n

Legend

\n \n
\n \n
\n The coverage map is created using coverage data from the FCC.\n
\n
\n )\n}\n\nexport default LegendModal\n","import { css, cx } from '@emotion/css'\nimport { IonRouterLink } from '@ionic/react'\nimport { MainNavigationPaths, RoutePaths } from '../../../paths'\nimport { MOBILE_BREAKPOINT } from '../../../utils/hooks/useWindowSize'\n\nconst AddressBookButtonStyles = css`\n position: relative;\n width: 24px;\n height: 24px;\n\n a {\n height: 24px;\n }\n\n @media (min-width: ${MOBILE_BREAKPOINT}px) {\n width: 20px;\n height: 20px;\n }\n`\n\nexport function AddressBookButton() {\n return (\n \n \n )\n}\n","import * as React from 'react'\nimport { css, cx } from '@emotion/css'\nimport { IonButton, IonIcon, IonPopover, IonSpinner, IonText } from '@ionic/react'\nimport { chevronDown } from 'ionicons/icons'\nimport { NetworkType, NetworkTypeValue } from '../../../services/NetworkType.service'\nimport LegendModal from '../LegendModal'\nimport { UseCarrier } from '../../../services/Carrier.service'\nimport { Carrier } from '../../../store/carrierSelector'\nimport { AddressesSearchbar } from '../../../pages/network-quality/AddressSearchbar'\nimport { useUnsavedAddresses } from '../hooks/useUnsavedAddresses'\nimport { Address } from '../../../store/address'\nimport { MOBILE_BREAKPOINT, useIsMobileSize } from '../../../utils/hooks/useWindowSize'\nimport { SplitCarrierList } from './SplitCarriersList'\nimport { AddressBookButton } from '../address-book-button/AddressBookButton'\n\nconst TopBarButton = css`\n height: 40px;\n &::part(native) {\n background-color: var(--ion-background-color);\n padding: 8px 16px;\n }\n`\n\nconst CarrierPopoverStyles = css`\n --offset-y: 2px;\n\n @media (max-width: ${MOBILE_BREAKPOINT}px) {\n --offset-x: 12px;\n }\n`\n\nconst CarrierDropdownStyles = css`\n height: 40px;\n .current-carrier {\n font-size: 16px;\n }\n`\n\nconst CarrierDropdown = (props: {\n selectedCarrier?: Carrier\n addresses: Address[]\n onChangeCarrier: (carrier: Carrier) => void\n selectedTechnology: NetworkTypeValue\n}) => {\n const carriers = UseCarrier.useCarriersSplit(UseCarrier.useAvailableInMyRegion(UseCarrier.useAllCarriers()))\n const defaultCarriers = carriers.data ? carriers.data.defaultCarriers : []\n const otherCarriers = carriers.data\n ? carriers.data.otherCarriers.filter((carrier) => !!carrier.is_visible_on_map)\n : []\n const allCarriers = defaultCarriers.concat(otherCarriers)\n\n const onClickCarrier = (carrier: Carrier) => {\n props.onChangeCarrier(carrier)\n }\n\n return (\n <>\n \n {props.selectedCarrier?.id ? (\n \n {props.selectedCarrier?.name}\n \n ) : (\n \n )}{' '}\n \n \n \n \n \n \n )\n}\n\nconst LegendButtonStyles = css`\n &::part(native) {\n padding: 0 8px;\n }\n`\nconst LegendButton: React.FC<{ onClick: () => void }> = (props) => {\n return (\n \n \n \n \n \n \n \n )\n}\n\nexport const ShadowedStyles = css`\n &.button::part(native) {\n box-shadow: 0px 1px 2px var(--ion-color-light-shade);\n }\n\n &:not(.button) {\n box-shadow: 0px 1px 2px var(--ion-color-light-shade);\n }\n`\n\nconst InlineSelectorStyles = css`\n display: flex;\n align-items: center;\n background-color: var(--ion-background-color);\n border-radius: 60px;\n margin: 4px 3px;\n padding: 4px;\n\n .selector-item {\n height: 100%;\n }\n`\nconst InlineSelector: React.FC<{ items: React.ReactNode[] }> = (props) => {\n return (\n
\n {props.items.map((item, i) => (\n
\n {item}\n
\n ))}\n
\n )\n}\n\nconst TopBarStyles = css`\n position: absolute;\n\n top: calc(env(safe-area-inset-top) + 16px);\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n\n padding: 16px;\n padding-top: 0;\n\n .chevron {\n font-size: 18px;\n transform: translateX(5px);\n }\n\n .technology-button {\n margin: 0;\n height: 100%;\n &::part(native) {\n padding: 0 12px;\n background-color: transparent;\n color: var(--ion-color-medium);\n font-weight: 600;\n font-size: 16px;\n }\n\n &.active::part(native) {\n background-color: var(--ion-color-primary-tint);\n color: var(--ion-color-primary);\n }\n }\n\n .address-searchbar {\n min-width: 100%;\n }\n\n &.desktop {\n width: 100%;\n max-width: 760px;\n top: env(safe-area-inset-top);\n padding-top: 16px;\n\n .address-searchbar {\n min-width: 290px;\n flex-grow: 1;\n }\n\n & > * {\n height: 35px;\n margin: 0;\n }\n\n .edit-locations {\n font-size: 16px;\n &::part(native) {\n box-shadow: 0px 1px 2px var(--ion-color-light-shade);\n background-color: var(--ion-background-color);\n color: var(--ion-color-primary);\n }\n &.active::part(native) {\n background-color: var(--ion-color-primary-tint);\n color: var(--ion-color-primary);\n }\n }\n .center-icon {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .edit-icon {\n color: var(--ion-color-medium);\n }\n }\n`\n\ninterface TopBarProps {\n reducedUI?: boolean\n onSwitchNetworkType: (networkType: NetworkTypeValue) => void\n onChangeCarrier: (carrier: Carrier) => void\n selectedCarrier?: Carrier\n selectedTechnology: NetworkTypeValue\n addresses: Address[]\n}\nconst TopBar: React.FC = (props) => {\n const isMobile = useIsMobileSize()\n const [isLegendModalOpen, setLegendModalOpen] = React.useState(false)\n const { setLocalAddress: setAddressInBuffer } = useUnsavedAddresses()\n const { addresses } = props\n\n return (\n <>\n
\n {props.reducedUI ? null : (\n }\n searchBarPlaceholder='Search location'\n onMap\n />\n )}\n \n props.onSwitchNetworkType(NetworkType['5G'])}\n className={cx('technology-button', props.selectedTechnology === NetworkType['5G'] ? 'active' : '')}\n color='light'\n size='small'\n shape='round'\n >\n 5G\n ,\n props.onSwitchNetworkType(NetworkType['4G'])}\n className={cx('technology-button', props.selectedTechnology === NetworkType['4G'] ? 'active' : '')}\n color='light'\n size='small'\n shape='round'\n >\n 4G\n \n ]}\n />\n {props.reducedUI ? null : (\n <>\n setLegendModalOpen(true)} />\n setLegendModalOpen(false)} />\n \n )}\n
\n \n )\n}\n\nexport default TopBar\n","import { css, cx } from '@emotion/css'\nimport React from 'react'\nimport { UseCarrier } from '../../../services/Carrier.service'\nimport { NetworkType, NetworkTypeValue } from '../../../services/NetworkType.service'\nimport NetworkPerformanceDiagram from '../../NetworkPerformanceDiagram/NetworkPerformanceDiagram'\nimport { useBoundStore } from '../../../store'\nimport CarrierDisplay from '../../CarrierDisplay/CarrierDisplay'\nimport { Carrier } from '../../../store/carrierSelector'\nimport { PerformanceAverages } from '../../../services/planService/Plan.service'\nimport { IonIcon, IonSpinner } from '@ionic/react'\nimport { arrowDownOutline } from 'ionicons/icons'\nimport { UncontrolledNoDataNetwork } from '../../PlanResult/NetworkPerformance'\nimport { WarningBanner } from '../../ListBanner'\n\nconst carrierListStyles = css`\n background-color: var(--ion-background-color);\n border-left: 2px solid var(--ion-color-dark);\n border-right: 2px solid var(--ion-color-dark);\n max-height: 50vh;\n overflow-y: auto;\n transform: translateY(100%);\n left: -2px;\n width: calc(100% + 4px);\n z-index: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0 0 16px 0;\n pointer-events: all;\n\n .carrier-list {\n width: 100%;\n table {\n width: 100%;\n }\n th,\n td {\n padding: 8px 0;\n text-align: right;\n }\n th:first-child,\n td:first-child {\n text-align: left;\n padding-left: 16px;\n }\n th:last-child,\n td:last-child {\n padding-right: 16px;\n }\n\n\n .selected {\n background-color: var(--goji-color-secondary-blue);\n }\n\n\n .sort-badge {\n width: fit-content;\n float: right;\n color: var(--ion-color-light);\n cursor: pointer;\n padding: 4px 12px;\n border-radius: 20px;\n border: 2px solid var(--ion-color-light);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n &:hover {\n background-color: var(--ion-color-light);\n }\n &.selected {\n color: #357e38;\n background-color: var(--ion-color-primary-tint);\n border: 2px solid transparent;\n }\n transition: background-color 0.3s, color 0.3s;\n\n > ion-icon {\n width: 0;\n background-color: transparent;\n transition: width 0.3s;\n &.selected {\n width: 16px;\n }\n }\n }\n`\n\nconst loadingSpinnerStyles = css`\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nconst carrierListWrapperStyles = css`\n position: absolute;\n bottom: 0;\n width: 100%;\n\n display: flex;\n justify-content: center;\n width: calc(100% + 4px);\n left: -2px;\n pointer-events: none;\n min-height: 50vh;\n`\n\nconst emptyStateStyle = css`\n padding: 0px 24px;\n height: 100%;\n max-height: 350px;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 10px;\n align-items: center;\n justify-content: center;\n\n > * {\n max-width: 380px;\n }\n\n .empty-state-icon {\n margin-bottom: 2px;\n width: 24px;\n height: 24px;\n }\n\n .empty-state-title {\n font-size: 18px;\n font-weight: 700;\n }\n\n .empty-state-paragraph {\n font-size: 16px;\n font-weight: 500;\n text-align: center;\n }\n`\n\nconst sortAndFilterCarriers = (\n carriers: { carrier: Carrier; networkPerformance?: PerformanceAverages }[],\n selectedTechnology: NetworkTypeValue\n) => {\n return carriers\n .filter(\n (carrier) =>\n carrier.carrier.is_visible_on_map &&\n carrier.networkPerformance !== undefined &&\n (carrier.networkPerformance.average4GPerformance !== undefined ||\n carrier.networkPerformance.average5GPerformance !== undefined)\n )\n .sort((a, b) => {\n return Number(b.carrier.has_data) - Number(a.carrier.has_data)\n })\n .sort((a, b) => {\n if (selectedTechnology === NetworkType['5G']) {\n return (b.networkPerformance?.average5GPerformance ?? 0) - (a.networkPerformance?.average5GPerformance ?? 0)\n }\n return (b.networkPerformance?.average4GPerformance ?? 0) - (a.networkPerformance?.average4GPerformance ?? 0)\n })\n}\ninterface CarrierCoverageListProps {\n contentRef: React.Ref\n selectedCarrierId?: string\n}\n\nconst CarrierCoverageList: React.FC = ({ contentRef, selectedCarrierId }) => {\n const [networkType, setNetworkType] = useBoundStore((state) => [state.networkType, state.setNetworkType])\n const [selectedAddress] = useBoundStore((state) => [state.selectedAddress])\n const carriers = UseCarrier.useAvailableInMyRegion(UseCarrier.useAllCarriers())\n\n const carriersWithPerformance = UseCarrier.useCarriersWithPerformance({\n carrierIds: carriers.data?.map((carrier) => carrier.id) ?? [],\n addresses: selectedAddress ? [selectedAddress] : undefined\n })\n\n const noCoverage = carriersWithPerformance.data?.every((carrier) => carrier.noCoverage)\n const noData = carriersWithPerformance.data?.every((carrier) => carrier.noData)\n const no5GData = carriersWithPerformance.data?.every((carrier) => !carrier.networkPerformance?.average5GPerformance)\n const no4GData = carriersWithPerformance.data?.every((carrier) => !carrier.networkPerformance?.average4GPerformance)\n const sortedCarriers = sortAndFilterCarriers(carriersWithPerformance.data ?? [], networkType)\n\n return (\n
\n
\n {!carriersWithPerformance.isFetched && (\n
\n \n
\n )}\n {sortedCarriers?.length > 0 && (\n
\n {no5GData || no4GData ? (\n \n ) : null}\n \n \n \n \n \n \n \n \n \n {sortedCarriers?.map((carrier) => (\n \n \n \n \n \n ))}\n \n
Carrier coverage\n setNetworkType(NetworkType['5G'])}\n className={cx('sort-badge', networkType === NetworkType['5G'] && 'selected')}\n >\n 5G\n \n \n \n setNetworkType(NetworkType['4G'])}\n className={cx('sort-badge', networkType === NetworkType['4G'] && 'selected')}\n >\n 4G\n \n \n
\n \n \n {carrier.networkPerformance?.average5GPerformance ? (\n \n ) : (\n \n )}\n \n {carrier.networkPerformance?.average4GPerformance ? (\n \n ) : (\n \n )}\n
\n
\n )}\n {!carriersWithPerformance.isLoading && !!noCoverage ? (\n
\n \n No coverage for this location\n \n Looks like you've discovered a \"dead zone\" or no coverage from this carrier for this location.\n \n
\n ) : null}\n {!carriersWithPerformance.isLoading && !noCoverage && !!noData ? (\n
\n \n No data for this location\n \n We don't have data for this location. If you use the carrier you’ve selected, you can try running a speed\n test to see if there’s coverage.\n \n
\n ) : null}\n
\n
\n )\n}\n\nexport default CarrierCoverageList\n","import create from 'zustand'\n\ntype MapBoardingStore = {\n hasBeenOnboardedOnMapTray: boolean\n completeOnboard: () => void\n}\n\nconst HAS_BEEN_ONBOARDED_ON_MAP_TRAY_KEY = 'hasBeenOnboardedOnMapTray'\n\nconst useMapOnboardingStore = create((set) => ({\n hasBeenOnboardedOnMapTray: window.localStorage.getItem(HAS_BEEN_ONBOARDED_ON_MAP_TRAY_KEY) === 'true',\n completeOnboard: () =>\n set(() => {\n window.localStorage.setItem(HAS_BEEN_ONBOARDED_ON_MAP_TRAY_KEY, 'true')\n return { hasBeenOnboardedOnMapTray: true }\n })\n}))\n\nexport default useMapOnboardingStore\n","import React from 'react'\nimport useSwipeGesture from './useSwipeGesture'\nimport useMapOnboardingStore from './useMapOnboardingStore'\nimport { css } from '@emotion/css'\n\ninterface UseBottomTrayGestureProps {\n footerRef: React.RefObject\n addressDetailsRef: React.RefObject\n carrierListRef: React.RefObject\n}\n\ntype Boundary = 'high' | 'medium' | 'low'\n\nclass BottomTrayManipulator {\n constructor(\n private options: UseBottomTrayGestureProps & {\n position: React.MutableRefObject\n boundary: Boundary\n setBoundary: (boundary: Boundary) => void\n }\n ) {}\n\n addTransition() {\n if (!this.options.footerRef.current) {\n throw new Error('Footer ref is not available')\n }\n\n this.options.footerRef.current.style.transition = 'transform 0.5s ease-out'\n }\n\n removeTransition() {\n if (!this.options.footerRef.current) {\n throw new Error('Footer ref is not available')\n }\n this.options.footerRef.current.style.transition = 'none'\n }\n\n getPosition() {\n return this.options.position.current\n }\n\n setBoundary(boundary: Boundary) {\n this.options.setBoundary(boundary)\n\n this.setPosition(this.getBoundaryCheckpoint(boundary))\n }\n\n getBoundaryCheckpoint(boundary: Boundary = this.getBoundary()) {\n if (boundary === 'high') {\n return this.getHighBoundary()\n }\n if (boundary === 'medium') {\n return this.getMediumBoundary()\n }\n if (boundary === 'low') {\n return this.getLowBoundary()\n }\n throw new Error('Invalid boundary: ' + boundary)\n }\n\n getBoundary() {\n return this.options.boundary\n }\n\n setPosition(translateY: number) {\n if (!this.options.footerRef.current) {\n throw new Error('Footer ref is not available')\n }\n this.options.footerRef.current.style.transform = `translateY(${translateY}px)`\n this.options.position.current = translateY\n }\n\n getLowBoundary() {\n if (!this.options.footerRef.current) {\n throw new Error('Error while getting low boundary: Footer ref is not available')\n }\n const bottomTrayHeight = this.options.footerRef.current.querySelector('.bottom-tray')?.clientHeight ?? 0\n const trayHeadingHeight = this.options.footerRef.current.querySelector('.tray-heading')?.clientHeight ?? 0\n\n return bottomTrayHeight - trayHeadingHeight\n }\n\n getMediumBoundary() {\n return 0\n }\n\n getHighBoundary() {\n const carrierListHeight = this.options.carrierListRef.current?.clientHeight ?? 0\n return -carrierListHeight\n }\n}\n\nfunction useTrayEvents(options: { manipulator: BottomTrayManipulator }) {\n const { manipulator } = options\n\n const completeOnboard = useMapOnboardingStore((state) => state.completeOnboard)\n\n const onStart = React.useCallback(() => {\n manipulator.removeTransition()\n\n // getting the state directly is needed because if we use the hook, onStart changing creates a new gesture unnecessarily,\n // which makes the old gesture lose context of the div that was being dragged.\n if (!useMapOnboardingStore.getState().hasBeenOnboardedOnMapTray) completeOnboard()\n }, [manipulator, completeOnboard])\n\n const onMove = React.useCallback(\n (ev: any) => {\n const calculatedTranslateY = ev.deltaY + manipulator.getBoundaryCheckpoint()\n\n if (calculatedTranslateY < manipulator.getHighBoundary()) {\n return\n }\n\n manipulator.setPosition(calculatedTranslateY)\n },\n [manipulator]\n )\n\n const onEnd = React.useCallback(\n (ev: any) => {\n manipulator.addTransition()\n\n const updatedPositionY = manipulator.getPosition() + ev.deltaY\n\n const highBoundaryThreshold = (manipulator.getHighBoundary() + manipulator.getMediumBoundary()) / 2\n const lowBoundaryThreashold = (manipulator.getMediumBoundary() + manipulator.getLowBoundary()) / 2\n\n if (updatedPositionY <= highBoundaryThreshold) {\n manipulator.setBoundary('high')\n } else if (updatedPositionY >= lowBoundaryThreashold) {\n manipulator.setBoundary('low')\n } else {\n manipulator.setBoundary('medium')\n }\n },\n [manipulator]\n )\n\n return {\n onStart,\n onMove,\n onEnd\n }\n}\n\nexport const boardingGestureStyles = (state: 'stale' | 'animate') => css`\n @keyframes moveFooter {\n 0% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(-20px);\n }\n 100% {\n transform: translateY(0);\n }\n }\n animation: ${state === 'stale' ? 'none;' : 'moveFooter 2s infinite;'};\n`\n\nexport const UseBottomTrayGesture = ({ footerRef, addressDetailsRef, carrierListRef }: UseBottomTrayGestureProps) => {\n const [boundary, setBoundary] = React.useState('medium')\n\n const position = React.useRef(0)\n\n const manipulator = React.useMemo(() => {\n return new BottomTrayManipulator({\n footerRef,\n addressDetailsRef,\n carrierListRef,\n position,\n boundary,\n setBoundary\n })\n }, [addressDetailsRef, carrierListRef, footerRef, boundary, position, setBoundary])\n\n const { onStart, onMove, onEnd } = useTrayEvents({ manipulator })\n\n useSwipeGesture({\n element: addressDetailsRef.current,\n onStart,\n onMove,\n onEnd\n })\n\n const handleCollapse = React.useCallback(() => {\n if (boundary === 'low') {\n manipulator.setBoundary('medium')\n } else {\n manipulator.setBoundary('low')\n }\n }, [manipulator, boundary])\n\n return { handleCollapse, isCollapsed: boundary === 'low' }\n}\n","import { css, cx } from '@emotion/css'\nimport useMapTrayOnboard from './useMapOnboardingStore'\n\nconst handTutorialStyles = css`\n display: flex;\n flex-direction: column;\n align-items: center;\n color: white;\n`\n\ninterface HandTutorialProps {\n className?: string\n}\n\nconst HandTutorial: React.FC = ({ className }) => {\n const { hasBeenOnboardedOnMapTray, completeOnboard } = useMapTrayOnboard()\n\n return (\n <>\n {!hasBeenOnboardedOnMapTray && (\n
\n {'Hand\n

Swipe up to view more details

\n
\n )}\n \n )\n}\n\nexport default HandTutorial\n","import { css, cx } from '@emotion/css'\nimport * as React from 'react'\nimport { useBoundStore } from '../../../store'\nimport { getBoundsFromAddresses } from '../../../utils/Address'\nimport { Address } from '../../../store/address'\nimport MapComponent from '../../Map/Map'\nimport Marker, { LatLngAddr } from '../../Marker'\nimport { MinimapEventController } from './MinimapEventController'\n\nconst rectangleClass = (ratio: number) => {\n return css`\n pointer-events: none;\n background-color: #0066ff;\n width: ${ratio}%;\n height: ${ratio}%;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n position: absolute;\n z-index: 2;\n opacity: 0.4;\n border-radius: 3px;\n `\n}\nconst minRatio = 0.2\nconst Rectangle: React.FC<{ parentMap: google.maps.Map; minimap: google.maps.Map }> = ({ parentMap, minimap }) => {\n const [ratio, setRatio] = React.useState(minRatio)\n\n React.useEffect(() => {\n const listener = parentMap.addListener('bounds_changed', () => {\n const minimapBounds = minimap.getBounds()\n const parentMapBounds = parentMap.getBounds()\n\n if (!minimapBounds || !parentMapBounds) {\n return\n }\n const parentSize = google.maps.geometry.spherical.computeDistanceBetween(\n parentMapBounds.getNorthEast(),\n parentMapBounds.getSouthWest()\n )\n const minimapSize = google.maps.geometry.spherical.computeDistanceBetween(\n minimapBounds.getNorthEast(),\n minimapBounds.getSouthWest()\n )\n\n setRatio(parentSize / minimapSize)\n })\n\n return () => {\n listener.remove()\n }\n }, [parentMap, minimap])\n\n return
\n}\n\nconst mapSize = 120\nconst MinimapStyles = css`\n &.hide {\n visibility: hidden;\n }\n margin-bottom: 16px;\n margin-left: 16px;\n position: relative;\n background-color: var(--ion-background-color);\n width: ${mapSize}px;\n height: ${mapSize}px;\n min-width: ${mapSize}px;\n border-radius: 8px;\n padding: 1px;\n overflow: hidden;\n\n #map {\n border-radius: 8px;\n height: 100%;\n }\n`\nconst Minimap: React.FC<{ map: google.maps.Map; onClickAddress: (address: Address) => void; className?: string }> = (\n props\n) => {\n const [minimap, setMinimap] = React.useState()\n const eventControllerRef = React.useRef()\n const [hideMinimap, setHideMap] = React.useState(false)\n const [addresses, selectedAddress] = useBoundStore((state) => [state.addresses, state.selectedAddress])\n\n React.useEffect(() => {\n if (!addresses.length) {\n return\n }\n eventControllerRef.current?.setAddresses(addresses)\n minimap && eventControllerRef.current?.syncMap(props.map, minimap)\n\n const bounds = getBoundsFromAddresses(addresses)\n minimap?.fitBounds(bounds)\n }, [addresses, props.map, minimap])\n\n if (!addresses.length) {\n return
\n }\n\n return (\n
\n {minimap ? : null}\n {\n const minimapEventController = (eventControllerRef.current = MinimapEventController.replaceInstance({\n map,\n parentMap: props.map,\n addresses,\n onChangeVisibility: (visible) => {\n setHideMap(!visible)\n }\n }))\n\n minimapEventController.listen()\n setMinimap(map)\n }}\n >\n {addresses.map((address) => (\n void}\n address={address}\n active={selectedAddress?.placeId === address.placeId}\n />\n ))}\n \n
\n )\n}\nexport default Minimap\n","import { css, cx } from '@emotion/css'\nimport { getConfig, IonIcon, IonText, IonToast } from '@ionic/react'\nimport {\n bookmark,\n bookmarkOutline,\n briefcase,\n briefcaseOutline,\n checkmarkCircleOutline,\n chevronDown,\n chevronUp,\n close,\n home,\n homeOutline\n} from 'ionicons/icons'\nimport * as React from 'react'\nimport SwiperType, { Pagination } from 'swiper'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport shallow from 'zustand/shallow'\nimport { NetworkType, NetworkTypeValue } from '../../../services/NetworkType.service'\nimport { useGeneralStore } from '../../../store'\nimport { Address, LabelType } from '../../../store/address'\nimport { useNavigateAway } from '../../../utils/hooks/useNavigateAway'\nimport { ResetMargin } from '../../../utils/styles/MarginUtils.styles'\nimport { SignalMeterStrength } from '../../SignalMeter/SignalMeterStrength'\nimport NetworkPerformanceQueryLabel, { getNetworkTypeValue } from '../../SignalStrengthLabel'\nimport { SwiperContent } from '../../Swiper/SwiperContent'\nimport { useAddressLabelDialog } from '../../../pages/network-quality/AddressLabelDialog'\nimport { useUnsavedAddresses } from '../hooks/useUnsavedAddresses'\nimport useAuthStore from '../../../store/auth'\nimport { autoLabelAddress } from '../../../pages/network-quality/autolabel-address'\nimport { UseCarrier } from '../../../services/Carrier.service'\nimport CarrierCoverageList from './CarrierCoverageList'\nimport { boardingGestureStyles, UseBottomTrayGesture } from './useBottomTrayGesture'\nimport HandTutorial from './HandTutorial'\nimport Minimap from './Minimap'\nimport useMapOnboardingStore from './useMapOnboardingStore'\n\nconst AddressLabelStyles = css`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: 700;\n font-size: 18px;\n`\n\nconst NetworkPerformanceLabelStyles = css`\n padding: 12px 0 16px;\n span {\n font-weight: 500;\n font-size: 14px;\n color: var(--ion-color-medium);\n }\n`\n\nconst ControlsWrapperStyles = (display: boolean) => css`\n position: absolute;\n bottom: 0;\n width: 100%;\n\n animation: none;\n transition: transform 0.3s ease-out;\n\n pointer-events: none;\n & > * {\n pointer-events: all;\n }\n\n display: ${display ? 'grid' : 'none'};\n align-items: end;\n gap: 16px;\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-rows: 1fr;\n @media screen and (max-width: 911px) {\n grid-template-columns: 1fr 1fr;\n grid-template-areas:\n 'left right'\n 'fullwidth fullwidth';\n\n .minimap {\n grid-area: left;\n }\n\n .bottom-tray {\n width: 100%;\n grid-area: fullwidth;\n }\n }\n @media screen and (min-width: 911px) {\n grid-template-columns: 1fr 1fr 1fr;\n .bottom-tray {\n width: 692px;\n max-width: 692px;\n border: 2px solid #000000;\n transform: translateY(2px);\n }\n }\n`\n\nconst LocationDetails: React.FC<{ networkType: NetworkTypeValue; address: Address; carrierId: string }> = (props) => {\n const qualityQuery = UseCarrier.useCarrierWithPerformance({\n carrierId: props.carrierId,\n addresses: [props.address],\n technology: props.networkType\n })\n\n return (\n <>\n

{props.address.addressName}

\n
\n Estimated {props.networkType === NetworkType['4G'] ? '4G' : '5G'} coverage: \n \n
\n \n \n )\n}\n\nconst useDisableSwipeBack = () => {\n React.useEffect(() => {\n const config = getConfig()\n config?.set('swipeBackEnabled', false)\n return () => {\n config?.set('swipeBackEnabled', true)\n }\n }, [])\n\n const onNavigateAway = React.useCallback(() => {\n const config = getConfig()\n config?.set('swipeBackEnabled', true)\n }, [])\n useNavigateAway(onNavigateAway)\n}\n\nconst BottomTrayStyles = css`\n position: relative;\n z-index: 2;\n background-color: var(--ion-background-color);\n border-radius: 16px 16px 0px 0px;\n border: 2px solid var(--ion-color-dark);\n border-bottom: 0;\n\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n .horizontal-spacing {\n padding-left: 24px;\n padding-right: 24px;\n }\n\n .label {\n font-weight: 600;\n color: var(--ion-color-medium);\n display: flex;\n align-items: center;\n gap: 8px;\n\n ion-icon {\n cursor: pointer;\n min-height: 24px !important;\n min-width: 24px !important;\n\n &.edit-icon {\n min-height: 20px;\n min-width: 20px;\n margin-left: 4px;\n }\n }\n }\n\n .address-details {\n padding-bottom: 16px;\n border-bottom: 2px solid var(--ion-color-light);\n cursor: grab;\n\n .drag-handle {\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translateX(-50%);\n width: 36px;\n height: 4px;\n background-color: var(--ion-color-medium);\n border-radius: 2px;\n }\n }\n\n .tray-heading {\n padding-top: 20.5px;\n padding-bottom: 20.5px;\n display: flex;\n justify-content: space-between;\n\n > ion-icon {\n cursor: pointer;\n }\n }\n\n .swiper-pagination {\n margin-bottom: -8px;\n }\n`\n\nconst successSaveToastStyles = css`\n --background: #eff6e7;\n --color: #357e38;\n\n ::part(header) {\n font-weight: 500;\n font-size: 16px;\n }\n\n ::part(message) {\n font-weight: 400;\n font-size: 16px;\n }\n\n ::part(icon) {\n align-self: baseline;\n padding-top: 15px;\n height: 24px;\n width: 24px;\n }\n`\n\nconst handTutorialStyles = css`\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%) translateY(-100%);\n`\n\nfunction useAddressIcon(address: Address | undefined) {\n return React.useMemo(() => {\n if (!address) return undefined\n\n if (!address.localMemory) {\n switch (address.labelType) {\n case LabelType.Home:\n return home\n case LabelType.Work:\n return briefcase\n default:\n return bookmark\n }\n }\n\n switch (address.labelType) {\n case LabelType.Home:\n return homeOutline\n case LabelType.Work:\n return briefcaseOutline\n default:\n return bookmarkOutline\n }\n }, [address])\n}\n\ninterface BottomTrayProps {\n carrierId: string\n prepend?: React.ReactNode\n className?: string\n children?: React.ReactNode\n googleMap?: google.maps.Map\n onMinimapClickAddress: (address: Address) => void\n}\n\nconst BottomTray: React.FC = (props) => {\n const [addresses, setAddress] = useGeneralStore((state) => [state.addresses, state.setAddress], shallow)\n const [currentUser] = useAuthStore((state) => [state.currentUser], shallow)\n const { toggleAddressSaved } = useUnsavedAddresses()\n\n const [networkType, selectedAddressStore, setSelectedAddress, removeAddress] = useGeneralStore(\n (state) => [state.networkType, state.selectedAddress, state.setSelectedAddress, state.removeAddress],\n shallow\n )\n\n const selectedAddress = addresses.find((addr) => addr.placeId === selectedAddressStore?.placeId)\n\n function saveAddress(address: Address) {\n toggleAddressSaved(address)\n setIsAddressSavedToastOpen(true)\n }\n\n function updateAddress(address: Address) {\n setAddress(\n address,\n addresses.findIndex((addr) => addr.placeId === address.placeId)\n )\n }\n\n const { openModal } = useAddressLabelDialog({\n isRenaming: !selectedAddress?.localMemory,\n address: selectedAddress,\n onSubmit: (labelType: LabelType, label: string) => {\n if (selectedAddress) {\n const newAddress = { ...selectedAddress, labelType, label }\n if (!selectedAddress?.localMemory) {\n updateAddress(newAddress)\n } else {\n saveAddress(newAddress)\n }\n setSelectedAddress(newAddress)\n }\n }\n })\n\n const [isAddressSavedToastOpen, setIsAddressSavedToastOpen] = React.useState(false)\n\n const selectedAddressIcon = useAddressIcon(selectedAddress)\n\n useDisableSwipeBack()\n\n const swiperRef = React.useRef()\n React.useEffect(() => {\n const addrIdx = selectedAddress ? addresses.findIndex((addr) => addr.placeId === selectedAddress.placeId) : -1\n if (addrIdx !== -1) {\n swiperRef.current?.slideTo(addrIdx)\n }\n }, [selectedAddress, addresses])\n\n React.useEffect(() => {\n if (!selectedAddress && addresses.length) {\n setSelectedAddress(addresses[0])\n }\n }, [addresses, selectedAddress, setSelectedAddress])\n\n const footerRef = React.useRef(null)\n const addressDetailsRef = React.useRef(null)\n const carrierListRef = React.useRef(null)\n\n const hasBeenOnboardedOnMapTray = useMapOnboardingStore((state) => state.hasBeenOnboardedOnMapTray)\n const { handleCollapse, isCollapsed } = UseBottomTrayGesture({\n footerRef,\n addressDetailsRef,\n carrierListRef\n })\n\n return (\n
\n {props.googleMap ? (\n \n ) : undefined}\n \n \n {props.prepend}\n
\n
\n
\n \n {currentUser ? (\n {\n e.stopPropagation()\n if (!selectedAddress) return\n if (selectedAddress.localMemory) {\n openModal()\n } else {\n toggleAddressSaved(autoLabelAddress(selectedAddress))\n }\n }}\n />\n ) : null}\n {selectedAddress?.label ?? 'Select an address'}\n {currentUser && !selectedAddress?.localMemory ? (\n {\n e.stopPropagation()\n openModal()\n }}\n />\n ) : null}\n \n {!!selectedAddress?.localMemory || !currentUser ? (\n {\n e.stopPropagation()\n const addressIdx = addresses.findIndex((addr) => addr.placeId === selectedAddress?.placeId)\n removeAddress(addressIdx)\n setSelectedAddress(addresses.length ? addresses[0] : undefined)\n }}\n />\n ) : (\n \n )}\n
\n
\n
\n (swiperRef.current = swiper)}\n onSlideChange={(swiper) => {\n setSelectedAddress(addresses[swiper.activeIndex])\n }}\n >\n {addresses.map((address) => (\n \n \n \n \n \n ))}\n \n
\n
\n
\n \n {props.children}\n \n setIsAddressSavedToastOpen(false)}\n />\n
\n )\n}\n\nexport default BottomTray\n","import * as React from 'react'\nimport { useHistory } from 'react-router'\n\nexport const useNavigateAway = (cb: () => void) => {\n const history = useHistory()\n\n React.useEffect(() => {\n const unlisten = history.listen(() => cb())\n return () => {\n unlisten()\n }\n }, [cb, history])\n}\n","import { Capacitor } from '@capacitor/core'\nimport { Geolocation, Position } from '@capacitor/geolocation'\nimport { css, cx } from '@emotion/css'\nimport { IonButton, IonFabButton, IonIcon, IonSpinner } from '@ionic/react'\nimport { addOutline, removeOutline } from 'ionicons/icons'\nimport * as React from 'react'\nimport shallow from 'zustand/shallow'\nimport { useBoundStore } from '../../store'\nimport usePermissionStore from '../../store/standalone/permission-store'\nimport { ShadowedStyles } from './TopBar/TopBar'\n\nconst SideBarStyles = css`\n position: relative;\n\n justify-self: end;\n margin-bottom: 8px;\n margin-right: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n .location-spinner {\n width: 15px;\n height: 15px;\n }\n\n .sidebar-button {\n margin: 0;\n }\n .sidebar-button::part(native) {\n background-color: var(--ion-background-color);\n color: var(--ion-color-dark);\n }\n`\n\nconst ZoomButtonsStyles = css`\n display: flex;\n flex-direction: column;\n background-color: var(--ion-background-color);\n border-radius: 60px;\n height: 81px;\n overflow: hidden;\n\n .zoom-button {\n font-size: 14px;\n width: 40px;\n flex-grow: 1;\n margin: 0;\n }\n\n .separator {\n height: 1px;\n background-color: var(--ion-color-light);\n margin: 0 8px;\n }\n .zoom-button::part(native) {\n background-color: transparent;\n padding: 0;\n }\n`\n\nconst NetworkMapSidebar: React.FC<{\n onRecenter: () => void\n onZoomChanged: (newZoom: number) => void\n onCurrentLocation: (geolocation: Position) => void\n className?: string\n}> = (props) => {\n const [setUserLocationAndAddress, loadingLocation] = useBoundStore(\n (state) => [state.setUserLocationAndAddress, state.loadingLocation],\n shallow\n )\n\n const [clearPermissionState] = usePermissionStore((state) => [state.clearPermissionState], shallow)\n\n function showLocationPermissionPopup() {\n clearPermissionState()\n }\n\n const onClickCurrentLocationButton = async () => {\n if (Capacitor.getPlatform() === 'android' && (await Geolocation.checkPermissions()).location !== 'granted') {\n showLocationPermissionPopup()\n return\n }\n\n const position = await setUserLocationAndAddress()\n if (loadingLocation) {\n return\n }\n\n if (position) {\n props.onCurrentLocation(position)\n }\n }\n\n return (\n
\n \n {loadingLocation ? (\n \n ) : (\n \n )}\n \n \n \n \n
\n props.onZoomChanged(1)} className='zoom-button' size='small' color='light'>\n \n \n
\n props.onZoomChanged(-1)} className='zoom-button' size='small' color='light'>\n \n \n
\n
\n )\n}\n\nexport default NetworkMapSidebar\n","import React, { useCallback, useEffect } from 'react'\nimport { Address } from '../../../store/address'\nimport { useBoundStore } from '../../../store'\nimport { NetworkType, NetworkTypeValue } from '../../../services/NetworkType.service'\nimport { UseCarrier } from '../../../services/Carrier.service'\nimport { Carrier } from '../../../store/carrierSelector'\nimport { getAddressFromPlaceId } from '../../../utils/Address'\nimport { GmapsContext } from '../../../pages/llm/utils/gmaps-context'\n\ninterface useMapStateByParamsProps {\n onSelectAddress: (address: Address) => void\n onSwitchNetworkType: (networkType: NetworkTypeValue) => void\n onSelectCarrier: (carrier: Carrier) => void\n map: google.maps.Map | undefined\n}\n\nexport const useMapStateByParams = ({\n onSelectAddress,\n onSwitchNetworkType,\n onSelectCarrier,\n map\n}: useMapStateByParamsProps) => {\n const urlParams = React.useMemo(() => new URLSearchParams(window.location.search), [])\n const [technology, carrierName, placeId] = [\n urlParams.get('technology'),\n urlParams.get('carrier'),\n urlParams.get('placeId')\n ]\n\n const carriers = UseCarrier.useAllCarriers()\n const [addresses, setAddress] = useBoundStore((state) => [state.addresses, state.setAddress])\n\n const handleNetworkType = useCallback(() => {\n const uppercaseTechnology = technology?.toUpperCase()\n if (uppercaseTechnology && Object.keys(NetworkType).includes(uppercaseTechnology)) {\n onSwitchNetworkType(NetworkType[uppercaseTechnology as keyof typeof NetworkType] as NetworkTypeValue)\n urlParams.delete('technology')\n }\n }, [technology, urlParams, onSwitchNetworkType])\n\n const handleCarrier = useCallback(() => {\n if (carrierName && carriers.data?.length) {\n const selectedCarrier = carriers.data.find((c) => c.name === carrierName)\n if (selectedCarrier) {\n onSelectCarrier(selectedCarrier)\n urlParams.delete('carrier')\n }\n }\n }, [carrierName, carriers.data, onSelectCarrier, urlParams])\n\n const { geocoder } = React.useContext(GmapsContext)\n\n const handleAddress = useCallback(async () => {\n if (placeId && map) {\n let address = addresses.find((a) => a.placeId === placeId)\n if (!address) {\n address = await getAddressFromPlaceId(placeId, geocoder)\n if (!address) return\n setAddress({ ...address, localMemory: true })\n }\n onSelectAddress(address)\n map?.setZoom(15)\n urlParams.delete('placeId')\n }\n }, [placeId, urlParams, addresses, onSelectAddress, map, setAddress, geocoder])\n\n useEffect(() => {\n if (technology) handleNetworkType()\n }, [handleNetworkType, technology])\n\n useEffect(() => {\n if (carrierName) handleCarrier()\n }, [handleCarrier, carrierName])\n\n useEffect(() => {\n if (placeId) handleAddress()\n }, [handleAddress, placeId])\n}\n","import * as React from 'react'\nimport { useGeneralStore } from '../../../store'\nimport { css, cx } from '@emotion/css'\nimport TopBar from './../TopBar/TopBar'\nimport BottomTray from './../BottomTray/BottomTray'\nimport LoadingPopup from './../LoadingPopup'\nimport { DesktopWelcomeMapModal } from './../DesktopWelcomeMapModal'\nimport { useBestCarrierOrDefault, useCoverageMapLogic, useOnSelectedAddressChange } from './useCoverageMap'\nimport InnerCoverageMap from './InnerCoverageMap'\nimport NetworkMapSidebar from '../side-bar'\nimport { useIsMobileSize } from '../../../utils/hooks/useWindowSize'\nimport { IonBackdrop } from '@ionic/react'\nimport useMapOnboardingStore from '../BottomTray/useMapOnboardingStore'\nimport shallow from 'zustand/shallow'\nimport { useMapStateByParams } from './useMapStateByParams'\nimport { Carrier } from '../../../store/carrierSelector'\n\nexport const CoverageMapStyles = css`\n position: relative;\n\n .coverage-map-map {\n height: 100%;\n border-top: solid 1px var(--ion-color-light);\n }\n\n height: 100%;\n`\n\nconst mapSidebarStyles = css`\n position: absolute;\n top: -100%;\n right: 0;\n`\n\nconst backdropStyles = css`\n opacity: 0.5;\n`\n\nconst CoverageMap = () => {\n const [selectedCarrierState, setSelectedCarrier] = React.useState()\n\n const bestCarrier = useBestCarrierOrDefault()\n const selectedCarrier = selectedCarrierState ?? bestCarrier\n\n const {\n deckManagerRef,\n googleMap,\n setGoogleMap,\n appExperience,\n bounds,\n onSwitchNetworkType,\n focusMarker,\n onCurrentPositionAdded,\n onCloseWelcomeModal,\n trackMapInteraction,\n isWelcomeModalOpen\n } = useCoverageMapLogic({ carrierId: selectedCarrier?.id })\n useOnSelectedAddressChange(deckManagerRef)\n\n const [networkType, addresses, map] = useGeneralStore(\n (state) => [state.networkType, state.addresses, state.map],\n shallow\n )\n const isMobile = useIsMobileSize()\n\n const { hasBeenOnboardedOnMapTray, completeOnboard } = useMapOnboardingStore()\n\n useMapStateByParams({\n onSelectAddress: focusMarker,\n onSwitchNetworkType,\n onSelectCarrier: setSelectedCarrier,\n map: deckManagerRef.current?.map\n })\n\n return (\n <>\n {!hasBeenOnboardedOnMapTray && !!addresses.length && (\n \n )}\n \n \n \n {\n setSelectedCarrier(carrier)\n }}\n onSwitchNetworkType={onSwitchNetworkType}\n selectedTechnology={networkType}\n selectedCarrier={selectedCarrier}\n />\n \n {!!isMobile && (\n {\n const newZoom = (deckManagerRef.current?.map.getZoom() || 0) + zoomChange\n deckManagerRef.current?.map.setZoom(newZoom)\n }}\n onRecenter={() => {\n if (addresses.length) {\n deckManagerRef.current?.map.fitBounds(bounds)\n }\n }}\n />\n )}\n \n }\n />\n {!isMobile && (\n {\n const newZoom = (deckManagerRef.current?.map.getZoom() || 0) + zoomChange\n deckManagerRef.current?.map.setZoom(newZoom)\n }}\n onRecenter={() => {\n if (addresses.length) {\n deckManagerRef.current?.map.fitBounds(bounds)\n }\n }}\n />\n )}\n\n \n
\n \n )\n}\n\nexport default CoverageMap\n","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\n\n/** Throws an `Error` with the optional `message` if `condition` is falsy */\nexport function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(message || 'loaders.gl assertion failed.');\n }\n}\n","// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n\n// Change to `latest` on production branches\nconst DEFAULT_VERSION = 'latest';\ndeclare let __VERSION__: string;\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : DEFAULT_VERSION;\nif (typeof __VERSION__ === 'undefined') {\n // eslint-disable-next-line\n console.error(\n 'loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.'\n );\n}\n","// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\nconst self_: {[key: string]: any} = globals.self || globals.window || globals.global || {};\nconst window_: {[key: string]: any} = globals.window || globals.self || globals.global || {};\nconst global_: {[key: string]: any} = globals.global || globals.self || globals.window || {};\nconst document_: {[key: string]: any} = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\n/** true if running in the browser, false if running in Node.js */\nexport const isBrowser: boolean =\n // @ts-ignore process.browser\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n\n/** true if running on a worker thread */\nexport const isWorker: boolean = typeof importScripts === 'function';\n\n/** true if running on a mobile device */\nexport const isMobile: boolean =\n typeof window !== 'undefined' && typeof window.orientation !== 'undefined';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\n\n/** Version of Node.js if running under Node, otherwise 0 */\nexport const nodeVersion: number = (matches && parseFloat(matches[1])) || 0;\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","// Browser fills for Node.js built-in `worker_threads` module.\n// These fills are non-functional, and just intended to ensure that\n// `import 'worker_threads` doesn't break browser builds.\n// The replacement is done in package.json browser field\nexport class Worker {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n terminate() {}\n}\n\nexport {Worker as NodeWorker};\nexport {Worker as NodeWorkerType};\n\nexport const parentPort = null;\n","import {assert} from '../env-utils/assert';\n\nconst workerURLCache = new Map();\n\n/**\n * Creates a loadable URL from worker source or URL\n * that can be used to create `Worker` instances.\n * Due to CORS issues it may be necessary to wrap a URL in a small importScripts\n * @param props\n * @param props.source Worker source\n * @param props.url Worker URL\n * @returns loadable url\n */\nexport function getLoadableWorkerURL(props: {source?: string; url?: string}) {\n assert((props.source && !props.url) || (!props.source && props.url)); // Either source or url must be defined\n\n let workerURL = workerURLCache.get(props.source || props.url);\n if (!workerURL) {\n // Differentiate worker urls from worker source code\n if (props.url) {\n workerURL = getLoadableWorkerURLFromURL(props.url);\n workerURLCache.set(props.url, workerURL);\n }\n\n if (props.source) {\n workerURL = getLoadableWorkerURLFromSource(props.source);\n workerURLCache.set(props.source, workerURL);\n }\n }\n\n assert(workerURL);\n return workerURL;\n}\n\n/**\n * Build a loadable worker URL from worker URL\n * @param url\n * @returns loadable URL\n */\nfunction getLoadableWorkerURLFromURL(url: string): string {\n // A local script url, we can use it to initialize a Worker directly\n if (!url.startsWith('http')) {\n return url;\n }\n\n // A remote script, we need to use `importScripts` to load from different origin\n const workerSource = buildScriptSource(url);\n return getLoadableWorkerURLFromSource(workerSource);\n}\n\n/**\n * Build a loadable worker URL from worker source\n * @param workerSource\n * @returns loadable url\n */\nfunction getLoadableWorkerURLFromSource(workerSource: string): string {\n const blob = new Blob([workerSource], {type: 'application/javascript'});\n return URL.createObjectURL(blob);\n}\n\n/**\n * Per spec, worker cannot be initialized with a script from a different origin\n * However a local worker script can still import scripts from other origins,\n * so we simply build a wrapper script.\n *\n * @param workerUrl\n * @returns source\n */\nfunction buildScriptSource(workerUrl: string): string {\n return `\\\ntry {\n importScripts('${workerUrl}');\n} catch (error) {\n console.error(error);\n throw error;\n}`;\n}\n","// NOTE - there is a copy of this function is both in core and loader-utils\n// core does not need all the utils in loader-utils, just this one.\n\n/**\n * Returns an array of Transferrable objects that can be used with postMessage\n * https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage\n * @param object data to be sent via postMessage\n * @param recursive - not for application use\n * @param transfers - not for application use\n * @returns a transfer list that can be passed to postMessage\n */\nexport function getTransferList(\n object: any,\n recursive: boolean = true,\n transfers?: Set\n): Transferable[] {\n // Make sure that items in the transfer list is unique\n const transfersSet = transfers || new Set();\n\n if (!object) {\n // ignore\n } else if (isTransferable(object)) {\n transfersSet.add(object);\n } else if (isTransferable(object.buffer)) {\n // Typed array\n transfersSet.add(object.buffer);\n } else if (ArrayBuffer.isView(object)) {\n // object is a TypeArray viewing into a SharedArrayBuffer (not transferable)\n // Do not iterate through the content in this case\n } else if (recursive && typeof object === 'object') {\n for (const key in object) {\n // Avoid perf hit - only go one level deep\n getTransferList(object[key], recursive, transfersSet);\n }\n }\n\n // If transfers is defined, is internal recursive call\n // Otherwise it's called by the user\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Transferable\nfunction isTransferable(object: unknown) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n return true;\n }\n // @ts-ignore\n if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\n\n/**\n * Recursively drop non serializable values like functions and regexps.\n * @param object\n */\nexport function getTransferListForWriter(object: object | null): object {\n if (object === null) {\n return {};\n }\n const clone = Object.assign({}, object);\n\n Object.keys(clone).forEach((key) => {\n // Typed Arrays and Arrays are passed with no change\n if (\n typeof object[key] === 'object' &&\n !ArrayBuffer.isView(object[key]) &&\n !(object[key] instanceof Array)\n ) {\n clone[key] = getTransferListForWriter(object[key]);\n } else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {\n clone[key] = {};\n } else {\n clone[key] = object[key];\n }\n });\n\n return clone;\n}\n","// loaders.gl, MIT license\n\nimport {NodeWorker, NodeWorkerType} from '../node/worker_threads';\nimport {isBrowser} from '../env-utils/globals';\nimport {assert} from '../env-utils/assert';\nimport {getLoadableWorkerURL} from '../worker-utils/get-loadable-worker-url';\nimport {getTransferList} from '../worker-utils/get-transfer-list';\n\nconst NOOP = () => {};\n\nexport type WorkerThreadProps = {\n name: string;\n source?: string;\n url?: string;\n};\n\n/**\n * Represents one worker thread\n */\nexport default class WorkerThread {\n readonly name: string;\n readonly source: string | undefined;\n readonly url: string | undefined;\n terminated: boolean = false;\n worker: Worker | NodeWorkerType;\n onMessage: (message: any) => void;\n onError: (error: Error) => void;\n\n private _loadableURL: string = '';\n\n /** Checks if workers are supported on this platform */\n static isSupported(): boolean {\n return (\n (typeof Worker !== 'undefined' && isBrowser) ||\n (typeof NodeWorker !== 'undefined' && !isBrowser)\n );\n }\n\n constructor(props: WorkerThreadProps) {\n const {name, source, url} = props;\n assert(source || url); // Either source or url must be defined\n this.name = name;\n this.source = source;\n this.url = url;\n this.onMessage = NOOP;\n this.onError = (error) => console.log(error); // eslint-disable-line\n\n this.worker = isBrowser ? this._createBrowserWorker() : this._createNodeWorker();\n }\n\n /**\n * Terminate this worker thread\n * @note Can free up significant memory\n */\n destroy(): void {\n this.onMessage = NOOP;\n this.onError = NOOP;\n this.worker.terminate(); // eslint-disable-line @typescript-eslint/no-floating-promises\n this.terminated = true;\n }\n\n get isRunning() {\n return Boolean(this.onMessage);\n }\n\n /**\n * Send a message to this worker thread\n * @param data any data structure, ideally consisting mostly of transferrable objects\n * @param transferList If not supplied, calculated automatically by traversing data\n */\n postMessage(data: any, transferList?: any[]): void {\n transferList = transferList || getTransferList(data);\n // @ts-ignore\n this.worker.postMessage(data, transferList);\n }\n\n // PRIVATE\n\n /**\n * Generate a standard Error from an ErrorEvent\n * @param event\n */\n _getErrorFromErrorEvent(event: ErrorEvent): Error {\n // Note Error object does not have the expected fields if loading failed completely\n // https://developer.mozilla.org/en-US/docs/Web/API/Worker#Event_handlers\n // https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n let message = 'Failed to load ';\n message += `worker ${this.name} from ${this.url}. `;\n if (event.message) {\n message += `${event.message} in `;\n }\n // const hasFilename = event.filename && !event.filename.startsWith('blob:');\n // message += hasFilename ? event.filename : this.source.slice(0, 100);\n if (event.lineno) {\n message += `:${event.lineno}:${event.colno}`;\n }\n return new Error(message);\n }\n\n /**\n * Creates a worker thread on the browser\n */\n _createBrowserWorker(): Worker {\n this._loadableURL = getLoadableWorkerURL({source: this.source, url: this.url});\n const worker = new Worker(this._loadableURL, {name: this.name});\n\n worker.onmessage = (event) => {\n if (!event.data) {\n this.onError(new Error('No data received'));\n } else {\n this.onMessage(event.data);\n }\n };\n // This callback represents an uncaught exception in the worker thread\n worker.onerror = (error: ErrorEvent): void => {\n this.onError(this._getErrorFromErrorEvent(error));\n this.terminated = true;\n };\n // TODO - not clear when this would be called, for now just log in case it happens\n worker.onmessageerror = (event) => console.error(event); // eslint-disable-line\n\n return worker;\n }\n\n /**\n * Creates a worker thread in node.js\n * @todo https://nodejs.org/api/async_hooks.html#async-resource-worker-pool\n */\n _createNodeWorker(): NodeWorkerType {\n let worker: NodeWorkerType;\n if (this.url) {\n // Make sure relative URLs start with './'\n const absolute = this.url.includes(':/') || this.url.startsWith('/');\n const url = absolute ? this.url : `./${this.url}`;\n // console.log('Starting work from', url);\n worker = new NodeWorker(url, {eval: false});\n } else if (this.source) {\n worker = new NodeWorker(this.source, {eval: true});\n } else {\n throw new Error('no worker');\n }\n worker.on('message', (data) => {\n // console.error('message', data);\n this.onMessage(data);\n });\n worker.on('error', (error) => {\n // console.error('error', error);\n this.onError(error);\n });\n worker.on('exit', (code) => {\n // console.error('exit', code);\n });\n return worker;\n }\n}\n","import type {WorkerMessageType, WorkerMessagePayload} from '../../types';\nimport WorkerThread from './worker-thread';\nimport {assert} from '../env-utils/assert';\n\n/**\n * Represents one Job handled by a WorkerPool or WorkerFarm\n */\nexport default class WorkerJob {\n readonly name: string;\n readonly workerThread: WorkerThread;\n isRunning: boolean = true;\n /** Promise that resolves when Job is done */\n readonly result: Promise;\n\n private _resolve: (value: any) => void = () => {};\n private _reject: (reason?: any) => void = () => {};\n\n constructor(jobName: string, workerThread: WorkerThread) {\n this.name = jobName;\n this.workerThread = workerThread;\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n /**\n * Send a message to the job's worker thread\n * @param data any data structure, ideally consisting mostly of transferrable objects\n */\n postMessage(type: WorkerMessageType, payload: WorkerMessagePayload): void {\n this.workerThread.postMessage({\n source: 'loaders.gl', // Lets worker ignore unrelated messages\n type,\n payload\n });\n }\n\n /**\n * Call to resolve the `result` Promise with the supplied value\n */\n done(value: any): void {\n assert(this.isRunning);\n this.isRunning = false;\n this._resolve(value);\n }\n\n /**\n * Call to reject the `result` Promise with the supplied error\n */\n error(error: Error): void {\n assert(this.isRunning);\n this.isRunning = false;\n this._reject(error);\n }\n}\n","import type {WorkerMessageType, WorkerMessagePayload} from '../../types';\nimport {isMobile} from '../env-utils/globals';\nimport WorkerThread from './worker-thread';\nimport WorkerJob from './worker-job';\n\n/** WorkerPool onDebug Callback Parameters */\ntype OnDebugParameters = {\n message: string;\n worker: string;\n name: string;\n job: string;\n backlog: number;\n workerThread: WorkerThread;\n};\n\n/** WorkerPool Properties */\nexport type WorkerPoolProps = {\n name?: string;\n source?: string; // | Function;\n url?: string;\n maxConcurrency?: number;\n maxMobileConcurrency?: number;\n onDebug?: (options: OnDebugParameters) => any;\n reuseWorkers?: boolean;\n};\n\n/** Private helper types */\ntype OnMessage = (job: WorkerJob, type: WorkerMessageType, payload: WorkerMessagePayload) => void;\ntype OnError = (job: WorkerJob, error: Error) => void;\n\ntype QueuedJob = {\n name: string;\n onMessage: OnMessage;\n onError: OnError;\n onStart: (value: any) => void; // Resolve job start promise\n};\n\n/**\n * Process multiple data messages with small pool of identical workers\n */\nexport default class WorkerPool {\n name: string = 'unnamed';\n source?: string; // | Function;\n url?: string;\n maxConcurrency: number = 1;\n maxMobileConcurrency: number = 1;\n onDebug: (options: OnDebugParameters) => any = () => {};\n reuseWorkers: boolean = true;\n\n private props: WorkerPoolProps = {};\n private jobQueue: QueuedJob[] = [];\n private idleQueue: WorkerThread[] = [];\n private count = 0;\n private isDestroyed = false;\n\n /** Checks if workers are supported on this platform */\n static isSupported(): boolean {\n return WorkerThread.isSupported();\n }\n\n /**\n * @param processor - worker function\n * @param maxConcurrency - max count of workers\n */\n constructor(props: WorkerPoolProps) {\n this.source = props.source;\n this.url = props.url;\n this.setProps(props);\n }\n\n /**\n * Terminates all workers in the pool\n * @note Can free up significant memory\n */\n destroy(): void {\n // Destroy idle workers, active Workers will be destroyed on completion\n this.idleQueue.forEach((worker) => worker.destroy());\n this.isDestroyed = true;\n }\n\n setProps(props: WorkerPoolProps) {\n this.props = {...this.props, ...props};\n\n if (props.name !== undefined) {\n this.name = props.name;\n }\n if (props.maxConcurrency !== undefined) {\n this.maxConcurrency = props.maxConcurrency;\n }\n if (props.maxMobileConcurrency !== undefined) {\n this.maxMobileConcurrency = props.maxMobileConcurrency;\n }\n if (props.reuseWorkers !== undefined) {\n this.reuseWorkers = props.reuseWorkers;\n }\n if (props.onDebug !== undefined) {\n this.onDebug = props.onDebug;\n }\n }\n\n async startJob(\n name: string,\n onMessage: OnMessage = (job, type, data) => job.done(data),\n onError: OnError = (job, error) => job.error(error)\n ): Promise {\n // Promise resolves when thread starts working on this job\n const startPromise = new Promise((onStart) => {\n // Promise resolves when thread completes or fails working on this job\n this.jobQueue.push({name, onMessage, onError, onStart});\n return this;\n });\n this._startQueuedJob(); // eslint-disable-line @typescript-eslint/no-floating-promises\n return await startPromise;\n }\n\n // PRIVATE\n\n /**\n * Starts first queued job if worker is available or can be created\n * Called when job is started and whenever a worker returns to the idleQueue\n */\n async _startQueuedJob(): Promise {\n if (!this.jobQueue.length) {\n return;\n }\n\n const workerThread = this._getAvailableWorker();\n if (!workerThread) {\n return;\n }\n\n // We have a worker, dequeue and start the job\n const queuedJob = this.jobQueue.shift();\n if (queuedJob) {\n // Emit a debug event\n // @ts-ignore\n this.onDebug({\n message: 'Starting job',\n name: queuedJob.name,\n workerThread,\n backlog: this.jobQueue.length\n });\n\n // Create a worker job to let the app access thread and manage job completion\n const job = new WorkerJob(queuedJob.name, workerThread);\n\n // Set the worker thread's message handlers\n workerThread.onMessage = (data) => queuedJob.onMessage(job, data.type, data.payload);\n workerThread.onError = (error) => queuedJob.onError(job, error);\n\n // Resolve the start promise so that the app can start sending messages to worker\n queuedJob.onStart(job);\n\n // Wait for the app to signal that the job is complete, then return worker to queue\n try {\n await job.result;\n } finally {\n this.returnWorkerToQueue(workerThread);\n }\n }\n }\n\n /**\n * Returns a worker to the idle queue\n * Destroys the worker if\n * - pool is destroyed\n * - if this pool doesn't reuse workers\n * - if maxConcurrency has been lowered\n * @param worker\n */\n returnWorkerToQueue(worker: WorkerThread) {\n const shouldDestroyWorker =\n this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();\n\n if (shouldDestroyWorker) {\n worker.destroy();\n this.count--;\n } else {\n this.idleQueue.push(worker);\n }\n\n if (!this.isDestroyed) {\n this._startQueuedJob(); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n\n /**\n * Returns idle worker or creates new worker if maxConcurrency has not been reached\n */\n _getAvailableWorker(): WorkerThread | null {\n // If a worker has completed and returned to the queue, it can be used\n if (this.idleQueue.length > 0) {\n return this.idleQueue.shift() || null;\n }\n\n // Create fresh worker if we haven't yet created the max amount of worker threads for this worker source\n if (this.count < this._getMaxConcurrency()) {\n this.count++;\n const name = `${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;\n return new WorkerThread({name, source: this.source, url: this.url});\n }\n\n // No worker available, have to wait\n return null;\n }\n\n _getMaxConcurrency() {\n return isMobile ? this.maxMobileConcurrency : this.maxConcurrency;\n }\n}\n","import WorkerPool from './worker-pool';\nimport WorkerThread from './worker-thread';\n\n/**\n * @param maxConcurrency - max count of workers\n * @param maxMobileConcurrency - max count of workers on mobile\n * @param maxConcurrency - max count of workers\n * @param reuseWorkers - if false, destroys workers when task is completed\n * @param onDebug - callback intended to allow application to log worker pool activity\n */\nexport type WorkerFarmProps = {\n maxConcurrency?: number;\n maxMobileConcurrency?: number;\n reuseWorkers?: boolean;\n onDebug?: () => void;\n};\n\nconst DEFAULT_PROPS: Required = {\n maxConcurrency: 3,\n maxMobileConcurrency: 1,\n reuseWorkers: true,\n onDebug: () => {}\n};\n\n/**\n * Process multiple jobs with a \"farm\" of different workers in worker pools.\n */\nexport default class WorkerFarm {\n private props: WorkerFarmProps;\n private workerPools = new Map();\n // singleton\n private static _workerFarm?: WorkerFarm;\n\n /** Checks if workers are supported on this platform */\n static isSupported(): boolean {\n return WorkerThread.isSupported();\n }\n\n /** Get the singleton instance of the global worker farm */\n static getWorkerFarm(props: WorkerFarmProps = {}): WorkerFarm {\n WorkerFarm._workerFarm = WorkerFarm._workerFarm || new WorkerFarm({});\n WorkerFarm._workerFarm.setProps(props);\n return WorkerFarm._workerFarm;\n }\n\n /** get global instance with WorkerFarm.getWorkerFarm() */\n private constructor(props: WorkerFarmProps) {\n this.props = {...DEFAULT_PROPS};\n this.setProps(props);\n /** @type Map} */\n this.workerPools = new Map();\n }\n\n /**\n * Terminate all workers in the farm\n * @note Can free up significant memory\n */\n destroy(): void {\n for (const workerPool of this.workerPools.values()) {\n workerPool.destroy();\n }\n this.workerPools = new Map();\n }\n\n /**\n * Set props used when initializing worker pools\n * @param props\n */\n setProps(props: WorkerFarmProps): void {\n this.props = {...this.props, ...props};\n // Update worker pool props\n for (const workerPool of this.workerPools.values()) {\n workerPool.setProps(this._getWorkerPoolProps());\n }\n }\n\n /**\n * Returns a worker pool for the specified worker\n * @param options - only used first time for a specific worker name\n * @param options.name - the name of the worker - used to identify worker pool\n * @param options.url -\n * @param options.source -\n * @example\n * const job = WorkerFarm.getWorkerFarm().getWorkerPool({name, url}).startJob(...);\n */\n getWorkerPool(options: {name: string; source?: string; url?: string}): WorkerPool {\n const {name, source, url} = options;\n let workerPool = this.workerPools.get(name);\n if (!workerPool) {\n workerPool = new WorkerPool({\n name,\n source,\n url\n });\n workerPool.setProps(this._getWorkerPoolProps());\n this.workerPools.set(name, workerPool);\n }\n return workerPool;\n }\n\n _getWorkerPoolProps() {\n return {\n maxConcurrency: this.props.maxConcurrency,\n maxMobileConcurrency: this.props.maxMobileConcurrency,\n reuseWorkers: this.props.reuseWorkers,\n onDebug: this.props.onDebug\n };\n }\n}\n","// loaders.gl, MIT license\n\nimport type {WorkerObject, WorkerOptions} from '../../types';\nimport {assert} from '../env-utils/assert';\nimport {VERSION as __VERSION__} from '../env-utils/version';\n\nconst NPM_TAG = 'latest'; // 'beta', or 'latest' on release-branch\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : NPM_TAG;\n\n/**\n * Gets worker object's name (for debugging in Chrome thread inspector window)\n */\nexport function getWorkerName(worker: WorkerObject): string {\n const warning = worker.version !== VERSION ? ` (worker-utils@${VERSION})` : '';\n return `${worker.name}@${worker.version}${warning}`;\n}\n\n/**\n * Generate a worker URL based on worker object and options\n * @returns A URL to one of the following:\n * - a published worker on unpkg CDN\n * - a local test worker\n * - a URL provided by the user in options\n */\nexport function getWorkerURL(worker: WorkerObject, options: WorkerOptions = {}): string {\n const workerOptions = options[worker.id] || {};\n\n const workerFile = `${worker.id}-worker.js`;\n\n let url = workerOptions.workerUrl;\n\n // HACK: Allow for non-nested workerUrl for the CompressionWorker.\n // For the compression worker, workerOptions is currently not nested correctly. For most loaders,\n // you'd have options within an object, i.e. `{mvt: {coordinates: ...}}` but the CompressionWorker\n // puts options at the top level, not within a `compression` key (its `id`). For this reason, the\n // above `workerOptions` will always be a string (i.e. `'gzip'`) for the CompressionWorker. To not\n // break backwards compatibility, we allow the CompressionWorker to have options at the top level.\n if (!url && worker.id === 'compression') {\n url = options.workerUrl;\n }\n\n // If URL is test, generate local loaders.gl url\n // @ts-ignore _workerType\n if (options._workerType === 'test') {\n url = `modules/${worker.module}/dist/${workerFile}`;\n }\n\n // If url override is not provided, generate a URL to published version on npm CDN unpkg.com\n if (!url) {\n // GENERATE\n let version = worker.version;\n // On master we need to load npm alpha releases published with the `beta` tag\n if (version === 'latest') {\n // throw new Error('latest worker version specified');\n version = NPM_TAG;\n }\n const versionTag = version ? `@${version}` : '';\n url = `https://unpkg.com/@loaders.gl/${worker.module}${versionTag}/dist/${workerFile}`;\n }\n\n assert(url);\n\n // Allow user to override location\n return url;\n}\n","import {\n WorkerJob,\n WorkerMessageType,\n WorkerMessagePayload,\n isBrowser\n} from '@loaders.gl/worker-utils';\nimport type {Loader, LoaderOptions, LoaderContext} from '../../types';\nimport {WorkerFarm, getWorkerURL} from '@loaders.gl/worker-utils';\n\n/**\n * Determines if a loader can parse with worker\n * @param loader\n * @param options\n */\nexport function canParseWithWorker(loader: Loader, options?: LoaderOptions) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n // Node workers are still experimental\n if (!isBrowser && !options?._nodeWorkers) {\n return false;\n }\n\n return loader.worker && options?.worker;\n}\n\n/**\n * this function expects that the worker function sends certain messages,\n * this can be automated if the worker is wrapper by a call to createLoaderWorker in @loaders.gl/loader-utils.\n */\nexport async function parseWithWorker(\n loader: Loader,\n data: any,\n options?: LoaderOptions,\n context?: LoaderContext,\n parseOnMainThread?: (arrayBuffer: ArrayBuffer, options: {[key: string]: any}) => Promise\n) {\n const name = loader.id; // TODO\n const url = getWorkerURL(loader, options);\n\n const workerFarm = WorkerFarm.getWorkerFarm(options);\n const workerPool = workerFarm.getWorkerPool({name, url});\n\n // options.log object contains functions which cannot be transferred\n // context.fetch & context.parse functions cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n context = JSON.parse(JSON.stringify(context || {}));\n\n const job = await workerPool.startJob(\n 'process-on-worker',\n // @ts-expect-error\n onMessage.bind(null, parseOnMainThread) // eslint-disable-line @typescript-eslint/no-misused-promises\n );\n\n job.postMessage('process', {\n // @ts-ignore\n input: data,\n options,\n context\n });\n\n const result = await job.result;\n // TODO - what is going on here?\n return await result.result;\n}\n\n/**\n * Handle worker's responses to the main thread\n * @param job\n * @param type\n * @param payload\n */\nasync function onMessage(\n parseOnMainThread: (arrayBuffer: ArrayBuffer, options?: {[key: string]: any}) => Promise,\n job: WorkerJob,\n type: WorkerMessageType,\n payload: WorkerMessagePayload\n) {\n switch (type) {\n case 'done':\n job.done(payload);\n break;\n\n case 'error':\n job.error(new Error(payload.error));\n break;\n\n case 'process':\n // Worker is asking for main thread to parseO\n const {id, input, options} = payload;\n try {\n const result = await parseOnMainThread(input, options);\n job.postMessage('done', {id, result});\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown error';\n job.postMessage('error', {id, error: message});\n }\n break;\n\n default:\n // eslint-disable-next-line\n console.warn(`parse-with-worker unknown message ${type}`);\n }\n}\n","/**\n * Throws an `Error` with the optional `message` if `condition` is falsy\n * @note Replacement for the external assert method to reduce bundle size\n */\nexport function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(message || 'loader assertion failed.');\n }\n}\n","import type {Loader} from '@loaders.gl/loader-utils';\nimport {assert} from '@loaders.gl/loader-utils';\n\nexport function isLoaderObject(loader?: any): boolean {\n if (!loader) {\n return false;\n }\n\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const hasExtensions = Array.isArray(loader?.extensions);\n\n /* Now handled by types and worker loaders do not have these\n let hasParser =\n loader.parseTextSync ||\n loader.parseSync ||\n loader.parse ||\n loader.parseStream || // TODO Remove, Replace with parseInBatches\n loader.parseInBatches;\n */\n\n return hasExtensions;\n}\n\nexport function normalizeLoader(loader: Loader): Loader {\n // This error is fairly easy to trigger by mixing up import statements etc\n // So we make an exception and add a developer error message for this case\n // To help new users from getting stuck here\n assert(loader, 'null loader');\n assert(isLoaderObject(loader), 'invalid loader');\n\n // NORMALIZE [LOADER, OPTIONS] => LOADER\n\n // If [loader, options], create a new loaders object with options merged in\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = {\n ...loader,\n options: {...loader.options, ...options}\n };\n }\n\n // NORMALIZE text and binary flags\n // Ensure at least one of text/binary flags are properly set\n\n // @ts-expect-error\n if (loader?.parseTextSync || loader?.parseText) {\n loader.text = true;\n }\n\n if (!loader.text) {\n loader.binary = true;\n }\n\n return loader;\n}\n","import type {Readable} from 'stream';\n\n/** A DOM or Node readable stream */\nexport type ReadableStreamType = ReadableStream | Readable;\n\nconst isBoolean: (x: any) => boolean = (x) => typeof x === 'boolean';\nconst isFunction: (x: any) => boolean = (x) => typeof x === 'function';\n\nexport const isObject: (x: any) => boolean = (x) => x !== null && typeof x === 'object';\nexport const isPureObject: (x: any) => boolean = (x) =>\n isObject(x) && x.constructor === {}.constructor;\nexport const isPromise: (x: any) => boolean = (x) => isObject(x) && isFunction(x.then);\n\nexport const isIterable: (x: any) => boolean = (x) => x && typeof x[Symbol.iterator] === 'function';\nexport const isAsyncIterable: (x: any) => boolean = (x) =>\n x && typeof x[Symbol.asyncIterator] === 'function';\nexport const isIterator: (x: any) => boolean = (x) => x && isFunction(x.next);\n\nexport const isResponse: (x: any) => boolean = (x) =>\n (typeof Response !== 'undefined' && x instanceof Response) ||\n (x && x.arrayBuffer && x.text && x.json);\n\nexport const isFile: (x: any) => boolean = (x) => typeof File !== 'undefined' && x instanceof File;\nexport const isBlob: (x: any) => boolean = (x) => typeof Blob !== 'undefined' && x instanceof Blob;\n\n/** Check for Node.js `Buffer` without triggering bundler to include buffer polyfill */\nexport const isBuffer: (x: any) => boolean = (x) => x && typeof x === 'object' && x.isBuffer;\n\nexport const isWritableDOMStream: (x: any) => boolean = (x) =>\n isObject(x) && isFunction(x.abort) && isFunction(x.getWriter);\n\nexport const isReadableDOMStream: (x: any) => boolean = (x) =>\n (typeof ReadableStream !== 'undefined' && x instanceof ReadableStream) ||\n (isObject(x) && isFunction(x.tee) && isFunction(x.cancel) && isFunction(x.getReader));\n// Not implemented in Firefox: && isFunction(x.pipeTo)\n\nexport const isWritableNodeStream: (x: any) => boolean = (x) =>\n isObject(x) && isFunction(x.end) && isFunction(x.write) && isBoolean(x.writable);\nexport const isReadableNodeStream: (x: any) => boolean = (x) =>\n isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\nexport const isReadableStream: (x: any) => boolean = (x) =>\n isReadableDOMStream(x) || isReadableNodeStream(x);\nexport const isWritableStream: (x: any) => boolean = (x) =>\n isWritableDOMStream(x) || isWritableNodeStream(x);\n","// This function is needed in initialization stages,\n// make sure it can be imported in isolation\n\nimport isElectron from './is-electron';\n\nexport default function isBrowser(): boolean {\n // Check if in browser by duck-typing Node context\n const isNode =\n // @ts-expect-error\n typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n\n return !isNode || isElectron();\n}\n\n// document does not exist on worker thread\nexport function isBrowserMainThread(): boolean {\n return isBrowser() && typeof document !== 'undefined';\n}\n","// based on https://github.com/cheton/is-electron\n// https://github.com/electron/electron/issues/2288\n/* eslint-disable complexity */\nexport default function isElectron(mockUserAgent?: string): boolean {\n // Renderer process\n if (\n typeof window !== 'undefined' &&\n typeof window.process === 'object' &&\n // @ts-expect-error\n window.process.type === 'renderer'\n ) {\n return true;\n }\n // Main process\n if (\n typeof process !== 'undefined' &&\n typeof process.versions === 'object' &&\n // eslint-disable-next-line\n Boolean(process.versions['electron'])\n ) {\n return true;\n }\n // Detect the user agent when the `nodeIntegration` option is set to true\n const realUserAgent =\n typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n if (userAgent && userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n return false;\n}\n","import checkIfBrowser from '../lib/is-browser';\n\nexport {self, window, global, document, process, console} from '../lib/globals';\n\n// Extract injected version from package.json (injected by babel plugin)\n// @ts-expect-error\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nexport const isBrowser = checkIfBrowser();\n","// probe.gl, MIT license\n\nexport type StorageType = 'sessionStorage' | 'localStorage';\n\nfunction getStorage(type: StorageType): Storage | null {\n try {\n const storage: Storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\n\n// Store keys in local storage via simple interface\nexport class LocalStorage {\n storage: Storage | null;\n id: string;\n config: Required;\n\n constructor(\n id: string,\n defaultConfig: Required,\n type: StorageType = 'sessionStorage'\n ) {\n this.storage = getStorage(type);\n this.id = id;\n this.config = defaultConfig;\n this._loadConfiguration();\n }\n\n getConfiguration(): Required {\n return this.config;\n }\n\n setConfiguration(configuration: Configuration): void {\n Object.assign(this.config, configuration);\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n }\n\n // Get config from persistent store, if available\n _loadConfiguration() {\n let configuration = {};\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n Object.assign(this.config, configuration);\n return this;\n }\n}\n","// probe.gl, MIT license\n\nexport type FormatValueOptions = {\n isInteger?: boolean;\n maxElts?: number;\n size?: number;\n};\n\n/**\n * Format time\n */\nexport function formatTime(ms: number): string {\n let formatted;\n if (ms < 10) {\n formatted = `${ms.toFixed(2)}ms`;\n } else if (ms < 100) {\n formatted = `${ms.toFixed(1)}ms`;\n } else if (ms < 1000) {\n formatted = `${ms.toFixed(0)}ms`;\n } else {\n formatted = `${(ms / 1000).toFixed(2)}s`;\n }\n return formatted;\n}\n\nexport function leftPad(string: string, length: number = 8): string {\n const padLength = Math.max(length - string.length, 0);\n return `${' '.repeat(padLength)}${string}`;\n}\n\nexport function rightPad(string: string, length: number = 8): string {\n const padLength = Math.max(length - string.length, 0);\n return `${string}${' '.repeat(padLength)}`;\n}\n\nexport function formatValue(v: unknown, options: FormatValueOptions = {}): string {\n const EPSILON = 1e-16;\n const {isInteger = false} = options;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, options);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n // @ts-expect-error\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\n/** Helper to formatValue */\nfunction formatArrayValue(v: any, options: FormatValueOptions) {\n const {maxElts = 16, size = 1} = options;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], options);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\n/**\n * Log an image to the console (uses browser specific console formatting styles)\n * Inspired by https://github.com/hughsk/console-image (MIT license)\n */\nexport function formatImage(image: any, message: string, scale: number, maxWidth: number = 600) {\n const imageUrl = image.src.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n if (image.width > maxWidth) {\n scale = Math.min(scale, maxWidth / image.width);\n }\n\n const width = image.width * scale;\n const height = image.height * scale;\n\n const style = [\n 'font-size:1px;',\n `padding:${Math.floor(height / 2)}px ${Math.floor(width / 2)}px;`,\n `line-height:${height}px;`,\n `background:url(${imageUrl});`,\n `background-size:${width}px ${height}px;`,\n 'color:transparent;'\n ].join('');\n\n return [`${message} %c+`, style];\n}\n","import {isBrowser} from '@probe.gl/env';\n\nexport enum COLOR {\n BLACK = 30,\n RED = 31,\n GREEN = 32,\n YELLOW = 33,\n BLUE = 34,\n MAGENTA = 35,\n CYAN = 36,\n WHITE = 37,\n\n BRIGHT_BLACK = 90,\n BRIGHT_RED = 91,\n BRIGHT_GREEN = 92,\n BRIGHT_YELLOW = 93,\n BRIGHT_BLUE = 94,\n BRIGHT_MAGENTA = 95,\n BRIGHT_CYAN = 96,\n BRIGHT_WHITE = 97\n}\n\nconst BACKGROUND_INCREMENT = 10;\n\nfunction getColor(color: string | COLOR): number {\n if (typeof color !== 'string') {\n return color;\n }\n color = color.toUpperCase();\n return COLOR[color] || COLOR.WHITE;\n}\n\nexport function addColor(\n string: string,\n color: string | COLOR,\n background?: string | COLOR\n): string {\n if (!isBrowser && typeof string === 'string') {\n if (color) {\n const colorCode = getColor(color);\n string = `\\u001b[${colorCode}m${string}\\u001b[39m`;\n }\n if (background) {\n // background colors values are +10\n const colorCode = getColor(background);\n string = `\\u001b[${colorCode + BACKGROUND_INCREMENT}m${string}\\u001b[49m`;\n }\n }\n return string;\n}\n","export default function assert(condition: unknown, message?: string): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","// Do not name these variables the same as the global objects - will break bundling\nconst global_ = globalThis;\n// eslint-disable-next-line consistent-this\nconst self_ = globalThis.self || globalThis.window || globalThis.global;\nconst window_ = (globalThis.window || globalThis.self || globalThis.global) as unknown as Window;\nconst document_ = globalThis.document || ({} as Document);\nconst process_ = globalThis.process || {};\nconst console_ = globalThis.console;\nconst navigator_ = globalThis.navigator || ({} as Navigator);\n\nexport {\n global_ as global,\n self_ as self,\n window_ as window,\n document_ as document,\n process_ as process,\n console_ as console,\n navigator_ as navigator\n};\n","// probe.gl, MIT license\n\nimport {window, process, isBrowser} from '@probe.gl/env';\n\n/** Get best timer available. */\nexport function getHiResTimestamp() {\n let timestamp;\n if (isBrowser() && window.performance) {\n timestamp = window?.performance?.now?.();\n } else if ('hrtime' in process) {\n // @ts-ignore\n const timeParts = process?.hrtime?.();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n","// probe.gl, MIT license\n\n/* eslint-disable no-console */\nimport {VERSION, isBrowser} from '@probe.gl/env';\nimport {LocalStorage} from './utils/local-storage';\nimport {formatImage, formatTime, leftPad} from './utils/formatters';\nimport {addColor} from './utils/color';\nimport {autobind} from './utils/autobind';\nimport assert from './utils/assert';\nimport {getHiResTimestamp} from './utils/hi-res-timestamp';\n\n/** \"Global\" log configuration settings */\ntype LogConfiguration = {\n enabled?: boolean;\n level?: number;\n [key: string]: unknown;\n};\n\n/** Options when logging a message */\ntype LogOptions = {\n method?: Function;\n time?: boolean;\n total?: number;\n delta?: number;\n tag?: string;\n message?: string;\n once?: boolean;\n nothrottle?: boolean;\n args?: any;\n};\n\ntype LogFunction = () => void;\n\ntype Table = Record;\n\n// Instrumentation in other packages may override console methods, so preserve them here\nconst originalConsole = {\n debug: isBrowser() ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\n\nconst DEFAULT_LOG_CONFIGURATION: Required = {\n enabled: true,\n level: 0\n};\n\nfunction noop() {} // eslint-disable-line @typescript-eslint/no-empty-function\n\nconst cache = {};\nconst ONCE = {once: true};\n\n/** A console wrapper */\n\nexport class Log {\n static VERSION = VERSION;\n\n id: string;\n VERSION: string = VERSION;\n _startTs: number = getHiResTimestamp();\n _deltaTs: number = getHiResTimestamp();\n _storage: LocalStorage;\n userData = {};\n\n // TODO - fix support from throttling groups\n LOG_THROTTLE_TIMEOUT: number = 0; // Time before throttled messages are logged again\n\n constructor({id} = {id: ''}) {\n this.id = id;\n this.userData = {};\n this._storage = new LocalStorage(\n `__probe-${this.id}__`,\n DEFAULT_LOG_CONFIGURATION\n );\n\n this.timeStamp(`${this.id} started`);\n\n autobind(this);\n Object.seal(this);\n }\n\n set level(newLevel: number) {\n this.setLevel(newLevel);\n }\n\n get level(): number {\n return this.getLevel();\n }\n\n isEnabled(): boolean {\n return this._storage.config.enabled;\n }\n\n getLevel(): number {\n return this._storage.config.level;\n }\n\n /** @return milliseconds, with fractions */\n getTotal(): number {\n return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n }\n\n /** @return milliseconds, with fractions */\n getDelta(): number {\n return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n }\n\n /** @deprecated use logLevel */\n set priority(newPriority: number) {\n this.level = newPriority;\n }\n\n /** @deprecated use logLevel */\n get priority(): number {\n return this.level;\n }\n\n /** @deprecated use logLevel */\n getPriority(): number {\n return this.level;\n }\n\n // Configure\n\n enable(enabled: boolean = true): this {\n this._storage.setConfiguration({enabled});\n return this;\n }\n\n setLevel(level: number): this {\n this._storage.setConfiguration({level});\n return this;\n }\n\n /** return the current status of the setting */\n get(setting: string): any {\n return this._storage.config[setting];\n }\n\n // update the status of the setting\n set(setting: string, value: any): void {\n this._storage.setConfiguration({[setting]: value});\n }\n\n /** Logs the current settings as a table */\n settings(): void {\n if (console.table) {\n console.table(this._storage.config);\n } else {\n console.log(this._storage.config);\n }\n }\n\n // Unconditional logging\n\n assert(condition: unknown, message?: string): asserts condition {\n assert(condition, message);\n }\n\n /** Warn, but only once, no console flooding */\n warn(message: string, ...args: unknown[]): LogFunction;\n warn(message: string): LogFunction {\n return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n }\n\n /** Print an error */\n error(message: string, ...args: unknown[]): LogFunction;\n error(message: string): LogFunction {\n return this._getLogFunction(0, message, originalConsole.error, arguments);\n }\n\n /** Print a deprecation warning */\n deprecated(oldUsage: string, newUsage: string): LogFunction {\n return this.warn(`\\`${oldUsage}\\` is deprecated and will be removed \\\nin a later version. Use \\`${newUsage}\\` instead`);\n }\n\n /** Print a removal warning */\n removed(oldUsage: string, newUsage: string): LogFunction {\n return this.error(`\\`${oldUsage}\\` has been removed. Use \\`${newUsage}\\` instead`);\n }\n\n // Conditional logging\n\n /** Log to a group */\n probe(logLevel, message?, ...args: unknown[]): LogFunction;\n probe(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n\n /** Log a debug message */\n log(logLevel, message?, ...args: unknown[]): LogFunction;\n log(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n }\n\n /** Log a normal message */\n info(logLevel, message?, ...args: unknown[]): LogFunction;\n info(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n\n /** Log a normal message, but only once, no console flooding */\n once(logLevel, message?, ...args: unknown[]): LogFunction;\n once(logLevel, message?) {\n return this._getLogFunction(\n logLevel,\n message,\n originalConsole.debug || originalConsole.info,\n arguments,\n ONCE\n );\n }\n\n /** Logs an object as a table */\n table(logLevel, table?, columns?): LogFunction {\n if (table) {\n return this._getLogFunction(\n logLevel,\n table,\n console.table || noop,\n (columns && [columns]) as unknown as IArguments,\n {\n tag: getTableHeader(table)\n }\n );\n }\n return noop;\n }\n\n /** logs an image under Chrome */\n image({\n logLevel,\n priority,\n image,\n message = '',\n scale = 1\n }: {\n logLevel?: number;\n priority?: number;\n image: any;\n message?: string;\n scale?: number;\n }): LogFunction {\n if (!this._shouldLog(logLevel || priority)) {\n return noop;\n }\n return isBrowser()\n ? logImageInBrowser({image, message, scale})\n : logImageInNode({image, message, scale});\n }\n\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n\n timeEnd(logLevel, message) {\n return this._getLogFunction(\n logLevel,\n message,\n console.timeEnd ? console.timeEnd : console.info\n );\n }\n\n timeStamp(logLevel, message?) {\n return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n }\n\n group(logLevel, message, opts = {collapsed: false}) {\n const options = normalizeArguments({logLevel, message, opts});\n const {collapsed} = opts;\n // @ts-expect-error\n options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n\n return this._getLogFunction(options);\n }\n\n groupCollapsed(logLevel, message, opts = {}) {\n return this.group(logLevel, message, Object.assign({}, opts, {collapsed: true}));\n }\n\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n }\n\n // EXPERIMENTAL\n\n withGroup(logLevel: number, message: string, func: Function): void {\n this.group(logLevel, message)();\n\n try {\n func();\n } finally {\n this.groupEnd(logLevel)();\n }\n }\n\n trace(): void {\n if (console.trace) {\n console.trace();\n }\n }\n\n // PRIVATE METHODS\n\n /** Deduces log level from a variety of arguments */\n _shouldLog(logLevel: unknown): boolean {\n return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n }\n\n _getLogFunction(\n logLevel: unknown,\n message?: unknown,\n method?: Function,\n args?: IArguments,\n opts?: LogOptions\n ): LogFunction {\n if (this._shouldLog(logLevel)) {\n // normalized opts + timings\n opts = normalizeArguments({logLevel, message, args, opts});\n method = method || opts.method;\n assert(method);\n\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n // reset delta timer\n this._deltaTs = getHiResTimestamp();\n\n const tag = opts.tag || opts.message;\n\n if (opts.once && tag) {\n if (!cache[tag]) {\n cache[tag] = getHiResTimestamp();\n } else {\n return noop;\n }\n }\n\n // TODO - Make throttling work with groups\n // if (opts.nothrottle || !throttle(tag, this.LOG_THROTTLE_TIMEOUT)) {\n // return noop;\n // }\n\n message = decorateMessage(this.id, opts.message, opts);\n\n // Bind console function so that it can be called after being returned\n return method.bind(console, message, ...opts.args);\n }\n return noop;\n }\n}\n\n/**\n * Get logLevel from first argument:\n * - log(logLevel, message, args) => logLevel\n * - log(message, args) => 0\n * - log({logLevel, ...}, message, args) => logLevel\n * - log({logLevel, message, args}) => logLevel\n */\nfunction normalizeLogLevel(logLevel: unknown): number {\n if (!logLevel) {\n return 0;\n }\n let resolvedLevel;\n\n switch (typeof logLevel) {\n case 'number':\n resolvedLevel = logLevel;\n break;\n\n case 'object':\n // Backward compatibility\n // TODO - deprecate `priority`\n // @ts-expect-error\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n\n default:\n return 0;\n }\n // 'log level must be a number'\n assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n\n return resolvedLevel;\n}\n\n/**\n * \"Normalizes\" the various argument patterns into an object with known types\n * - log(logLevel, message, args) => {logLevel, message, args}\n * - log(message, args) => {logLevel: 0, message, args}\n * - log({logLevel, ...}, message, args) => {logLevel, message, args}\n * - log({logLevel, message, args}) => {logLevel, message, args}\n */\nexport function normalizeArguments(opts: {\n logLevel;\n message;\n collapsed?: boolean;\n args?: IArguments | undefined;\n opts?;\n}): {\n logLevel: number;\n message: string;\n args: any[];\n} {\n const {logLevel, message} = opts;\n opts.logLevel = normalizeLogLevel(logLevel);\n\n // We use `arguments` instead of rest parameters (...args) because IE\n // does not support the syntax. Rest parameters is transpiled to code with\n // perf impact. Doing it here instead avoids constructing args when logging is\n // disabled.\n // TODO - remove when/if IE support is dropped\n const args: any[] = opts.args ? Array.from(opts.args) : [];\n // args should only contain arguments that appear after `message`\n // eslint-disable-next-line no-empty\n while (args.length && args.shift() !== message) {}\n\n switch (typeof logLevel) {\n case 'string':\n case 'function':\n if (message !== undefined) {\n args.unshift(message);\n }\n opts.message = logLevel;\n break;\n\n case 'object':\n Object.assign(opts, logLevel);\n break;\n\n default:\n }\n\n // Resolve functions into strings by calling them\n if (typeof opts.message === 'function') {\n opts.message = opts.message();\n }\n const messageType = typeof opts.message;\n // 'log message must be a string' or object\n assert(messageType === 'string' || messageType === 'object');\n\n // original opts + normalized opts + opts arg + fixed up message\n return Object.assign(opts, {args}, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n if (typeof message === 'string') {\n const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n message = opts.time ? `${id}: ${time} ${message}` : `${id}: ${message}`;\n message = addColor(message, opts.color, opts.background);\n }\n return message;\n}\n\n/** @deprecated Function removed */\nfunction logImageInNode({image, message = '', scale = 1}) {\n console.warn('removed');\n return noop;\n}\n\nfunction logImageInBrowser({image, message = '', scale = 1}) {\n if (typeof image === 'string') {\n const img = new Image();\n img.onload = () => {\n const args = formatImage(img, message, scale);\n console.log(...args);\n };\n img.src = image;\n return noop;\n }\n const element = image.nodeName || '';\n if (element.toLowerCase() === 'img') {\n console.log(...formatImage(image, message, scale));\n return noop;\n }\n if (element.toLowerCase() === 'canvas') {\n const img = new Image();\n img.onload = () => console.log(...formatImage(img, message, scale));\n img.src = image.toDataURL();\n return noop;\n }\n return noop;\n}\n\nfunction getTableHeader(table: Table): string {\n for (const key in table) {\n for (const title in table[key]) {\n return title || 'untitled';\n }\n }\n return 'empty';\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/**\n * Binds the \"this\" argument of all functions on a class instance to the instance\n * @param obj - class instance (typically a react component)\n */\nexport function autobind(obj: object, predefined = ['constructor']): void {\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n\n const object = obj as Record;\n for (const key of propNames) {\n const value = object[key];\n if (typeof value === 'function') {\n if (!predefined.find(name => key === name)) {\n object[key] = value.bind(obj);\n }\n }\n }\n}\n","// probe.gl Log compatible loggers\nimport {Log} from '@probe.gl/log';\n\nexport const probeLog = new Log({id: 'loaders.gl'});\n\n// Logs nothing\nexport class NullLog {\n log() {\n return () => {};\n }\n info() {\n return () => {};\n }\n warn() {\n return () => {};\n }\n error() {\n return () => {};\n }\n}\n\n// Logs to console\nexport class ConsoleLog {\n console;\n\n constructor() {\n this.console = console; // eslint-disable-line\n }\n log(...args) {\n return this.console.log.bind(this.console, ...args);\n }\n info(...args) {\n return this.console.info.bind(this.console, ...args);\n }\n warn(...args) {\n return this.console.warn.bind(this.console, ...args);\n }\n error(...args) {\n return this.console.error.bind(this.console, ...args);\n }\n}\n","// Purpose: include this in your module to avoid\n// dependencies on micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\ntype obj = {[key: string]: any};\nconst self_: obj = globals.self || globals.window || globals.global || {};\nconst window_: obj = globals.window || globals.self || globals.global || {};\nconst global_: obj = globals.global || globals.self || globals.window || {};\nconst document_: obj = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\n/** true if running in a browser */\nexport const isBrowser: boolean =\n // @ts-ignore process does not exist on browser\n Boolean(typeof process !== 'object' || String(process) !== '[object process]' || process.browser);\n\n/** true if running in a worker thread */\nexport const isWorker: boolean = typeof importScripts === 'function';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\n/** Major Node version (as a number) */\nexport const nodeVersion: number = (matches && parseFloat(matches[1])) || 0;\n","import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isBrowser} from '@loaders.gl/loader-utils';\nimport {ConsoleLog} from './loggers';\n\nexport const DEFAULT_LOADER_OPTIONS: LoaderOptions = {\n // baseUri\n fetch: null,\n mimeType: undefined,\n nothrow: false,\n log: new ConsoleLog(), // A probe.gl compatible (`log.log()()` syntax) that just logs to console\n\n CDN: 'https://unpkg.com/@loaders.gl',\n worker: true, // By default, use worker if provided by loader.\n maxConcurrency: 3, // How many worker instances should be created for each loader.\n maxMobileConcurrency: 1, // How many worker instances should be created for each loader on mobile devices.\n reuseWorkers: isBrowser, // By default reuse workers in browser (Node.js refuses to terminate if browsers are running)\n _nodeWorkers: false, // By default do not support node workers\n _workerType: '', // 'test' to use locally generated workers\n\n limit: 0,\n _limitMB: 0,\n batchSize: 'auto',\n batchDebounceMs: 0,\n metadata: false, // TODO - currently only implemented for parseInBatches, adds initial metadata batch,\n transforms: []\n};\n\nexport const REMOVED_LOADER_OPTIONS = {\n throws: 'nothrow',\n dataType: '(no longer used)',\n uri: 'baseUri',\n // Warn if fetch options are used on top-level\n method: 'fetch.method',\n headers: 'fetch.headers',\n body: 'fetch.body',\n mode: 'fetch.mode',\n credentials: 'fetch.credentials',\n cache: 'fetch.cache',\n redirect: 'fetch.redirect',\n referrer: 'fetch.referrer',\n referrerPolicy: 'fetch.referrerPolicy',\n integrity: 'fetch.integrity',\n keepalive: 'fetch.keepalive',\n signal: 'fetch.signal'\n};\n","// loaders.gl, MIT license\n\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isPureObject, isObject} from '../../javascript-utils/is-type';\nimport {probeLog, NullLog} from './loggers';\nimport {DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS} from './option-defaults';\n\n/**\n * Global state for loaders.gl. Stored on `global.loaders._state`\n */\ntype GlobalLoaderState = {\n loaderRegistry: Loader[];\n globalOptions: LoaderOptions;\n};\n\n/**\n * Helper for safely accessing global loaders.gl variables\n * Wraps initialization of global variable in function to defeat overly aggressive tree-shakers\n */\nexport function getGlobalLoaderState(): GlobalLoaderState {\n // @ts-ignore\n globalThis.loaders = globalThis.loaders || {};\n // @ts-ignore\n const {loaders} = globalThis;\n\n // Add _state object to keep separate from modules added to globalThis.loaders\n loaders._state = loaders._state || {};\n return loaders._state;\n}\n\n/**\n * Store global loader options on the global object to increase chances of cross loaders-version interoperability\n * NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\n * @returns global loader options merged with default loader options\n */\nexport const getGlobalLoaderOptions = (): LoaderOptions => {\n const state = getGlobalLoaderState();\n // Ensure all default loader options from this library are mentioned\n state.globalOptions = state.globalOptions || {...DEFAULT_LOADER_OPTIONS};\n return state.globalOptions;\n};\n\n/**\n * Set global loader options\n * @param options\n */\nexport function setGlobalOptions(options: LoaderOptions): void {\n const state = getGlobalLoaderState();\n const globalOptions = getGlobalLoaderOptions();\n state.globalOptions = normalizeOptionsInternal(globalOptions, options);\n}\n\n/**\n * Merges options with global opts and loader defaults, also injects baseUri\n * @param options\n * @param loader\n * @param loaders\n * @param url\n */\nexport function normalizeOptions(\n options: LoaderOptions,\n loader: Loader,\n loaders?: Loader[],\n url?: string\n): LoaderOptions {\n loaders = loaders || [];\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n validateOptions(options, loaders);\n return normalizeOptionsInternal(loader, options, url);\n}\n\n// VALIDATE OPTIONS\n\n/**\n * Warn for unsupported options\n * @param options\n * @param loaders\n */\nfunction validateOptions(options: LoaderOptions, loaders: Loader[]) {\n // Check top level options\n validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);\n for (const loader of loaders) {\n // Get the scoped, loader specific options from the user supplied options\n const idOptions = (options && options[loader.id]) || {};\n\n // Get scoped, loader specific default and deprecated options from the selected loader\n const loaderOptions = (loader.options && loader.options[loader.id]) || {};\n const deprecatedOptions =\n (loader.deprecatedOptions && loader.deprecatedOptions[loader.id]) || {};\n\n // Validate loader specific options\n validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n }\n}\n\n// eslint-disable-next-line max-params, complexity\nfunction validateOptionsObject(\n options,\n id: string | null,\n defaultOptions,\n deprecatedOptions,\n loaders: Loader[]\n) {\n const loaderName = id || 'Top level';\n const prefix = id ? `${id}.` : '';\n\n for (const key in options) {\n // If top level option value is an object it could options for a loader, so ignore\n const isSubOptions = !id && isObject(options[key]);\n const isBaseUriOption = key === 'baseUri' && !id;\n const isWorkerUrlOption = key === 'workerUrl' && id;\n // .workerUrl requires special handling as it is now auto-generated and no longer specified as a default option.\n if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n // Issue deprecation warnings\n if (key in deprecatedOptions) {\n probeLog.warn(\n `${loaderName} loader option \\'${prefix}${key}\\' no longer supported, use \\'${deprecatedOptions[key]}\\'`\n )();\n } else if (!isSubOptions) {\n const suggestion = findSimilarOption(key, loaders);\n probeLog.warn(\n `${loaderName} loader option \\'${prefix}${key}\\' not recognized. ${suggestion}`\n )();\n }\n }\n }\n}\n\nfunction findSimilarOption(optionKey, loaders) {\n const lowerCaseOptionKey = optionKey.toLowerCase();\n let bestSuggestion = '';\n for (const loader of loaders) {\n for (const key in loader.options) {\n if (optionKey === key) {\n return `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n const lowerCaseKey = key.toLowerCase();\n const isPartialMatch =\n lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n if (isPartialMatch) {\n bestSuggestion = bestSuggestion || `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n }\n }\n return bestSuggestion;\n}\n\nfunction normalizeOptionsInternal(loader, options, url?: string) {\n const loaderDefaultOptions = loader.options || {};\n\n const mergedOptions = {...loaderDefaultOptions};\n\n addUrlOptions(mergedOptions, url);\n\n // LOGGING: options.log can be set to `null` to defeat logging\n if (mergedOptions.log === null) {\n mergedOptions.log = new NullLog();\n }\n\n mergeNestedFields(mergedOptions, getGlobalLoaderOptions());\n mergeNestedFields(mergedOptions, options);\n\n return mergedOptions;\n}\n\n// Merge nested options objects\nfunction mergeNestedFields(mergedOptions, options) {\n for (const key in options) {\n // Check for nested options\n // object in options => either no key in defaultOptions or object in defaultOptions\n if (key in options) {\n const value = options[key];\n if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n mergedOptions[key] = {\n ...mergedOptions[key],\n ...options[key]\n };\n } else {\n mergedOptions[key] = options[key];\n }\n }\n // else: No need to merge nested opts, and the initial merge already copied over the nested options\n }\n}\n\n/**\n * Harvest information from the url\n * @deprecated This is mainly there to support a hack in the GLTFLoader\n * TODO - baseUri should be a directory, i.e. remove file component from baseUri\n * TODO - extract extension?\n * TODO - extract query parameters?\n * TODO - should these be injected on context instead of options?\n */\nfunction addUrlOptions(options, url?: string) {\n if (url && !('baseUri' in options)) {\n options.baseUri = url;\n }\n}\n","import {concatenateArrayBuffers} from '../binary-utils/array-buffer-utils';\n\n// GENERAL UTILITIES\n\n/**\n * Iterate over async iterator, without resetting iterator if end is not reached\n * - forEach intentionally does not reset iterator if exiting loop prematurely\n * so that iteration can continue in a second loop\n * - It is recommended to use a standard for-await as last loop to ensure\n * iterator gets properly reset\n *\n * TODO - optimize using sync iteration if argument is an Iterable?\n *\n * @param iterator\n * @param visitor\n */\nexport async function forEach(iterator, visitor) {\n // eslint-disable-next-line\n while (true) {\n const {done, value} = await iterator.next();\n if (done) {\n iterator.return();\n return;\n }\n const cancel = visitor(value);\n if (cancel) {\n return;\n }\n }\n}\n\n// Breaking big data into iterable chunks, concatenating iterable chunks into big data objects\n\n/**\n * Concatenates all data chunks yielded by an (async) iterator\n * This function can e.g. be used to enable atomic parsers to work on (async) iterator inputs\n */\n\nexport async function concatenateArrayBuffersAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const arrayBuffers: ArrayBuffer[] = [];\n for await (const chunk of asyncIterator) {\n arrayBuffers.push(chunk);\n }\n return concatenateArrayBuffers(...arrayBuffers);\n}\n\nexport async function concatenateStringsAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const strings: string[] = [];\n for await (const chunk of asyncIterator) {\n strings.push(chunk);\n }\n return strings.join('');\n}\n","import {TypedArray} from '../../types';\n\n/**\n * compare two binary arrays for equality\n * @param a\n * @param b\n * @param byteLength\n */\nexport function compareArrayBuffers(\n arrayBuffer1: ArrayBuffer,\n arrayBuffer2: ArrayBuffer,\n byteLength?: number\n): boolean {\n byteLength = byteLength || arrayBuffer1.byteLength;\n if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {\n return false;\n }\n const array1 = new Uint8Array(arrayBuffer1);\n const array2 = new Uint8Array(arrayBuffer2);\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers\n * @return A concatenated ArrayBuffer\n */\nexport function concatenateArrayBuffers(...sources: (ArrayBuffer | Uint8Array)[]): ArrayBuffer {\n // Make sure all inputs are wrapped in typed arrays\n const sourceArrays = sources.map((source2) =>\n source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2\n );\n\n // Get length of all inputs\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n\n // Allocate array with space for all inputs\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n // We work with ArrayBuffers, discard the typed array wrapper\n return result.buffer;\n}\n\n/**\n * Concatenate arbitrary count of typed arrays\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays\n * @param - list of arrays. All arrays should be the same type\n * @return A concatenated TypedArray\n */\nexport function concatenateTypedArrays(...typedArrays: T[]): T {\n // @ts-ignore\n const arrays = typedArrays as TypedArray[];\n // @ts-ignore\n const TypedArrayConstructor = (arrays && arrays.length > 1 && arrays[0].constructor) || null;\n if (!TypedArrayConstructor) {\n throw new Error(\n '\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types'\n );\n }\n\n const sumLength = arrays.reduce((acc, value) => acc + value.length, 0);\n // @ts-ignore typescript does not like dynamic constructors\n const result = new TypedArrayConstructor(sumLength);\n let offset = 0;\n for (const array of arrays) {\n result.set(array, offset);\n offset += array.length;\n }\n return result;\n}\n\n/**\n * Copy a view of an ArrayBuffer into new ArrayBuffer with byteOffset = 0\n * @param arrayBuffer\n * @param byteOffset\n * @param byteLength\n */\nexport function sliceArrayBuffer(\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n byteLength?: number\n): ArrayBuffer {\n const subArray =\n byteLength !== undefined\n ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength)\n : new Uint8Array(arrayBuffer).subarray(byteOffset);\n const arrayCopy = new Uint8Array(subArray);\n return arrayCopy.buffer;\n}\n","import type {IteratorOptions} from './make-iterator';\n\nconst DEFAULT_CHUNK_SIZE = 256 * 1024;\n\n/**\n * Returns an iterator that breaks a big string into chunks and yields them one-by-one as ArrayBuffers\n * @param blob string to iterate over\n * @param options\n * @param options.chunkSize\n */\nexport function* makeStringIterator(\n string: string,\n options?: IteratorOptions\n): Iterable {\n const chunkSize = options?.chunkSize || DEFAULT_CHUNK_SIZE;\n\n let offset = 0;\n const textEncoder = new TextEncoder();\n while (offset < string.length) {\n // Create a chunk of the right size\n const chunkLength = Math.min(string.length - offset, chunkSize);\n const chunk = string.slice(offset, offset + chunkLength);\n offset += chunkLength;\n\n // yield an ArrayBuffer chunk\n yield textEncoder.encode(chunk);\n }\n}\n","import type {IteratorOptions} from './make-iterator';\n\nconst DEFAULT_CHUNK_SIZE = 256 * 1024;\n\n/**\n * Returns an iterator that breaks a big ArrayBuffer into chunks and yields them one-by-one\n * @param blob ArrayBuffer to iterate over\n * @param options\n * @param options.chunkSize\n */\nexport function* makeArrayBufferIterator(\n arrayBuffer: ArrayBuffer,\n options: IteratorOptions = {}\n): Iterable {\n const {chunkSize = DEFAULT_CHUNK_SIZE} = options;\n\n let byteOffset = 0;\n\n while (byteOffset < arrayBuffer.byteLength) {\n // Create a chunk of the right size\n const chunkByteLength = Math.min(arrayBuffer.byteLength - byteOffset, chunkSize);\n const chunk = new ArrayBuffer(chunkByteLength);\n\n // Copy data from the big chunk\n const sourceArray = new Uint8Array(arrayBuffer, byteOffset, chunkByteLength);\n const chunkArray = new Uint8Array(chunk);\n chunkArray.set(sourceArray);\n\n // yield the chunk\n byteOffset += chunkByteLength;\n yield chunk;\n }\n}\n","import type {IteratorOptions} from './make-iterator';\n\nconst DEFAULT_CHUNK_SIZE = 1024 * 1024; // 1MB — biggest value that keeps UI responsive\n\n/**\n * Returns an iterator that breaks a big Blob into chunks and yields them one-by-one\n * @param blob Blob or File object\n * @param options\n * @param options.chunkSize\n */\nexport async function* makeBlobIterator(\n blob: Blob,\n options?: IteratorOptions\n): AsyncIterable {\n const chunkSize = options?.chunkSize || DEFAULT_CHUNK_SIZE;\n\n let offset = 0;\n while (offset < blob.size) {\n const end = offset + chunkSize;\n\n const chunk = await blob.slice(offset, end).arrayBuffer();\n\n offset = end;\n yield chunk;\n }\n}\n","// loaders.gl, MIT license\n\nimport * as node from '../node/buffer';\n\n/**\n * Check for Node.js `Buffer` (without triggering bundler to include Buffer polyfill on browser)\n */\nexport function isBuffer(value: any): boolean {\n return value && typeof value === 'object' && value.isBuffer;\n}\n\n/**\n * Converts to Node.js `Buffer` (without triggering bundler to include Buffer polyfill on browser)\n * @todo better data type\n */\nexport function toBuffer(data: any): Buffer {\n return node.toBuffer ? node.toBuffer(data) : data;\n}\n\n/**\n * Convert an object to an array buffer\n */\nexport function toArrayBuffer(data: unknown): ArrayBuffer {\n // Note: Should be called first, Buffers can trigger other detections below\n if (isBuffer(data)) {\n return node.toArrayBuffer(data);\n }\n\n if (data instanceof ArrayBuffer) {\n return data;\n }\n\n // Careful - Node Buffers look like Uint8Arrays (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {\n return data.buffer;\n }\n return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n if (data && typeof data === 'object' && (data as any)._toArrayBuffer) {\n return (data as any)._toArrayBuffer();\n }\n\n throw new Error('toArrayBuffer');\n}\n","import type {Readable} from 'stream';\nimport {isBrowser, toArrayBuffer} from '@loaders.gl/loader-utils';\n\nexport type StreamIteratorOptions = {\n _streamReadAhead?: boolean;\n};\n\n/**\n * Returns an async iterable that reads from a stream (works in both Node.js and browsers)\n * @param stream stream to iterator over\n */\nexport function makeStreamIterator(\n stream: ReadableStream | Readable,\n options?: StreamIteratorOptions\n): AsyncIterable {\n return isBrowser\n ? makeBrowserStreamIterator(stream as ReadableStream, options)\n : makeNodeStreamIterator(stream as Readable, options);\n}\n\n/**\n * Returns an async iterable that reads from a DOM (browser) stream\n * @param stream stream to iterate from\n * @see https://jakearchibald.com/2017/async-iterators-and-generators/#making-streams-iterate\n */\nasync function* makeBrowserStreamIterator(\n stream: ReadableStream,\n options?: StreamIteratorOptions\n): AsyncIterable {\n // WhatWG: stream is supposed to have a `getIterator` method\n // if (typeof stream.getIterator === 'function') {\n // return stream.getIterator();\n // }\n // if (typeof stream[Symbol.asyncIterator] === 'function') {\n // return makeToArrayBufferIterator(stream);\n // }\n\n // In the browser, we first need to get a lock on the stream\n const reader = stream.getReader();\n\n let nextBatchPromise: Promise<{done?: boolean; value?: Uint8Array}> | undefined;\n\n try {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const currentBatchPromise = nextBatchPromise || reader.read();\n // Issue a read for an additional batch, while we await the next batch\n // Idea is to make fetching happen in parallel with processing / parsing\n if (options?._streamReadAhead) {\n nextBatchPromise = reader.read();\n }\n // Read from the stream\n // value is a Uint8Array\n const {done, value} = await currentBatchPromise;\n // Exit if we're done\n if (done) {\n return;\n }\n // Else yield the chunk\n yield toArrayBuffer(value);\n }\n } catch (error) {\n // TODO - examples makes it look like this should always be called,\n // but that generates exceptions so only call it if we do not reach the end\n reader.releaseLock();\n }\n}\n\n/**\n * Returns an async iterable that reads from a DOM (browser) stream\n * @param stream stream to iterate from\n * @note Requires Node.js >= 10\n */\nasync function* makeNodeStreamIterator(\n stream: Readable,\n options?: StreamIteratorOptions\n): AsyncIterable {\n // Hacky test for node version to ensure we don't call bad polyfills\n // NODE 10+: stream is an asyncIterator\n for await (const chunk of stream) {\n yield toArrayBuffer(chunk); // Coerce each chunk to ArrayBuffer\n }\n}\n/* TODO - remove NODE < 10\n * @see https://github.com/bustle/streaming-iterables, MIT license\n *\n if (typeof stream[Symbol.asyncIterator] === 'function') {\n return;\n }\n\n // TODO - check if is this ever used in Node 10+?\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const data = stream.read();\n if (data !== null) {\n yield toArrayBuffer(data);\n // eslint-disable-next-line no-continue\n continue;\n }\n if (stream._readableState?.ended) {\n return;\n }\n await onceReadable(stream);\n }\n\nasync function onceReadable(stream: Readable): Promise {\n return new Promise((resolve) => {\n stream.once('readable', resolve);\n });\n}\n */\n","import type {ReadStream} from 'fs';\n\nimport {makeStringIterator} from './make-string-iterator';\nimport {makeArrayBufferIterator} from './make-array-buffer-iterator';\nimport {makeBlobIterator} from './make-blob-iterator';\nimport type {StreamIteratorOptions} from './make-stream-iterator';\nimport {makeStreamIterator} from './make-stream-iterator';\nimport {isBlob, isReadableStream, isResponse} from '../../javascript-utils/is-type';\n\n/**\n * @param [options.chunkSize]\n */\nexport type IteratorOptions = StreamIteratorOptions & {\n chunkSize?: number;\n};\n\n/**\n * Returns an iterator that breaks its input into chunks and yields them one-by-one.\n * @param data\n * @param options\n * @returns\n * This function can e.g. be used to enable data sources that can only be read atomically\n * (such as `Blob` and `File` via `FileReader`) to still be parsed in batches.\n */\nexport function makeIterator(\n data: ArrayBuffer | string | Blob | Response | ReadableStream | ReadStream,\n options?: IteratorOptions\n): AsyncIterable | Iterable {\n if (typeof data === 'string') {\n // Note: Converts string chunks to binary\n return makeStringIterator(data, options);\n }\n if (data instanceof ArrayBuffer) {\n return makeArrayBufferIterator(data, options);\n }\n if (isBlob(data)) {\n return makeBlobIterator(data as Blob, options);\n }\n if (isReadableStream(data)) {\n return makeStreamIterator(data as ReadableStream, options);\n }\n if (isResponse(data)) {\n const response = data as Response;\n return makeStreamIterator(response.body as ReadableStream, options);\n }\n throw new Error('makeIterator');\n}\n","// TODO - build/integrate proper MIME type parsing\n// https://mimesniff.spec.whatwg.org/\n\nconst DATA_URL_PATTERN = /^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/;\nconst MIME_TYPE_PATTERN = /^([-\\w.]+\\/[-\\w.+]+)/;\n\n/**\n * Remove extra data like `charset` from MIME types\n * @param mimeString\n * @returns A clean MIME type, or an empty string\n *\n * @todo - handle more advanced MIMETYpes, multiple types\n * @todo - extract charset etc\n */\nexport function parseMIMEType(mimeString: string): string {\n // If resource is a data url, extract any embedded mime type\n const matches = MIME_TYPE_PATTERN.exec(mimeString);\n if (matches) {\n return matches[1];\n }\n return mimeString;\n}\n\n/**\n * Extract MIME type from data URL\n *\n * @param mimeString\n * @returns A clean MIME type, or an empty string\n *\n * @todo - handle more advanced MIMETYpes, multiple types\n * @todo - extract charset etc\n */\nexport function parseMIMETypeFromURL(url: string): string {\n // If resource is a data URL, extract any embedded mime type\n const matches = DATA_URL_PATTERN.exec(url);\n if (matches) {\n return matches[1];\n }\n return '';\n}\n","// loaders.gl, MIT license\n\nconst QUERY_STRING_PATTERN = /\\?.*/;\n\nexport function extractQueryString(url): string {\n const matches = url.match(QUERY_STRING_PATTERN);\n return matches && matches[0];\n}\n\nexport function stripQueryString(url): string {\n return url.replace(QUERY_STRING_PATTERN, '');\n}\n","// loaders.gl, MIT license\n\nimport {isResponse, isBlob} from '../../javascript-utils/is-type';\nimport {parseMIMEType, parseMIMETypeFromURL} from './mime-type-utils';\nimport {stripQueryString} from './url-utils';\n\n/**\n * A loadable resource. Includes:\n * `Response`, `Blob` (`File` is a subclass), string URLs and data URLs\n */\nexport type Resource = Response | Blob | string;\n\n/**\n * Returns the URL associated with this resource.\n * The returned value may include a query string and need further processing.\n * If it cannot determine url, the corresponding value will be an empty string\n *\n * @todo string parameters are assumed to be URLs\n */\nexport function getResourceUrl(resource: unknown): string {\n // If resource is a `Response`, it contains the information directly as a field\n if (isResponse(resource)) {\n const response = resource as Response;\n return response.url;\n }\n\n // If the resource is a Blob or a File (subclass of Blob)\n if (isBlob(resource)) {\n const blob = resource as Blob;\n // File objects have a \"name\" property. Blob objects don't have any\n // url (name) information\n return blob.name || '';\n }\n\n if (typeof resource === 'string') {\n return resource;\n }\n\n // Unknown\n return '';\n}\n\n/**\n * Returns the URL associated with this resource.\n * The returned value may include a query string and need further processing.\n * If it cannot determine url, the corresponding value will be an empty string\n *\n * @todo string parameters are assumed to be URLs\n */\nexport function getResourceMIMEType(resource: unknown): string {\n // If resource is a response, it contains the information directly\n if (isResponse(resource)) {\n const response = resource as Response;\n const contentTypeHeader = response.headers.get('content-type') || '';\n const noQueryUrl = stripQueryString(response.url);\n return parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(noQueryUrl);\n }\n\n // If the resource is a Blob or a File (subclass of Blob)\n if (isBlob(resource)) {\n const blob = resource as Blob;\n return blob.type || '';\n }\n\n if (typeof resource === 'string') {\n return parseMIMETypeFromURL(resource);\n }\n\n // Unknown\n return '';\n}\n\n/**\n * Returns (approximate) content length for a resource if it can be determined.\n * Returns -1 if content length cannot be determined.\n * @param resource\n\n * @note string parameters are NOT assumed to be URLs\n */\nexport function getResourceContentLength(resource: unknown): number {\n if (isResponse(resource)) {\n const response = resource as Response;\n return response.headers['content-length'] || -1;\n }\n if (isBlob(resource)) {\n const blob = resource as Blob;\n return blob.size;\n }\n if (typeof resource === 'string') {\n // TODO - handle data URL?\n return resource.length;\n }\n if (resource instanceof ArrayBuffer) {\n return resource.byteLength;\n }\n if (ArrayBuffer.isView(resource)) {\n return resource.byteLength;\n }\n return -1;\n}\n","import {isResponse} from '../../javascript-utils/is-type';\nimport {getResourceContentLength, getResourceUrl, getResourceMIMEType} from './resource-utils';\n\n/**\n * Returns a Response object\n * Adds content-length header when possible\n *\n * @param resource\n */\nexport async function makeResponse(resource: any): Promise {\n if (isResponse(resource)) {\n return resource;\n }\n\n // Add content-length header if possible\n const headers: {[header: string]: string} = {};\n\n const contentLength = getResourceContentLength(resource);\n if (contentLength >= 0) {\n headers['content-length'] = String(contentLength);\n }\n\n // `new Response(File)` does not preserve content-type and URL\n // so we add them here\n const url = getResourceUrl(resource);\n const type = getResourceMIMEType(resource);\n if (type) {\n headers['content-type'] = type;\n }\n\n // Add a custom header with initial bytes if available\n const initialDataUrl = await getInitialDataUrl(resource);\n if (initialDataUrl) {\n headers['x-first-bytes'] = initialDataUrl;\n }\n\n // TODO - is this the best way of handling strings?\n // Maybe package as data URL instead?\n if (typeof resource === 'string') {\n // Convert to ArrayBuffer to avoid Response treating it as a URL\n resource = new TextEncoder().encode(resource);\n }\n\n // Attempt to create a Response from the resource, adding headers and setting url\n const response = new Response(resource, {headers});\n // We can't control `Response.url` via constructor, use a property override to record URL.\n Object.defineProperty(response, 'url', {value: url});\n return response;\n}\n\n/**\n * Checks response status (async) and throws a helpful error message if status is not OK.\n * @param response\n */\nexport async function checkResponse(response: Response): Promise {\n if (!response.ok) {\n const message = await getResponseError(response);\n throw new Error(message);\n }\n}\n\n/**\n * Checks response status (sync) and throws a helpful error message if status is not OK.\n * @param response\n */\nexport function checkResponseSync(response: Response): void {\n if (!response.ok) {\n let message = `${response.status} ${response.statusText}`;\n message = message.length > 60 ? `${message.slice(0, 60)}...` : message;\n throw new Error(message);\n }\n}\n\n// HELPERS\n\nasync function getResponseError(response): Promise {\n let message = `Failed to fetch resource ${response.url} (${response.status}): `;\n try {\n const contentType = response.headers.get('Content-Type');\n let text = response.statusText;\n if (contentType.includes('application/json')) {\n text += ` ${await response.text()}`;\n }\n message += text;\n message = message.length > 60 ? `${message.slice(0, 60)}...` : message;\n } catch (error) {\n // eslint forbids return in a finally statement, so we just catch here\n }\n return message;\n}\n\nasync function getInitialDataUrl(resource): Promise {\n const INITIAL_DATA_LENGTH = 5;\n if (typeof resource === 'string') {\n return `data:,${resource.slice(0, INITIAL_DATA_LENGTH)}`;\n }\n if (resource instanceof Blob) {\n const blobSlice = resource.slice(0, 5);\n return await new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = (event) => resolve(event?.target?.result as string);\n reader.readAsDataURL(blobSlice);\n });\n }\n if (resource instanceof ArrayBuffer) {\n const slice = resource.slice(0, INITIAL_DATA_LENGTH);\n const base64 = arrayBufferToBase64(slice);\n return `data:base64,${base64}`;\n }\n return null;\n}\n\n// https://stackoverflow.com/questions/9267899/arraybuffer-to-base64-encoded-string\nfunction arrayBufferToBase64(buffer) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n","import type {\n DataType,\n SyncDataType,\n BatchableDataType,\n Loader,\n LoaderOptions\n} from '@loaders.gl/loader-utils';\nimport {concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\nimport {\n isResponse,\n isReadableStream,\n isAsyncIterable,\n isIterable,\n isIterator,\n isBlob,\n isBuffer\n} from '../../javascript-utils/is-type';\nimport {makeIterator} from '../../iterators/make-iterator/make-iterator';\nimport {checkResponse, makeResponse} from '../utils/response-utils';\n\nconst ERR_DATA = 'Cannot convert supplied data type';\n\n// eslint-disable-next-line complexity\nexport function getArrayBufferOrStringFromDataSync(\n data: SyncDataType,\n loader: Loader,\n options: LoaderOptions\n): ArrayBuffer | string {\n if (loader.text && typeof data === 'string') {\n return data;\n }\n\n if (isBuffer(data)) {\n // @ts-ignore\n data = data.buffer;\n }\n\n if (data instanceof ArrayBuffer) {\n const arrayBuffer = data;\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(arrayBuffer);\n }\n return arrayBuffer;\n }\n\n // We may need to handle offsets\n if (ArrayBuffer.isView(data)) {\n // TextDecoder is invoked on typed arrays and will handle offsets\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(data);\n }\n\n let arrayBuffer = data.buffer;\n\n // Since we are returning the underlying arrayBuffer, we must create a new copy\n // if this typed array / Buffer is a partial view into the ArryayBuffer\n // TODO - this is a potentially unnecessary copy\n const byteLength = data.byteLength || data.length;\n if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {\n // console.warn(`loaders.gl copying arraybuffer of length ${byteLength}`);\n arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n }\n return arrayBuffer;\n }\n\n throw new Error(ERR_DATA);\n}\n\n// Convert async iterator to a promise\nexport async function getArrayBufferOrStringFromData(\n data: DataType,\n loader: Loader,\n options: LoaderOptions\n): Promise {\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n if (typeof data === 'string' || isArrayBuffer) {\n return getArrayBufferOrStringFromDataSync(data as string | ArrayBuffer, loader, options);\n }\n\n // Blobs and files are FileReader compatible\n if (isBlob(data)) {\n data = await makeResponse(data);\n }\n\n if (isResponse(data)) {\n const response = data as Response;\n await checkResponse(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n\n if (isReadableStream(data)) {\n // @ts-expect-error TS2559 options type\n data = makeIterator(data as ReadableStream, options);\n }\n\n if (isIterable(data) || isAsyncIterable(data)) {\n // Assume arrayBuffer iterator - attempt to concatenate\n return concatenateArrayBuffersAsync(data as AsyncIterable);\n }\n\n throw new Error(ERR_DATA);\n}\n\nexport async function getAsyncIterableFromData(\n data: BatchableDataType,\n options: LoaderOptions\n): Promise | Iterable> {\n if (isIterator(data)) {\n return data as AsyncIterable;\n }\n\n if (isResponse(data)) {\n const response = data as Response;\n // Note Since this function is not async, we currently can't load error message, just status\n await checkResponse(response);\n // TODO - bug in polyfill, body can be a Promise under Node.js\n // eslint-disable-next-line @typescript-eslint/await-thenable\n const body = await response.body;\n // TODO - body can be null?\n return makeIterator(body as ReadableStream, options as any);\n }\n\n if (isBlob(data) || isReadableStream(data)) {\n return makeIterator(data as Blob | ReadableStream, options as any);\n }\n\n if (isAsyncIterable(data)) {\n return data[Symbol.asyncIterator]();\n }\n\n return getIterableFromData(data);\n}\n\nexport async function getReadableStream(data: BatchableDataType): Promise {\n if (isReadableStream(data)) {\n return data as ReadableStream;\n }\n if (isResponse(data)) {\n // @ts-ignore\n return data.body;\n }\n const response = await makeResponse(data);\n // @ts-ignore\n return response.body;\n}\n\n// HELPERS\n\nfunction getIterableFromData(data) {\n // generate an iterator that emits a single chunk\n if (ArrayBuffer.isView(data)) {\n return (function* oneChunk() {\n yield data.buffer;\n })();\n }\n\n if (data instanceof ArrayBuffer) {\n return (function* oneChunk() {\n yield data;\n })();\n }\n\n if (isIterator(data)) {\n return data;\n }\n\n if (isIterable(data)) {\n return data[Symbol.iterator]();\n }\n\n throw new Error(ERR_DATA);\n}\n","// Simple file alias mechanisms for tests.\n\nlet pathPrefix = '';\nconst fileAliases: {[aliasPath: string]: string} = {};\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix: string): void {\n pathPrefix = prefix;\n}\n\n/*\n * Get the relative path prefix\n */\nexport function getPathPrefix(): string {\n return pathPrefix;\n}\n\n/**\n *\n * @param aliases\n *\n * Note: addAliases are an experimental export, they are only for testing of loaders.gl loaders\n * not intended as a generic aliasing mechanism\n */\nexport function addAliases(aliases: {[aliasPath: string]: string}): void {\n Object.assign(fileAliases, aliases);\n}\n\n/**\n * Resolves aliases and adds path-prefix to paths\n */\nexport function resolvePath(filename: string): string {\n for (const alias in fileAliases) {\n if (filename.startsWith(alias)) {\n const replacement = fileAliases[alias];\n filename = filename.replace(alias, replacement);\n }\n }\n if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n filename = `${pathPrefix}${filename}`;\n }\n return filename;\n}\n","import {resolvePath} from '@loaders.gl/loader-utils';\nimport {makeResponse} from '../utils/response-utils';\n// import {getErrorMessageFromResponse} from './fetch-error-message';\n\n/**\n * fetch compatible function\n * Reads file data from:\n * - http/http urls\n * - data urls\n * - File/Blob objects\n * Leverages `@loaders.gl/polyfills` for Node.js support\n * Respects pathPrefix and file aliases\n */\nexport async function fetchFile(\n url: string | Blob,\n options?: RequestInit & {fetch?: RequestInit | Function}\n): Promise {\n if (typeof url === 'string') {\n url = resolvePath(url);\n\n let fetchOptions: RequestInit = options as RequestInit;\n if (options?.fetch && typeof options?.fetch !== 'function') {\n fetchOptions = options.fetch;\n }\n\n return await fetch(url, fetchOptions);\n }\n\n return await makeResponse(url);\n}\n","// loaders.gl, MIT license\n\nimport type {LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isObject} from '../../javascript-utils/is-type';\nimport {fetchFile} from '../fetch/fetch-file';\nimport {getGlobalLoaderOptions} from './option-utils';\n\n/**\n * Gets the current fetch function from options and context\n * @param options\n * @param context\n */\nexport function getFetchFunction(\n options?: LoaderOptions,\n context?: Omit & Partial>\n) {\n const globalOptions = getGlobalLoaderOptions();\n\n const fetchOptions = options || globalOptions;\n\n // options.fetch can be a function\n if (typeof fetchOptions.fetch === 'function') {\n return fetchOptions.fetch;\n }\n\n // options.fetch can be an options object\n if (isObject(fetchOptions.fetch)) {\n return (url) => fetchFile(url, fetchOptions as RequestInit);\n }\n\n // else refer to context (from parent loader) if available\n if (context?.fetch) {\n return context?.fetch;\n }\n\n // else return the default fetch function\n return fetchFile;\n}\n","// Beginning of a minimal implementation of the Node.js path API, that doesn't pull in big polyfills.\n\nimport {getCWD} from './get-cwd';\n\n/**\n * Replacement for Node.js path.filename\n * @param url\n */\nexport function filename(url: string): string {\n const slashIndex = url ? url.lastIndexOf('/') : -1;\n return slashIndex >= 0 ? url.substr(slashIndex + 1) : '';\n}\n\n/**\n * Replacement for Node.js path.dirname\n * @param url\n */\nexport function dirname(url: string): string {\n const slashIndex = url ? url.lastIndexOf('/') : -1;\n return slashIndex >= 0 ? url.substr(0, slashIndex) : '';\n}\n\n/**\n * Replacement for Node.js path.join\n * @param parts\n */\nexport function join(...parts: string[]): string {\n const separator = '/';\n parts = parts.map((part, index) => {\n if (index) {\n part = part.replace(new RegExp(`^${separator}`), '');\n }\n if (index !== parts.length - 1) {\n part = part.replace(new RegExp(`${separator}$`), '');\n }\n return part;\n });\n return parts.join(separator);\n}\n\n/* eslint-disable no-continue */\n\n/**\n * https://nodejs.org/api/path.html#path_path_resolve_paths\n * @param paths A sequence of paths or path segments.\n * @return resolved path\n * Forked from BTOdell/path-resolve under MIT license\n * @see https://github.com/BTOdell/path-resolve/blob/master/LICENSE\n */\nexport function resolve(...components: string[]): string {\n const paths: string[] = [];\n for (let _i = 0; _i < components.length; _i++) {\n paths[_i] = components[_i];\n }\n let resolvedPath = '';\n let resolvedAbsolute = false;\n let cwd: string | undefined;\n for (let i = paths.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n let path: string | undefined;\n if (i >= 0) {\n path = paths[i];\n } else {\n if (cwd === undefined) {\n cwd = getCWD();\n }\n path = cwd;\n }\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charCodeAt(0) === SLASH;\n }\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n // Normalize the path (removes leading slash)\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n if (resolvedAbsolute) {\n return `/${resolvedPath}`;\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n }\n return '.';\n}\n\nconst SLASH = 47;\nconst DOT = 46;\n\n/**\n * Resolves . and .. elements in a path with directory names\n * Forked from BTOdell/path-resolve under MIT license\n * @see https://github.com/BTOdell/path-resolve/blob/master/LICENSE\n */\n/* eslint-disable max-depth */\n// eslint-disable-next-line complexity, max-statements\nfunction normalizeStringPosix(path: string, allowAboveRoot: boolean): string {\n let res = '';\n let lastSlash = -1;\n let dots = 0;\n let code: number | undefined;\n let isAboveRoot = false;\n\n for (let i = 0; i <= path.length; ++i) {\n if (i < path.length) {\n code = path.charCodeAt(i);\n } else if (code === SLASH) {\n break;\n } else {\n code = SLASH;\n }\n if (code === SLASH) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (\n res.length < 2 ||\n !isAboveRoot ||\n res.charCodeAt(res.length - 1) !== DOT ||\n res.charCodeAt(res.length - 2) !== DOT\n ) {\n if (res.length > 2) {\n const start = res.length - 1;\n let j = start;\n for (; j >= 0; --j) {\n if (res.charCodeAt(j) === SLASH) {\n break;\n }\n }\n if (j !== start) {\n res = j === -1 ? '' : res.slice(0, j);\n lastSlash = i;\n dots = 0;\n isAboveRoot = false;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSlash = i;\n dots = 0;\n isAboveRoot = false;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) {\n res += '/..';\n } else {\n res = '..';\n }\n isAboveRoot = true;\n }\n } else {\n const slice = path.slice(lastSlash + 1, i);\n if (res.length > 0) {\n res += `/${slice}`;\n } else {\n res = slice;\n }\n isAboveRoot = false;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === DOT && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n","import type {Loader, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport {getFetchFunction} from './get-fetch-function';\nimport {extractQueryString, stripQueryString} from '../utils/url-utils';\nimport {path} from '@loaders.gl/loader-utils';\n\n/**\n * \"sub\" loaders invoked by other loaders get a \"context\" injected on `this`\n * The context will inject core methods like `parse` and contain information\n * about loaders and options passed in to the top-level `parse` call.\n *\n * @param context\n * @param options\n * @param previousContext\n */\nexport function getLoaderContext(\n context: Omit & Partial>,\n options: LoaderOptions,\n parentContext: LoaderContext | null\n): LoaderContext {\n // For recursive calls, we already have a context\n // TODO - add any additional loaders to context?\n if (parentContext) {\n return parentContext;\n }\n\n const newContext: LoaderContext = {\n fetch: getFetchFunction(options, context),\n ...context\n };\n\n // Parse URLs so that subloaders can easily generate correct strings\n if (newContext.url) {\n const baseUrl = stripQueryString(newContext.url);\n newContext.baseUrl = baseUrl;\n newContext.queryString = extractQueryString(newContext.url);\n newContext.filename = path.filename(baseUrl);\n newContext.baseUrl = path.dirname(baseUrl);\n }\n\n // Recursive loading does not use single loader\n if (!Array.isArray(newContext.loaders)) {\n newContext.loaders = null;\n }\n\n return newContext;\n}\n\n// eslint-disable-next-line complexity\nexport function getLoadersFromContext(\n loaders: Loader[] | Loader | undefined,\n context?: LoaderContext\n) {\n // A single non-array loader is force selected, but only on top-level (context === null)\n if (!context && loaders && !Array.isArray(loaders)) {\n return loaders;\n }\n\n // Create a merged list\n let candidateLoaders;\n if (loaders) {\n candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n }\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n }\n // If no loaders, return null to look in globally registered loaders\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n","// loaders.gl, MIT license\nimport {Log} from '@probe.gl/log';\n\nexport const log = new Log({id: 'loaders.gl'});\n","import {Loader} from '@loaders.gl/loader-utils';\nimport {normalizeLoader} from '../loader-utils/normalize-loader';\nimport {getGlobalLoaderState} from '../loader-utils/option-utils';\n\n// Store global registered loaders on the global object to increase chances of cross loaders-version interoperability\n// This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\nconst getGlobalLoaderRegistry = () => {\n const state = getGlobalLoaderState();\n state.loaderRegistry = state.loaderRegistry || [];\n return state.loaderRegistry;\n};\n\n/** Register a list of global loaders */\nexport function registerLoaders(loaders: Loader[] | Loader) {\n const loaderRegistry = getGlobalLoaderRegistry();\n\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n for (const loader of loaders) {\n const normalizedLoader = normalizeLoader(loader);\n if (!loaderRegistry.find((registeredLoader) => normalizedLoader === registeredLoader)) {\n // add to the beginning of the loaderRegistry, so the last registeredLoader get picked\n loaderRegistry.unshift(normalizedLoader);\n }\n }\n}\n\nexport function getRegisteredLoaders(): Loader[] {\n return getGlobalLoaderRegistry();\n}\n\n/** @deprecated For testing only */\nexport function _unregisterLoaders() {\n const state = getGlobalLoaderState();\n state.loaderRegistry = [];\n}\n","import type {LoaderContext, LoaderOptions, Loader} from '@loaders.gl/loader-utils';\nimport {compareArrayBuffers, path} from '@loaders.gl/loader-utils';\nimport {normalizeLoader} from '../loader-utils/normalize-loader';\nimport {log} from '../utils/log';\nimport {getResourceUrl, getResourceMIMEType} from '../utils/resource-utils';\nimport {getRegisteredLoaders} from './register-loaders';\nimport {isBlob} from '../../javascript-utils/is-type';\nimport {stripQueryString} from '../utils/url-utils';\n\nconst EXT_PATTERN = /\\.([^.]+)$/;\n\n// TODO - Need a variant that peeks at streams for parseInBatches\n// TODO - Detect multiple matching loaders? Use heuristics to grade matches?\n// TODO - Allow apps to pass context to disambiguate between multiple matches (e.g. multiple .json formats)?\n\n/**\n * Find a loader that matches file extension and/or initial file content\n * Search the loaders array argument for a loader that matches url extension or initial data\n * Returns: a normalized loader\n * @param data data to assist\n * @param loaders\n * @param options\n * @param context used internally, applications should not provide this parameter\n */\nexport async function selectLoader(\n data: Response | Blob | ArrayBuffer | string,\n loaders: Loader[] | Loader = [],\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise {\n if (!validHTTPResponse(data)) {\n return null;\n }\n\n // First make a sync attempt, disabling exceptions\n let loader = selectLoaderSync(data, loaders, {...options, nothrow: true}, context);\n if (loader) {\n return loader;\n }\n\n // For Blobs and Files, try to asynchronously read a small initial slice and test again with that\n // to see if we can detect by initial content\n if (isBlob(data)) {\n data = await (data as Blob).slice(0, 10).arrayBuffer();\n loader = selectLoaderSync(data, loaders, options, context);\n }\n\n // no loader available\n if (!loader && !options?.nothrow) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n\n return loader;\n}\n\n/**\n * Find a loader that matches file extension and/or initial file content\n * Search the loaders array argument for a loader that matches url extension or initial data\n * Returns: a normalized loader\n * @param data data to assist\n * @param loaders\n * @param options\n * @param context used internally, applications should not provide this parameter\n */\nexport function selectLoaderSync(\n data: Response | Blob | ArrayBuffer | string,\n loaders: Loader[] | Loader = [],\n options?: LoaderOptions,\n context?: LoaderContext\n): Loader | null {\n if (!validHTTPResponse(data)) {\n return null;\n }\n\n // eslint-disable-next-line complexity\n // if only a single loader was provided (not as array), force its use\n // TODO - Should this behavior be kept and documented?\n if (loaders && !Array.isArray(loaders)) {\n // TODO - remove support for legacy loaders\n return normalizeLoader(loaders);\n }\n\n // Build list of candidate loaders that will be searched in order for a match\n let candidateLoaders: Loader[] = [];\n // First search supplied loaders\n if (loaders) {\n candidateLoaders = candidateLoaders.concat(loaders);\n }\n // Then fall back to registered loaders\n if (!options?.ignoreRegisteredLoaders) {\n candidateLoaders.push(...getRegisteredLoaders());\n }\n\n // TODO - remove support for legacy loaders\n normalizeLoaders(candidateLoaders);\n\n const loader = selectLoaderInternal(data, candidateLoaders, options, context);\n\n // no loader available\n if (!loader && !options?.nothrow) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n\n return loader;\n}\n\n/** Implements loaders selection logic */\n// eslint-disable-next-line complexity\nfunction selectLoaderInternal(\n data: Response | Blob | ArrayBuffer | string,\n loaders: Loader[],\n options?: LoaderOptions,\n context?: LoaderContext\n) {\n const url = getResourceUrl(data);\n const type = getResourceMIMEType(data);\n\n const testUrl = stripQueryString(url) || context?.url;\n\n let loader: Loader | null = null;\n let reason: string = '';\n\n // if options.mimeType is supplied, it takes precedence\n if (options?.mimeType) {\n loader = findLoaderByMIMEType(loaders, options?.mimeType);\n reason = `match forced by supplied MIME type ${options?.mimeType}`;\n }\n\n // Look up loader by url\n loader = loader || findLoaderByUrl(loaders, testUrl);\n reason = reason || (loader ? `matched url ${testUrl}` : '');\n\n // Look up loader by mime type\n loader = loader || findLoaderByMIMEType(loaders, type);\n reason = reason || (loader ? `matched MIME type ${type}` : '');\n\n // Look for loader via initial bytes (Note: not always accessible (e.g. Response, stream, async iterator)\n loader = loader || findLoaderByInitialBytes(loaders, data);\n reason = reason || (loader ? `matched initial data ${getFirstCharacters(data)}` : '');\n\n // Look up loader by fallback mime type\n loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);\n reason = reason || (loader ? `matched fallback MIME type ${type}` : '');\n\n if (reason) {\n log.log(1, `selectLoader selected ${loader?.name}: ${reason}.`);\n }\n\n return loader;\n}\n\n/** Check HTTP Response */\nfunction validHTTPResponse(data: any): boolean {\n // HANDLE HTTP status\n if (data instanceof Response) {\n // 204 - NO CONTENT. This handles cases where e.g. a tile server responds with 204 for a missing tile\n if (data.status === 204) {\n return false;\n }\n }\n return true;\n}\n\n/** Generate a helpful message to help explain why loader selection failed. */\nfunction getNoValidLoaderMessage(data): string {\n const url = getResourceUrl(data);\n const type = getResourceMIMEType(data);\n\n let message = 'No valid loader found (';\n message += url ? `${path.filename(url)}, ` : 'no url provided, ';\n message += `MIME type: ${type ? `\"${type}\"` : 'not provided'}, `;\n // First characters are only accessible when called on data (string or arrayBuffer).\n const firstCharacters: string = data ? getFirstCharacters(data) : '';\n message += firstCharacters ? ` first bytes: \"${firstCharacters}\"` : 'first bytes: not available';\n message += ')';\n return message;\n}\n\nfunction normalizeLoaders(loaders: Loader[]): void {\n for (const loader of loaders) {\n normalizeLoader(loader);\n }\n}\n\n// TODO - Would be nice to support http://example.com/file.glb?parameter=1\n// E.g: x = new URL('http://example.com/file.glb?load=1'; x.pathname\nfunction findLoaderByUrl(loaders: Loader[], url?: string): Loader | null {\n // Get extension\n const match = url && EXT_PATTERN.exec(url);\n const extension = match && match[1];\n return extension ? findLoaderByExtension(loaders, extension) : null;\n}\n\nfunction findLoaderByExtension(loaders: Loader[], extension: string): Loader | null {\n extension = extension.toLowerCase();\n\n for (const loader of loaders) {\n for (const loaderExtension of loader.extensions) {\n if (loaderExtension.toLowerCase() === extension) {\n return loader;\n }\n }\n }\n return null;\n}\n\nfunction findLoaderByMIMEType(loaders, mimeType) {\n for (const loader of loaders) {\n if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {\n return loader;\n }\n\n // Support referring to loaders using the \"unregistered tree\"\n // https://en.wikipedia.org/wiki/Media_type#Unregistered_tree\n if (mimeType === `application/x.${loader.id}`) {\n return loader;\n }\n }\n return null;\n}\n\nfunction findLoaderByInitialBytes(loaders, data) {\n if (!data) {\n return null;\n }\n\n for (const loader of loaders) {\n if (typeof data === 'string') {\n if (testDataAgainstText(data, loader)) {\n return loader;\n }\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n if (testDataAgainstBinary(data.buffer, data.byteOffset, loader)) {\n return loader;\n }\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n if (testDataAgainstBinary(data, byteOffset, loader)) {\n return loader;\n }\n }\n // TODO Handle streaming case (requires creating a new AsyncIterator)\n }\n return null;\n}\n\nfunction testDataAgainstText(data, loader) {\n if (loader.testText) {\n return loader.testText(data);\n }\n\n const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n return tests.some((test) => data.startsWith(test));\n}\n\nfunction testDataAgainstBinary(data, byteOffset, loader) {\n const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n return tests.some((test) => testBinary(data, byteOffset, loader, test));\n}\n\nfunction testBinary(data, byteOffset, loader, test) {\n if (test instanceof ArrayBuffer) {\n return compareArrayBuffers(test, data, test.byteLength);\n }\n switch (typeof test) {\n case 'function':\n return test(data, loader);\n\n case 'string':\n // Magic bytes check: If `test` is a string, check if binary data starts with that strings\n const magic = getMagicString(data, byteOffset, test.length);\n return test === magic;\n\n default:\n return false;\n }\n}\n\nfunction getFirstCharacters(data, length: number = 5) {\n if (typeof data === 'string') {\n return data.slice(0, length);\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n return getMagicString(data.buffer, data.byteOffset, length);\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n return getMagicString(data, byteOffset, length);\n }\n return '';\n}\n\nfunction getMagicString(arrayBuffer, byteOffset, length) {\n if (arrayBuffer.byteLength < byteOffset + length) {\n return '';\n }\n const dataView = new DataView(arrayBuffer);\n let magic = '';\n for (let i = 0; i < length; i++) {\n magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n }\n return magic;\n}\n","import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';\nimport {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {isResponse} from '../../javascript-utils/is-type';\nimport {normalizeOptions} from '../loader-utils/option-utils';\nimport {getArrayBufferOrStringFromData} from '../loader-utils/get-data';\nimport {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';\nimport {getResourceUrl} from '../utils/resource-utils';\nimport {selectLoader} from './select-loader';\n\n/**\n * Parses `data` using a specified loader\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\nexport async function parse(\n data: DataType | Promise,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise {\n assert(!context || typeof context === 'object'); // parse no longer accepts final url\n\n // Signature: parse(data, options, context | url)\n // Uses registered loaders\n if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders as LoaderOptions;\n loaders = undefined;\n }\n\n data = await data; // Resolve any promise\n options = options || {};\n\n // Extract a url for auto detection\n const url = getResourceUrl(data);\n\n // Chooses a loader (and normalizes it)\n // Also use any loaders in the context, new loaders take priority\n const typedLoaders = loaders as Loader | Loader[] | undefined;\n const candidateLoaders = getLoadersFromContext(typedLoaders, context);\n // todo hacky type cast\n const loader = await selectLoader(data as ArrayBuffer, candidateLoaders, options);\n // Note: if no loader was found, if so just return null\n if (!loader) {\n return null;\n }\n\n // Normalize options\n options = normalizeOptions(options, loader, candidateLoaders, url);\n\n // Get a context (if already present, will be unchanged)\n context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context || null);\n\n return await parseWithLoader(loader, data, options, context);\n}\n\n// TODO: support progress and abort\n// TODO - should accept loader.parseAsyncIterator and concatenate.\nasync function parseWithLoader(loader, data, options, context) {\n validateWorkerVersion(loader);\n\n if (isResponse(data)) {\n // Serialize to support passing the response to web worker\n const response = data as Response;\n const {ok, redirected, status, statusText, type, url} = response;\n const headers = Object.fromEntries(response.headers.entries());\n context.response = {headers, ok, redirected, status, statusText, type, url};\n }\n\n data = await getArrayBufferOrStringFromData(data, loader, options);\n\n // First check for synchronous text parser, wrap results in promises\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n\n // If we have a workerUrl and the loader can parse the given options efficiently in a worker\n if (canParseWithWorker(loader, options)) {\n return await parseWithWorker(loader, data, options, context, parse);\n }\n\n // Check for asynchronous parser\n if (loader.parseText && typeof data === 'string') {\n return await loader.parseText(data, options, context, loader);\n }\n\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n\n // This should not happen, all sync loaders should also offer `parse` function\n assert(!loader.parseSync);\n\n // TBD - If asynchronous parser not available, return null\n throw new Error(`${loader.id} loader - no parser found and worker is disabled`);\n}\n","import type {WorkerObject} from '../../types';\nimport {assert} from '../env-utils/assert';\nimport {VERSION} from '../env-utils/version';\n\n/**\n * Check if worker is compatible with this library version\n * @param worker\n * @param libVersion\n * @returns `true` if the two versions are compatible\n */\nexport function validateWorkerVersion(\n worker: WorkerObject,\n coreVersion: string = VERSION\n): boolean {\n assert(worker, 'no worker provided');\n\n const workerVersion = worker.version;\n if (!coreVersion || !workerVersion) {\n return false;\n }\n\n // TODO enable when fix the __version__ injection\n // const coreVersions = parseVersion(coreVersion);\n // const workerVersions = parseVersion(workerVersion);\n // assert(\n // coreVersion.major === workerVersion.major && coreVersion.minor <= workerVersion.minor,\n // `worker: ${worker.name} is not compatible. ${coreVersion.major}.${\n // coreVersion.minor\n // }+ is required.`\n // );\n\n return true;\n}\n\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction parseVersion(version) {\n const parts = version.split('.').map(Number);\n return {major: parts[0], minor: parts[1]};\n}\n","import type {\n BinaryGeometry,\n BinaryFeatures,\n BinaryGeometryType,\n BinaryPointFeatures,\n BinaryLineFeatures,\n BinaryPolygonFeatures,\n BinaryAttribute\n} from '@loaders.gl/schema';\nimport type {Feature, Geometry, Position, GeoJsonProperties} from '@loaders.gl/schema';\nimport type {\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon\n} from '@loaders.gl/schema';\n\n// Note:L We do not handle GeometryCollection, define a limited Geometry type that always has coordinates.\n// type FeatureGeometry = Point | MultiPoint | LineString | MultiLineString | Polygon | MultiPolygon;\n\ntype BinaryToGeoJsonOptions = {\n type?: BinaryGeometryType;\n globalFeatureId?: number;\n};\n\n/**\n * Convert binary geometry representation to GeoJSON\n * @param data geometry data in binary representation\n * @param options\n * @param options.type Input data type: Point, LineString, or Polygon\n * @param options.featureId Global feature id. If specified, only a single feature is extracted\n * @return GeoJSON objects\n */\nexport function binaryToGeojson(\n data: BinaryFeatures,\n options?: BinaryToGeoJsonOptions\n): Feature[] | Feature {\n const globalFeatureId = options?.globalFeatureId;\n if (globalFeatureId !== undefined) {\n return getSingleFeature(data, globalFeatureId);\n }\n return parseFeatures(data, options?.type);\n}\n\n/** @deprecated use `binaryToGeojson` or `binaryToGeometry` instead */\nexport function binaryToGeoJson(\n data: BinaryGeometry | BinaryFeatures,\n type?: BinaryGeometryType,\n format: 'feature' | 'geometry' = 'feature'\n): Geometry | Feature[] {\n switch (format) {\n case 'feature':\n return parseFeatures(data as BinaryFeatures, type);\n case 'geometry':\n return binaryToGeometry(data as BinaryGeometry);\n default:\n throw new Error(format);\n }\n}\n\n/**\n * Return a single feature from a binary geometry representation as GeoJSON\n * @param data geometry data in binary representation\n * @return GeoJSON feature\n */\nfunction getSingleFeature(data: BinaryFeatures, globalFeatureId: number): Feature {\n const dataArray = normalizeInput(data);\n for (const data of dataArray) {\n let lastIndex = 0;\n let lastValue = data.featureIds.value[0];\n\n // Scan through data until we find matching feature\n for (let i = 0; i < data.featureIds.value.length; i++) {\n const currValue = data.featureIds.value[i];\n if (currValue === lastValue) {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (globalFeatureId === data.globalFeatureIds.value[lastIndex]) {\n return parseFeature(data, lastIndex, i);\n }\n lastIndex = i;\n lastValue = currValue;\n }\n\n if (globalFeatureId === data.globalFeatureIds.value[lastIndex]) {\n return parseFeature(data, lastIndex, data.featureIds.value.length);\n }\n }\n\n throw new Error(`featureId:${globalFeatureId} not found`);\n}\n\nfunction parseFeatures(data: BinaryFeatures, type?: BinaryGeometryType): Feature[] {\n const dataArray = normalizeInput(data, type);\n return parseFeatureCollection(dataArray);\n}\n\n/** Parse input binary data and return a valid GeoJSON geometry object */\nexport function binaryToGeometry(\n data: BinaryGeometry,\n startIndex?: number,\n endIndex?: number\n): Geometry {\n switch (data.type) {\n case 'Point':\n return pointToGeoJson(data, startIndex, endIndex);\n case 'LineString':\n return lineStringToGeoJson(data, startIndex, endIndex);\n case 'Polygon':\n return polygonToGeoJson(data, startIndex, endIndex);\n default:\n const unexpectedInput: never = data;\n throw new Error(`Unsupported geometry type: ${(unexpectedInput as any)?.type}`);\n }\n}\n\ntype BinaryFeature = BinaryPointFeatures | BinaryLineFeatures | BinaryPolygonFeatures;\ntype BinaryFeaturesArray = BinaryFeature[];\n\n// Normalize features\n// Return an array of data objects, each of which have a type key\nfunction normalizeInput(data: BinaryFeatures, type?: BinaryGeometryType): BinaryFeaturesArray {\n const isHeterogeneousType = Boolean(data.points || data.lines || data.polygons);\n\n if (!isHeterogeneousType) {\n // @ts-expect-error This is a legacy check which allowed `data` to be an instance of the values\n // here. Aka the new data.points, data.lines, or data.polygons.\n data.type = type || parseType(data);\n return [data] as BinaryFeaturesArray;\n }\n\n const features: BinaryFeaturesArray = [];\n if (data.points) {\n data.points.type = 'Point';\n features.push(data.points);\n }\n if (data.lines) {\n data.lines.type = 'LineString';\n features.push(data.lines);\n }\n if (data.polygons) {\n data.polygons.type = 'Polygon';\n features.push(data.polygons);\n }\n\n return features;\n}\n\n/** Parse input binary data and return an array of GeoJSON Features */\nfunction parseFeatureCollection(dataArray): Feature[] {\n const features: Feature[] = [];\n for (const data of dataArray) {\n if (data.featureIds.value.length === 0) {\n // eslint-disable-next-line no-continue\n continue;\n }\n let lastIndex = 0;\n let lastValue = data.featureIds.value[0];\n\n // Need to deduce start, end indices of each feature\n for (let i = 0; i < data.featureIds.value.length; i++) {\n const currValue = data.featureIds.value[i];\n if (currValue === lastValue) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n features.push(parseFeature(data, lastIndex, i));\n lastIndex = i;\n lastValue = currValue;\n }\n\n // Last feature\n features.push(parseFeature(data, lastIndex, data.featureIds.value.length));\n }\n return features;\n}\n\n/** Parse input binary data and return a single GeoJSON Feature */\nfunction parseFeature(data, startIndex?: number, endIndex?: number): Feature {\n const geometry = binaryToGeometry(data, startIndex, endIndex);\n const properties = parseProperties(data, startIndex, endIndex);\n const fields = parseFields(data, startIndex, endIndex);\n return {type: 'Feature', geometry, properties, ...fields};\n}\n\n/** Parse input binary data and return an object of fields */\nfunction parseFields(data, startIndex: number = 0, endIndex?: number): GeoJsonProperties {\n return data.fields && data.fields[data.featureIds.value[startIndex]];\n}\n\n/** Parse input binary data and return an object of properties */\nfunction parseProperties(data, startIndex: number = 0, endIndex?: number): GeoJsonProperties {\n const properties = Object.assign({}, data.properties[data.featureIds.value[startIndex]]);\n for (const key in data.numericProps) {\n properties[key] = data.numericProps[key].value[startIndex];\n }\n return properties;\n}\n\n/** Parse binary data of type Polygon */\nfunction polygonToGeoJson(\n data,\n startIndex: number = -Infinity,\n endIndex: number = Infinity\n): Polygon | MultiPolygon {\n const {positions} = data;\n const polygonIndices = data.polygonIndices.value.filter((x) => x >= startIndex && x <= endIndex);\n const primitivePolygonIndices = data.primitivePolygonIndices.value.filter(\n (x) => x >= startIndex && x <= endIndex\n );\n const multi = polygonIndices.length > 2;\n\n // Polygon\n if (!multi) {\n const coordinates: Position[][] = [];\n for (let i = 0; i < primitivePolygonIndices.length - 1; i++) {\n const startRingIndex = primitivePolygonIndices[i];\n const endRingIndex = primitivePolygonIndices[i + 1];\n const ringCoordinates = ringToGeoJson(positions, startRingIndex, endRingIndex);\n coordinates.push(ringCoordinates);\n }\n\n return {type: 'Polygon', coordinates};\n }\n\n // MultiPolygon\n const coordinates: Position[][][] = [];\n for (let i = 0; i < polygonIndices.length - 1; i++) {\n const startPolygonIndex = polygonIndices[i];\n const endPolygonIndex = polygonIndices[i + 1];\n const polygonCoordinates = polygonToGeoJson(\n data,\n startPolygonIndex,\n endPolygonIndex\n ).coordinates;\n coordinates.push(polygonCoordinates as Position[][]);\n }\n\n return {type: 'MultiPolygon', coordinates};\n}\n\n/** Parse binary data of type LineString */\nfunction lineStringToGeoJson(\n data,\n startIndex: number = -Infinity,\n endIndex: number = Infinity\n): LineString | MultiLineString {\n const {positions} = data;\n const pathIndices = data.pathIndices.value.filter((x) => x >= startIndex && x <= endIndex);\n const multi = pathIndices.length > 2;\n\n if (!multi) {\n const coordinates = ringToGeoJson(positions, pathIndices[0], pathIndices[1]);\n return {type: 'LineString', coordinates};\n }\n\n const coordinates: Position[][] = [];\n for (let i = 0; i < pathIndices.length - 1; i++) {\n const ringCoordinates = ringToGeoJson(positions, pathIndices[i], pathIndices[i + 1]);\n coordinates.push(ringCoordinates);\n }\n\n return {type: 'MultiLineString', coordinates};\n}\n\n/** Parse binary data of type Point */\nfunction pointToGeoJson(data, startIndex, endIndex): Point | MultiPoint {\n const {positions} = data;\n const coordinates = ringToGeoJson(positions, startIndex, endIndex);\n const multi = coordinates.length > 1;\n\n if (multi) {\n return {type: 'MultiPoint', coordinates};\n }\n\n return {type: 'Point', coordinates: coordinates[0]};\n}\n\n/**\n * Parse a linear ring of positions to a GeoJSON linear ring\n *\n * @param positions Positions TypedArray\n * @param startIndex Start index to include in ring\n * @param endIndex End index to include in ring\n * @returns GeoJSON ring\n */\nfunction ringToGeoJson(\n positions: BinaryAttribute,\n startIndex?: number,\n endIndex?: number\n): Position[] {\n startIndex = startIndex || 0;\n endIndex = endIndex || positions.value.length / positions.size;\n\n const ringCoordinates: Position[] = [];\n for (let j = startIndex; j < endIndex; j++) {\n const coord = Array();\n for (let k = j * positions.size; k < (j + 1) * positions.size; k++) {\n coord.push(Number(positions.value[k]));\n }\n ringCoordinates.push(coord);\n }\n return ringCoordinates;\n}\n\n// Deduce geometry type of data object\nfunction parseType(data) {\n if (data.pathIndices) {\n return 'LineString';\n }\n\n if (data.polygonIndices) {\n return 'Polygon';\n }\n\n return 'Point';\n}\n","/* eslint-disable max-statements, max-depth, complexity, no-unused-expressions */\n\nimport {equals} from '@math.gl/core';\nimport type {NumericArray} from '@math.gl/core';\n\nexport const WINDING = {\n CLOCKWISE: 1,\n COUNTER_CLOCKWISE: -1\n} as const;\n\n/** Polygon representation where each point is represented as a separate array of positions. */\ntype PointsArray = NumericArray[];\n\n/** Segment visitor callback type for polygons defined with flat arrays, */\ntype SegmentVisitorFlat = (\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n i1: number,\n i2: number\n) => void;\n\n/** Segment visitor callback type for polygons defined with array of points. */\nexport type SegmentVisitorPoints = (\n p1: NumericArray,\n p2: NumericArray,\n i1: number,\n i2: number\n) => void;\n\n/** Parameters of a polygon. */\ntype PolygonParams = {\n start?: number; // Start index of the polygon in the array of positions. Defaults to 0.\n end?: number; // End index of the polygon in the array of positions. Defaults to number of positions.\n size?: number; // Size of a point, 2 (XZ) or 3 (XYZ). Defaults to 2. Affects only polygons stored in flat arrays.\n isClosed?: boolean; // Indicates that the first point of the polygon is equal to the last point, and additional checks should be ommited.\n};\n\n/**\n * Checks winding direction of the polygon and reverses the polygon in case of opposite winding direction.\n * Note: points are modified in-place.\n * @param points An array that represents points of the polygon.\n * @param direction Requested winding direction. 1 is for clockwise, -1 for counterclockwise winding direction.\n * @param options Parameters of the polygon.\n * @return Returns true if the winding direction was changed.\n */\nexport function modifyPolygonWindingDirection(\n points: NumericArray,\n direction: number,\n options: PolygonParams = {}\n): boolean {\n const windingDirection = getPolygonWindingDirection(points, options);\n if (windingDirection !== direction) {\n reversePolygon(points, options);\n return true;\n }\n return false;\n}\n\n/**\n * Returns winding direction of the polygon.\n * @param points An array that represents points of the polygon.\n * @param options Parameters of the polygon.\n * @returns Winding direction of the polygon.\n */\nexport function getPolygonWindingDirection(\n points: NumericArray,\n options: PolygonParams = {}\n): number {\n return Math.sign(getPolygonSignedArea(points, options));\n}\n\n/**\n * Returns signed area of the polygon.\n * @param points An array that represents points of the polygon.\n * @param options Parameters of the polygon.\n * @returns Signed area of the polygon.\n * https://en.wikipedia.org/wiki/Shoelace_formula\n */\nexport function getPolygonSignedArea(points: NumericArray, options: PolygonParams = {}): number {\n const {start = 0, end = points.length} = options;\n const dim = options.size || 2;\n let area = 0;\n for (let i = start, j = end - dim; i < end; i += dim) {\n area += (points[i] - points[j]) * (points[i + 1] + points[j + 1]);\n j = i;\n }\n return area / 2;\n}\n\n/**\n * Calls the visitor callback for each segment in the polygon.\n * @param points An array that represents points of the polygon\n * @param visitor A callback to call for each segment.\n * @param options Parameters of the polygon.\n */\nexport function forEachSegmentInPolygon(\n points: NumericArray,\n visitor: SegmentVisitorFlat,\n options: PolygonParams = {}\n): void {\n const {start = 0, end = points.length, size = 2, isClosed} = options;\n\n const numPoints = (end - start) / size;\n for (let i = 0; i < numPoints - 1; ++i) {\n visitor(\n points[start + i * size],\n points[start + i * size + 1],\n points[start + (i + 1) * size],\n points[start + (i + 1) * size + 1],\n i,\n i + 1\n );\n }\n\n const endPointIndex = start + (numPoints - 1) * size;\n const isClosedEx =\n isClosed ||\n (equals(points[start], points[endPointIndex]) &&\n equals(points[start + 1], points[endPointIndex + 1]));\n\n if (!isClosedEx) {\n visitor(\n points[endPointIndex],\n points[endPointIndex + 1],\n points[start],\n points[start + 1],\n numPoints - 1,\n 0\n );\n }\n}\n\nfunction reversePolygon(\n points: NumericArray,\n options: {start?: number; end?: number; size?: number}\n): void {\n const {start = 0, end = points.length, size = 2} = options;\n\n const numPoints = (end - start) / size;\n const numSwaps = Math.floor(numPoints / 2);\n for (let i = 0; i < numSwaps; ++i) {\n const b1 = start + i * size;\n const b2 = start + (numPoints - 1 - i) * size;\n for (let j = 0; j < size; ++j) {\n const tmp = points[b1 + j];\n points[b1 + j] = points[b2 + j];\n points[b2 + j] = tmp;\n }\n }\n}\n\n/**\n * Checks winding direction of the polygon and reverses the polygon in case of opposite winding direction.\n * Note: points are modified in-place.\n * @param points Array of points that represent the polygon.\n * @param direction Requested winding direction. 1 is for clockwise, -1 for counterclockwise winding direction.\n * @param options Parameters of the polygon.\n * @return Returns true if the winding direction was changed.\n */\nexport function modifyPolygonWindingDirectionPoints(\n points: PointsArray,\n direction: number,\n options: PolygonParams = {}\n): boolean {\n const currentDirection = getPolygonWindingDirectionPoints(points, options);\n if (currentDirection !== direction) {\n points.reverse();\n return true;\n }\n return false;\n}\n\n/**\n * Returns winding direction of the polygon.\n * @param points Array of points that represent the polygon.\n * @param options Parameters of the polygon.\n * @returns Winding direction of the polygon.\n */\nexport function getPolygonWindingDirectionPoints(\n points: PointsArray,\n options: PolygonParams = {}\n): number {\n return Math.sign(getPolygonSignedAreaPoints(points, options));\n}\n\n/**\n * Returns signed area of the polygon.\n * @param points Array of points that represent the polygon.\n * @param options Parameters of the polygon.\n * @returns Signed area of the polygon.\n */\nexport function getPolygonSignedAreaPoints(\n points: PointsArray,\n options: PolygonParams = {}\n): number {\n // https://en.wikipedia.org/wiki/Shoelace_formula\n const {start = 0, end = points.length} = options;\n let area = 0;\n for (let i = start, j = end - 1; i < end; ++i) {\n area += (points[i][0] - points[j][0]) * (points[i][1] + points[j][1]);\n j = i;\n }\n return area / 2;\n}\n\n/**\n * Calls visitor callback for each segment in the polygon.\n * @param points Array of points that represent the polygon.\n * @param visitor A callback to call for each segment.\n * @param options Parameters of the polygon.\n */\nexport function forEachSegmentInPolygonPoints(\n points: PointsArray,\n visitor: SegmentVisitorPoints,\n options: PolygonParams = {}\n): void {\n const {start = 0, end = points.length, isClosed} = options;\n for (let i = start; i < end - 1; ++i) {\n visitor(points[i], points[i + 1], i, i + 1);\n }\n\n const isClosedEx = isClosed || equals(points[end - 1], points[0]);\n if (!isClosedEx) {\n visitor(points[end - 1], points[0], end - 1, 0);\n }\n}\n","/*\n Adapted from https://github.com/mapbox/earcut to allow passing in\n of outline and hole areas using the `areas` parameter. As the\n areas are calcuted as part of classifying the polygon rings\n we can pass them in again to avoid recomputation\n\n ISC License\n\n Copyright (c) 2016, Mapbox\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n\n */\n\n/* eslint-disable */\n\nimport {getPolygonSignedArea} from './polygon-utils';\n\n/**\n * Computes a triangulation of a polygon\n * @param positions a flat array of the vertex positions that define the polygon.\n * @param holeIndices an array of hole indices if any (e.g. [5, 8] for a 12-vertex input would mean one hole with vertices 5–7 and another with 8–11).\n * @param dim the number of elements in each vertex. Size `2` will interpret `positions` as `[x0, y0, x1, y1, ...]` and size `3` will interpret `positions` as `[x0, y0, z0, x1, y1, z1, ...]`. Default `2`.\n * @param areas areas of outer polygon and holes as computed by `getPolygonSignedArea()`. Can be optionally supplied to speed up triangulation\n * @returns array of indices into the `positions` array that describes the triangulation of the polygon\n * Adapted from https://github.com/mapbox/earcut\n */\nexport function earcut(\n positions: number[],\n holeIndices?: number[],\n dim: number = 2,\n areas?: number[]\n): number[] {\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : positions.length;\n let outerNode = linkedList(positions, 0, outerLen, dim, true, areas && areas[0]);\n const triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n let invSize;\n let maxX;\n let maxY;\n let minX;\n let minY;\n let x;\n let y;\n\n if (hasHoles) outerNode = eliminateHoles(positions, holeIndices, outerNode, dim, areas);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (positions.length > 80 * dim) {\n minX = maxX = positions[0];\n minY = maxY = positions[1];\n\n for (let i = dim; i < outerLen; i += dim) {\n x = positions[i];\n y = positions[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise, area) {\n let i;\n let last;\n if (area === undefined) {\n area = getPolygonSignedArea(data, {start, end, size: dim});\n }\n\n // Note that the signed area calculation in math.gl\n // has the opposite sign to that which was originally\n // present in earcut, thus the `< 0` is reversed\n if (clockwise === area < 0) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end?) {\n if (!start) return start;\n if (!end) end = start;\n\n let p = start;\n let again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass?) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n let stop = ear;\n let prev;\n let next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n const a = ear.prev;\n const b = ear;\n const c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n let p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0)\n return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n const a = ear.prev;\n const b = ear;\n const c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n const minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : b.x < c.x ? b.x : c.x;\n const minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : b.y < c.y ? b.y : c.y;\n const maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : b.x > c.x ? b.x : c.x;\n const maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : b.y > c.y ? b.y : c.y;\n\n // z-order range for the current triangle bbox;\n const minZ = zOrder(minTX, minTY, minX, minY, invSize);\n const maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n let p = ear.prevZ;\n let n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (\n p !== ear.prev &&\n p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0\n )\n return false;\n p = p.prevZ;\n\n if (\n n !== ear.prev &&\n n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0\n )\n return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (\n p !== ear.prev &&\n p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0\n )\n return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (\n n !== ear.prev &&\n n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0\n )\n return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n let p = start;\n do {\n const a = p.prev;\n const b = p.next.next;\n\n if (\n !equals(a, b) &&\n intersects(a, p, p.next, b) &&\n locallyInside(a, b) &&\n locallyInside(b, a)\n ) {\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n let a = start;\n do {\n let b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n let c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim, areas) {\n const queue = [];\n let i;\n let len;\n let start;\n let end;\n let list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false, areas && areas[i + 1]);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n const b = splitPolygon(outerNode, hole);\n\n // filter collinear points around the cuts\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n let p = outerNode;\n const hx = hole.x;\n const hy = hole.y;\n let qx = -Infinity;\n let m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const x = p.x + ((hy - p.y) * (p.next.x - p.x)) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n const stop = m;\n const mx = m.x;\n const my = m.y;\n let tanMin = Infinity;\n let tan;\n\n p = m;\n\n do {\n if (\n hx >= p.x &&\n p.x >= mx &&\n hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)\n ) {\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (\n locallyInside(p, hole) &&\n (tan < tanMin ||\n (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))\n ) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n let p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n let e;\n let i;\n let inSize = 1;\n let numMerges;\n let p;\n let pSize;\n let q;\n let qSize;\n let tail;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00ff00ff;\n x = (x | (x << 4)) & 0x0f0f0f0f;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00ff00ff;\n y = (y | (y << 4)) & 0x0f0f0f0f;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n let p = start;\n let leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (\n (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0\n );\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return (\n a.next.i !== b.i &&\n a.prev.i !== b.i &&\n !intersectsPolygon(a, b) && // dones't intersect other edges\n ((locallyInside(a, b) &&\n locallyInside(b, a) &&\n middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b))) || // does not create opposite-facing sectors\n (equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0))\n ); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n const o1 = sign(area(p1, q1, p2));\n const o2 = sign(area(p1, q1, q2));\n const o3 = sign(area(p2, q2, p1));\n const o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return (\n q.x <= Math.max(p.x, r.x) &&\n q.x >= Math.min(p.x, r.x) &&\n q.y <= Math.max(p.y, r.y) &&\n q.y >= Math.min(p.y, r.y)\n );\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n let p = a;\n do {\n if (\n p.i !== a.i &&\n p.next.i !== a.i &&\n p.i !== b.i &&\n p.next.i !== b.i &&\n intersects(p, p.next, a, b)\n )\n return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0\n ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0\n : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n let p = a;\n let inside = false;\n const px = (a.x + b.x) / 2;\n const py = (a.y + b.y) / 2;\n do {\n if (\n p.y > py !== p.next.y > py &&\n p.next.y !== p.y &&\n px < ((p.next.x - p.x) * (py - p.y)) / (p.next.y - p.y) + p.x\n )\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n const a2 = new Node(a.i, a.x, a.y);\n const b2 = new Node(b.i, b.x, b.y);\n const an = a.next;\n const bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n const p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n","/*\n Adapted from https://github.com/mapbox/lineclip to work with flat arrays\n and 3d positions\n\n ISC License\n\n Copyright (c) 2015, Mapbox\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n\n */\n\n/* eslint-disable max-statements, max-depth, complexity */\n\nimport {push, copy, getPointAtIndex} from './utils';\nimport type {NumericArray} from '@math.gl/core';\n\nexport type BoundingBox = [number, number, number, number];\n\n/**\n * Cohen-Sutherland line clipping algorithm, adapted to efficiently\n * handle polylines rather than just segments\n */\nexport function clipPolyline(\n positions: Readonly,\n bbox: BoundingBox,\n options?: {\n size?: number;\n startIndex?: number;\n endIndex?: number;\n }\n): number[][] {\n const {size = 2, startIndex = 0, endIndex = positions.length} = options || {};\n const numPoints = (endIndex - startIndex) / size;\n const result: number[][] = [];\n let part: number[] = [];\n let a: number[];\n let b: number[];\n let codeA: number = -1;\n let codeB: number;\n let lastCode: number;\n\n for (let i = 1; i < numPoints; i++) {\n a = getPointAtIndex(positions, i - 1, size, startIndex, a);\n b = getPointAtIndex(positions, i, size, startIndex, b);\n if (codeA < 0) {\n codeA = bitCode(a, bbox);\n }\n codeB = lastCode = bitCode(b, bbox);\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (!(codeA | codeB)) {\n // accept\n push(part, a);\n\n if (codeB !== lastCode) {\n // segment went outside\n push(part, b);\n\n if (i < numPoints - 1) {\n // start a new line\n result.push(part);\n part = [];\n }\n } else if (i === numPoints - 1) {\n push(part, b);\n }\n break;\n } else if (codeA & codeB) {\n // trivial reject\n break;\n } else if (codeA) {\n // a outside, intersect with clip edge\n intersect(a, b, codeA, bbox, a);\n codeA = bitCode(a, bbox);\n } else {\n // b outside\n intersect(a, b, codeB, bbox, b);\n codeB = bitCode(b, bbox);\n }\n }\n\n codeA = lastCode;\n }\n\n if (part.length) result.push(part);\n\n return result;\n}\n\n/**\n * Sutherland-Hodgeman polygon clipping algorithm\n * polygon must be closed (first vertex == last vertex)\n */\nexport function clipPolygon(\n positions: Readonly,\n bbox: BoundingBox,\n options?: {\n size?: number;\n startIndex?: number;\n endIndex?: number;\n }\n): number[] {\n const {size = 2, endIndex = positions.length} = options || {};\n let {startIndex = 0} = options || {};\n let numPoints = (endIndex - startIndex) / size;\n let result: number[];\n let p: number[];\n let prev: number[];\n let inside: boolean;\n let prevInside: boolean;\n\n // clip against each side of the clip rectangle\n for (let edge = 1; edge <= 8; edge *= 2) {\n result = [];\n prev = getPointAtIndex(positions, numPoints - 1, size, startIndex, prev);\n prevInside = !(bitCode(prev, bbox) & edge);\n\n for (let i = 0; i < numPoints; i++) {\n p = getPointAtIndex(positions, i, size, startIndex, p);\n inside = !(bitCode(p, bbox) & edge);\n\n // if segment goes through the clip window, add an intersection\n if (inside !== prevInside) push(result, intersect(prev, p, edge, bbox));\n\n if (inside) push(result, p); // add a point if it's inside\n\n copy(prev, p);\n prevInside = inside;\n }\n\n // close loop\n positions = result;\n startIndex = 0;\n numPoints = result.length / size;\n\n if (!numPoints) break;\n }\n\n return result;\n}\n\n/** intersect a segment against one of the 4 lines that make up the bbox */\n\nexport function intersect(\n a: number[],\n b: number[],\n edge: number,\n bbox: BoundingBox,\n out: number[] = []\n): number[] {\n let t;\n // Forces out[snapI] to be on the bbox edge\n // Interpolation introduces precision issue which may cause lineclip to be\n // stuck in an infinite loop\n let snap: number;\n if (edge & 8) {\n // top\n t = (bbox[3] - a[1]) / (b[1] - a[1]);\n snap = 3;\n } else if (edge & 4) {\n // bottom\n t = (bbox[1] - a[1]) / (b[1] - a[1]);\n snap = 1;\n } else if (edge & 2) {\n // right\n t = (bbox[2] - a[0]) / (b[0] - a[0]);\n snap = 2;\n } else if (edge & 1) {\n // left\n t = (bbox[0] - a[0]) / (b[0] - a[0]);\n snap = 0;\n } else {\n return null;\n }\n for (let i = 0; i < a.length; i++) {\n out[i] = (snap & 1) === i ? bbox[snap] : t * (b[i] - a[i]) + a[i];\n }\n return out;\n}\n\n/**\n * bit code reflects the point position relative to the bbox:\n * left mid right\n * top 1001 1000 1010\n * mid 0001 0000 0010\n * bottom 0101 0100 0110\n */\nexport function bitCode(p: number[], bbox: BoundingBox): number {\n let code = 0;\n\n if (p[0] < bbox[0]) code |= 1;\n // left\n else if (p[0] > bbox[2]) code |= 2; // right\n\n if (p[1] < bbox[1]) code |= 4;\n // bottom\n else if (p[1] > bbox[3]) code |= 8; // top\n\n return code;\n}\n","import type {NumericArray} from '@math.gl/core';\n\nexport function push(target: number[], source: number[]): boolean {\n const size = source.length;\n const startIndex = target.length;\n\n // dedupe, if source is the same point as the last vertex\n if (startIndex > 0) {\n let isDuplicate = true;\n for (let i = 0; i < size; i++) {\n if (target[startIndex - size + i] !== source[i]) {\n isDuplicate = false;\n break;\n }\n }\n if (isDuplicate) {\n return false;\n }\n }\n\n for (let i = 0; i < size; i++) {\n target[startIndex + i] = source[i];\n }\n return true;\n}\n\nexport function copy(target: number[], source: Readonly): void {\n const size = source.length;\n for (let i = 0; i < size; i++) {\n target[i] = source[i];\n }\n}\n\nexport function getPointAtIndex(\n positions: Readonly,\n index: number,\n size: number,\n offset: number,\n out: number[] = []\n): number[] {\n const startI = offset + index * size;\n for (let i = 0; i < size; i++) {\n out[i] = positions[startI + i];\n }\n return out;\n}\n","/* eslint-disable max-statements, max-depth, complexity, no-unused-expressions */\nimport {bitCode, intersect, BoundingBox} from './lineclip';\nimport {getPointAtIndex, copy, push} from './utils';\n\nimport type {NumericArray} from '@math.gl/core';\n\nexport type Polygon = {\n positions: Readonly;\n holeIndices?: Readonly;\n edgeTypes?: Readonly;\n};\n\nexport function cutPolylineByGrid(\n positions: NumericArray,\n options?: {\n size?: number;\n broken?: boolean;\n gridResolution?: number;\n gridOffset?: [number, number];\n startIndex?: number;\n endIndex?: number;\n }\n): number[] | number[][] {\n const {\n size = 2,\n broken = false,\n gridResolution = 10,\n gridOffset = [0, 0],\n startIndex = 0,\n endIndex = positions.length\n } = options || {};\n const numPoints = (endIndex - startIndex) / size;\n let part: number[] = [];\n const result: number[][] = [part];\n const a: number[] = getPointAtIndex(positions, 0, size, startIndex);\n let b: number[];\n let codeB: number;\n const cell: BoundingBox = getGridCell(a, gridResolution, gridOffset, []);\n const scratchPoint: number[] = [];\n push(part, a);\n\n for (let i = 1; i < numPoints; i++) {\n b = getPointAtIndex(positions, i, size, startIndex, b);\n codeB = bitCode(b, cell);\n\n while (codeB) {\n // find the intersection with the current cell\n intersect(a, b, codeB, cell, scratchPoint);\n const codeAlt = bitCode(scratchPoint, cell);\n if (codeAlt) {\n intersect(a, scratchPoint, codeAlt, cell, scratchPoint);\n codeB = codeAlt;\n }\n push(part, scratchPoint);\n // move to the next cell\n copy(a, scratchPoint);\n\n moveToNeighborCell(cell, gridResolution, codeB);\n if (broken && part.length > size) {\n part = [];\n result.push(part);\n push(part, a);\n }\n\n codeB = bitCode(b, cell);\n }\n\n push(part, b);\n copy(a, b);\n }\n\n return broken ? result : result[0];\n}\n\nconst TYPE_INSIDE = 0;\nconst TYPE_BORDER = 1;\n\nfunction concatInPlace(arr1: number[], arr2: number[]): number[] {\n for (let i = 0; i < arr2.length; i++) {\n arr1.push(arr2[i]);\n }\n return arr1;\n}\n\nexport function cutPolygonByGrid(\n positions: Readonly,\n holeIndices: Readonly | null = null,\n options?: {\n size?: number;\n gridResolution?: number;\n gridOffset?: [number, number];\n edgeTypes?: boolean;\n }\n): Polygon[] {\n if (!positions.length) {\n // input is empty\n return [];\n }\n const {size = 2, gridResolution = 10, gridOffset = [0, 0], edgeTypes = false} = options || {};\n const result: Polygon[] = [];\n const queue: {pos: Readonly; types: number[]; holes: Readonly}[] = [\n {\n pos: positions,\n types: edgeTypes ? (new Array(positions.length / size).fill(TYPE_BORDER) as number[]) : null,\n holes: holeIndices || []\n }\n ];\n const bbox: number[][] = [[], []];\n // @ts-ignore\n let cell: BoundingBox = [];\n\n // Recursively bisect polygon until every part fit in a single grid cell\n while (queue.length) {\n const {pos, types, holes} = queue.shift();\n\n // Get the bounding box of the outer polygon\n getBoundingBox(pos, size, holes[0] || pos.length, bbox);\n cell = getGridCell(bbox[0], gridResolution, gridOffset, cell);\n const code = bitCode(bbox[1], cell);\n\n if (code) {\n // Split the outer ring at the boundary\n let parts = bisectPolygon(pos, types, size, 0, holes[0] || pos.length, cell, code);\n const polygonLow = {pos: parts[0].pos, types: parts[0].types, holes: []};\n const polygonHigh = {pos: parts[1].pos, types: parts[1].types, holes: []};\n queue.push(polygonLow, polygonHigh);\n\n // Split each hole at the boundary\n for (let i = 0; i < holes.length; i++) {\n parts = bisectPolygon(pos, types, size, holes[i], holes[i + 1] || pos.length, cell, code);\n\n if (parts[0]) {\n polygonLow.holes.push(polygonLow.pos.length);\n polygonLow.pos = concatInPlace(polygonLow.pos, parts[0].pos);\n if (edgeTypes) {\n polygonLow.types = concatInPlace(polygonLow.types, parts[0].types);\n }\n }\n if (parts[1]) {\n polygonHigh.holes.push(polygonHigh.pos.length);\n polygonHigh.pos = concatInPlace(polygonHigh.pos, parts[1].pos);\n if (edgeTypes) {\n polygonHigh.types = concatInPlace(polygonHigh.types, parts[1].types);\n }\n }\n }\n } else {\n // Polygon fits in a single cell, no more processing required\n const polygon: Polygon = {positions: pos};\n if (edgeTypes) {\n polygon.edgeTypes = types;\n }\n if (holes.length) {\n polygon.holeIndices = holes;\n }\n\n result.push(polygon);\n }\n }\n return result;\n}\n\n// edgeTypes:\n// TYPE_BORDER - edge from the original polygon\n// TYPE_INSIDE - inside the original polygon\n// eslint-disable-next-line max-params\nfunction bisectPolygon(\n positions: Readonly,\n edgeTypes: number[] | undefined,\n size: number,\n startIndex: number,\n endIndex: number,\n bbox: BoundingBox,\n edge: number\n): {\n pos: number[];\n types?: number[];\n}[] {\n const numPoints = (endIndex - startIndex) / size;\n const resultLow: number[] = [];\n const resultHigh: number[] = [];\n const typesLow: number[] = [];\n const typesHigh: number[] = [];\n const scratchPoint: number[] = [];\n\n let p: number[];\n let side: number;\n let type: number;\n const prev = getPointAtIndex(positions, numPoints - 1, size, startIndex);\n let prevSide = Math.sign(edge & 8 ? prev[1] - bbox[3] : prev[0] - bbox[2]);\n let prevType = edgeTypes && edgeTypes[numPoints - 1];\n let lowPointCount = 0;\n let highPointCount = 0;\n\n for (let i = 0; i < numPoints; i++) {\n p = getPointAtIndex(positions, i, size, startIndex, p);\n side = Math.sign(edge & 8 ? p[1] - bbox[3] : p[0] - bbox[2]);\n type = edgeTypes && edgeTypes[startIndex / size + i];\n\n // if segment goes through the boundary, add an intersection\n if (side && prevSide && prevSide !== side) {\n intersect(prev, p, edge, bbox, scratchPoint);\n push(resultLow, scratchPoint) && typesLow.push(prevType);\n push(resultHigh, scratchPoint) && typesHigh.push(prevType);\n }\n\n if (side <= 0) {\n push(resultLow, p) && typesLow.push(type);\n lowPointCount -= side;\n } else if (typesLow.length) {\n typesLow[typesLow.length - 1] = TYPE_INSIDE;\n }\n if (side >= 0) {\n push(resultHigh, p) && typesHigh.push(type);\n highPointCount += side;\n } else if (typesHigh.length) {\n typesHigh[typesHigh.length - 1] = TYPE_INSIDE;\n }\n\n copy(prev, p);\n prevSide = side;\n prevType = type;\n }\n\n return [\n lowPointCount ? {pos: resultLow, types: edgeTypes && typesLow} : null,\n highPointCount ? {pos: resultHigh, types: edgeTypes && typesHigh} : null\n ];\n}\n\nfunction getGridCell(\n p: number[],\n gridResolution: number,\n gridOffset: [number, number],\n out: number[]\n): BoundingBox {\n const left = Math.floor((p[0] - gridOffset[0]) / gridResolution) * gridResolution + gridOffset[0];\n const bottom =\n Math.floor((p[1] - gridOffset[1]) / gridResolution) * gridResolution + gridOffset[1];\n out[0] = left;\n out[1] = bottom;\n out[2] = left + gridResolution;\n out[3] = bottom + gridResolution;\n return out as BoundingBox;\n}\n\nfunction moveToNeighborCell(cell: number[], gridResolution: number, edge: number): void {\n if (edge & 8) {\n // top\n cell[1] += gridResolution;\n cell[3] += gridResolution;\n } else if (edge & 4) {\n // bottom\n cell[1] -= gridResolution;\n cell[3] -= gridResolution;\n } else if (edge & 2) {\n // right\n cell[0] += gridResolution;\n cell[2] += gridResolution;\n } else if (edge & 1) {\n // left\n cell[0] -= gridResolution;\n cell[2] -= gridResolution;\n }\n}\n\nfunction getBoundingBox(\n positions: Readonly,\n size: number,\n endIndex: number,\n out: number[][]\n): number[][] {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < endIndex; i += size) {\n const x = positions[i];\n const y = positions[i + 1];\n minX = x < minX ? x : minX;\n maxX = x > maxX ? x : maxX;\n minY = y < minY ? y : minY;\n maxY = y > maxY ? y : maxY;\n }\n\n out[0][0] = minX;\n out[0][1] = minY;\n out[1][0] = maxX;\n out[1][1] = maxY;\n return out;\n}\n","import {cutPolylineByGrid, cutPolygonByGrid} from './cut-by-grid';\nimport {getPointAtIndex, push} from './utils';\nimport type {Polygon} from './cut-by-grid';\nimport type {NumericArray} from '@math.gl/core';\n\n// https://en.wikipedia.org/wiki/Web_Mercator_projection\nconst DEFAULT_MAX_LATITUDE = 85.051129;\n\n/** https://user-images.githubusercontent.com/2059298/78465769-938b7a00-76ae-11ea-9b95-1f4c26425ab9.png */\nexport function cutPolylineByMercatorBounds(\n positions: Readonly,\n options?: {\n size?: number;\n startIndex?: number;\n endIndex?: number;\n normalize?: boolean;\n }\n): number[][] {\n const {size = 2, startIndex = 0, endIndex = positions.length, normalize = true} = options || {};\n\n // Remap longitudes so that each segment takes the shorter path\n const newPositions = positions.slice(startIndex, endIndex);\n wrapLongitudesForShortestPath(newPositions, size, 0, endIndex - startIndex);\n\n const parts = cutPolylineByGrid(newPositions, {\n size,\n broken: true,\n gridResolution: 360,\n gridOffset: [-180, -180]\n }) as number[][];\n\n if (normalize) {\n // Each part is guaranteed to be in a single copy of the world\n // Map longitudes back to [-180, 180]\n for (const part of parts) {\n shiftLongitudesIntoRange(part, size);\n }\n }\n return parts;\n}\n\n/** https://user-images.githubusercontent.com/2059298/78465770-94241080-76ae-11ea-809a-6a8534dac1d9.png */\nexport function cutPolygonByMercatorBounds(\n positions: Readonly,\n holeIndices: Readonly | null = null,\n options?: {\n size?: number;\n normalize?: boolean;\n maxLatitude?: number;\n edgeTypes?: boolean;\n }\n): Polygon[] {\n const {size = 2, normalize = true, edgeTypes = false} = options || {};\n holeIndices = holeIndices || [];\n const newPositions: number[] = [];\n const newHoleIndices: number[] = [];\n let srcStartIndex = 0;\n let targetIndex = 0;\n\n for (let ringIndex = 0; ringIndex <= holeIndices.length; ringIndex++) {\n // srcStartIndex/srcEndIndex define the ring in the original positions\n const srcEndIndex = holeIndices[ringIndex] || positions.length;\n // targetStartIndex/targetIndex define the ring in newPositions\n const targetStartIndex = targetIndex;\n\n // In case the ring contains a pole (e.g. Antarctica), we'll have to insert vertices\n // The insertion point is defined by the vertex closest to the pole\n // Split the the ring by the insertion point when copying to newPositions\n const splitIndex = findSplitIndex(positions, size, srcStartIndex, srcEndIndex);\n for (let i = splitIndex; i < srcEndIndex; i++) {\n newPositions[targetIndex++] = positions[i];\n }\n for (let i = srcStartIndex; i < splitIndex; i++) {\n newPositions[targetIndex++] = positions[i];\n }\n\n // Remap longitudes so that each segment takes the shorter path\n wrapLongitudesForShortestPath(newPositions, size, targetStartIndex, targetIndex);\n\n // Handle the case when the ring contains a pole\n insertPoleVertices(newPositions, size, targetStartIndex, targetIndex, options?.maxLatitude);\n\n srcStartIndex = srcEndIndex;\n newHoleIndices[ringIndex] = targetIndex;\n }\n newHoleIndices.pop();\n\n const parts = cutPolygonByGrid(newPositions, newHoleIndices, {\n size,\n gridResolution: 360,\n gridOffset: [-180, -180],\n edgeTypes\n });\n\n if (normalize) {\n // Each part is guaranteed to be in a single copy of the world\n // Map longitudes back to [-180, 180]\n for (const part of parts) {\n // @ts-expect-error (mutates readonly array) May mutate newPositions, which is created by us\n shiftLongitudesIntoRange(part.positions, size);\n }\n }\n return parts;\n}\n\n/* Helpers */\n\n// See comments for insertPoleVertices\nfunction findSplitIndex(\n positions: Readonly,\n size: number,\n startIndex: number,\n endIndex: number\n): number {\n let maxLat = -1;\n let pointIndex = -1;\n for (let i = startIndex + 1; i < endIndex; i += size) {\n const lat = Math.abs(positions[i]);\n if (lat > maxLat) {\n maxLat = lat;\n pointIndex = i - 1;\n }\n }\n return pointIndex;\n}\n\n// https://user-images.githubusercontent.com/2059298/78857483-5987e400-79de-11ea-98fc-0631287a8431.png\n//\n// If the polygon contains a pole, to tesselate it correctly, we need to insert the edge\n// of map into the polygon. This requires adding two vertices that represent the pole, by\n// drawing a perpendicular line to the Mercator map edge from a selected vertex on the ring.\n//\n// We select the insertion position carefully so that the inserted line segments do not\n// intersect with the ring itself. This is ensured by findSplitIndex, which returns the\n// vertex closest to the pole.\nfunction insertPoleVertices(\n positions: number[],\n size: number,\n startIndex: number,\n endIndex: number,\n maxLatitude: number = DEFAULT_MAX_LATITUDE\n): void {\n // Check if the ring contains a pole\n const firstLng = positions[startIndex];\n const lastLng = positions[endIndex - size];\n if (Math.abs(firstLng - lastLng) > 180) {\n // The ring does not make a round trip\n // Add the nearest pole to the vertices so that the polygon tesselates correctly\n const p = getPointAtIndex(positions, 0, size, startIndex);\n // Copy the first vertex to the world of the last vertex\n p[0] += Math.round((lastLng - firstLng) / 360) * 360;\n push(positions, p);\n // Project the copied vertex to the edge of the map\n p[1] = Math.sign(p[1]) * maxLatitude;\n push(positions, p);\n // Project the first vertex to the edge of the map\n p[0] = firstLng;\n push(positions, p);\n }\n}\n\nfunction wrapLongitudesForShortestPath(\n positions: NumericArray,\n size: number,\n startIndex: number,\n endIndex: number\n): void {\n let prevLng: number = positions[0];\n let lng: number;\n for (let i = startIndex; i < endIndex; i += size) {\n lng = positions[i];\n const delta = lng - prevLng;\n if (delta > 180 || delta < -180) {\n lng -= Math.round(delta / 360) * 360;\n }\n positions[i] = prevLng = lng;\n }\n}\n\nfunction shiftLongitudesIntoRange(positions: NumericArray, size: number): void {\n let refLng: number;\n const pointCount = positions.length / size;\n\n // Find a longitude that is not on the edge of a world\n // Which we will use to determine which world copy it is\n for (let i = 0; i < pointCount; i++) {\n refLng = positions[i * size];\n if ((refLng + 180) % 360 !== 0) {\n break;\n }\n }\n\n const delta = -Math.round(refLng / 360) * 360;\n if (delta === 0) {\n return;\n }\n for (let i = 0; i < pointCount; i++) {\n positions[i * size] += delta;\n }\n}\n","/* eslint-disable indent */\nimport {earcut} from '@math.gl/polygon';\nimport type {\n BinaryAttribute,\n BinaryFeatures,\n BinaryPolygonFeatures,\n FlatFeature,\n FlatPoint,\n FlatLineString,\n FlatPolygon,\n GeojsonGeometryInfo,\n TypedArray\n} from '@loaders.gl/schema';\nimport {PropArrayConstructor, Lines, Points, Polygons} from './flat-geojson-to-binary-types';\n\n/**\n * Convert binary features to flat binary arrays. Similar to\n * `geojsonToBinary` helper function, except that it expects\n * a binary representation of the feature data, which enables\n * 2X-3X speed increase in parse speed, compared to using\n * geoJSON. See `binary-vector-tile/VectorTileFeature` for\n * data format detais\n *\n * @param features\n * @param geometryInfo\n * @param options\n * @returns filled arrays\n */\nexport function flatGeojsonToBinary(\n features: FlatFeature[],\n geometryInfo: GeojsonGeometryInfo,\n options?: FlatGeojsonToBinaryOptions\n) {\n const propArrayTypes = extractNumericPropTypes(features);\n const numericPropKeys = Object.keys(propArrayTypes).filter((k) => propArrayTypes[k] !== Array);\n return fillArrays(\n features,\n {\n propArrayTypes,\n ...geometryInfo\n },\n {\n numericPropKeys: (options && options.numericPropKeys) || numericPropKeys,\n PositionDataType: options ? options.PositionDataType : Float32Array,\n triangulate: options ? options.triangulate : true\n }\n );\n}\n\n/**\n * Options for `flatGeojsonToBinary`\n */\nexport type FlatGeojsonToBinaryOptions = {\n numericPropKeys?: string[];\n PositionDataType?: Float32ArrayConstructor | Float64ArrayConstructor;\n triangulate?: boolean;\n};\n\nexport const TEST_EXPORTS = {\n extractNumericPropTypes\n};\n\n/**\n * Extracts properties that are always numeric\n *\n * @param features\n * @returns object with numeric types\n */\nfunction extractNumericPropTypes(features: FlatFeature[]): {\n [key: string]: PropArrayConstructor;\n} {\n const propArrayTypes = {};\n for (const feature of features) {\n if (feature.properties) {\n for (const key in feature.properties) {\n // If property has not been seen before, or if property has been numeric\n // in all previous features, check if numeric in this feature\n // If not numeric, Array is stored to prevent rechecking in the future\n // Additionally, detects if 64 bit precision is required\n const val = feature.properties[key];\n propArrayTypes[key] = deduceArrayType(val, propArrayTypes[key]);\n }\n }\n }\n\n return propArrayTypes;\n}\n\n/**\n * Fills coordinates into pre-allocated typed arrays\n *\n * @param features\n * @param geometryInfo\n * @param options\n * @returns an accessor object with value and size keys\n */\n// eslint-disable-next-line complexity\nfunction fillArrays(\n features: FlatFeature[],\n geometryInfo: GeojsonGeometryInfo & {\n propArrayTypes: {[key: string]: PropArrayConstructor};\n },\n options: FlatGeojsonToBinaryOptions\n) {\n const {\n pointPositionsCount,\n pointFeaturesCount,\n linePositionsCount,\n linePathsCount,\n lineFeaturesCount,\n polygonPositionsCount,\n polygonObjectsCount,\n polygonRingsCount,\n polygonFeaturesCount,\n propArrayTypes,\n coordLength\n } = geometryInfo;\n const {numericPropKeys = [], PositionDataType = Float32Array, triangulate = true} = options;\n const hasGlobalId = features[0] && 'id' in features[0];\n const GlobalFeatureIdsDataType = features.length > 65535 ? Uint32Array : Uint16Array;\n const points: Points = {\n type: 'Point',\n positions: new PositionDataType(pointPositionsCount * coordLength),\n globalFeatureIds: new GlobalFeatureIdsDataType(pointPositionsCount),\n featureIds:\n pointFeaturesCount > 65535\n ? new Uint32Array(pointPositionsCount)\n : new Uint16Array(pointPositionsCount),\n numericProps: {},\n properties: [],\n fields: []\n };\n const lines: Lines = {\n type: 'LineString',\n pathIndices:\n linePositionsCount > 65535\n ? new Uint32Array(linePathsCount + 1)\n : new Uint16Array(linePathsCount + 1),\n positions: new PositionDataType(linePositionsCount * coordLength),\n globalFeatureIds: new GlobalFeatureIdsDataType(linePositionsCount),\n featureIds:\n lineFeaturesCount > 65535\n ? new Uint32Array(linePositionsCount)\n : new Uint16Array(linePositionsCount),\n numericProps: {},\n properties: [],\n fields: []\n };\n const polygons: Polygons = {\n type: 'Polygon',\n polygonIndices:\n polygonPositionsCount > 65535\n ? new Uint32Array(polygonObjectsCount + 1)\n : new Uint16Array(polygonObjectsCount + 1),\n primitivePolygonIndices:\n polygonPositionsCount > 65535\n ? new Uint32Array(polygonRingsCount + 1)\n : new Uint16Array(polygonRingsCount + 1),\n positions: new PositionDataType(polygonPositionsCount * coordLength),\n globalFeatureIds: new GlobalFeatureIdsDataType(polygonPositionsCount),\n featureIds:\n polygonFeaturesCount > 65535\n ? new Uint32Array(polygonPositionsCount)\n : new Uint16Array(polygonPositionsCount),\n numericProps: {},\n properties: [],\n fields: []\n };\n\n if (triangulate) {\n polygons.triangles = [];\n }\n\n // Instantiate numeric properties arrays; one value per vertex\n for (const object of [points, lines, polygons]) {\n for (const propName of numericPropKeys) {\n // If property has been numeric in all previous features in which the property existed, check\n // if numeric in this feature\n const T = propArrayTypes[propName];\n object.numericProps[propName] = new T(object.positions.length / coordLength) as TypedArray;\n }\n }\n\n // Set last element of path/polygon indices as positions length\n lines.pathIndices[linePathsCount] = linePositionsCount;\n polygons.polygonIndices[polygonObjectsCount] = polygonPositionsCount;\n polygons.primitivePolygonIndices[polygonRingsCount] = polygonPositionsCount;\n\n const indexMap = {\n pointPosition: 0,\n pointFeature: 0,\n linePosition: 0,\n linePath: 0,\n lineFeature: 0,\n polygonPosition: 0,\n polygonObject: 0,\n polygonRing: 0,\n polygonFeature: 0,\n feature: 0\n };\n\n for (const feature of features) {\n const geometry = feature.geometry;\n const properties = feature.properties || {};\n\n switch (geometry.type) {\n case 'Point':\n handlePoint(geometry, points, indexMap, coordLength, properties);\n points.properties.push(keepStringProperties(properties, numericPropKeys));\n if (hasGlobalId) {\n points.fields.push({id: feature.id});\n }\n indexMap.pointFeature++;\n break;\n case 'LineString':\n handleLineString(geometry, lines, indexMap, coordLength, properties);\n lines.properties.push(keepStringProperties(properties, numericPropKeys));\n if (hasGlobalId) {\n lines.fields.push({id: feature.id});\n }\n indexMap.lineFeature++;\n break;\n case 'Polygon':\n handlePolygon(geometry, polygons, indexMap, coordLength, properties);\n polygons.properties.push(keepStringProperties(properties, numericPropKeys));\n if (hasGlobalId) {\n polygons.fields.push({id: feature.id});\n }\n indexMap.polygonFeature++;\n break;\n default:\n throw new Error('Invalid geometry type');\n }\n\n indexMap.feature++;\n }\n\n // Wrap each array in an accessor object with value and size keys\n return makeAccessorObjects(points, lines, polygons, coordLength);\n}\n\n/**\n * Fills (Multi)Point coordinates into points object of arrays\n *\n * @param geometry\n * @param points\n * @param indexMap\n * @param coordLength\n * @param properties\n */\nfunction handlePoint(\n geometry: FlatPoint,\n points: Points,\n indexMap: {\n pointPosition: number;\n pointFeature: number;\n linePosition?: number;\n linePath?: number;\n lineFeature?: number;\n polygonPosition?: number;\n polygonObject?: number;\n polygonRing?: number;\n polygonFeature?: number;\n feature: number;\n },\n coordLength: number,\n properties: {[x: string]: string | number | boolean | null}\n): void {\n points.positions.set(geometry.data, indexMap.pointPosition * coordLength);\n\n const nPositions = geometry.data.length / coordLength;\n fillNumericProperties(points, properties, indexMap.pointPosition, nPositions);\n points.globalFeatureIds.fill(\n indexMap.feature,\n indexMap.pointPosition,\n indexMap.pointPosition + nPositions\n );\n points.featureIds.fill(\n indexMap.pointFeature,\n indexMap.pointPosition,\n indexMap.pointPosition + nPositions\n );\n\n indexMap.pointPosition += nPositions;\n}\n\n/**\n * Fills (Multi)LineString coordinates into lines object of arrays\n *\n * @param geometry\n * @param lines\n * @param indexMap\n * @param coordLength\n * @param properties\n */\nfunction handleLineString(\n geometry: FlatLineString,\n lines: Lines,\n indexMap: {\n pointPosition?: number;\n pointFeature?: number;\n linePosition: number;\n linePath: number;\n lineFeature: number;\n polygonPosition?: number;\n polygonObject?: number;\n polygonRing?: number;\n polygonFeature?: number;\n feature: number;\n },\n coordLength: number,\n properties: {[x: string]: string | number | boolean | null}\n): void {\n lines.positions.set(geometry.data, indexMap.linePosition * coordLength);\n\n const nPositions = geometry.data.length / coordLength;\n fillNumericProperties(lines, properties, indexMap.linePosition, nPositions);\n\n lines.globalFeatureIds.fill(\n indexMap.feature,\n indexMap.linePosition,\n indexMap.linePosition + nPositions\n );\n lines.featureIds.fill(\n indexMap.lineFeature,\n indexMap.linePosition,\n indexMap.linePosition + nPositions\n );\n\n for (let i = 0, il = geometry.indices.length; i < il; ++i) {\n // Extract range of data we are working with, defined by start\n // and end indices (these index into the geometry.data array)\n const start = geometry.indices[i];\n const end =\n i === il - 1\n ? geometry.data.length // last line, so read to end of data\n : geometry.indices[i + 1]; // start index for next line\n\n lines.pathIndices[indexMap.linePath++] = indexMap.linePosition;\n indexMap.linePosition += (end - start) / coordLength;\n }\n}\n\n/**\n * Fills (Multi)Polygon coordinates into polygons object of arrays\n *\n * @param geometry\n * @param polygons\n * @param indexMap\n * @param coordLength\n * @param properties\n */\nfunction handlePolygon(\n geometry: FlatPolygon,\n polygons: Polygons,\n indexMap: {\n pointPosition?: number;\n pointFeature?: number;\n linePosition?: number;\n linePath?: number;\n lineFeature?: number;\n polygonPosition: number;\n polygonObject: number;\n polygonRing: number;\n polygonFeature: number;\n feature: number;\n },\n coordLength: number,\n properties: {[x: string]: string | number | boolean | null}\n): void {\n polygons.positions.set(geometry.data, indexMap.polygonPosition * coordLength);\n\n const nPositions = geometry.data.length / coordLength;\n fillNumericProperties(polygons, properties, indexMap.polygonPosition, nPositions);\n polygons.globalFeatureIds.fill(\n indexMap.feature,\n indexMap.polygonPosition,\n indexMap.polygonPosition + nPositions\n );\n polygons.featureIds.fill(\n indexMap.polygonFeature,\n indexMap.polygonPosition,\n indexMap.polygonPosition + nPositions\n );\n\n // Unlike Point & LineString geometry.indices is a 2D array\n for (let l = 0, ll = geometry.indices.length; l < ll; ++l) {\n const startPosition = indexMap.polygonPosition;\n polygons.polygonIndices[indexMap.polygonObject++] = startPosition;\n\n const areas = geometry.areas[l];\n const indices = geometry.indices[l];\n const nextIndices = geometry.indices[l + 1];\n\n for (let i = 0, il = indices.length; i < il; ++i) {\n const start = indices[i];\n const end =\n i === il - 1\n ? // last line, so either read to:\n nextIndices === undefined\n ? geometry.data.length // end of data (no next indices)\n : nextIndices[0] // start of first line in nextIndices\n : indices[i + 1]; // start index for next line\n\n polygons.primitivePolygonIndices[indexMap.polygonRing++] = indexMap.polygonPosition;\n indexMap.polygonPosition += (end - start) / coordLength;\n }\n\n const endPosition = indexMap.polygonPosition;\n triangulatePolygon(polygons, areas, indices, {startPosition, endPosition, coordLength});\n }\n}\n\n/**\n * Triangulate polygon using earcut\n *\n * @param polygons\n * @param areas\n * @param indices\n * @param param3\n */\nfunction triangulatePolygon(\n polygons: Polygons,\n areas: number[],\n indices: number[],\n {\n startPosition,\n endPosition,\n coordLength\n }: {startPosition: number; endPosition: number; coordLength: number}\n): void {\n if (!polygons.triangles) {\n return;\n }\n\n const start = startPosition * coordLength;\n const end = endPosition * coordLength;\n\n // Extract positions and holes for just this polygon\n const polygonPositions = polygons.positions.subarray(start, end);\n\n // Holes are referenced relative to outer polygon\n const offset = indices[0];\n const holes = indices.slice(1).map((n: number) => (n - offset) / coordLength);\n\n // Compute triangulation\n // @ts-expect-error TODO can earcut handle binary arrays? Add tests?\n const triangles = earcut(polygonPositions, holes, coordLength, areas);\n\n // Indices returned by triangulation are relative to start\n // of polygon, so we need to offset\n for (let t = 0, tl = triangles.length; t < tl; ++t) {\n polygons.triangles.push(startPosition + triangles[t]);\n }\n}\n\n/**\n * Wraps an object containing array into accessors\n *\n * @param obj\n * @param size\n */\nfunction wrapProps(\n obj: {[key: string]: TypedArray},\n size: number\n): {[key: string]: BinaryAttribute} {\n const returnObj = {};\n for (const key in obj) {\n returnObj[key] = {value: obj[key], size};\n }\n return returnObj;\n}\n\n/**\n * Wrap each array in an accessor object with value and size keys\n *\n * @param points\n * @param lines\n * @param polygons\n * @param coordLength\n * @returns object\n */\nfunction makeAccessorObjects(\n points: Points,\n lines: Lines,\n polygons: Polygons,\n coordLength: number\n): BinaryFeatures {\n const binaryFeatures = {\n points: {\n ...points,\n positions: {value: points.positions, size: coordLength},\n globalFeatureIds: {value: points.globalFeatureIds, size: 1},\n featureIds: {value: points.featureIds, size: 1},\n numericProps: wrapProps(points.numericProps, 1)\n },\n lines: {\n ...lines,\n positions: {value: lines.positions, size: coordLength},\n pathIndices: {value: lines.pathIndices, size: 1},\n globalFeatureIds: {value: lines.globalFeatureIds, size: 1},\n featureIds: {value: lines.featureIds, size: 1},\n numericProps: wrapProps(lines.numericProps, 1)\n },\n polygons: {\n ...polygons,\n positions: {value: polygons.positions, size: coordLength},\n polygonIndices: {value: polygons.polygonIndices, size: 1},\n primitivePolygonIndices: {value: polygons.primitivePolygonIndices, size: 1},\n globalFeatureIds: {value: polygons.globalFeatureIds, size: 1},\n featureIds: {value: polygons.featureIds, size: 1},\n numericProps: wrapProps(polygons.numericProps, 1)\n } as BinaryPolygonFeatures\n };\n\n if (polygons.triangles) {\n binaryFeatures.polygons.triangles = {value: new Uint32Array(polygons.triangles), size: 1};\n }\n\n return binaryFeatures;\n}\n\n/**\n * Add numeric properties to object\n *\n * @param object\n * @param properties\n * @param index\n * @param length\n */\nfunction fillNumericProperties(\n object: Points | Lines | Polygons,\n properties: {[x: string]: string | number | boolean | null},\n index: number,\n length: number\n): void {\n for (const numericPropName in object.numericProps) {\n if (numericPropName in properties) {\n const value = properties[numericPropName] as number;\n object.numericProps[numericPropName].fill(value, index, index + length);\n }\n }\n}\n\n/**\n * Keep string properties in object\n *\n * @param properties\n * @param numericKeys\n * @returns object\n */\nfunction keepStringProperties(\n properties: {[x: string]: string | number | boolean | null},\n numericKeys: string[]\n) {\n const props = {};\n for (const key in properties) {\n if (!numericKeys.includes(key)) {\n props[key] = properties[key];\n }\n }\n return props;\n}\n\n/**\n *\n * Deduce correct array constructor to use for a given value\n *\n * @param x value to test\n * @param constructor previous constructor deduced\n * @returns PropArrayConstructor\n */\nfunction deduceArrayType(x: any, constructor: PropArrayConstructor): PropArrayConstructor {\n if (constructor === Array || !Number.isFinite(x)) {\n return Array;\n }\n\n // If this or previous value required 64bits use Float64Array\n return constructor === Float64Array || Math.fround(x) !== x ? Float64Array : Float32Array;\n}\n","import Protobuf from 'pbf';\nimport {MVTMapboxGeometry} from '../lib/types';\nimport VectorTileFeature from '../lib/mapbox-vector-tile/vector-tile-feature';\n\n/**\n * Classifies an array of rings into polygons with outer rings and holes\n * @param rings\n * @returns polygons\n */\nexport function classifyRings(rings: MVTMapboxGeometry) {\n const len = rings.length;\n\n if (len <= 1) return [rings];\n\n const polygons: number[][][] = [];\n let polygon: number[][] | undefined;\n let ccw: boolean | undefined;\n\n for (let i = 0; i < len; i++) {\n const area = signedArea(rings[i]);\n if (area === 0) continue; // eslint-disable-line no-continue\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon) polygons.push(polygon);\n polygon = [rings[i]];\n } else if (polygon) polygon.push(rings[i]);\n }\n if (polygon) polygons.push(polygon);\n\n return polygons;\n}\n\n/**\n *\n * @param ring\n * @returns sum\n */\nexport function signedArea(ring: number[][]) {\n let sum = 0;\n for (let i = 0, j = ring.length - 1, p1: number[], p2: number[]; i < ring.length; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2[0] - p1[0]) * (p1[1] + p2[1]);\n }\n return sum;\n}\n\n/**\n *\n * @param tag\n * @param feature\n * @param pbf\n */\nexport function readFeature(tag: number, feature?: VectorTileFeature, pbf?: Protobuf): void {\n if (feature && pbf) {\n if (tag === 1) feature.id = pbf.readVarint();\n else if (tag === 2) readTag(pbf, feature);\n else if (tag === 3) feature.type = pbf.readVarint();\n else if (tag === 4) feature._geometry = pbf.pos;\n }\n}\n\n/**\n *\n * @param pbf\n * @param feature\n */\nexport function readTag(pbf: Protobuf, feature: VectorTileFeature): void {\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const key = feature._keys[pbf.readVarint()];\n const value = feature._values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n}\n","// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\nimport Protobuf from 'pbf';\nimport {MVTMapboxCoordinates, MVTMapboxGeometry} from '../types';\nimport {readFeature, classifyRings} from '../../helpers/mapbox-util-functions';\n\nexport default class VectorTileFeature {\n properties: {[x: string]: string | number | boolean | null};\n extent: any;\n type: number;\n id: number | null;\n _pbf: Protobuf;\n _geometry: number;\n _keys: string[];\n _values: (string | number | boolean | null)[];\n static get types() {\n return ['Unknown', 'Point', 'LineString', 'Polygon'];\n }\n\n constructor(\n pbf: Protobuf,\n end: number,\n extent: any,\n keys: string[],\n values: (string | number | boolean | null)[]\n ) {\n // Public\n this.properties = {};\n this.extent = extent;\n this.type = 0;\n this.id = null;\n\n // Private\n this._pbf = pbf;\n this._geometry = -1;\n this._keys = keys;\n this._values = values;\n\n pbf.readFields(readFeature, this, end);\n }\n\n // eslint-disable-next-line complexity, max-statements\n loadGeometry(): MVTMapboxGeometry {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n const end = pbf.readVarint() + pbf.pos;\n let cmd = 1;\n let length = 0;\n let x = 0;\n let y = 0;\n const lines: number[][][] = [];\n let line: number[][] | undefined;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n const cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) {\n // moveTo\n if (line) lines.push(line);\n line = [];\n }\n if (line) line.push([x, y]);\n } else if (cmd === 7) {\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (line) {\n line.push(line[0].slice()); // closePolygon\n }\n } else {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n if (line) lines.push(line);\n\n return lines;\n }\n\n // eslint-disable-next-line max-statements\n bbox() {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n const end = pbf.readVarint() + pbf.pos;\n let cmd = 1;\n let length = 0;\n let x = 0;\n let y = 0;\n let x1 = Infinity;\n let x2 = -Infinity;\n let y1 = Infinity;\n let y2 = -Infinity;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n const cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n if (x < x1) x1 = x;\n if (x > x2) x2 = x;\n if (y < y1) y1 = y;\n if (y > y2) y2 = y;\n } else if (cmd !== 7) {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n return [x1, y1, x2, y2];\n }\n\n _toGeoJSON(transform) {\n let coords = this.loadGeometry();\n let type = VectorTileFeature.types[this.type];\n let i: number;\n let j: number;\n\n // eslint-disable-next-line default-case\n switch (this.type) {\n case 1:\n const points: number[] = [];\n for (i = 0; i < coords.length; i++) {\n points[i] = coords[i][0];\n }\n coords = points;\n transform(coords, this);\n break;\n\n case 2:\n for (i = 0; i < coords.length; i++) {\n transform(coords[i], this);\n }\n break;\n\n case 3:\n coords = classifyRings(coords);\n for (i = 0; i < coords.length; i++) {\n for (j = 0; j < coords[i].length; j++) {\n transform(coords[i][j], this);\n }\n }\n break;\n }\n\n if (coords.length === 1) {\n coords = coords[0];\n } else {\n type = `Multi${type}`;\n }\n\n const result: MVTMapboxCoordinates = {\n type: 'Feature',\n geometry: {\n type,\n coordinates: coords\n },\n properties: this.properties\n };\n\n if (this.id !== null) {\n result.id = this.id;\n }\n\n return result;\n }\n\n toGeoJSON(\n options: {x: number; y: number; z: number} | ((data: number[], feature: {extent: any}) => void)\n ): MVTMapboxCoordinates {\n if (typeof options === 'function') {\n return this._toGeoJSON(options);\n }\n const {x, y, z} = options;\n const size = this.extent * Math.pow(2, z);\n const x0 = this.extent * x;\n const y0 = this.extent * y;\n\n function project(line: number[]) {\n for (let j = 0; j < line.length; j++) {\n const p = line[j];\n p[0] = ((p[0] + x0) * 360) / size - 180;\n const y2 = 180 - ((p[1] + y0) * 360) / size;\n p[1] = (360 / Math.PI) * Math.atan(Math.exp((y2 * Math.PI) / 180)) - 90;\n }\n }\n return this._toGeoJSON(project);\n }\n}\n","/* eslint-disable indent */\n// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport Protobuf from 'pbf';\nimport VectorTileFeature from './vector-tile-feature';\n\nexport default class VectorTileLayer {\n version: number;\n name: string;\n extent: number;\n length: number;\n _pbf: Protobuf;\n _keys: string[];\n _values: (string | number | boolean | null)[];\n _features: number[];\n constructor(pbf: Protobuf, end: number) {\n // Public\n this.version = 1;\n this.name = '';\n this.extent = 4096;\n this.length = 0;\n\n // Private\n this._pbf = pbf;\n this._keys = [];\n this._values = [];\n this._features = [];\n\n pbf.readFields(readLayer, this, end);\n\n this.length = this._features.length;\n }\n\n /**\n * return feature `i` from this layer as a `VectorTileFeature`\n * @param index\n * @returns feature\n */\n\n feature(i: number): VectorTileFeature {\n if (i < 0 || i >= this._features.length) {\n throw new Error('feature index out of bounds');\n }\n\n this._pbf.pos = this._features[i];\n\n const end = this._pbf.readVarint() + this._pbf.pos;\n return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values);\n }\n}\n\n/**\n *\n * @param tag\n * @param layer\n * @param pbf\n */\nfunction readLayer(tag: number, layer?: VectorTileLayer, pbf?: Protobuf): void {\n if (layer && pbf) {\n if (tag === 15) layer.version = pbf.readVarint();\n else if (tag === 1) layer.name = pbf.readString();\n else if (tag === 5) layer.extent = pbf.readVarint();\n else if (tag === 2) layer._features.push(pbf.pos);\n else if (tag === 3) layer._keys.push(pbf.readString());\n else if (tag === 4) layer._values.push(readValueMessage(pbf));\n }\n}\n\n/**\n *\n * @param pbf\n * @returns value\n */\nfunction readValueMessage(pbf: Protobuf) {\n let value: string | number | boolean | null = null;\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const tag = pbf.readVarint() >> 3;\n\n value =\n tag === 1\n ? pbf.readString()\n : tag === 2\n ? pbf.readFloat()\n : tag === 3\n ? pbf.readDouble()\n : tag === 4\n ? pbf.readVarint64()\n : tag === 5\n ? pbf.readVarint()\n : tag === 6\n ? pbf.readSVarint()\n : tag === 7\n ? pbf.readBoolean()\n : null;\n }\n\n return value;\n}\n","// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport VectorTileLayer from './vector-tile-layer';\nimport Protobuf from 'pbf';\n\nexport default class VectorTile {\n layers: {[x: string]: VectorTileLayer};\n constructor(pbf: Protobuf, end?: number) {\n this.layers = pbf.readFields(readTile, {}, end);\n }\n}\n\n/**\n *\n * @param tag\n * @param layers\n * @param pbf\n */\nfunction readTile(tag: number, layers?: {[x: string]: VectorTileLayer}, pbf?: Protobuf): void {\n if (tag === 3) {\n if (pbf) {\n const layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);\n if (layer.length && layers) {\n layers[layer.name] = layer;\n }\n }\n }\n}\n","import Protobuf from 'pbf';\nimport {getPolygonSignedArea} from '@math.gl/polygon';\nimport {FlatIndexedGeometry, FlatPolygon} from '@loaders.gl/schema';\nimport VectorTileFeature from '../lib/binary-vector-tile/vector-tile-feature';\n\n/**\n * Classifies an array of rings into polygons with outer rings and holes\n * The function also detects holes which have zero area and\n * removes them. In doing so it modifies the input\n * `geom.data` array to remove the unneeded data\n *\n * @param geometry\n * @returns object\n */\n// eslint-disable-next-line max-statements\nexport function classifyRings(geom: FlatIndexedGeometry): FlatPolygon {\n const len = geom.indices.length;\n const type = 'Polygon';\n\n if (len <= 1) {\n return {\n type,\n data: geom.data,\n areas: [[getPolygonSignedArea(geom.data)]],\n indices: [geom.indices]\n };\n }\n\n const areas: any[] = [];\n const polygons: any[] = [];\n let ringAreas: number[] = [];\n let polygon: number[] = [];\n let ccw: boolean | undefined;\n let offset = 0;\n\n for (let endIndex: number, i = 0, startIndex: number; i < len; i++) {\n startIndex = geom.indices[i] - offset;\n\n endIndex = geom.indices[i + 1] - offset || geom.data.length;\n const shape = geom.data.slice(startIndex, endIndex);\n const area = getPolygonSignedArea(shape);\n\n if (area === 0) {\n // This polygon has no area, so remove it from the shape\n // Remove the section from the data array\n const before = geom.data.slice(0, startIndex);\n const after = geom.data.slice(endIndex);\n geom.data = before.concat(after);\n\n // Need to offset any remaining indices as we have\n // modified the data buffer\n offset += endIndex - startIndex;\n\n // Do not add this index to the output and process next shape\n continue; // eslint-disable-line no-continue\n }\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon.length) {\n areas.push(ringAreas);\n polygons.push(polygon);\n }\n polygon = [startIndex];\n ringAreas = [area];\n } else {\n ringAreas.push(area);\n polygon.push(startIndex);\n }\n }\n if (ringAreas) areas.push(ringAreas);\n if (polygon.length) polygons.push(polygon);\n\n return {type, areas, indices: polygons, data: geom.data};\n}\n\n/**\n *\n * @param data\n * @param x0\n * @param y0\n * @param size\n */\nexport function project(data: number[], x0: number, y0: number, size: number): void {\n for (let j = 0, jl = data.length; j < jl; j += 2) {\n data[j] = ((data[j] + x0) * 360) / size - 180;\n const y2 = 180 - ((data[j + 1] + y0) * 360) / size;\n data[j + 1] = (360 / Math.PI) * Math.atan(Math.exp((y2 * Math.PI) / 180)) - 90;\n }\n}\n\n/**\n * All code below is unchanged from the original Mapbox implemenation\n *\n * @param tag\n * @param feature\n * @param pbf\n */\nexport function readFeature(tag: number, feature?: VectorTileFeature, pbf?: Protobuf): void {\n if (feature && pbf) {\n if (tag === 1) feature.id = pbf.readVarint();\n else if (tag === 2) readTag(pbf, feature);\n else if (tag === 3) feature.type = pbf.readVarint();\n else if (tag === 4) feature._geometry = pbf.pos;\n }\n}\n\n/**\n * @param pbf\n * @param feature\n */\nexport function readTag(pbf: Protobuf, feature: VectorTileFeature): void {\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const key = feature._keys[pbf.readVarint()];\n const value = feature._values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n}\n","// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport Protobuf from 'pbf';\nimport {FlatFeature, FlatIndexedGeometry, GeojsonGeometryInfo} from '@loaders.gl/schema';\nimport {classifyRings, project, readFeature} from '../../helpers/binary-util-functions';\n\n// Reduce GC by reusing variables\nlet endPos: number;\nlet cmd: number;\nlet cmdLen: number;\nlet length: number;\nlet x: number;\nlet y: number;\nlet i: number;\n\nexport const TEST_EXPORTS = {\n classifyRings\n};\n\nexport default class VectorTileFeature {\n properties: {[x: string]: string | number | boolean | null};\n extent: any;\n type: number;\n id: number | null;\n _pbf: Protobuf;\n _geometry: number;\n _keys: string[];\n _values: (string | number | boolean | null)[];\n _geometryInfo: GeojsonGeometryInfo;\n\n // eslint-disable-next-line max-params\n constructor(\n pbf: Protobuf,\n end: number,\n extent: any,\n keys: string[],\n values: (string | number | boolean | null)[],\n geometryInfo: GeojsonGeometryInfo\n ) {\n // Public\n this.properties = {};\n this.extent = extent;\n this.type = 0;\n this.id = null;\n\n // Private\n this._pbf = pbf;\n this._geometry = -1;\n this._keys = keys;\n this._values = values;\n this._geometryInfo = geometryInfo;\n\n pbf.readFields(readFeature, this, end);\n }\n\n // eslint-disable-next-line complexity, max-statements\n loadGeometry(): FlatIndexedGeometry {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n endPos = pbf.readVarint() + pbf.pos;\n cmd = 1;\n length = 0;\n x = 0;\n y = 0;\n i = 0;\n\n // Note: I attempted to replace the `data` array with a\n // Float32Array, but performance was worse, both using\n // `set()` and direct index access. Also, we cannot\n // know how large the buffer should be, so it would\n // increase memory usage\n const indices: number[] = []; // Indices where geometries start\n const data: number[] = []; // Flat array of coordinate data\n\n while (pbf.pos < endPos) {\n if (length <= 0) {\n cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) {\n // New line\n indices.push(i);\n }\n data.push(x, y);\n i += 2;\n } else if (cmd === 7) {\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (i > 0) {\n const start = indices[indices.length - 1]; // start index of polygon\n data.push(data[start], data[start + 1]); // closePolygon\n i += 2;\n }\n } else {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n return {data, indices};\n }\n\n /**\n *\n * @param transform\n * @returns result\n */\n _toBinaryCoordinates(transform) {\n // Expands the protobuf data to an intermediate Flat GeoJSON\n // data format, which maps closely to the binary data buffers.\n // It is similar to GeoJSON, but rather than storing the coordinates\n // in multidimensional arrays, we have a 1D `data` with all the\n // coordinates, and then index into this using the `indices`\n // parameter, e.g.\n //\n // geometry: {\n // type: 'Point', data: [1,2], indices: [0]\n // }\n // geometry: {\n // type: 'LineString', data: [1,2,3,4,...], indices: [0]\n // }\n // geometry: {\n // type: 'Polygon', data: [1,2,3,4,...], indices: [[0, 2]]\n // }\n // Thus the indices member lets us look up the relevant range\n // from the data array.\n // The Multi* versions of the above types share the same data\n // structure, just with multiple elements in the indices array\n const geom = this.loadGeometry();\n let geometry;\n\n // Apply the supplied transformation to data\n transform(geom.data, this);\n\n const coordLength = 2;\n\n // eslint-disable-next-line default-case\n switch (this.type) {\n case 1: // Point\n this._geometryInfo.pointFeaturesCount++;\n this._geometryInfo.pointPositionsCount += geom.indices.length;\n geometry = {type: 'Point', ...geom};\n break;\n\n case 2: // LineString\n this._geometryInfo.lineFeaturesCount++;\n this._geometryInfo.linePathsCount += geom.indices.length;\n this._geometryInfo.linePositionsCount += geom.data.length / coordLength;\n geometry = {type: 'LineString', ...geom};\n break;\n\n case 3: // Polygon\n geometry = classifyRings(geom);\n\n // Unlike Point & LineString geom.indices is a 2D array, thanks\n // to the classifyRings method\n this._geometryInfo.polygonFeaturesCount++;\n this._geometryInfo.polygonObjectsCount += geometry.indices.length;\n\n for (const indices of geometry.indices) {\n this._geometryInfo.polygonRingsCount += indices.length;\n }\n this._geometryInfo.polygonPositionsCount += geometry.data.length / coordLength;\n\n break;\n default:\n throw new Error(`Invalid geometry type: ${this.type}`);\n }\n\n const result: FlatFeature = {type: 'Feature', geometry, properties: this.properties};\n\n if (this.id !== null) {\n result.id = this.id;\n }\n\n return result;\n }\n\n toBinaryCoordinates(\n options: {x: number; y: number; z: number} | ((data: number[], feature: {extent: any}) => void)\n ): FlatFeature {\n if (typeof options === 'function') {\n return this._toBinaryCoordinates(options);\n }\n const {x, y, z} = options;\n const size = this.extent * Math.pow(2, z);\n const x0 = this.extent * x;\n const y0 = this.extent * y;\n\n return this._toBinaryCoordinates((data: number[]) => project(data, x0, y0, size));\n }\n}\n","/* eslint-disable indent */\n// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport VectorTileFeature from './vector-tile-feature';\nimport Protobuf from 'pbf';\nimport {GeojsonGeometryInfo} from '@loaders.gl/schema';\n\nexport default class VectorTileLayer {\n version: number;\n name: string;\n extent: number;\n length: number;\n _pbf: Protobuf;\n _keys: string[];\n _values: (string | number | boolean | null)[];\n _features: number[];\n constructor(pbf: Protobuf, end: number) {\n // Public\n this.version = 1;\n this.name = '';\n this.extent = 4096;\n this.length = 0;\n\n // Private\n this._pbf = pbf;\n this._keys = [];\n this._values = [];\n this._features = [];\n\n pbf.readFields(readLayer, this, end);\n\n this.length = this._features.length;\n }\n\n /**\n * return feature `i` from this layer as a `VectorTileFeature`\n *\n * @param index\n * @param geometryInfo\n * @returns {VectorTileFeature}\n */\n feature(i: number, geometryInfo: GeojsonGeometryInfo): VectorTileFeature {\n if (i < 0 || i >= this._features.length) {\n throw new Error('feature index out of bounds');\n }\n\n this._pbf.pos = this._features[i];\n\n const end = this._pbf.readVarint() + this._pbf.pos;\n return new VectorTileFeature(\n this._pbf,\n end,\n this.extent,\n this._keys,\n this._values,\n geometryInfo\n );\n }\n}\n\n/**\n *\n * @param tag\n * @param layer\n * @param pbf\n */\nfunction readLayer(tag: number, layer?: VectorTileLayer, pbf?: Protobuf): void {\n if (layer && pbf) {\n if (tag === 15) layer.version = pbf.readVarint();\n else if (tag === 1) layer.name = pbf.readString();\n else if (tag === 5) layer.extent = pbf.readVarint();\n else if (tag === 2) layer._features.push(pbf.pos);\n else if (tag === 3) layer._keys.push(pbf.readString());\n else if (tag === 4) layer._values.push(readValueMessage(pbf));\n }\n}\n\n/**\n *\n * @param pbf\n * @returns value\n */\nfunction readValueMessage(pbf: Protobuf) {\n let value: string | number | boolean | null = null;\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const tag = pbf.readVarint() >> 3;\n\n value =\n tag === 1\n ? pbf.readString()\n : tag === 2\n ? pbf.readFloat()\n : tag === 3\n ? pbf.readDouble()\n : tag === 4\n ? pbf.readVarint64()\n : tag === 5\n ? pbf.readVarint()\n : tag === 6\n ? pbf.readSVarint()\n : tag === 7\n ? pbf.readBoolean()\n : null;\n }\n\n return value;\n}\n","// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport VectorTileLayer from './vector-tile-layer';\nimport Protobuf from 'pbf';\n\nexport default class VectorTile {\n layers: {[x: string]: VectorTileLayer};\n constructor(pbf: Protobuf, end?: number) {\n this.layers = pbf.readFields(readTile, {}, end);\n }\n}\n\n/**\n *\n * @param tag\n * @param layers\n * @param pbf\n */\nfunction readTile(tag: number, layers?: {[x: string]: VectorTileLayer}, pbf?: Protobuf): void {\n if (tag === 3) {\n if (pbf) {\n const layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);\n if (layer.length && layers) {\n layers[layer.name] = layer;\n }\n }\n }\n}\n","import {flatGeojsonToBinary} from '@loaders.gl/gis';\nimport type {\n FlatFeature,\n Feature,\n GeojsonGeometryInfo,\n BinaryFeatures,\n GeoJSONRowTable\n} from '@loaders.gl/schema';\nimport Protobuf from 'pbf';\n\nimport type {MVTMapboxCoordinates, MVTOptions, MVTLoaderOptions} from '../lib/types';\n\nimport VectorTile from './mapbox-vector-tile/vector-tile';\nimport BinaryVectorTile from './binary-vector-tile/vector-tile';\nimport VectorTileFeatureBinary from './binary-vector-tile/vector-tile-feature';\nimport VectorTileFeatureMapBox from './mapbox-vector-tile/vector-tile-feature';\n\n/**\n * Parse MVT arrayBuffer and return GeoJSON.\n *\n * @param arrayBuffer A MVT arrayBuffer\n * @param options\n * @returns A GeoJSON geometry object or a binary representation\n */\nexport default function parseMVT(arrayBuffer: ArrayBuffer, options?: MVTLoaderOptions) {\n const mvtOptions = normalizeOptions(options);\n\n const shape = options?.gis?.format || options?.mvt?.shape;\n switch (shape) {\n case 'columnar-table': // binary + some JS arrays\n return {shape: 'columnar-table', data: parseToBinary(arrayBuffer, mvtOptions)};\n case 'geojson-row-table': {\n const table: GeoJSONRowTable = {\n shape: 'geojson-row-table',\n data: parseToGeojson(arrayBuffer, mvtOptions)\n };\n return table;\n }\n case 'geojson':\n return parseToGeojson(arrayBuffer, mvtOptions);\n case 'binary-geometry':\n return parseToBinary(arrayBuffer, mvtOptions);\n case 'binary':\n return parseToBinary(arrayBuffer, mvtOptions);\n default:\n throw new Error(shape);\n }\n}\n\nfunction parseToBinary(arrayBuffer: ArrayBuffer, options: MVTOptions): BinaryFeatures {\n const [flatGeoJsonFeatures, geometryInfo] = parseToFlatGeoJson(arrayBuffer, options);\n\n const binaryData = flatGeojsonToBinary(flatGeoJsonFeatures, geometryInfo);\n // Add the original byteLength (as a reasonable approximation of the size of the binary data)\n // TODO decide where to store extra fields like byteLength (header etc) and document\n // @ts-ignore\n binaryData.byteLength = arrayBuffer.byteLength;\n return binaryData;\n}\n\nfunction parseToFlatGeoJson(\n arrayBuffer: ArrayBuffer,\n options: MVTOptions\n): [FlatFeature[], GeojsonGeometryInfo] {\n const features: FlatFeature[] = [];\n const geometryInfo: GeojsonGeometryInfo = {\n coordLength: 2,\n pointPositionsCount: 0,\n pointFeaturesCount: 0,\n linePositionsCount: 0,\n linePathsCount: 0,\n lineFeaturesCount: 0,\n polygonPositionsCount: 0,\n polygonObjectsCount: 0,\n polygonRingsCount: 0,\n polygonFeaturesCount: 0\n };\n\n if (arrayBuffer.byteLength <= 0) {\n return [features, geometryInfo];\n }\n\n const tile = new BinaryVectorTile(new Protobuf(arrayBuffer));\n\n const selectedLayers =\n options && Array.isArray(options.layers) ? options.layers : Object.keys(tile.layers);\n\n selectedLayers.forEach((layerName: string) => {\n const vectorTileLayer = tile.layers[layerName];\n if (!vectorTileLayer) {\n return;\n }\n\n for (let i = 0; i < vectorTileLayer.length; i++) {\n const vectorTileFeature = vectorTileLayer.feature(i, geometryInfo);\n const decodedFeature = getDecodedFeatureBinary(vectorTileFeature, options, layerName);\n features.push(decodedFeature);\n }\n });\n\n return [features, geometryInfo];\n}\n\nfunction parseToGeojson(arrayBuffer: ArrayBuffer, options: MVTOptions): Feature[] {\n if (arrayBuffer.byteLength <= 0) {\n return [];\n }\n\n const features: MVTMapboxCoordinates[] = [];\n const tile = new VectorTile(new Protobuf(arrayBuffer));\n\n const selectedLayers = Array.isArray(options.layers) ? options.layers : Object.keys(tile.layers);\n\n selectedLayers.forEach((layerName: string) => {\n const vectorTileLayer = tile.layers[layerName];\n if (!vectorTileLayer) {\n return;\n }\n\n for (let i = 0; i < vectorTileLayer.length; i++) {\n const vectorTileFeature = vectorTileLayer.feature(i);\n const decodedFeature = getDecodedFeature(vectorTileFeature, options, layerName);\n features.push(decodedFeature);\n }\n });\n\n return features as Feature[];\n}\n\nfunction normalizeOptions(options?: MVTLoaderOptions): MVTOptions {\n if (!options?.mvt) {\n throw new Error('mvt options required');\n }\n\n // Validate\n const wgs84Coordinates = options.mvt?.coordinates === 'wgs84';\n const {tileIndex} = options.mvt;\n const hasTileIndex =\n tileIndex &&\n Number.isFinite(tileIndex.x) &&\n Number.isFinite(tileIndex.y) &&\n Number.isFinite(tileIndex.z);\n\n if (wgs84Coordinates && !hasTileIndex) {\n throw new Error('MVT Loader: WGS84 coordinates need tileIndex property');\n }\n\n return options.mvt;\n}\n\n/**\n * @param feature\n * @param options\n * @returns decoded feature\n */\nfunction getDecodedFeature(\n feature: VectorTileFeatureMapBox,\n options: MVTOptions,\n layerName: string\n): MVTMapboxCoordinates {\n const decodedFeature = feature.toGeoJSON(\n options.coordinates === 'wgs84' ? options.tileIndex : transformToLocalCoordinates\n );\n\n // Add layer name to GeoJSON properties\n if (options.layerProperty) {\n decodedFeature.properties[options.layerProperty] = layerName;\n }\n\n return decodedFeature;\n}\n\n/**\n * @param feature\n * @param options\n * @returns decoded binary feature\n */\nfunction getDecodedFeatureBinary(\n feature: VectorTileFeatureBinary,\n options: MVTOptions,\n layerName: string\n): FlatFeature {\n const decodedFeature = feature.toBinaryCoordinates(\n options.coordinates === 'wgs84' ? options.tileIndex : transformToLocalCoordinatesBinary\n );\n\n // Add layer name to GeoJSON properties\n if (options.layerProperty && decodedFeature.properties) {\n decodedFeature.properties[options.layerProperty] = layerName;\n }\n\n return decodedFeature;\n}\n\n/**\n * @param line\n * @param feature\n */\nfunction transformToLocalCoordinates(line: number[], feature: {extent: any}): void {\n // This function transforms local coordinates in a\n // [0 - bufferSize, this.extent + bufferSize] range to a\n // [0 - (bufferSize / this.extent), 1 + (bufferSize / this.extent)] range.\n // The resulting extent would be 1.\n const {extent} = feature;\n for (let i = 0; i < line.length; i++) {\n const p = line[i];\n p[0] /= extent;\n p[1] /= extent;\n }\n}\n\nfunction transformToLocalCoordinatesBinary(data: number[], feature: {extent: any}) {\n // For the binary code path, the feature data is just\n // one big flat array, so we just divide each value\n const {extent} = feature;\n for (let i = 0, il = data.length; i < il; ++i) {\n data[i] /= extent;\n }\n}\n","import type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {MVTLoaderOptions} from './lib/types';\nimport parseMVT from './lib/parse-mvt';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nconst DEFAULT_MVT_LOADER_OPTIONS: MVTLoaderOptions = {\n mvt: {\n shape: 'geojson',\n coordinates: 'local',\n layerProperty: 'layerName',\n layers: undefined,\n tileIndex: null\n }\n};\n\n/**\n * Worker loader for the Mapbox Vector Tile format\n */\nexport const MVTWorkerLoader: Loader = {\n name: 'Mapbox Vector Tile',\n id: 'mvt',\n module: 'mvt',\n version: VERSION,\n // Note: ArcGIS uses '.pbf' extension and 'application/octet-stream'\n extensions: ['mvt', 'pbf'],\n mimeTypes: [\n 'application/vnd.mapbox-vector-tile',\n 'application/x-protobuf'\n // 'application/octet-stream'\n ],\n worker: true,\n category: 'geometry',\n options: DEFAULT_MVT_LOADER_OPTIONS\n};\n\n/**\n * Loader for the Mapbox Vector Tile format\n */\nexport const MVTLoader: LoaderWithParser = {\n ...MVTWorkerLoader,\n parse: async (arrayBuffer, options?: MVTLoaderOptions) => parseMVT(arrayBuffer, options),\n parseSync: parseMVT,\n binary: true\n};\n","// based on https://github.com/cheton/is-electron\n// https://github.com/electron/electron/issues/2288\n/* eslint-disable complexity */\nexport default function isElectron(mockUserAgent?: string): boolean {\n // Renderer process\n if (\n typeof window !== 'undefined' &&\n typeof window.process === 'object' &&\n // @ts-expect-error\n window.process.type === 'renderer'\n ) {\n return true;\n }\n // Main process\n if (\n typeof process !== 'undefined' &&\n typeof process.versions === 'object' &&\n // eslint-disable-next-line\n Boolean(process.versions['electron'])\n ) {\n return true;\n }\n // Detect the user agent when the `nodeIntegration` option is set to true\n const realUserAgent =\n typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n if (userAgent && userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n return false;\n}\n","// This function is needed in initialization stages,\n// make sure it can be imported in isolation\n\nimport isElectron from './is-electron';\n\nexport default function isBrowser(): boolean {\n // Check if in browser by duck-typing Node context\n const isNode =\n // @ts-expect-error\n typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n\n return !isNode || isElectron();\n}\n\n// document does not exist on worker thread\nexport function isBrowserMainThread(): boolean {\n return isBrowser() && typeof document !== 'undefined';\n}\n","import checkIfBrowser from '../lib/is-browser';\n\nexport {self, window, global, document, process, console} from '../lib/globals';\n\n// Extract injected version from package.json (injected by babel plugin)\n// @ts-expect-error\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nexport const isBrowser = checkIfBrowser();\n","// probe.gl, MIT license\n\nfunction getStorage(type): Storage {\n try {\n // @ts-expect-error\n const storage: Storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\n\n// Store keys in local storage via simple interface\nexport class LocalStorage {\n storage: Storage;\n id: string;\n config: Required;\n\n constructor(id: string, defaultConfig: Required, type = 'sessionStorage') {\n this.storage = getStorage(type);\n this.id = id;\n this.config = defaultConfig;\n this._loadConfiguration();\n }\n\n getConfiguration(): Required {\n return this.config;\n }\n\n setConfiguration(configuration: Configuration): void {\n Object.assign(this.config, configuration);\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n }\n\n // Get config from persistent store, if available\n _loadConfiguration() {\n let configuration = {};\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n Object.assign(this.config, configuration);\n return this;\n }\n}\n","// TODO: Currently unused, keeping in case we want it later for log formatting\nexport function formatTime(ms: number): string {\n let formatted;\n if (ms < 10) {\n formatted = `${ms.toFixed(2)}ms`;\n } else if (ms < 100) {\n formatted = `${ms.toFixed(1)}ms`;\n } else if (ms < 1000) {\n formatted = `${ms.toFixed(0)}ms`;\n } else {\n formatted = `${(ms / 1000).toFixed(2)}s`;\n }\n return formatted;\n}\n\nexport function leftPad(string: string, length: number = 8): string {\n const padLength = Math.max(length - string.length, 0);\n return `${' '.repeat(padLength)}${string}`;\n}\n\nexport function rightPad(string: string, length: number = 8): string {\n const padLength = Math.max(length - string.length, 0);\n return `${string}${' '.repeat(padLength)}`;\n}\n\nexport function formatValue(v: unknown, opts: {isInteger?: boolean} = {}): string {\n const EPSILON = 1e-16;\n const {isInteger = false} = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n // @ts-expect-error\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\n/** Helper to formatValue */\nfunction formatArrayValue(v, opts) {\n const {maxElts = 16, size = 1} = opts;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], opts);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\n/** Inspired by https://github.com/hughsk/console-image (MIT license) */\nexport function formatImage(image, message, scale, maxWidth = 600) {\n const imageUrl = image.src.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n if (image.width > maxWidth) {\n scale = Math.min(scale, maxWidth / image.width);\n }\n\n const width = image.width * scale;\n const height = image.height * scale;\n\n const style = [\n 'font-size:1px;',\n `padding:${Math.floor(height / 2)}px ${Math.floor(width / 2)}px;`,\n `line-height:${height}px;`,\n `background:url(${imageUrl});`,\n `background-size:${width}px ${height}px;`,\n 'color:transparent;'\n ].join('');\n\n return [`${message} %c+`, style];\n}\n","import {isBrowser} from '@probe.gl/env';\n\nexport enum COLOR {\n BLACK = 30,\n RED = 31,\n GREEN = 32,\n YELLOW = 33,\n BLUE = 34,\n MAGENTA = 35,\n CYAN = 36,\n WHITE = 37,\n\n BRIGHT_BLACK = 90,\n BRIGHT_RED = 91,\n BRIGHT_GREEN = 92,\n BRIGHT_YELLOW = 93,\n BRIGHT_BLUE = 94,\n BRIGHT_MAGENTA = 95,\n BRIGHT_CYAN = 96,\n BRIGHT_WHITE = 97\n}\n\nfunction getColor(color): number {\n return typeof color === 'string' ? COLOR[color.toUpperCase()] || COLOR.WHITE : color;\n}\n\nexport function addColor(string, color, background?): string {\n if (!isBrowser && typeof string === 'string') {\n if (color) {\n color = getColor(color);\n string = `\\u001b[${color}m${string}\\u001b[39m`;\n }\n if (background) {\n // background colors values are +10\n color = getColor(background);\n string = `\\u001b[${background + 10}m${string}\\u001b[49m`;\n }\n }\n return string;\n}\n","export default function assert(condition: unknown, message?: string): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document,\n process: typeof process === 'object' && process\n};\n\nconst global_ = globalThis;\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst document_ = globals.document || {};\nconst process_ = globals.process || {};\nconst console_ = console;\n\nexport {\n self_ as self,\n window_ as window,\n global_ as global,\n document_ as document,\n process_ as process,\n console_ as console\n};\n","// probe.gl, MIT license\n\nimport {window, process, isBrowser} from '@probe.gl/env';\n\n/** Get best timer available. */\nexport function getHiResTimestamp() {\n let timestamp;\n if (isBrowser && 'performance' in window) {\n timestamp = window?.performance?.now?.();\n } else if ('hrtime' in process) {\n // @ts-ignore\n const timeParts = process?.hrtime?.();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n","// probe.gl, MIT license\n\n/* eslint-disable no-console */\nimport {VERSION, isBrowser} from '@probe.gl/env';\nimport {LocalStorage} from './utils/local-storage';\nimport {formatImage, formatTime, leftPad} from './utils/formatters';\nimport {addColor} from './utils/color';\nimport {autobind} from './utils/autobind';\nimport assert from './utils/assert';\nimport {getHiResTimestamp} from './utils/hi-res-timestamp';\n\n// Instrumentation in other packages may override console methods, so preserve them here\nconst originalConsole = {\n debug: isBrowser ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\n\ntype Table = Record;\n\ntype LogFunction = () => void;\n\ntype LogOptions = {\n method?;\n time?;\n total?: number;\n delta?: number;\n tag?: string;\n message?: string;\n once?: boolean;\n nothrottle?: boolean;\n args?: any;\n};\n\ntype LogSettings = {\n enabled?: boolean;\n level?: number;\n [key: string]: any;\n};\n\nconst DEFAULT_SETTINGS: Required = {\n enabled: true,\n level: 0\n};\n\nfunction noop() {} // eslint-disable-line @typescript-eslint/no-empty-function\n\nconst cache = {};\nconst ONCE = {once: true};\n\ntype LogConfiguration = {\n enabled?: boolean;\n level?: number;\n};\n\n/** A console wrapper */\n\nexport class Log {\n static VERSION = VERSION;\n\n id: string;\n VERSION: string = VERSION;\n _startTs: number = getHiResTimestamp();\n _deltaTs: number = getHiResTimestamp();\n _storage: LocalStorage;\n userData = {};\n\n // TODO - fix support from throttling groups\n LOG_THROTTLE_TIMEOUT: number = 0; // Time before throttled messages are logged again\n\n constructor({id} = {id: ''}) {\n this.id = id;\n this.userData = {};\n this._storage = new LocalStorage(`__probe-${this.id}__`, DEFAULT_SETTINGS);\n\n this.timeStamp(`${this.id} started`);\n\n autobind(this);\n Object.seal(this);\n }\n\n set level(newLevel: number) {\n this.setLevel(newLevel);\n }\n\n get level(): number {\n return this.getLevel();\n }\n\n isEnabled(): boolean {\n return this._storage.config.enabled;\n }\n\n getLevel(): number {\n return this._storage.config.level;\n }\n\n /** @return milliseconds, with fractions */\n getTotal(): number {\n return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n }\n\n /** @return milliseconds, with fractions */\n getDelta(): number {\n return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n }\n\n /** @deprecated use logLevel */\n set priority(newPriority: number) {\n this.level = newPriority;\n }\n\n /** @deprecated use logLevel */\n get priority(): number {\n return this.level;\n }\n\n /** @deprecated use logLevel */\n getPriority(): number {\n return this.level;\n }\n\n // Configure\n\n enable(enabled: boolean = true): this {\n this._storage.setConfiguration({enabled});\n return this;\n }\n\n setLevel(level: number): this {\n this._storage.setConfiguration({level});\n return this;\n }\n\n /** return the current status of the setting */\n get(setting: string): any {\n return this._storage.config[setting];\n }\n\n // update the status of the setting\n set(setting: string, value: any): void {\n this._storage.setConfiguration({[setting]: value});\n }\n\n /** Logs the current settings as a table */\n settings(): void {\n if (console.table) {\n console.table(this._storage.config);\n } else {\n console.log(this._storage.config);\n }\n }\n\n // Unconditional logging\n\n assert(condition: unknown, message?: string): asserts condition {\n assert(condition, message);\n }\n\n /** Warn, but only once, no console flooding */\n warn(message: string, ...args): LogFunction;\n warn(message: string): LogFunction {\n return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n }\n\n /** Print an error */\n error(message: string, ...args): LogFunction;\n error(message: string): LogFunction {\n return this._getLogFunction(0, message, originalConsole.error, arguments);\n }\n\n /** Print a deprecation warning */\n deprecated(oldUsage: string, newUsage: string): LogFunction {\n return this.warn(`\\`${oldUsage}\\` is deprecated and will be removed \\\nin a later version. Use \\`${newUsage}\\` instead`);\n }\n\n /** Print a removal warning */\n removed(oldUsage: string, newUsage: string): LogFunction {\n return this.error(`\\`${oldUsage}\\` has been removed. Use \\`${newUsage}\\` instead`);\n }\n\n // Conditional logging\n\n /** Log to a group */\n probe(logLevel, message?, ...args): LogFunction;\n probe(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n\n /** Log a debug message */\n log(logLevel, message?, ...args): LogFunction;\n log(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n }\n\n /** Log a normal message */\n info(logLevel, message?, ...args): LogFunction;\n info(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n\n /** Log a normal message, but only once, no console flooding */\n once(logLevel, message?, ...args): LogFunction;\n once(logLevel, message?, ...args) {\n return this._getLogFunction(\n logLevel,\n message,\n originalConsole.debug || originalConsole.info,\n arguments,\n ONCE\n );\n }\n\n /** Logs an object as a table */\n table(logLevel, table?, columns?): LogFunction {\n if (table) {\n // @ts-expect-error Not clear how this works, columns being passed as arguments\n return this._getLogFunction(logLevel, table, console.table || noop, columns && [columns], {\n tag: getTableHeader(table)\n });\n }\n return noop;\n }\n\n /** logs an image under Chrome */\n image({logLevel, priority, image, message = '', scale = 1}): LogFunction {\n if (!this._shouldLog(logLevel || priority)) {\n return noop;\n }\n return isBrowser\n ? logImageInBrowser({image, message, scale})\n : logImageInNode({image, message, scale});\n }\n\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n\n timeEnd(logLevel, message) {\n return this._getLogFunction(\n logLevel,\n message,\n console.timeEnd ? console.timeEnd : console.info\n );\n }\n\n timeStamp(logLevel, message?) {\n return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n }\n\n group(logLevel, message, opts = {collapsed: false}) {\n const options = normalizeArguments({logLevel, message, opts});\n const {collapsed} = opts;\n // @ts-expect-error\n options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n\n return this._getLogFunction(options);\n }\n\n groupCollapsed(logLevel, message, opts = {}) {\n return this.group(logLevel, message, Object.assign({}, opts, {collapsed: true}));\n }\n\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n }\n\n // EXPERIMENTAL\n\n withGroup(logLevel: number, message: string, func: Function): void {\n this.group(logLevel, message)();\n\n try {\n func();\n } finally {\n this.groupEnd(logLevel)();\n }\n }\n\n trace(): void {\n if (console.trace) {\n console.trace();\n }\n }\n\n // PRIVATE METHODS\n\n /** Deduces log level from a variety of arguments */\n _shouldLog(logLevel: unknown): boolean {\n return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n }\n\n _getLogFunction(\n logLevel: unknown,\n message?: unknown,\n method?: Function,\n args?: IArguments,\n opts?: LogOptions\n ): LogFunction {\n if (this._shouldLog(logLevel)) {\n // normalized opts + timings\n opts = normalizeArguments({logLevel, message, args, opts});\n method = method || opts.method;\n assert(method);\n\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n // reset delta timer\n this._deltaTs = getHiResTimestamp();\n\n const tag = opts.tag || opts.message;\n\n if (opts.once) {\n if (!cache[tag]) {\n cache[tag] = getHiResTimestamp();\n } else {\n return noop;\n }\n }\n\n // TODO - Make throttling work with groups\n // if (opts.nothrottle || !throttle(tag, this.LOG_THROTTLE_TIMEOUT)) {\n // return noop;\n // }\n\n message = decorateMessage(this.id, opts.message, opts);\n\n // Bind console function so that it can be called after being returned\n return method.bind(console, message, ...opts.args);\n }\n return noop;\n }\n}\n\n/**\n * Get logLevel from first argument:\n * - log(logLevel, message, args) => logLevel\n * - log(message, args) => 0\n * - log({logLevel, ...}, message, args) => logLevel\n * - log({logLevel, message, args}) => logLevel\n */\nfunction normalizeLogLevel(logLevel: unknown): number {\n if (!logLevel) {\n return 0;\n }\n let resolvedLevel;\n\n switch (typeof logLevel) {\n case 'number':\n resolvedLevel = logLevel;\n break;\n\n case 'object':\n // Backward compatibility\n // TODO - deprecate `priority`\n // @ts-expect-error\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n\n default:\n return 0;\n }\n // 'log level must be a number'\n assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n\n return resolvedLevel;\n}\n\n/**\n * \"Normalizes\" the various argument patterns into an object with known types\n * - log(logLevel, message, args) => {logLevel, message, args}\n * - log(message, args) => {logLevel: 0, message, args}\n * - log({logLevel, ...}, message, args) => {logLevel, message, args}\n * - log({logLevel, message, args}) => {logLevel, message, args}\n */\nexport function normalizeArguments(opts: {\n logLevel;\n message;\n collapsed?: boolean;\n args?: IArguments;\n opts?;\n}): {\n logLevel: number;\n message: string;\n args: any[];\n} {\n const {logLevel, message} = opts;\n opts.logLevel = normalizeLogLevel(logLevel);\n\n // We use `arguments` instead of rest parameters (...args) because IE\n // does not support the syntax. Rest parameters is transpiled to code with\n // perf impact. Doing it here instead avoids constructing args when logging is\n // disabled.\n // TODO - remove when/if IE support is dropped\n const args: any[] = opts.args ? Array.from(opts.args) : [];\n // args should only contain arguments that appear after `message`\n // eslint-disable-next-line no-empty\n while (args.length && args.shift() !== message) {}\n\n switch (typeof logLevel) {\n case 'string':\n case 'function':\n if (message !== undefined) {\n args.unshift(message);\n }\n opts.message = logLevel;\n break;\n\n case 'object':\n Object.assign(opts, logLevel);\n break;\n\n default:\n }\n\n // Resolve functions into strings by calling them\n if (typeof opts.message === 'function') {\n opts.message = opts.message();\n }\n const messageType = typeof opts.message;\n // 'log message must be a string' or object\n assert(messageType === 'string' || messageType === 'object');\n\n // original opts + normalized opts + opts arg + fixed up message\n return Object.assign(opts, {args}, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n if (typeof message === 'string') {\n const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n message = opts.time ? `${id}: ${time} ${message}` : `${id}: ${message}`;\n message = addColor(message, opts.color, opts.background);\n }\n return message;\n}\n\n/** @deprecated Function removed */\nfunction logImageInNode({image, message = '', scale = 1}) {\n console.warn('removed');\n return noop;\n}\n\nfunction logImageInBrowser({image, message = '', scale = 1}) {\n if (typeof image === 'string') {\n const img = new Image();\n img.onload = () => {\n const args = formatImage(img, message, scale);\n console.log(...args);\n };\n img.src = image;\n return noop;\n }\n const element = image.nodeName || '';\n if (element.toLowerCase() === 'img') {\n console.log(...formatImage(image, message, scale));\n return noop;\n }\n if (element.toLowerCase() === 'canvas') {\n const img = new Image();\n img.onload = () => console.log(...formatImage(img, message, scale));\n img.src = image.toDataURL();\n return noop;\n }\n return noop;\n}\n\nfunction getTableHeader(table: Table): string {\n for (const key in table) {\n for (const title in table[key]) {\n return title || 'untitled';\n }\n }\n return 'empty';\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/**\n * Binds the \"this\" argument of all functions on a class instance to the instance\n * @param obj - class instance (typically a react component)\n */\nexport function autobind(obj: object, predefined = ['constructor']): void {\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n for (const key of propNames) {\n if (typeof obj[key] === 'function') {\n if (!predefined.find(name => key === name)) {\n obj[key] = obj[key].bind(obj);\n }\n }\n }\n}\n","import {Log} from '@probe.gl/log';\n\nexport const log = new Log({id: 'luma.gl'});\n","// Avoid bundling assert polyfill module\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'luma.gl: assertion failed.');\n }\n}\n","import {assert} from './assert';\n\nconst ERR_CONTEXT = 'Invalid WebGLRenderingContext';\nexport const ERR_WEBGL = ERR_CONTEXT;\nexport const ERR_WEBGL2 = 'Requires WebGL2';\n\nexport function isWebGL(gl) {\n if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {\n return true;\n }\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n // Look for debug contexts, headless gl etc\n return Boolean(gl && Number.isFinite(gl._version));\n}\n\nexport function isWebGL2(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n // Look for debug contexts, headless gl etc\n return Boolean(gl && gl._version === 2);\n}\n\nexport function getWebGL2Context(gl) {\n return isWebGL2(gl) ? gl : null;\n}\n\nexport function assertWebGLContext(gl) {\n assert(isWebGL(gl), ERR_CONTEXT);\n return gl;\n}\n\nexport function assertWebGL2Context(gl) {\n assert(isWebGL2(gl), ERR_WEBGL2);\n return gl;\n}\n","/*\n** Copyright (c) 2015 The Khronos Group Inc.\n**\n** Permission is hereby granted, free of charge, to any person obtaining a\n** copy of this software and/or associated documentation files (the\n** \"Materials\"), to deal in the Materials without restriction, including\n** without limitation the rights to use, copy, modify, merge, publish,\n** distribute, sublicense, and/or sell copies of the Materials, and to\n** permit persons to whom the Materials are furnished to do so, subject to\n** the following conditions:\n**\n** The above copyright notice and this permission notice shall be included\n** in all copies or substantial portions of the Materials.\n**\n** THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\n*/\n\n// Modified to use ES6 and polyfill a provided context rather than\n// the global class.\n\n// @ts-nocheck external code\n\nconst glErrorShadow = {};\n\nfunction error(msg) {\n if (globalThis.console && globalThis.console.error) {\n globalThis.console.error(msg);\n }\n}\n\nfunction log(msg) {\n if (globalThis.console && globalThis.console.log) {\n globalThis.console.log(msg);\n }\n}\n\nfunction synthesizeGLError(err, opt_msg) {\n glErrorShadow[err] = true;\n if (opt_msg !== undefined) {\n error(opt_msg);\n }\n}\n\nfunction wrapGLError(gl) {\n const f = gl.getError;\n gl.getError = function getError() {\n let err;\n do {\n err = f.apply(gl);\n if (err !== gl.NO_ERROR) {\n glErrorShadow[err] = true;\n }\n } while (err !== gl.NO_ERROR);\n\n for (err in glErrorShadow) {\n if (glErrorShadow[err]) {\n delete glErrorShadow[err];\n return parseInt(err, 10);\n }\n }\n\n return gl.NO_ERROR;\n };\n}\n\nconst WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {\n const gl = ext.gl;\n\n this.ext = ext;\n this.isAlive = true;\n this.hasBeenBound = false;\n\n this.elementArrayBuffer = null;\n this.attribs = new Array(ext.maxVertexAttribs);\n for (let n = 0; n < this.attribs.length; n++) {\n const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);\n this.attribs[n] = attrib;\n }\n\n this.maxAttrib = 0;\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {\n this.enabled = false;\n this.buffer = null;\n this.size = 4;\n this.type = gl.FLOAT;\n this.normalized = false;\n this.stride = 16;\n this.offset = 0;\n\n this.cached = '';\n this.recache();\n};\nWebGLVertexArrayObjectOES.VertexAttrib.prototype.recache = function recache() {\n this.cached = [this.size, this.type, this.normalized, this.stride, this.offset].join(':');\n};\n\nconst OESVertexArrayObject = function OESVertexArrayObject(gl) {\n const self = this;\n this.gl = gl;\n\n wrapGLError(gl);\n\n const original = (this.original = {\n getParameter: gl.getParameter,\n enableVertexAttribArray: gl.enableVertexAttribArray,\n disableVertexAttribArray: gl.disableVertexAttribArray,\n bindBuffer: gl.bindBuffer,\n getVertexAttrib: gl.getVertexAttrib,\n vertexAttribPointer: gl.vertexAttribPointer\n });\n\n gl.getParameter = function getParameter(pname) {\n if (pname === self.VERTEX_ARRAY_BINDING_OES) {\n if (self.currentVertexArrayObject === self.defaultVertexArrayObject) {\n return null;\n }\n return self.currentVertexArrayObject;\n }\n return original.getParameter.apply(this, arguments);\n };\n\n gl.enableVertexAttribArray = function enableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = true;\n return original.enableVertexAttribArray.apply(this, arguments);\n };\n gl.disableVertexAttribArray = function disableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = false;\n return original.disableVertexAttribArray.apply(this, arguments);\n };\n\n gl.bindBuffer = function bindBuffer(target, buffer) {\n switch (target) {\n case gl.ARRAY_BUFFER:\n self.currentArrayBuffer = buffer;\n break;\n case gl.ELEMENT_ARRAY_BUFFER:\n self.currentVertexArrayObject.elementArrayBuffer = buffer;\n break;\n default:\n }\n return original.bindBuffer.apply(this, arguments);\n };\n\n gl.getVertexAttrib = function getVertexAttrib(index, pname) {\n const vao = self.currentVertexArrayObject;\n const attrib = vao.attribs[index];\n switch (pname) {\n case gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:\n return attrib.buffer;\n case gl.VERTEX_ATTRIB_ARRAY_ENABLED:\n return attrib.enabled;\n case gl.VERTEX_ATTRIB_ARRAY_SIZE:\n return attrib.size;\n case gl.VERTEX_ATTRIB_ARRAY_STRIDE:\n return attrib.stride;\n case gl.VERTEX_ATTRIB_ARRAY_TYPE:\n return attrib.type;\n case gl.VERTEX_ATTRIB_ARRAY_NORMALIZED:\n return attrib.normalized;\n default:\n return original.getVertexAttrib.apply(this, arguments);\n }\n };\n\n gl.vertexAttribPointer = function vertexAttribPointer(\n indx,\n size,\n type,\n normalized,\n stride,\n offset\n ) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, indx);\n const attrib = vao.attribs[indx];\n attrib.buffer = self.currentArrayBuffer;\n attrib.size = size;\n attrib.type = type;\n attrib.normalized = normalized;\n attrib.stride = stride;\n attrib.offset = offset;\n attrib.recache();\n return original.vertexAttribPointer.apply(this, arguments);\n };\n\n if (gl.instrumentExtension) {\n gl.instrumentExtension(this, 'OES_vertex_array_object');\n }\n\n // undefined for headless gl\n if (gl.canvas) {\n gl.canvas.addEventListener(\n 'webglcontextrestored',\n () => {\n log('OESVertexArrayObject emulation library context restored');\n self.reset_();\n },\n true\n );\n }\n\n this.reset_();\n};\n\nOESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES = 0x85b5;\n\nOESVertexArrayObject.prototype.reset_ = function reset_() {\n const contextWasLost = this.vertexArrayObjects !== undefined;\n if (contextWasLost) {\n for (let ii = 0; ii < this.vertexArrayObjects.length; ++ii) {\n this.vertexArrayObjects.isAlive = false;\n }\n }\n const gl = this.gl;\n this.maxVertexAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n\n this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);\n this.currentVertexArrayObject = null;\n this.currentArrayBuffer = null;\n this.vertexArrayObjects = [this.defaultVertexArrayObject];\n\n this.bindVertexArrayOES(null);\n};\n\nOESVertexArrayObject.prototype.createVertexArrayOES = function createVertexArrayOES() {\n const arrayObject = new WebGLVertexArrayObjectOES(this);\n this.vertexArrayObjects.push(arrayObject);\n return arrayObject;\n};\n\nOESVertexArrayObject.prototype.deleteVertexArrayOES = function deleteVertexArrayOES(arrayObject) {\n arrayObject.isAlive = false;\n this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);\n if (this.currentVertexArrayObject === arrayObject) {\n this.bindVertexArrayOES(null);\n }\n};\n\nOESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arrayObject) {\n if (arrayObject && arrayObject instanceof WebGLVertexArrayObjectOES) {\n if (arrayObject.hasBeenBound && arrayObject.ext === this) {\n return true;\n }\n }\n return false;\n};\n\nOESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {\n const gl = this.gl;\n if (arrayObject && !arrayObject.isAlive) {\n synthesizeGLError(\n gl.INVALID_OPERATION,\n 'bindVertexArrayOES: attempt to bind deleted arrayObject'\n );\n return;\n }\n const original = this.original;\n\n const oldVAO = this.currentVertexArrayObject;\n this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;\n this.currentVertexArrayObject.hasBeenBound = true;\n const newVAO = this.currentVertexArrayObject;\n\n if (oldVAO === newVAO) {\n return;\n }\n\n if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {\n original.bindBuffer.call(gl, gl.ELEMENT_ARRAY_BUFFER, newVAO.elementArrayBuffer);\n }\n\n let currentBinding = this.currentArrayBuffer;\n const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);\n for (let n = 0; n <= maxAttrib; n++) {\n const attrib = newVAO.attribs[n];\n const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;\n\n if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {\n if (attrib.enabled) {\n original.enableVertexAttribArray.call(gl, n);\n } else {\n original.disableVertexAttribArray.call(gl, n);\n }\n }\n\n if (attrib.enabled) {\n let bufferChanged = false;\n if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {\n if (currentBinding !== attrib.buffer) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, attrib.buffer);\n currentBinding = attrib.buffer;\n }\n bufferChanged = true;\n }\n\n if (bufferChanged || attrib.cached !== oldAttrib.cached) {\n original.vertexAttribPointer.call(\n gl,\n n,\n attrib.size,\n attrib.type,\n attrib.normalized,\n attrib.stride,\n attrib.offset\n );\n }\n }\n }\n\n if (this.currentArrayBuffer !== currentBinding) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, this.currentArrayBuffer);\n }\n};\n\nexport function polyfillVertexArrayObject(gl) {\n if (typeof gl.createVertexArray === 'function') {\n // VAOs directly supported on object (i.e. WebGL 2 context)\n return;\n }\n\n const original_getSupportedExtensions = gl.getSupportedExtensions;\n gl.getSupportedExtensions = function getSupportedExtensions() {\n const list = original_getSupportedExtensions.call(this) || [];\n if (list.indexOf('OES_vertex_array_object') < 0) {\n list.push('OES_vertex_array_object');\n }\n return list;\n };\n\n const original_getExtension = gl.getExtension;\n gl.getExtension = function getExtension(name) {\n const ext = original_getExtension.call(this, name);\n if (ext) {\n return ext;\n }\n if (name !== 'OES_vertex_array_object') {\n return null;\n }\n\n if (!gl.__OESVertexArrayObject) {\n this.__OESVertexArrayObject = new OESVertexArrayObject(this);\n }\n return this.__OESVertexArrayObject;\n };\n}\n","/* eslint-disable no-inline-comments, max-len, camelcase */\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../utils/webgl-checks';\n\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\n\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245; // vendor string of the graphics driver.\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246; // renderer string of the graphics driver.\n\nconst getWebGL2ValueOrZero = gl => (!isWebGL2(gl) ? 0 : undefined);\n\n// if a function returns undefined in this table,\n// the original getParameter will be called, defeating the override\nconst WEBGL_PARAMETERS = {\n [GL.READ_BUFFER]: gl => (!isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined),\n\n // WebGL2 context parameters\n [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: gl => (!isWebGL2(gl) ? GL_DONT_CARE : undefined),\n\n [GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,\n\n [GL.SAMPLES]: getWebGL2ValueOrZero,\n\n // WebGL2 extension context parameters\n [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {\n const ext = isWebGL2(gl)\n ? gl.getExtension(EXT_disjoint_timer_query_webgl2)\n : gl.getExtension(EXT_disjoint_timer_query);\n return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n },\n\n // Extension fixed values\n [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);\n },\n\n [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);\n },\n\n // Extension LIMITS\n [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {\n const ext = gl.luma.extensions[EXT_texture_filter_anisotropic];\n return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n },\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,\n [GL.MAX_COLOR_ATTACHMENTS]: (gl, getParameter) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n }\n return undefined;\n },\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_DRAW_BUFFERS]: gl => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n }\n return undefined;\n },\n [GL.MAX_ELEMENT_INDEX]:\n // Guess: per webglstats.com 99.6% of webgl2 supports 2147483647\n gl => (gl.getExtension(OES_element_index) ? 2147483647 : 65535),\n [GL.MAX_ELEMENTS_INDICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n gl => (gl.getExtension(OES_element_index) ? 16777216 : 65535),\n [GL.MAX_ELEMENTS_VERTICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n gl => 16777216,\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_SAMPLES]: getWebGL2ValueOrZero,\n [GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,\n [GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,\n [GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero\n};\n\n// A \"replacement\" gl.getParameter that accepts \"enums\" from extensions and WebGL2\n// and returns reasonably safe defaults\nexport function getParameterPolyfill(gl, originalGetParameter, pname) {\n // Return mock limits (usually 0) for WebGL2 constants to ensure these\n // can be queries without error\n const limit = WEBGL_PARAMETERS[pname];\n // @ts-ignore TODO pname parameter not declared\n const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n const result = value !== undefined ? value : originalGetParameter(pname);\n return result;\n}\n","import GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\nimport {isWebGL2} from '../utils/webgl-checks';\n\nimport {getParameterPolyfill} from './get-parameter-polyfill';\n\nconst OES_vertex_array_object = 'OES_vertex_array_object';\nconst ANGLE_instanced_arrays = 'ANGLE_instanced_arrays';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\n\nconst ERR_VAO_NOT_SUPPORTED = 'VertexArray requires WebGL2 or OES_vertex_array_object extension';\n\n// Return object with webgl2 flag and an extension\nfunction getExtensionData(gl, extension) {\n return {\n webgl2: isWebGL2(gl),\n ext: gl.getExtension(extension)\n };\n}\n\n// function mapExtensionConstant(gl, constant) {\n// switch (constant) {\n// case ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES: return GL.FRAGMENT_SHADER_DERIVATIVE_HINT;\n// }\n// }\n\nexport const WEBGL2_CONTEXT_POLYFILLS = {\n // POLYFILL TABLE\n [OES_vertex_array_object]: {\n meta: {suffix: 'OES'},\n // NEW METHODS\n createVertexArray: () => {\n assert(false, ERR_VAO_NOT_SUPPORTED);\n },\n deleteVertexArray: () => {},\n bindVertexArray: () => {},\n isVertexArray: () => false\n },\n [ANGLE_instanced_arrays]: {\n meta: {\n suffix: 'ANGLE'\n // constants: {\n // VERTEX_ATTRIB_ARRAY_DIVISOR: 'VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE'\n // }\n },\n vertexAttribDivisor(location, divisor) {\n // Accept divisor 0 even if instancing is not supported (0 = no instancing)\n assert(divisor === 0, 'WebGL instanced rendering not supported');\n },\n drawElementsInstanced: () => {},\n drawArraysInstanced: () => {}\n },\n [WEBGL_draw_buffers]: {\n meta: {\n suffix: 'WEBGL'\n },\n drawBuffers: () => {\n assert(false);\n }\n },\n [EXT_disjoint_timer_query]: {\n meta: {suffix: 'EXT'},\n // WebGL1: Polyfills the WebGL2 Query API\n createQuery: () => {\n assert(false);\n },\n deleteQuery: () => {\n assert(false);\n },\n beginQuery: () => {\n assert(false);\n },\n endQuery: () => {},\n getQuery(handle, pname) {\n // @ts-ignore\n return this.getQueryObject(handle, pname);\n },\n // The WebGL1 extension uses getQueryObject rather then getQueryParameter\n getQueryParameter(handle, pname) {\n // @ts-ignore\n return this.getQueryObject(handle, pname);\n },\n getQueryObject: () => {}\n }\n};\n\nexport const WEBGL2_CONTEXT_OVERRIDES = {\n // Ensure readBuffer is a no-op\n readBuffer: (gl, originalFunc, attachment) => {\n if (isWebGL2(gl)) {\n originalFunc(attachment);\n } else {\n // assert(attachment !== GL_COLOR_ATTACHMENT0 && attachment !== GL_FRONT);\n }\n },\n // Override for getVertexAttrib that returns sane values for non-WebGL1 constants\n getVertexAttrib: (gl, originalFunc, location, pname) => {\n // const gl = this; // eslint-disable-line\n const {webgl2, ext} = getExtensionData(gl, ANGLE_instanced_arrays);\n\n let result;\n switch (pname) {\n // WebGL1 attributes will never be integer\n case GL.VERTEX_ATTRIB_ARRAY_INTEGER:\n result = !webgl2 ? false : undefined;\n break;\n // if instancing is not available, return 0 meaning divisor has not been set\n case GL.VERTEX_ATTRIB_ARRAY_DIVISOR:\n result = !webgl2 && !ext ? 0 : undefined;\n break;\n default:\n }\n\n return result !== undefined ? result : originalFunc(location, pname);\n },\n // Handle transform feedback and uniform block queries in WebGL1\n getProgramParameter: (gl, originalFunc, program, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.TRANSFORM_FEEDBACK_BUFFER_MODE:\n return GL.SEPARATE_ATTRIBS;\n case GL.TRANSFORM_FEEDBACK_VARYINGS:\n return 0;\n case GL.ACTIVE_UNIFORM_BLOCKS:\n return 0;\n default:\n }\n }\n return originalFunc(program, pname);\n },\n getInternalformatParameter: (gl, originalFunc, target, format, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.SAMPLES:\n return new Int32Array([0]);\n default:\n }\n }\n return gl.getInternalformatParameter(target, format, pname);\n },\n getTexParameter(gl, originalFunc, target, pname) {\n switch (pname) {\n case GL.TEXTURE_MAX_ANISOTROPY_EXT:\n const {extensions} = gl.luma;\n const ext = extensions[EXT_texture_filter_anisotropic];\n pname = (ext && ext.TEXTURE_MAX_ANISOTROPY_EXT) || GL.TEXTURE_MAX_ANISOTROPY_EXT;\n break;\n default:\n }\n return originalFunc(target, pname);\n },\n getParameter: getParameterPolyfill,\n hint(gl, originalFunc, pname, value) {\n // TODO - handle GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // switch (pname) {\n // case GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // }\n return originalFunc(pname, value);\n }\n};\n","// WebGL1/WebGL2 extension polyfill support\n//\n// Provides a function that creates polyfills for WebGL2 functions based\n// on available extensions and installs them on a supplied target (could be\n// the WebGLContext or its prototype, or a separate object).\n//\n// This is intended to be a stand-alone file with minimal dependencies,\n// easy to reuse or repurpose in other projects.\n\n/** @typedef {import('./polyfill-context')} types */\n\nimport {polyfillVertexArrayObject} from './polyfill-vertex-array-object';\nimport {assert} from '../utils/assert';\n\nimport {WEBGL2_CONTEXT_POLYFILLS, WEBGL2_CONTEXT_OVERRIDES} from './polyfill-table';\n\n/** @type {types['polyfillContext']} */\nexport function polyfillContext(gl) {\n // @ts-ignore\n gl.luma = gl.luma || {};\n // @ts-ignore\n const {luma} = gl;\n\n if (!luma.polyfilled) {\n polyfillVertexArrayObject(gl);\n initializeExtensions(gl);\n installPolyfills(gl, WEBGL2_CONTEXT_POLYFILLS);\n installOverrides(gl, {target: luma, target2: gl});\n luma.polyfilled = true;\n }\n\n // TODO - only supporting a few members\n /** @type {WebGL2RenderingContext} */\n // @ts-ignore\n return gl;\n}\n\n// TODO - is this still required?\n// @ts-ignore\nglobalThis.polyfillContext = polyfillContext;\n\nfunction initializeExtensions(gl) {\n gl.luma.extensions = {};\n // `getSupportedExtensions` can return null when context is lost.\n const EXTENSIONS = gl.getSupportedExtensions() || [];\n for (const extension of EXTENSIONS) {\n gl.luma[extension] = gl.getExtension(extension);\n }\n}\n\n// Install simple overrides (mostly get* functions)\nfunction installOverrides(gl, {target, target2}) {\n Object.keys(WEBGL2_CONTEXT_OVERRIDES).forEach(key => {\n if (typeof WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {\n // install an override, if no implementation was detected\n const originalFunc = gl[key] ? gl[key].bind(gl) : () => {};\n const polyfill = WEBGL2_CONTEXT_OVERRIDES[key].bind(null, gl, originalFunc);\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n });\n}\n\nfunction installPolyfills(gl, polyfills) {\n for (const extension of Object.getOwnPropertyNames(polyfills)) {\n if (extension !== 'overrides') {\n polyfillExtension(gl, {extension, target: gl.luma, target2: gl});\n }\n }\n}\n\n// Polyfills a single WebGL extension into the `target` object\nfunction polyfillExtension(gl, {extension, target, target2}) {\n const defaults = WEBGL2_CONTEXT_POLYFILLS[extension];\n assert(defaults);\n\n const {meta = {}} = defaults;\n const {suffix = ''} = meta;\n\n const ext = gl.getExtension(extension);\n\n for (const key of Object.keys(defaults)) {\n const extKey = `${key}${suffix}`;\n\n let polyfill = null;\n if (key === 'meta') {\n // ignore\n } else if (typeof gl[key] === 'function') {\n // WebGL2 implementation is already\n } else if (ext && typeof ext[extKey] === 'function') {\n // pick extension implemenentation,if available\n polyfill = (...args) => ext[extKey](...args);\n } else if (typeof defaults[key] === 'function') {\n // pick the mock implementation, if no implementation was detected\n polyfill = defaults[key].bind(target);\n }\n\n if (polyfill) {\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n }\n}\n","// Tables describing WebGL parameters\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../utils/webgl-checks';\n\n// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS\n\n/* eslint-disable no-shadow */\n\nexport const GL_PARAMETER_DEFAULTS = {\n [GL.BLEND]: false,\n [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),\n [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,\n [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,\n [GL.BLEND_SRC_RGB]: GL.ONE,\n [GL.BLEND_DST_RGB]: GL.ZERO,\n [GL.BLEND_SRC_ALPHA]: GL.ONE,\n [GL.BLEND_DST_ALPHA]: GL.ZERO,\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD\n [GL.COLOR_WRITEMASK]: [true, true, true, true],\n [GL.CULL_FACE]: false,\n [GL.CULL_FACE_MODE]: GL.BACK,\n [GL.DEPTH_TEST]: false,\n [GL.DEPTH_CLEAR_VALUE]: 1,\n [GL.DEPTH_FUNC]: GL.LESS,\n [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD\n [GL.DEPTH_WRITEMASK]: true,\n [GL.DITHER]: true,\n // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: null,\n [GL.FRONT_FACE]: GL.CCW,\n [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,\n [GL.LINE_WIDTH]: 1,\n [GL.POLYGON_OFFSET_FILL]: false,\n [GL.POLYGON_OFFSET_FACTOR]: 0,\n [GL.POLYGON_OFFSET_UNITS]: 0,\n [GL.SAMPLE_COVERAGE_VALUE]: 1.0,\n [GL.SAMPLE_COVERAGE_INVERT]: false,\n [GL.SCISSOR_TEST]: false,\n // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box\n [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),\n [GL.STENCIL_TEST]: false,\n [GL.STENCIL_CLEAR_VALUE]: 0,\n [GL.STENCIL_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_FUNC]: GL.ALWAYS,\n [GL.STENCIL_REF]: 0,\n [GL.STENCIL_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,\n [GL.STENCIL_BACK_REF]: 0,\n [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,\n [GL.STENCIL_BACK_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,\n // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.\n [GL.VIEWPORT]: [0, 0, 1024, 1024],\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: 4,\n [GL.UNPACK_ALIGNMENT]: 4,\n [GL.UNPACK_FLIP_Y_WEBGL]: false,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,\n\n // WEBGL2 / EXTENSIONS\n // gl1: 'OES_standard_derivatives'\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,\n [GL.READ_FRAMEBUFFER_BINDING]: null,\n [GL.RASTERIZER_DISCARD]: false,\n [GL.PACK_ROW_LENGTH]: 0,\n [GL.PACK_SKIP_PIXELS]: 0,\n [GL.PACK_SKIP_ROWS]: 0,\n [GL.UNPACK_ROW_LENGTH]: 0,\n [GL.UNPACK_IMAGE_HEIGHT]: 0,\n [GL.UNPACK_SKIP_PIXELS]: 0,\n [GL.UNPACK_SKIP_ROWS]: 0,\n [GL.UNPACK_SKIP_IMAGES]: 0\n};\n\n// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API\n\nconst enable = (gl, value, key) => (value ? gl.enable(key) : gl.disable(key));\nconst hint = (gl, value, key) => gl.hint(key, value);\nconst pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);\n\nconst drawFramebuffer = (gl, value) => {\n const target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;\n return gl.bindFramebuffer(target, value);\n};\nconst readFramebuffer = (gl, value) => {\n return gl.bindFramebuffer(GL.READ_FRAMEBUFFER, value);\n};\n\n// Utility\nfunction isArray(array) {\n return Array.isArray(array) || ArrayBuffer.isView(array);\n}\n\n// Map from WebGL parameter names to corresponding WebGL setter functions\n// WegGL constants are read by parameter names, but set by function names\n// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'\nexport const GL_PARAMETER_SETTERS = {\n [GL.BLEND]: enable,\n [GL.BLEND_COLOR]: (gl, value) => gl.blendColor(...value),\n [GL.BLEND_EQUATION_RGB]: 'blendEquation',\n [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',\n [GL.BLEND_SRC_RGB]: 'blendFunc',\n [GL.BLEND_DST_RGB]: 'blendFunc',\n [GL.BLEND_SRC_ALPHA]: 'blendFunc',\n [GL.BLEND_DST_ALPHA]: 'blendFunc',\n [GL.COLOR_CLEAR_VALUE]: (gl, value) => gl.clearColor(...value),\n [GL.COLOR_WRITEMASK]: (gl, value) => gl.colorMask(...value),\n [GL.CULL_FACE]: enable,\n [GL.CULL_FACE_MODE]: (gl, value) => gl.cullFace(value),\n [GL.DEPTH_TEST]: enable,\n [GL.DEPTH_CLEAR_VALUE]: (gl, value) => gl.clearDepth(value),\n [GL.DEPTH_FUNC]: (gl, value) => gl.depthFunc(value),\n [GL.DEPTH_RANGE]: (gl, value) => gl.depthRange(...value),\n [GL.DEPTH_WRITEMASK]: (gl, value) => gl.depthMask(value),\n [GL.DITHER]: enable,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,\n // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: drawFramebuffer,\n [GL.FRONT_FACE]: (gl, value) => gl.frontFace(value),\n [GL.GENERATE_MIPMAP_HINT]: hint,\n [GL.LINE_WIDTH]: (gl, value) => gl.lineWidth(value),\n [GL.POLYGON_OFFSET_FILL]: enable,\n [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',\n [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',\n [GL.RASTERIZER_DISCARD]: enable,\n [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',\n [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',\n [GL.SCISSOR_TEST]: enable,\n [GL.SCISSOR_BOX]: (gl, value) => gl.scissor(...value),\n [GL.STENCIL_TEST]: enable,\n [GL.STENCIL_CLEAR_VALUE]: (gl, value) => gl.clearStencil(value),\n [GL.STENCIL_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.FRONT, value),\n [GL.STENCIL_BACK_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.BACK, value),\n [GL.STENCIL_FUNC]: 'stencilFuncFront',\n [GL.STENCIL_REF]: 'stencilFuncFront',\n [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',\n [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',\n [GL.STENCIL_BACK_REF]: 'stencilFuncBack',\n [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',\n [GL.STENCIL_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',\n [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',\n [GL.VIEWPORT]: (gl, value) => gl.viewport(...value),\n\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,\n\n // WEBGL2 PIXEL PACK/UNPACK MODES\n // RASTERIZER_DISCARD ...\n [GL.PACK_ROW_LENGTH]: pixelStorei,\n [GL.PACK_SKIP_PIXELS]: pixelStorei,\n [GL.PACK_SKIP_ROWS]: pixelStorei,\n [GL.READ_FRAMEBUFFER_BINDING]: readFramebuffer,\n [GL.UNPACK_ROW_LENGTH]: pixelStorei,\n [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,\n [GL.UNPACK_SKIP_PIXELS]: pixelStorei,\n [GL.UNPACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_SKIP_IMAGES]: pixelStorei,\n\n // Function-style setters\n framebuffer: (gl, framebuffer) => {\n // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class\n // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n },\n blend: (gl, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),\n blendColor: (gl, value) => gl.blendColor(...value),\n blendEquation: (gl, args) => {\n args = isArray(args) ? args : [args, args];\n gl.blendEquationSeparate(...args);\n },\n blendFunc: (gl, args) => {\n args = isArray(args) && args.length === 2 ? [...args, ...args] : args;\n gl.blendFuncSeparate(...args);\n },\n\n clearColor: (gl, value) => gl.clearColor(...value),\n clearDepth: (gl, value) => gl.clearDepth(value),\n clearStencil: (gl, value) => gl.clearStencil(value),\n\n colorMask: (gl, value) => gl.colorMask(...value),\n\n cull: (gl, value) => (value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE)),\n cullFace: (gl, value) => gl.cullFace(value),\n\n depthTest: (gl, value) => (value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST)),\n depthFunc: (gl, value) => gl.depthFunc(value),\n depthMask: (gl, value) => gl.depthMask(value),\n depthRange: (gl, value) => gl.depthRange(...value),\n\n dither: (gl, value) => (value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER)),\n\n derivativeHint: (gl, value) => {\n // gl1: 'OES_standard_derivatives'\n gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);\n },\n\n frontFace: (gl, value) => gl.frontFace(value),\n\n mipmapHint: (gl, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),\n\n lineWidth: (gl, value) => gl.lineWidth(value),\n\n polygonOffsetFill: (gl, value) =>\n value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),\n polygonOffset: (gl, value) => gl.polygonOffset(...value),\n\n sampleCoverage: (gl, value) => gl.sampleCoverage(...value),\n\n scissorTest: (gl, value) => (value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST)),\n scissor: (gl, value) => gl.scissor(...value),\n\n stencilTest: (gl, value) => (value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST)),\n stencilMask: (gl, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, backMask);\n },\n stencilFunc: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);\n gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);\n },\n stencilOp: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);\n },\n\n viewport: (gl, value) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\n// COMPOSITE_WEBGL_PARAMETER_\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl, values, cache) =>\n gl.blendEquationSeparate(\n getValue(GL.BLEND_EQUATION_RGB, values, cache),\n getValue(GL.BLEND_EQUATION_ALPHA, values, cache)\n ),\n blendFunc: (gl, values, cache) =>\n gl.blendFuncSeparate(\n getValue(GL.BLEND_SRC_RGB, values, cache),\n getValue(GL.BLEND_DST_RGB, values, cache),\n getValue(GL.BLEND_SRC_ALPHA, values, cache),\n getValue(GL.BLEND_DST_ALPHA, values, cache)\n ),\n polygonOffset: (gl, values, cache) =>\n gl.polygonOffset(\n getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),\n getValue(GL.POLYGON_OFFSET_UNITS, values, cache)\n ),\n sampleCoverage: (gl, values, cache) =>\n gl.sampleCoverage(\n getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),\n getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)\n ),\n stencilFuncFront: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FUNC, values, cache),\n getValue(GL.STENCIL_REF, values, cache),\n getValue(GL.STENCIL_VALUE_MASK, values, cache)\n ),\n stencilFuncBack: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FUNC, values, cache),\n getValue(GL.STENCIL_BACK_REF, values, cache),\n getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)\n ),\n stencilOpFront: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)\n ),\n stencilOpBack: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, values, cache)\n )\n};\n\n// Setter functions intercepted for cache updates\nexport const GL_HOOKED_SETTERS = {\n // GENERIC SETTERS\n\n enable: (update, capability) =>\n update({\n [capability]: true\n }),\n disable: (update, capability) =>\n update({\n [capability]: false\n }),\n pixelStorei: (update, pname, value) =>\n update({\n [pname]: value\n }),\n hint: (update, pname, hint) =>\n update({\n [pname]: hint\n }),\n\n // SPECIFIC SETTERS\n\n bindFramebuffer: (update, target, framebuffer) => {\n switch (target) {\n case GL.FRAMEBUFFER:\n return update({\n [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: framebuffer\n });\n case GL.DRAW_FRAMEBUFFER:\n return update({[GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer});\n case GL.READ_FRAMEBUFFER:\n return update({[GL.READ_FRAMEBUFFER_BINDING]: framebuffer});\n default:\n return null;\n }\n },\n blendColor: (update, r, g, b, a) =>\n update({\n [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])\n }),\n\n blendEquation: (update, mode) =>\n update({\n [GL.BLEND_EQUATION_RGB]: mode,\n [GL.BLEND_EQUATION_ALPHA]: mode\n }),\n\n blendEquationSeparate: (update, modeRGB, modeAlpha) =>\n update({\n [GL.BLEND_EQUATION_RGB]: modeRGB,\n [GL.BLEND_EQUATION_ALPHA]: modeAlpha\n }),\n\n blendFunc: (update, src, dst) =>\n update({\n [GL.BLEND_SRC_RGB]: src,\n [GL.BLEND_DST_RGB]: dst,\n [GL.BLEND_SRC_ALPHA]: src,\n [GL.BLEND_DST_ALPHA]: dst\n }),\n\n blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) =>\n update({\n [GL.BLEND_SRC_RGB]: srcRGB,\n [GL.BLEND_DST_RGB]: dstRGB,\n [GL.BLEND_SRC_ALPHA]: srcAlpha,\n [GL.BLEND_DST_ALPHA]: dstAlpha\n }),\n\n clearColor: (update, r, g, b, a) =>\n update({\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])\n }),\n\n clearDepth: (update, depth) =>\n update({\n [GL.DEPTH_CLEAR_VALUE]: depth\n }),\n\n clearStencil: (update, s) =>\n update({\n [GL.STENCIL_CLEAR_VALUE]: s\n }),\n\n colorMask: (update, r, g, b, a) =>\n update({\n [GL.COLOR_WRITEMASK]: [r, g, b, a]\n }),\n\n cullFace: (update, mode) =>\n update({\n [GL.CULL_FACE_MODE]: mode\n }),\n\n depthFunc: (update, func) =>\n update({\n [GL.DEPTH_FUNC]: func\n }),\n\n depthRange: (update, zNear, zFar) =>\n update({\n [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])\n }),\n\n depthMask: (update, mask) =>\n update({\n [GL.DEPTH_WRITEMASK]: mask\n }),\n\n frontFace: (update, face) =>\n update({\n [GL.FRONT_FACE]: face\n }),\n\n lineWidth: (update, width) =>\n update({\n [GL.LINE_WIDTH]: width\n }),\n\n polygonOffset: (update, factor, units) =>\n update({\n [GL.POLYGON_OFFSET_FACTOR]: factor,\n [GL.POLYGON_OFFSET_UNITS]: units\n }),\n\n sampleCoverage: (update, value, invert) =>\n update({\n [GL.SAMPLE_COVERAGE_VALUE]: value,\n [GL.SAMPLE_COVERAGE_INVERT]: invert\n }),\n\n scissor: (update, x, y, width, height) =>\n update({\n [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])\n }),\n\n stencilMask: (update, mask) =>\n update({\n [GL.STENCIL_WRITEMASK]: mask,\n [GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilMaskSeparate: (update, face, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilFunc: (update, func, ref, mask) =>\n update({\n [GL.STENCIL_FUNC]: func,\n [GL.STENCIL_REF]: ref,\n [GL.STENCIL_VALUE_MASK]: mask,\n [GL.STENCIL_BACK_FUNC]: func,\n [GL.STENCIL_BACK_REF]: ref,\n [GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilFuncSeparate: (update, face, func, ref, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,\n [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,\n [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilOp: (update, fail, zfail, zpass) =>\n update({\n [GL.STENCIL_FAIL]: fail,\n [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_PASS_DEPTH_PASS]: zpass,\n [GL.STENCIL_BACK_FAIL]: fail,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n stencilOpSeparate: (update, face, fail, zfail, zpass) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n viewport: (update, x, y, width, height) =>\n update({\n [GL.VIEWPORT]: [x, y, width, height]\n })\n};\n\n// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT\n\nconst isEnabled = (gl, key) => gl.isEnabled(key);\n\n// Exceptions for any keys that cannot be queried by gl.getParameters\nexport const GL_PARAMETER_GETTERS = {\n [GL.BLEND]: isEnabled,\n [GL.CULL_FACE]: isEnabled,\n [GL.DEPTH_TEST]: isEnabled,\n [GL.DITHER]: isEnabled,\n [GL.POLYGON_OFFSET_FILL]: isEnabled,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,\n [GL.SAMPLE_COVERAGE]: isEnabled,\n [GL.SCISSOR_TEST]: isEnabled,\n [GL.STENCIL_TEST]: isEnabled,\n\n // WebGL 2\n [GL.RASTERIZER_DISCARD]: isEnabled\n};\n","// Returns true if given object is empty, false otherwise.\nexport function isObjectEmpty(object) {\n for (const key in object) {\n return false;\n }\n return true;\n}\n\nexport function deepArrayEqual(x, y) {\n if (x === y) {\n return true;\n }\n const isArrayX = Array.isArray(x) || ArrayBuffer.isView(x);\n const isArrayY = Array.isArray(y) || ArrayBuffer.isView(y);\n\n // @ts-expect-error DataView...\n if (isArrayX && isArrayY && x.length === y.length) {\n // @ts-expect-error DataView...\n for (let i = 0; i < x.length; ++i) {\n if (x[i] !== y[i]) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","// Support for listening to context state changes and intercepting state queries\n// NOTE: this system does not handle buffer bindings\n/** @typedef {import('./track-context-state')} types */\n\nimport {GL_PARAMETER_DEFAULTS, GL_HOOKED_SETTERS} from './webgl-parameter-tables';\nimport {setParameters, getParameters} from './unified-parameter-api';\nimport {assert} from '../utils/assert';\nimport {deepArrayEqual} from '../utils/utils';\n\n// HELPER FUNCTIONS - INSTALL GET/SET INTERCEPTORS (SPYS) ON THE CONTEXT\n\n// Overrides a WebGLRenderingContext state \"getter\" function\n// to return values directly from cache\nfunction installGetterOverride(gl, functionName) {\n // Get the original function from the WebGLRenderingContext\n const originalGetterFunc = gl[functionName].bind(gl);\n\n // Wrap it with a spy so that we can update our state cache when it gets called\n gl[functionName] = function get(...params) {\n const pname = params[0];\n\n // WebGL limits are not prepopulated in the cache, it's neither undefined in GL_PARAMETER_DEFAULTS\n // nor intercepted by GL_HOOKED_SETTERS. Query the original getter.\n if (!(pname in gl.state.cache)) {\n return originalGetterFunc(...params);\n }\n\n // Optionally call the original function to do a \"hard\" query from the WebGLRenderingContext\n return gl.state.enable\n ? // Call the getter the params so that it can e.g. serve from a cache\n gl.state.cache[pname]\n : // Optionally call the original function to do a \"hard\" query from the WebGLRenderingContext\n originalGetterFunc(...params);\n };\n\n // Set the name of this anonymous function to help in debugging and profiling\n Object.defineProperty(gl[functionName], 'name', {\n value: `${functionName}-from-cache`,\n configurable: false\n });\n}\n\n// Overrides a WebGLRenderingContext state \"setter\" function\n// to call a setter spy before the actual setter. Allows us to keep a cache\n// updated with a copy of the WebGL context state.\nfunction installSetterSpy(gl, functionName, setter) {\n // Get the original function from the WebGLRenderingContext\n const originalSetterFunc = gl[functionName].bind(gl);\n\n // Wrap it with a spy so that we can update our state cache when it gets called\n gl[functionName] = function set(...params) {\n // Update the value\n // Call the setter with the state cache and the params so that it can store the parameters\n const {valueChanged, oldValue} = setter(gl.state._updateCache, ...params);\n\n // Call the original WebGLRenderingContext func to make sure the context actually gets updated\n if (valueChanged) {\n originalSetterFunc(...params);\n }\n\n // Note: if the original function fails to set the value, our state cache will be bad\n // No solution for this at the moment, but assuming that this is unlikely to be a real problem\n // We could call the setter after the originalSetterFunc. Concern is that this would\n // cause different behavior in debug mode, where originalSetterFunc can throw exceptions\n\n return oldValue;\n };\n\n // Set the name of this anonymous function to help in debugging and profiling\n Object.defineProperty(gl[functionName], 'name', {\n value: `${functionName}-to-cache`,\n configurable: false\n });\n}\n\nfunction installProgramSpy(gl) {\n const originalUseProgram = gl.useProgram.bind(gl);\n\n gl.useProgram = function useProgramLuma(handle) {\n if (gl.state.program !== handle) {\n originalUseProgram(handle);\n gl.state.program = handle;\n }\n };\n}\n\n// HELPER CLASS - GLState\n\n/* eslint-disable no-shadow */\nclass GLState {\n constructor(\n gl,\n {\n copyState = false, // Copy cache from params (slow) or initialize from WebGL defaults (fast)\n log = () => {} // Logging function, called when gl parameter change calls are actually issued\n } = {}\n ) {\n this.gl = gl;\n this.program = null;\n this.stateStack = [];\n this.enable = true;\n this.cache = copyState ? getParameters(gl) : Object.assign({}, GL_PARAMETER_DEFAULTS);\n this.log = log;\n\n this._updateCache = this._updateCache.bind(this);\n Object.seal(this);\n }\n\n push(values = {}) {\n this.stateStack.push({});\n }\n\n pop() {\n assert(this.stateStack.length > 0);\n // Use the saved values in the state stack to restore parameters\n const oldValues = this.stateStack[this.stateStack.length - 1];\n setParameters(this.gl, oldValues);\n // Don't pop until we have reset parameters (to make sure other \"stack frames\" are not affected)\n this.stateStack.pop();\n }\n\n // interceptor for context set functions - update our cache and our stack\n // values (Object) - the key values for this setter\n _updateCache(values) {\n let valueChanged = false;\n let oldValue; // = undefined\n\n const oldValues = this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1];\n\n for (const key in values) {\n assert(key !== undefined);\n const value = values[key];\n const cached = this.cache[key];\n // Check that value hasn't already been shadowed\n if (!deepArrayEqual(value, cached)) {\n valueChanged = true;\n oldValue = cached;\n\n // First, save current value being shadowed\n // If a state stack frame is active, save the current parameter values for pop\n // but first check that value hasn't already been shadowed and saved\n if (oldValues && !(key in oldValues)) {\n oldValues[key] = cached;\n }\n\n // Save current value being shadowed\n this.cache[key] = value;\n }\n }\n\n return {valueChanged, oldValue};\n }\n}\n\n// PUBLIC API\n\n/**\n * Initialize WebGL state caching on a context\n * @type {types['trackContextState']}\n */\n// After calling this function, context state will be cached\n// gl.state.push() and gl.state.pop() will be available for saving,\n// temporarily modifying, and then restoring state.\nexport function trackContextState(gl, options = {}) {\n const {enable = true, copyState} = options;\n assert(copyState !== undefined);\n // @ts-ignore\n if (!gl.state) {\n // @ts-ignore\n const {polyfillContext} = globalThis;\n if (polyfillContext) {\n polyfillContext(gl);\n }\n\n // Create a state cache\n // @ts-ignore\n gl.state = new GLState(gl, {copyState});\n\n installProgramSpy(gl);\n\n // intercept all setter functions in the table\n for (const key in GL_HOOKED_SETTERS) {\n const setter = GL_HOOKED_SETTERS[key];\n installSetterSpy(gl, key, setter);\n }\n\n // intercept all getter functions in the table\n installGetterOverride(gl, 'getParameter');\n installGetterOverride(gl, 'isEnabled');\n }\n\n // @ts-ignore\n gl.state.enable = enable;\n\n return gl;\n}\n\n/**\n * Initialize WebGL state caching on a context\n * @type {types['pushContextState']}\n */\nexport function pushContextState(gl) {\n // @ts-ignore\n if (!gl.state) {\n trackContextState(gl, {copyState: false});\n }\n // @ts-ignore\n gl.state.push();\n}\n\n/**\n * Initialize WebGL state caching on a context\n * @type {types['popContextState']}\n */\nexport function popContextState(gl) {\n // @ts-ignore\n assert(gl.state);\n // @ts-ignore\n gl.state.pop();\n}\n","// Provides a unified API for getting and setting any WebGL parameter\n// Also knows default values of all parameters, enabling fast cache initialization\n// Provides base functionality for the state caching.\nimport {\n GL_PARAMETER_DEFAULTS,\n GL_PARAMETER_SETTERS,\n GL_COMPOSITE_PARAMETER_SETTERS,\n GL_PARAMETER_GETTERS\n} from './webgl-parameter-tables';\n\nimport {pushContextState, popContextState} from './track-context-state';\nimport {assert} from '../utils/assert';\nimport {isWebGL} from '../utils/webgl-checks';\nimport {isObjectEmpty} from '../utils/utils';\n\n// Sets any GL parameter regardless of function (gl.blendMode, ...)\n// Note: requires a `cache` object to be set on the context (gl.state.cache)\n// This object is used to fill in any missing values for composite setter functions\nexport function setParameters(gl, values) {\n assert(isWebGL(gl), 'setParameters requires a WebGL context');\n\n if (isObjectEmpty(values)) {\n return;\n }\n\n const compositeSetters = {};\n\n // HANDLE PRIMITIVE SETTERS (and make note of any composite setters)\n\n for (const key in values) {\n const glConstant = Number(key);\n const setter = GL_PARAMETER_SETTERS[key];\n if (setter) {\n // Composite setters should only be called once, so save them\n if (typeof setter === 'string') {\n compositeSetters[setter] = true;\n } else {\n // if (gl[glConstant] !== undefined) {\n // TODO - added above check since this is being called on WebGL2 values in WebGL1...\n // TODO - deep equal on values? only call setter if value has changed?\n // NOTE - the setter will automatically update this.state\n setter(gl, values[key], glConstant);\n }\n }\n }\n\n // HANDLE COMPOSITE SETTERS\n\n // NOTE: any non-provided values needed by composite setters are filled in from state cache\n // The cache parameter is automatically retrieved from the context\n // This depends on `trackContextState`, which is technically a \"circular\" dependency.\n // But it is too inconvenient to always require a cache parameter here.\n // This is the ONLY external dependency in this module/\n const cache = gl.state && gl.state.cache;\n if (cache) {\n for (const key in compositeSetters) {\n // TODO - avoid calling composite setters if values have not changed.\n const compositeSetter = GL_COMPOSITE_PARAMETER_SETTERS[key];\n // Note - if `trackContextState` has been called,\n // the setter will automatically update this.state.cache\n compositeSetter(gl, values, cache);\n }\n }\n\n // Add a log for the else case?\n}\n\n// Copies the state from a context (gl.getParameter should not be overriden)\n// Reads the entire WebGL state from a context\n// Caveat: This generates a huge amount of synchronous driver roundtrips and should be\n// considered a very slow operation, to be used only if/when a context already manipulated\n// by external code needs to be synchronized for the first time\n// @return {Object} - a newly created map, with values keyed by GL parameters\nexport function getParameters(gl, parameters) {\n // default to querying all parameters\n parameters = parameters || GL_PARAMETER_DEFAULTS;\n // support both arrays of parameters and objects (keys represent parameters)\n\n if (typeof parameters === 'number') {\n // single GL enum\n const key = parameters;\n const getter = GL_PARAMETER_GETTERS[key];\n return getter ? getter(gl, key) : gl.getParameter(key);\n }\n\n const parameterKeys = Array.isArray(parameters) ? parameters : Object.keys(parameters);\n\n const state = {};\n for (const key of parameterKeys) {\n const getter = GL_PARAMETER_GETTERS[key];\n state[key] = getter ? getter(gl, Number(key)) : gl.getParameter(Number(key));\n }\n return state;\n}\n\n// Reset all parameters to a (almost) pure context state\n// NOTE: viewport and scissor will be set to the values in GL_PARAMETER_DEFAULTS,\n// NOT the canvas size dimensions, so they will have to be properly set after\n// calling this function.\nexport function resetParameters(gl) {\n setParameters(gl, GL_PARAMETER_DEFAULTS);\n}\n\n// Stores current \"global\" WebGL context settings, changes selected parameters,\n// executes function, restores parameters\nexport function withParameters(gl, parameters, func) {\n if (isObjectEmpty(parameters)) {\n // Avoid setting state if no parameters provided. Just call and return\n return func(gl);\n }\n\n const {nocatch = true} = parameters;\n\n pushContextState(gl);\n setParameters(gl, parameters);\n\n // Setup is done, call the function\n let value;\n\n if (nocatch) {\n // Avoid try catch to minimize stack size impact for safe execution paths\n value = func(gl);\n popContextState(gl);\n } else {\n // Wrap in a try-catch to ensure that parameters are restored on exceptions\n try {\n value = func(gl);\n } finally {\n popContextState(gl);\n }\n }\n\n return value;\n}\n","/** @typedef {import('./device-pixels')} types */\n\n/**\n * Returns multiplier need to convert CSS size to Device size\n * @type {types['cssToDeviceRatio']}\n */\nexport function cssToDeviceRatio(gl) {\n // @ts-ignore\n const {luma} = gl;\n\n if (gl.canvas && luma) {\n // For headless gl we might have used custom width and height\n // hence prioritize cached clientWidth\n const cachedSize = luma.canvasSizeInfo;\n const clientWidth =\n 'clientWidth' in cachedSize ? cachedSize.clientWidth : gl.canvas.clientWidth;\n return clientWidth ? gl.drawingBufferWidth / clientWidth : 1;\n }\n // use default device pixel ratio\n return 1;\n}\n\n/**\n * Maps CSS pixel position to device pixel position\n * @type {types['cssToDevicePixels']}\n */\nexport function cssToDevicePixels(gl, cssPixel, yInvert = true) {\n const ratio = cssToDeviceRatio(gl);\n const width = gl.drawingBufferWidth;\n const height = gl.drawingBufferHeight;\n return scalePixels(cssPixel, ratio, width, height, yInvert);\n}\n\n// HELPER METHOD\n\n/**\n * Calulates device pixel ratio, used during context creation\n * @type {types['getDevicePixelRatio']}\n */\nexport function getDevicePixelRatio(useDevicePixels) {\n const windowRatio = typeof window === 'undefined' ? 1 : window.devicePixelRatio || 1;\n if (Number.isFinite(useDevicePixels)) {\n // @ts-ignore Can no longer be boolean after previous line\n return useDevicePixels <= 0 ? 1 : useDevicePixels;\n }\n return useDevicePixels ? windowRatio : 1;\n}\n\n// PRIVATE\n\nfunction scalePixels(pixel, ratio, width, height, yInvert) {\n const x = scaleX(pixel[0], ratio, width);\n let y = scaleY(pixel[1], ratio, height, yInvert);\n\n // Find boundaries of next pixel to provide valid range of device pixel locaitons\n\n let t = scaleX(pixel[0] + 1, ratio, width);\n // If next pixel's position is clamped to boundary, use it as is, otherwise subtract 1 for current pixel boundary\n const xHigh = t === width - 1 ? t : t - 1;\n\n t = scaleY(pixel[1] + 1, ratio, height, yInvert);\n let yHigh;\n if (yInvert) {\n // If next pixel's position is clamped to boundary, use it as is, otherwise clamp it to valid range\n t = t === 0 ? t : t + 1;\n // swap y and yHigh\n yHigh = y;\n y = t;\n } else {\n // If next pixel's position is clamped to boundary, use it as is, otherwise clamp it to valid range\n yHigh = t === height - 1 ? t : t - 1;\n // y remains same\n }\n return {\n x,\n y,\n // when ratio < 1, current css pixel and next css pixel may point to same device pixel, set width/height to 1 in those cases.\n width: Math.max(xHigh - x + 1, 1),\n height: Math.max(yHigh - y + 1, 1)\n };\n}\n\nfunction scaleX(x, ratio, width) {\n // since we are rounding to nearest, when ratio > 1, edge pixels may point to out of bounds value, clamp to the limit\n const r = Math.min(Math.round(x * ratio), width - 1);\n return r;\n}\n\nfunction scaleY(y, ratio, height, yInvert) {\n // since we are rounding to nearest, when ratio > 1, edge pixels may point to out of bounds value, clamp to the limit\n return yInvert\n ? Math.max(0, height - 1 - Math.round(y * ratio))\n : Math.min(Math.round(y * ratio), height - 1);\n}\n","// WebGLRenderingContext related methods\n\n/** @typedef {import('./context')} types */\n\n/* eslint-disable quotes */\nimport GL from '@luma.gl/constants';\nimport {isBrowser as getIsBrowser} from '@probe.gl/env';\nimport {trackContextState} from '../state-tracker/track-context-state';\n\nimport {log} from '../utils/log';\nimport {assert} from '../utils/assert';\nimport {getDevicePixelRatio} from '../utils/device-pixels';\nimport {isWebGL2} from '../utils/webgl-checks';\n\nconst isBrowser = getIsBrowser();\nconst isPage = isBrowser && typeof document !== 'undefined';\n\nconst CONTEXT_DEFAULTS = {\n // COMMON CONTEXT PARAMETERS\n // Attempt to allocate WebGL2 context\n webgl2: true, // Attempt to create a WebGL2 context (false to force webgl1)\n webgl1: true, // Attempt to create a WebGL1 context (false to fail if webgl2 not available)\n throwOnError: true,\n manageState: true,\n // BROWSER CONTEXT PARAMETERS\n canvas: null, // A canvas element or a canvas string id\n debug: false, // Instrument context (at the expense of performance)\n // HEADLESS CONTEXT PARAMETERS\n width: 800, // width are height are only used by headless gl\n height: 600\n // WEBGL/HEADLESS CONTEXT PARAMETERS\n // Remaining options are passed through to context creator\n};\n\n/**\n * Creates a context giving access to the WebGL API\n * @type {types['createGLContext']}\n */\n/* eslint-disable complexity, max-statements */\nexport function createGLContext(options = {}) {\n assert(\n isBrowser,\n \"createGLContext only available in the browser.\\nCreate your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils\"\n );\n\n options = Object.assign({}, CONTEXT_DEFAULTS, options);\n const {width, height} = options;\n\n // Error reporting function, enables exceptions to be disabled\n function onError(message) {\n if (options.throwOnError) {\n throw new Error(message);\n }\n // eslint-disable-next-line\n console.error(message);\n return null;\n }\n options.onError = onError;\n\n let gl;\n // Get or create a canvas\n const {canvas} = options;\n const targetCanvas = getCanvas({canvas, width, height, onError});\n // Create a WebGL context in the canvas\n gl = createBrowserContext(targetCanvas, options);\n\n if (!gl) {\n return null;\n }\n\n gl = instrumentGLContext(gl, options);\n\n // Log some debug info about the newly created context\n logInfo(gl);\n\n // Add to seer integration\n return gl;\n}\n\n/**\n * Creates a context giving access to the WebGL API\n * @type {types['instrumentGLContext']}\n */\nexport function instrumentGLContext(gl, options = {}) {\n // Avoid multiple instrumentations\n // @ts-ignore\n if (!gl || gl._instrumented) {\n return gl;\n }\n\n // @ts-ignore\n gl._version = gl._version || getVersion(gl);\n\n // Cache canvas size information to avoid setting it on every frame.\n // @ts-ignore\n gl.luma = gl.luma || {};\n // @ts-ignore\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n\n options = Object.assign({}, CONTEXT_DEFAULTS, options);\n const {manageState, debug} = options;\n\n // Install context state tracking\n if (manageState) {\n trackContextState(gl, {\n copyState: false,\n log: (...args) => log.log(1, ...args)()\n });\n }\n\n // Add debug instrumentation to the context\n if (isBrowser && debug) {\n // @ts-ignore\n if (!globalThis.makeDebugContext) {\n log.warn('WebGL debug mode not activated. import \"@luma.gl/debug\" to enable.')();\n } else {\n // @ts-ignore\n gl = globalThis.makeDebugContext(gl, options);\n // Debug forces log level to at least 1\n log.level = Math.max(log.level, 1);\n }\n }\n\n // @ts-ignore\n gl._instrumented = true;\n\n return gl;\n}\n\n/**\n * Provides strings identifying the GPU vendor and driver.\n * @type {types['getContextDebugInfo']}\n */\nexport function getContextDebugInfo(gl) {\n const vendorMasked = gl.getParameter(GL.VENDOR);\n const rendererMasked = gl.getParameter(GL.RENDERER);\n const ext = gl.getExtension('WEBGL_debug_renderer_info');\n const vendorUnmasked = ext && gl.getParameter(ext.UNMASKED_VENDOR_WEBGL || GL.VENDOR);\n const rendererUnmasked = ext && gl.getParameter(ext.UNMASKED_RENDERER_WEBGL || GL.RENDERER);\n return {\n vendor: vendorUnmasked || vendorMasked,\n renderer: rendererUnmasked || rendererMasked,\n vendorMasked,\n rendererMasked,\n version: gl.getParameter(GL.VERSION),\n shadingLanguageVersion: gl.getParameter(GL.SHADING_LANGUAGE_VERSION)\n };\n}\n\n/**\n * Resize the canvas' drawing buffer.\n * @type {types['resizeGLContext']}\n */\nexport function resizeGLContext(gl, options = {}) {\n // Resize browser context\n if (gl.canvas) {\n const devicePixelRatio = getDevicePixelRatio(options.useDevicePixels);\n setDevicePixelRatio(gl, devicePixelRatio, options);\n return;\n }\n\n // Resize headless gl context\n const ext = gl.getExtension('STACKGL_resize_drawingbuffer');\n if (ext && `width` in options && `height` in options) {\n ext.resize(options.width, options.height);\n }\n}\n\n// HELPER METHODS\n\n/**\n * Create a WebGL context for a canvas\n * Note calling this multiple time on the same canvas does return the same context\n */\n\nfunction createBrowserContext(canvas, options) {\n const {onError} = options;\n\n // Try to extract any extra information about why context creation failed\n let errorMessage = null;\n const onCreateError = error => (errorMessage = error.statusMessage || errorMessage);\n canvas.addEventListener('webglcontextcreationerror', onCreateError, false);\n\n const {webgl1 = true, webgl2 = true} = options;\n let gl = null;\n // Prefer webgl2 over webgl1, prefer conformant over experimental\n if (webgl2) {\n gl = gl || canvas.getContext('webgl2', options);\n gl = gl || canvas.getContext('experimental-webgl2', options);\n }\n if (webgl1) {\n gl = gl || canvas.getContext('webgl', options);\n gl = gl || canvas.getContext('experimental-webgl', options);\n }\n\n canvas.removeEventListener('webglcontextcreationerror', onCreateError, false);\n\n if (!gl) {\n return onError(\n `Failed to create ${webgl2 && !webgl1 ? 'WebGL2' : 'WebGL'} context: ${errorMessage ||\n 'Unknown error'}`\n );\n }\n\n if (options.onContextLost) {\n canvas.addEventListener('webglcontextlost', options.onContextLost, false);\n }\n\n if (options.onContextRestored) {\n canvas.addEventListener('webglcontextrestored', options.onContextRestored, false);\n }\n\n return gl;\n}\n\nfunction getCanvas({canvas, width = 800, height = 600, onError}) {\n let targetCanvas;\n if (typeof canvas === 'string') {\n const isPageLoaded = isPage && document.readyState === 'complete';\n if (!isPageLoaded) {\n onError(`createGLContext called on canvas '${canvas}' before page was loaded`);\n }\n targetCanvas = document.getElementById(canvas);\n } else if (canvas) {\n targetCanvas = canvas;\n } else {\n targetCanvas = document.createElement('canvas');\n targetCanvas.id = 'lumagl-canvas';\n targetCanvas.style.width = Number.isFinite(width) ? `${width}px` : '100%';\n targetCanvas.style.height = Number.isFinite(height) ? `${height}px` : '100%';\n document.body.insertBefore(targetCanvas, document.body.firstChild);\n }\n\n return targetCanvas;\n}\n\nfunction logInfo(gl) {\n const webGL = isWebGL2(gl) ? 'WebGL2' : 'WebGL1';\n const info = getContextDebugInfo(gl);\n const driver = info ? `(${info.vendor},${info.renderer})` : '';\n const debug = gl.debug ? ' debug' : '';\n log.info(1, `${webGL}${debug} context ${driver}`)();\n}\n\nfunction getVersion(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n // WebGL2 context.\n return 2;\n }\n // Must be a WebGL1 context.\n return 1;\n}\n\n// use devicePixelRatio to set canvas width and height\nfunction setDevicePixelRatio(gl, devicePixelRatio, options) {\n // NOTE: if options.width and options.height not used remove in v8\n let clientWidth = 'width' in options ? options.width : gl.canvas.clientWidth;\n let clientHeight = 'height' in options ? options.height : gl.canvas.clientHeight;\n\n if (!clientWidth || !clientHeight) {\n log.log(1, 'Canvas clientWidth/clientHeight is 0')();\n // by forcing devicePixel ratio to 1, we do not scale gl.canvas.width and height in each frame.\n devicePixelRatio = 1;\n clientWidth = gl.canvas.width || 1;\n clientHeight = gl.canvas.height || 1;\n }\n\n gl.luma = gl.luma || {};\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n const cachedSize = gl.luma.canvasSizeInfo;\n // Check if canvas needs to be resized\n if (\n cachedSize.clientWidth !== clientWidth ||\n cachedSize.clientHeight !== clientHeight ||\n cachedSize.devicePixelRatio !== devicePixelRatio\n ) {\n let clampedPixelRatio = devicePixelRatio;\n\n const canvasWidth = Math.floor(clientWidth * clampedPixelRatio);\n const canvasHeight = Math.floor(clientHeight * clampedPixelRatio);\n gl.canvas.width = canvasWidth;\n gl.canvas.height = canvasHeight;\n\n // Note: when devicePixelRatio is too high, it is possible we might hit system limit for\n // drawing buffer width and hight, in those cases they get clamped and resulting aspect ration may not be maintained\n // for those cases, reduce devicePixelRatio.\n if (gl.drawingBufferWidth !== canvasWidth || gl.drawingBufferHeight !== canvasHeight) {\n log.warn(`Device pixel ratio clamped`)();\n clampedPixelRatio = Math.min(\n gl.drawingBufferWidth / clientWidth,\n gl.drawingBufferHeight / clientHeight\n );\n\n gl.canvas.width = Math.floor(clientWidth * clampedPixelRatio);\n gl.canvas.height = Math.floor(clientHeight * clampedPixelRatio);\n }\n\n Object.assign(gl.luma.canvasSizeInfo, {clientWidth, clientHeight, devicePixelRatio});\n }\n}\n","let channelHandles = 1;\nlet animationHandles = 1;\n\nexport class Timeline {\n constructor() {\n this.time = 0;\n this.channels = new Map();\n this.animations = new Map();\n this.playing = false;\n this.lastEngineTime = -1;\n }\n\n addChannel(props) {\n const {delay = 0, duration = Number.POSITIVE_INFINITY, rate = 1, repeat = 1} = props;\n\n const handle = channelHandles++;\n const channel = {\n time: 0,\n delay,\n duration,\n rate,\n repeat\n };\n this._setChannelTime(channel, this.time);\n this.channels.set(handle, channel);\n\n return handle;\n }\n\n removeChannel(handle) {\n this.channels.delete(handle);\n\n for (const [animationHandle, animation] of this.animations) {\n if (animation.channel === handle) {\n this.detachAnimation(animationHandle);\n }\n }\n }\n\n isFinished(handle) {\n const channel = this.channels.get(handle);\n if (channel === undefined) {\n return false;\n }\n\n return this.time >= channel.delay + channel.duration * channel.repeat;\n }\n\n getTime(handle) {\n if (handle === undefined) {\n return this.time;\n }\n\n const channel = this.channels.get(handle);\n\n if (channel === undefined) {\n return -1;\n }\n\n return channel.time;\n }\n\n setTime(time) {\n this.time = Math.max(0, time);\n\n const channels = this.channels.values();\n for (const channel of channels) {\n this._setChannelTime(channel, this.time);\n }\n\n const animations = this.animations.values();\n for (const animationData of animations) {\n const {animation, channel} = animationData;\n animation.setTime(this.getTime(channel));\n }\n }\n\n play() {\n this.playing = true;\n }\n\n pause() {\n this.playing = false;\n this.lastEngineTime = -1;\n }\n\n reset() {\n this.setTime(0);\n }\n\n attachAnimation(animation, channelHandle) {\n const animationHandle = animationHandles++;\n\n this.animations.set(animationHandle, {\n animation,\n channel: channelHandle\n });\n\n animation.setTime(this.getTime(channelHandle));\n\n return animationHandle;\n }\n\n detachAnimation(handle) {\n this.animations.delete(handle);\n }\n\n update(engineTime) {\n if (this.playing) {\n if (this.lastEngineTime === -1) {\n this.lastEngineTime = engineTime;\n }\n this.setTime(this.time + (engineTime - this.lastEngineTime));\n this.lastEngineTime = engineTime;\n }\n }\n\n _setChannelTime(channel, time) {\n const offsetTime = time - channel.delay;\n const totalDuration = channel.duration * channel.repeat;\n // Note(Tarek): Don't loop on final repeat.\n if (offsetTime >= totalDuration) {\n channel.time = channel.duration * channel.rate;\n } else {\n channel.time = Math.max(0, offsetTime) % channel.duration;\n channel.time *= channel.rate;\n }\n }\n}\n","export const LIFECYCLE = {\n NO_STATE: 'Awaiting state',\n MATCHED: 'Matched. State transferred from previous layer',\n INITIALIZED: 'Initialized',\n AWAITING_GC: 'Discarded. Awaiting garbage collection',\n AWAITING_FINALIZATION: 'No longer matched. Awaiting garbage collection',\n FINALIZED: 'Finalized! Awaiting garbage collection'\n} as const;\n\nexport type Lifecycle = typeof LIFECYCLE[keyof typeof LIFECYCLE];\n\n/* Secret props keys */\n// Symbols are non-enumerable by default, does not show in for...in or Object.keys\n// but are copied with Object.assign ¯\\_(ツ)_/¯\n// Supported everywhere except IE11, can be polyfilled with core-js\nexport const COMPONENT_SYMBOL: unique symbol = Symbol.for('component');\nexport const PROP_TYPES_SYMBOL: unique symbol = Symbol.for('propTypes');\nexport const DEPRECATED_PROPS_SYMBOL: unique symbol = Symbol.for('deprecatedProps');\nexport const ASYNC_DEFAULTS_SYMBOL: unique symbol = Symbol.for('asyncPropDefaults');\nexport const ASYNC_ORIGINAL_SYMBOL: unique symbol = Symbol.for('asyncPropOriginal');\nexport const ASYNC_RESOLVED_SYMBOL: unique symbol = Symbol.for('asyncPropResolved');\n","import {Log} from '@probe.gl/log';\n\nexport default new Log({id: 'deck'});\n","import deckLog from '../utils/log';\nimport {getLoggers} from './loggers';\n\n/* debug utility */\n\nlet loggers: Record = {};\n\n// Conditionally load default loggers in development mode\n// eslint-disable-next-line\nif (process.env.NODE_ENV !== 'production') {\n loggers = getLoggers(deckLog);\n}\n\nexport function register(handlers: Record): void {\n loggers = handlers;\n}\n\nexport default function debug(eventType: string, arg1?: any, arg2?: any, arg3?: any): void {\n if (deckLog.level > 0 && loggers[eventType]) {\n // Not using rest parameters to defeat perf hit from array construction\n loggers[eventType].call(null, arg1, arg2, arg3);\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\ntype NestedArray = (T | NestedArray)[];\n\n/**\n * Flattens a nested array into a single level array,\n * or a single value into an array with one value\n * @example flatten([[1, [2]], [3], 4]) => [1, 2, 3, 4]\n * @example flatten(1) => [1]\n * @param array The array to flatten.\n * @param filter= - Optional predicate called on each `value` to\n * determine if it should be included (pushed onto) the resulting array.\n * @return Returns the new flattened array (new array or `result` if provided)\n */\nexport function flatten(\n array: T | NestedArray,\n filter: (element: T) => boolean = () => true\n): T[] {\n // Wrap single object in array\n if (!Array.isArray(array)) {\n return filter(array) ? [array] : [];\n }\n // Deep flatten and filter the array\n return flattenArray(array, filter, []);\n}\n\n/** Deep flattens an array. Helper to `flatten`, see its parameters */\nfunction flattenArray(array: NestedArray, filter: (element: T) => boolean, result: T[]): T[] {\n let index = -1;\n while (++index < array.length) {\n const value = array[index];\n if (Array.isArray(value)) {\n flattenArray(value, filter, result);\n } else if (filter(value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/** Uses copyWithin to significantly speed up typed array value filling */\nexport function fillArray({target, source, start = 0, count = 1}) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n // If we have copied less than half, copy everything we got\n // else copy remaining in one operation\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default function getHiResTimestamp(): number {\n let timestamp;\n // Get best timer available.\n if (typeof window !== 'undefined' && window.performance) {\n timestamp = window.performance.now();\n } else if (typeof process !== 'undefined' && process.hrtime) {\n const timeParts = process.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n","import getHiResTimestamp from '../utils/hi-res-timestamp';\n\nexport default class Stat {\n readonly name: string;\n readonly type: string;\n sampleSize: number = 1;\n time: number;\n count: number;\n samples: number;\n lastTiming: number;\n lastSampleTime: number;\n lastSampleCount: number;\n\n _count: number = 0;\n _time: number = 0;\n _samples: number = 0;\n _startTime: number = 0;\n _timerPending: boolean = false;\n\n constructor(name: string, type?: string) {\n this.name = name;\n this.type = type;\n this.reset();\n }\n\n setSampleSize(samples: number): this {\n this.sampleSize = samples;\n return this;\n }\n\n /** Call to increment count (+1) */\n incrementCount(): this {\n this.addCount(1);\n\n return this;\n }\n\n /** Call to decrement count (-1) */\n decrementCount(): this {\n this.subtractCount(1);\n\n return this;\n }\n\n /** Increase count */\n addCount(value: number): this {\n this._count += value;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n /** Decrease count */\n subtractCount(value: number): this {\n this._count -= value;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n /** Add an arbitrary timing and bump the count */\n addTime(time: number): this {\n this._time += time;\n this.lastTiming = time;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n /** Start a timer */\n timeStart(): this {\n this._startTime = getHiResTimestamp();\n this._timerPending = true;\n\n return this;\n }\n\n /** End a timer. Adds to time and bumps the timing count. */\n timeEnd(): this {\n if (!this._timerPending) {\n return this;\n }\n this.addTime(getHiResTimestamp() - this._startTime);\n this._timerPending = false;\n this._checkSampling();\n\n return this;\n }\n\n getSampleAverageCount(): number {\n return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n }\n\n /** Calculate average time / count for the previous window */\n getSampleAverageTime(): number {\n return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n }\n\n /** Calculate counts per second for the previous window */\n getSampleHz(): number {\n return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n }\n\n getAverageCount(): number {\n return this.samples > 0 ? this.count / this.samples : 0;\n }\n\n /** Calculate average time / count */\n getAverageTime(): number {\n return this.samples > 0 ? this.time / this.samples : 0;\n }\n\n /** Calculate counts per second */\n getHz(): number {\n return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n }\n\n reset(): this {\n this.time = 0;\n this.count = 0;\n this.samples = 0;\n this.lastTiming = 0;\n this.lastSampleTime = 0;\n this.lastSampleCount = 0;\n this._count = 0;\n this._time = 0;\n this._samples = 0;\n this._startTime = 0;\n this._timerPending = false;\n\n return this;\n }\n\n _checkSampling(): void {\n if (this._samples === this.sampleSize) {\n this.lastSampleTime = this._time;\n this.lastSampleCount = this._count;\n this.count += this._count;\n this.time += this._time;\n this.samples += this._samples;\n this._time = 0;\n this._count = 0;\n this._samples = 0;\n }\n }\n}\n","import Stat from './stat';\n\n/** A \"bag\" of `Stat` objects, can be visualized using `StatsWidget` */\nexport default class Stats {\n readonly id: string;\n readonly stats: Record = {};\n\n constructor(options: {id: string; stats?: Stats | Stat[] | {name: string; type?: string}[]}) {\n this.id = options.id;\n this.stats = {};\n\n this._initializeStats(options.stats);\n\n Object.seal(this);\n }\n\n /** Acquire a stat. Create if it doesn't exist. */\n get(name: string, type: string = 'count'): Stat {\n return this._getOrCreate({name, type});\n }\n\n get size(): number {\n return Object.keys(this.stats).length;\n }\n\n /** Reset all stats */\n reset(): this {\n for (const key in this.stats) {\n this.stats[key].reset();\n }\n\n return this;\n }\n\n forEach(fn: (stat: Stat) => void): void {\n for (const key in this.stats) {\n fn(this.stats[key]);\n }\n }\n\n getTable(): Record<\n string,\n {\n time: number;\n count: number;\n average: number;\n hz: number;\n }\n > {\n const table = {};\n this.forEach(stat => {\n table[stat.name] = {\n time: stat.time || 0,\n count: stat.count || 0,\n average: stat.getAverageTime() || 0,\n hz: stat.getHz() || 0\n };\n });\n\n return table;\n }\n\n _initializeStats(stats: Stats | Stat[] | {name: string; type?: string}[] = []): void {\n stats.forEach(stat => this._getOrCreate(stat));\n }\n\n _getOrCreate(stat): Stat {\n if (!stat || !stat.name) {\n return null;\n }\n\n const {name, type} = stat;\n if (!this.stats[name]) {\n if (stat instanceof Stat) {\n this.stats[name] = stat;\n } else {\n this.stats[name] = new Stat(name, type);\n }\n }\n return this.stats[name];\n }\n}\n","import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isBlob} from '../../javascript-utils/is-type';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {getFetchFunction} from '../loader-utils/get-fetch-function';\n\nimport {parse} from './parse';\n\n/**\n * Parses `data` using a specified loader\n * Note: Load does duplicate a lot of parse.\n * it can also call fetchFile on string urls, which `parse` won't do.\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\n// implementation signature\nexport async function load(\n url: string | DataType,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise {\n // Signature: load(url, options)\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders as LoaderOptions;\n loaders = undefined;\n }\n\n // Select fetch function\n const fetch = getFetchFunction(options);\n\n // at this point, `url` could be already loaded binary data\n let data = url;\n // url is a string, fetch the url\n if (typeof url === 'string') {\n data = await fetch(url);\n // URL is Blob or File, fetchFile handles it (alt: we could generate ObjectURL here)\n }\n\n if (isBlob(url)) {\n // The fetch response object will contain blob.name\n // @ts-expect-error TODO - This may not work for overridden fetch functions\n data = await fetch(url);\n }\n\n // Data is loaded (at least we have a `Response` object) so time to hand over to `parse`\n return await parse(data, loaders as Loader[], options);\n}\n","import {load} from '@loaders.gl/core';\n\nimport type {ResourceManagerContext} from './resource-manager';\n\nexport type ResourceSubscriber = {\n onChange: (data: T | Promise) => void;\n};\n\nexport default class Resource {\n id: string;\n context: ResourceManagerContext;\n isLoaded!: boolean;\n persistent?: boolean;\n\n private _loadCount: number = 0;\n private _subscribers = new Set>();\n private _data!: T | Promise | string;\n private _loader?: Promise;\n private _error?: Error;\n private _content?: T;\n\n constructor(id: string, data: T | Promise | string, context: ResourceManagerContext) {\n this.id = id;\n this.context = context;\n\n this.setData(data);\n }\n\n // consumer: {onChange: Function}\n subscribe(consumer: ResourceSubscriber): void {\n this._subscribers.add(consumer);\n }\n\n unsubscribe(consumer: ResourceSubscriber): void {\n this._subscribers.delete(consumer);\n }\n\n inUse(): boolean {\n return this._subscribers.size > 0;\n }\n\n delete(): void {\n // Remove any resources created\n }\n\n getData(): T | Promise {\n return this.isLoaded\n ? this._error\n ? Promise.reject(this._error)\n : this._content!\n : this._loader!.then(() => this.getData());\n }\n\n setData(data: any, forceUpdate?: boolean) {\n if (data === this._data && !forceUpdate) {\n return;\n }\n this._data = data;\n const loadCount = ++this._loadCount;\n\n let loader = data;\n if (typeof data === 'string') {\n loader = load(data);\n }\n if (loader instanceof Promise) {\n this.isLoaded = false;\n this._loader = loader\n .then(result => {\n // check if source has changed\n if (this._loadCount === loadCount) {\n this.isLoaded = true;\n this._error = undefined;\n this._content = result;\n }\n })\n .catch(error => {\n if (this._loadCount === loadCount) {\n this.isLoaded = true;\n this._error = error || true;\n }\n });\n } else {\n this.isLoaded = true;\n this._error = undefined;\n this._content = data;\n }\n\n for (const subscriber of this._subscribers) {\n subscriber.onChange(this.getData());\n }\n }\n}\n","/* global setTimeout */\nimport Resource from './resource';\nimport type {ResourceSubscriber} from './resource';\n\nexport type ResourceManagerContext = {\n gl: WebGLRenderingContext;\n resourceManager: ResourceManager;\n};\n\nexport default class ResourceManager {\n protocol: string;\n\n private _context: ResourceManagerContext;\n private _resources: Record;\n private _consumers: Record<\n string,\n Record<\n string,\n ResourceSubscriber & {\n resourceId: string;\n }\n >\n >;\n private _pruneRequest: number | null;\n\n constructor({gl, protocol}) {\n this.protocol = protocol || 'resource://';\n\n this._context = {\n gl,\n resourceManager: this\n };\n this._resources = {};\n this._consumers = {};\n\n this._pruneRequest = null;\n }\n\n contains(resourceId: string): boolean {\n if (resourceId.startsWith(this.protocol)) {\n return true;\n }\n return resourceId in this._resources;\n }\n\n add({\n resourceId,\n data,\n forceUpdate = false,\n persistent = true\n }: {\n resourceId: string;\n data: any;\n forceUpdate?: boolean;\n persistent?: boolean;\n }) {\n let res = this._resources[resourceId];\n\n if (res) {\n res.setData(data, forceUpdate);\n } else {\n res = new Resource(resourceId, data, this._context);\n this._resources[resourceId] = res;\n }\n // persistent resources can only be removed by calling `remove`\n // non-persistent resources may be released when there are no more consumers\n res.persistent = persistent;\n }\n\n remove(resourceId: string): void {\n const res = this._resources[resourceId];\n\n if (res) {\n res.delete();\n delete this._resources[resourceId];\n }\n }\n\n unsubscribe({consumerId}: {consumerId: string}): void {\n const consumer = this._consumers[consumerId];\n if (consumer) {\n for (const requestId in consumer) {\n const request = consumer[requestId];\n const resource = this._resources[request.resourceId];\n if (resource) {\n resource.unsubscribe(request);\n }\n }\n delete this._consumers[consumerId];\n this.prune();\n }\n }\n\n subscribe({\n resourceId,\n onChange,\n consumerId,\n requestId = 'default'\n }: {\n resourceId: string;\n onChange: (data: T | Promise) => void;\n consumerId: string;\n requestId: string;\n }): T | Promise | undefined {\n const {_resources: resources, protocol} = this;\n if (resourceId.startsWith(protocol)) {\n resourceId = resourceId.replace(protocol, '');\n if (!resources[resourceId]) {\n // Add placeholder. When this resource becomes available, the consumer will be notified.\n this.add({resourceId, data: null, persistent: false});\n }\n }\n const res: Resource = resources[resourceId];\n this._track(consumerId, requestId, res, onChange);\n if (res) {\n return res.getData();\n }\n\n return undefined;\n }\n\n prune(): void {\n if (!this._pruneRequest) {\n // prune() may be called multiple times in the same animation frame.\n // Batch multiple requests together\n // @ts-ignore setTimeout returns NodeJS.Timeout in node\n this._pruneRequest = setTimeout(() => this._prune(), 0);\n }\n }\n\n finalize(): void {\n for (const key in this._resources) {\n this._resources[key].delete();\n }\n }\n\n private _track(\n consumerId: string,\n requestId: string,\n resource: Resource,\n onChange: (data: any) => void\n ) {\n const consumers = this._consumers;\n const consumer = (consumers[consumerId] = consumers[consumerId] || {});\n const request = consumer[requestId] || {};\n\n const oldResource = request.resourceId && this._resources[request.resourceId];\n if (oldResource) {\n oldResource.unsubscribe(request);\n this.prune();\n }\n if (resource) {\n consumer[requestId] = request;\n request.onChange = onChange;\n request.resourceId = resource.id;\n resource.subscribe(request);\n }\n }\n\n private _prune(): void {\n this._pruneRequest = null;\n\n for (const key of Object.keys(this._resources)) {\n const res = this._resources[key];\n if (!res.persistent && !res.inUse()) {\n res.delete();\n delete this._resources[key];\n }\n }\n }\n}\n","import {TypedArray, TypedArrayConstructor} from '../types/types';\n\nexport type TypedArrayManagerOptions = {\n overAlloc?: number;\n poolSize?: number;\n};\n\nexport class TypedArrayManager {\n private _pool: ArrayBuffer[] = [];\n opts: {\n overAlloc: number;\n poolSize: number;\n } = {overAlloc: 2, poolSize: 100};\n\n constructor(options: TypedArrayManagerOptions = {}) {\n this.setOptions(options);\n }\n\n setOptions(options: TypedArrayManagerOptions) {\n Object.assign(this.opts, options);\n }\n\n allocate(\n typedArray: T | null | undefined,\n count: number,\n {\n size = 1,\n type,\n padding = 0,\n copy = false,\n initialize = false,\n maxCount\n }: {\n size?: number;\n type?: TypedArrayConstructor;\n padding?: number;\n copy?: boolean;\n initialize?: boolean;\n maxCount?: number;\n }\n ): T {\n const Type =\n type || (typedArray && (typedArray.constructor as TypedArrayConstructor)) || Float32Array;\n\n const newSize = count * size + padding;\n if (ArrayBuffer.isView(typedArray)) {\n if (newSize <= typedArray.length) {\n return typedArray;\n }\n if (newSize * typedArray.BYTES_PER_ELEMENT <= typedArray.buffer.byteLength) {\n return new Type(typedArray.buffer, 0, newSize) as T;\n }\n }\n\n let maxSize: number = Infinity;\n if (maxCount) {\n maxSize = maxCount * size + padding;\n }\n\n const newArray = this._allocate(Type, newSize, initialize, maxSize);\n\n if (typedArray && copy) {\n newArray.set(typedArray);\n } else if (!initialize) {\n // Hack - always initialize the first 4 elements. NaNs crash the Attribute validation\n newArray.fill(0, 0, 4);\n }\n\n this._release(typedArray);\n return newArray as T;\n }\n\n release(typedArray: TypedArray | null | undefined) {\n this._release(typedArray);\n }\n\n private _allocate(\n Type: TypedArrayConstructor,\n size: number,\n initialize: boolean,\n maxSize: number\n ): TypedArray {\n // Allocate at least one element to ensure a valid buffer\n let sizeToAllocate = Math.max(Math.ceil(size * this.opts.overAlloc), 1);\n // Don't over allocate after certain specified number of elements\n if (sizeToAllocate > maxSize) {\n sizeToAllocate = maxSize;\n }\n\n // Check if available in pool\n const pool = this._pool;\n const byteLength = Type.BYTES_PER_ELEMENT * sizeToAllocate;\n const i = pool.findIndex(b => b.byteLength >= byteLength);\n if (i >= 0) {\n // Create a new array using an existing buffer\n const array = new Type(pool.splice(i, 1)[0], 0, sizeToAllocate);\n if (initialize) {\n // Viewing a buffer with a different type may create NaNs\n array.fill(0);\n }\n return array;\n }\n return new Type(sizeToAllocate);\n }\n\n private _release(typedArray: TypedArray | null | undefined): void {\n if (!ArrayBuffer.isView(typedArray)) {\n return;\n }\n const pool = this._pool;\n const {buffer} = typedArray;\n // Save the buffer of the released array into the pool\n // Sort buffers by size\n // TODO - implement binary search?\n const {byteLength} = buffer;\n const i = pool.findIndex(b => b.byteLength >= byteLength);\n if (i < 0) {\n pool.push(buffer);\n } else if (i > 0 || pool.length < this.opts.poolSize) {\n pool.splice(i, 0, buffer);\n }\n if (pool.length > this.opts.poolSize) {\n // Drop the smallest one\n pool.shift();\n }\n }\n}\n\nexport default new TypedArrayManager();\n","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport assert from './assert';\n\nimport type MathArray from '../classes/base/math-array';\n\nexport type ConfigurationOptions = {\n EPSILON: number;\n debug?: boolean;\n precision: number;\n printTypes?: boolean;\n printDegrees?: boolean;\n printRowMajor?: boolean;\n _cartographicRadians?: boolean;\n};\n\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\n\n// TODO - remove\nexport const config: ConfigurationOptions = {\n EPSILON: 1e-12,\n debug: false,\n precision: 4,\n printTypes: false,\n printDegrees: false,\n printRowMajor: true\n};\n\nexport function configure(options?: Partial): ConfigurationOptions {\n // Only copy existing keys\n for (const key in options) {\n assert(key in config);\n config[key] = options[key];\n }\n return config;\n}\n\n/**\n * Formats a value into a string\n * @param value\n * @param param1\n * @returns\n */\nexport function formatValue(\n value: number,\n {precision = config.precision}: {precision?: number} = {}\n): string {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n\n/**\n * Check if value is an \"array\"\n * Returns `true` if value is either an array or a typed array\n *\n * Note: returns `false` for `ArrayBuffer` and `DataView` instances\n */\nexport function isArray(value: unknown): boolean {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && !(value instanceof DataView));\n}\n\nexport function clone(array: NumericArray | MathArray): NumericArray {\n return 'clone' in array ? array.clone() : array.slice();\n}\n\nexport function toRadians(degrees: number): number;\nexport function toRadians(degrees: NumericArray): NumericArray;\n\nexport function toRadians(degrees: number | NumericArray): number | NumericArray {\n return radians(degrees as NumericArray);\n}\n\nexport function toDegrees(degrees: number): number;\nexport function toDegrees(degrees: NumericArray): NumericArray;\n\nexport function toDegrees(radians: number | NumericArray): number | NumericArray {\n return degrees(radians as NumericArray);\n}\n\n// GLSL math function equivalents - Works on both single values and vectors\n\n/**\n * \"GLSL equivalent\" radians: Works on single values and vectors\n */\nexport function radians(degrees: number): number;\nexport function radians(degrees: NumericArray, result?: NumericArray): NumericArray;\n\nexport function radians(\n degrees: number | NumericArray,\n result?: NumericArray\n): number | NumericArray {\n return map(degrees, (degrees) => degrees * DEGREES_TO_RADIANS, result);\n}\n\n/**\n * \"GLSL equivalent\" degrees: Works on single values and vectors\n */\nexport function degrees(radians: number): number;\nexport function degrees(radians: NumericArray, result?: NumericArray): NumericArray;\n\nexport function degrees(\n radians: number | NumericArray,\n result?: NumericArray\n): number | NumericArray {\n return map(radians, (radians) => radians * RADIANS_TO_DEGREES, result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.sin`: Works on single values and vectors\n * @deprecated\n */\nexport function sin(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.sin(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.cos`: Works on single values and vectors\n * @deprecated\n */\nexport function cos(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.cos(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.tan`: Works on single values and vectors\n * @deprecated\n */\nexport function tan(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.tan(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.asin`: Works on single values and vectors\n * @deprecated\n */\nexport function asin(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.asin(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.acos`: Works on single values and vectors\n * @deprecated\n */\nexport function acos(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.acos(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.atan`: Works on single values and vectors\n * @deprecated\n */\nexport function atan(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.atan(angle), result);\n}\n\n/**\n * GLSL style value clamping: Works on single values and vectors\n */\nexport function clamp(value: number, min: number, max: number): number;\nexport function clamp(value: NumericArray, min: number, max: number): NumericArray;\n\nexport function clamp(\n value: number | NumericArray,\n min: number,\n max: number\n): number | NumericArray {\n return map(value, (value) => Math.max(min, Math.min(max, value)));\n}\n\n/**\n * Interpolate between two numbers or two arrays\n */\nexport function lerp(a: number, b: number, t: number): number;\nexport function lerp(a: NumericArray, b: NumericArray, t: number): NumericArray;\n\nexport function lerp(\n a: number | NumericArray,\n b: number | NumericArray,\n t: number\n): number | NumericArray {\n if (isArray(a)) {\n return (a as NumericArray).map((ai: number, i: number) => lerp(ai, (b as NumericArray)[i], t));\n }\n return t * (b as number) + (1 - t) * (a as number);\n}\n\n/* eslint-disable */\n\n/**\n * Compares any two math objects, using `equals` method if available.\n * @param a\n * @param b\n * @param epsilon\n * @returns\n */\nexport function equals(a: any, b: any, epsilon?: number): boolean {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a && a.equals) {\n return a.equals(b);\n }\n if (b && b.equals) {\n return b.equals(a);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n }\n return false;\n } finally {\n config.EPSILON = oldEpsilon;\n }\n}\n\nexport function exactEquals(a: any, b: any): boolean {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\n/* eslint-enable */\n\nexport function withEpsilon(epsilon: number, func: () => T): T {\n const oldPrecision = config.EPSILON;\n config.EPSILON = epsilon;\n let value: T;\n try {\n value = func();\n } finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n\n// HELPERS\n\nfunction round(value: number): number {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array: NumericArray): NumericArray {\n // @ts-expect-error We check for math.gl class methods\n return array.clone ? array.clone() : (new Array(array.length) as number[]);\n}\n\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(\n value: number | NumericArray,\n func: (x: number, index?: number, result?: NumericArray) => number,\n result?: NumericArray\n): number | NumericArray {\n if (isArray(value)) {\n const array = value as NumericArray;\n result = result || duplicateArray(array);\n for (let i = 0; i < result.length && i < array.length; ++i) {\n result[i] = func(value[i], i, result);\n }\n return result;\n }\n return func(value as number);\n}\n","// math.gl, MIT License\nimport {NumericArray} from '@math.gl/types';\nimport {ConfigurationOptions, config, formatValue, equals, isArray} from '../../lib/common';\n\n/** Base class for vectors and matrices */\nexport default abstract class MathArray extends Array {\n /** Number of elements (values) in this array */\n abstract get ELEMENTS(): number;\n\n abstract copy(vector: Readonly): this;\n\n abstract fromObject(object: object): this;\n\n // Common methods\n\n /**\n * Clone the current object\n * @returns a new copy of this object\n */\n clone(): this {\n // @ts-expect-error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.\n return new this.constructor().copy(this); // eslint-disable-line\n }\n\n fromArray(array: Readonly, offset: number = 0): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = array[i + offset];\n }\n return this.check();\n }\n\n toArray(targetArray: TypedArray, offset?: number): TypedArray;\n toArray(targetArray?: number[], offset?: number): NumericArray;\n\n toArray(targetArray: NumericArray = [], offset: number = 0): NumericArray {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n targetArray[offset + i] = this[i];\n }\n return targetArray;\n }\n\n from(arrayOrObject: Readonly | object): this {\n return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n }\n\n to(arrayOrObject: T): T {\n // @ts-ignore\n if (arrayOrObject === this) {\n return this;\n }\n // @ts-expect-error TS2339: Property 'toObject' does not exist on type 'MathArray'.\n return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n }\n\n toTarget(target: this): this {\n return target ? this.to(target) : this;\n }\n\n /** @deprecated */\n toFloat32Array(): Float32Array {\n return new Float32Array(this);\n }\n\n toString(): string {\n return this.formatString(config);\n }\n\n /** Formats string according to options */\n formatString(opts: ConfigurationOptions): string {\n let string = '';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);\n }\n return `${opts.printTypes ? this.constructor.name : ''}[${string}]`;\n }\n\n equals(array: Readonly): boolean {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (!equals(this[i], array[i])) {\n return false;\n }\n }\n return true;\n }\n\n exactEquals(array: Readonly): boolean {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (this[i] !== array[i]) {\n return false;\n }\n }\n return true;\n }\n\n // Modifiers\n\n /** Negates all values in this object */\n negate(): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = -this[i];\n }\n return this.check();\n }\n\n /** Linearly interpolates between two values */\n lerp(a: Readonly, t: number): this;\n lerp(a: Readonly, b: Readonly, t: number): this;\n\n lerp(a: Readonly, b: Readonly | number, t?: number): this {\n if (t === undefined) {\n return this.lerp(this, a, b as number);\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const ai = a[i];\n this[i] = ai + t * (b[i] - ai);\n }\n return this.check();\n }\n\n /** Minimal */\n min(vector: Readonly): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(vector[i], this[i]);\n }\n return this.check();\n }\n\n /** Maximal */\n max(vector: Readonly): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.max(vector[i], this[i]);\n }\n return this.check();\n }\n\n clamp(minVector: Readonly, maxVector: Readonly): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n }\n return this.check();\n }\n\n add(...vectors: Readonly[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += vector[i];\n }\n }\n return this.check();\n }\n\n subtract(...vectors: Readonly[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] -= vector[i];\n }\n }\n return this.check();\n }\n\n scale(scale: number | Readonly): this {\n if (typeof scale === 'number') {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scale;\n }\n } else {\n for (let i = 0; i < this.ELEMENTS && i < scale.length; ++i) {\n this[i] *= scale[i];\n }\n }\n return this.check();\n }\n\n /**\n * Multiplies all elements by `scale`\n * Note: `Matrix4.multiplyByScalar` only scales its 3x3 \"minor\"\n */\n multiplyByScalar(scalar: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n // Debug checks\n\n /** Throws an error if array length is incorrect or contains illegal values */\n check(): this {\n if (config.debug && !this.validate()) {\n throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);\n }\n return this;\n }\n\n /** Returns false if the array length is incorrect or contains illegal values */\n validate(): boolean {\n let valid = this.length === this.ELEMENTS;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n valid = valid && Number.isFinite(this[i]);\n }\n return valid;\n }\n\n // three.js compatibility\n\n /** @deprecated */\n sub(a: Readonly): this {\n return this.subtract(a);\n }\n\n /** @deprecated */\n setScalar(a: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = a;\n }\n return this.check();\n }\n\n /** @deprecated */\n addScalar(a: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += a;\n }\n return this.check();\n }\n\n /** @deprecated */\n subScalar(a: number): this {\n return this.addScalar(-a);\n }\n\n /** @deprecated */\n multiplyScalar(scalar: number): this {\n // Multiplies all elements\n // `Matrix4.scale` only scales its 3x3 \"minor\"\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n /** @deprecated */\n divideScalar(a: number): this {\n return this.multiplyByScalar(1 / a);\n }\n\n /** @deprecated */\n clampScalar(min: number, max: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], min), max);\n }\n return this.check();\n }\n\n /** @deprecated */\n get elements(): NumericArray {\n return this;\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {NumberArray} from '@math.gl/types';\nimport {config} from './common';\n\nexport function validateVector(v: NumberArray, length: number): boolean {\n if (v.length !== length) {\n return false;\n }\n // Could be arguments \"array\" (v.every not availasble)\n for (let i = 0; i < v.length; ++i) {\n if (!Number.isFinite(v[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport function checkNumber(value: any): number {\n if (!Number.isFinite(value)) {\n throw new Error(`Invalid number ${value}`);\n }\n return value as number;\n}\n\nexport function checkVector(\n v: T,\n length: number,\n callerName: string = ''\n): T {\n if (config.debug && !validateVector(v, length)) {\n throw new Error(`math.gl: ${callerName} some fields set to invalid numbers'`);\n }\n return v;\n}\n\nconst map = {};\n\nexport function deprecated(method: string, version: string): void {\n if (!map[method]) {\n map[method] = true;\n // eslint-disable-next-line\n console.warn(\n `${method} has been removed in version ${version}, see upgrade guide for more information`\n );\n }\n}\n","export default function assert(condition: unknown, message?: string): void {\n if (!condition) {\n throw new Error(`math.gl assertion ${message}`);\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport assert from '../../lib/assert';\n\n/** Base class for vectors with at least 2 elements */\nexport default abstract class Vector extends MathArray {\n // ACCESSORS\n\n get x(): number {\n return this[0];\n }\n\n set x(value: number) {\n this[0] = checkNumber(value);\n }\n\n get y(): number {\n return this[1];\n }\n\n set y(value: number) {\n this[1] = checkNumber(value);\n }\n\n /**\n * Returns the length of the vector from the origin to the point described by this vector\n *\n * @note `length` is a reserved word for Arrays, so `v.length()` will return number of elements\n * Instead we provide `len` and `magnitude`\n */\n len(): number {\n return Math.sqrt(this.lengthSquared());\n }\n\n /**\n * Returns the length of the vector from the origin to the point described by this vector\n */\n magnitude(): number {\n return this.len();\n }\n\n /**\n * Returns the squared length of the vector from the origin to the point described by this vector\n */\n lengthSquared(): number {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n length += this[i] * this[i];\n }\n return length;\n }\n\n /**\n * Returns the squared length of the vector from the origin to the point described by this vector\n */\n magnitudeSquared(): number {\n return this.lengthSquared();\n }\n\n distance(mathArray: Readonly): number {\n return Math.sqrt(this.distanceSquared(mathArray));\n }\n\n distanceSquared(mathArray: Readonly): number {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const dist = this[i] - mathArray[i];\n length += dist * dist;\n }\n return checkNumber(length);\n }\n\n dot(mathArray: Readonly): number {\n let product = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n product += this[i] * mathArray[i];\n }\n return checkNumber(product);\n }\n\n // MODIFIERS\n\n normalize(): this {\n const length = this.magnitude();\n if (length !== 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= length;\n }\n }\n return this.check();\n }\n\n multiply(...vectors: Readonly[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= vector[i];\n }\n }\n return this.check();\n }\n\n divide(...vectors: Readonly[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= vector[i];\n }\n }\n return this.check();\n }\n\n // THREE.js compatibility\n\n lengthSq(): number {\n return this.lengthSquared();\n }\n distanceTo(vector: Readonly): number {\n return this.distance(vector);\n }\n distanceToSquared(vector: Readonly): number {\n return this.distanceSquared(vector);\n }\n\n getComponent(i: number): number {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n return checkNumber(this[i]);\n }\n\n setComponent(i: number, value: number): this {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n this[i] = value;\n return this.check();\n }\n\n addVectors(a: Readonly, b: Readonly): this {\n return this.copy(a).add(b);\n }\n\n subVectors(a: Readonly, b: Readonly): this {\n return this.copy(a).subtract(b);\n }\n\n multiplyVectors(a: Readonly, b: Readonly): this {\n return this.copy(a).multiply(b);\n }\n\n addScaledVector(a: Readonly, b: number): this {\n // @ts-expect-error error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.\n return this.add(new this.constructor(a).multiplyScalar(b));\n }\n}\n","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","/* eslint-disable camelcase */\nimport {NumericArray} from '@math.gl/types';\n// vec2 additions\n\nexport function vec2_transformMat4AsVector(\n out: T,\n a: Readonly,\n m: Readonly\n): T {\n const x = a[0];\n const y = a[1];\n const w = m[3] * x + m[7] * y || 1.0;\n out[0] = (m[0] * x + m[4] * y) / w;\n out[1] = (m[1] * x + m[5] * y) / w;\n return out;\n}\n\n// vec3 additions\n\n// Transform as vector, only uses 3x3 minor matrix\nexport function vec3_transformMat4AsVector(\n out: T,\n a: Readonly,\n m: Readonly\n): T {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = m[3] * x + m[7] * y + m[11] * z || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z) / w;\n return out;\n}\n\nexport function vec3_transformMat2(\n out: T,\n a: Readonly,\n m: Readonly\n): T {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n return out;\n}\n\n// vec4 additions\n\nexport function vec4_transformMat2(\n out: T,\n a: Readonly,\n m: Readonly\n): T {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\nexport function vec4_transformMat3(\n out: T,\n a: Readonly,\n m: Readonly\n): T {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n out[0] = m[0] * x + m[3] * y + m[6] * z;\n out[1] = m[1] * x + m[4] * y + m[7] * z;\n out[2] = m[2] * x + m[5] * y + m[8] * z;\n out[3] = a[3];\n return out;\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport Vector from './base/vector';\nimport {config, isArray} from '../lib/common';\nimport {checkNumber} from '../lib/validators';\nimport * as vec3 from 'gl-matrix/vec3';\n/* eslint-disable camelcase */\nimport {vec3_transformMat2, vec3_transformMat4AsVector} from '../lib/gl-matrix-extras';\n\nconst ORIGIN = [0, 0, 0];\n\nlet ZERO: Vector3;\n\n/**\n * Three-element vector class.\n * Subclass of Array\n */\nexport default class Vector3 extends Vector {\n static get ZERO(): Vector3 {\n if (!ZERO) {\n ZERO = new Vector3(0, 0, 0);\n Object.freeze(ZERO);\n }\n return ZERO;\n }\n\n /**\n * @class\n * @param x\n * @param y\n * @param z\n */\n constructor(x: number | Readonly = 0, y: number = 0, z: number = 0) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0);\n if (arguments.length === 1 && isArray(x)) {\n this.copy(x as NumericArray);\n } else {\n // this.set(x, y, z);\n if (config.debug) {\n checkNumber(x);\n checkNumber(y);\n checkNumber(z);\n }\n // @ts-expect-error TS2412: Property '0' of type 'number | [number, number, number]' is not assignable to numeric index type 'number'\n this[0] = x;\n this[1] = y;\n this[2] = z;\n }\n }\n\n set(x: number, y: number, z: number): this {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n return this.check();\n }\n\n copy(array: Readonly): this {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n return this.check();\n }\n\n fromObject(object: {x: number; y: number; z: number}): this {\n if (config.debug) {\n checkNumber(object.x);\n checkNumber(object.y);\n checkNumber(object.z);\n }\n this[0] = object.x;\n this[1] = object.y;\n this[2] = object.z;\n return this.check();\n }\n\n toObject(object: {x?: number; y?: number; z?: number}): {x: number; y: number; z: number} {\n object.x = this[0];\n object.y = this[1];\n object.z = this[2];\n return object as {x: number; y: number; z: number};\n }\n\n // Getters/setters\n\n get ELEMENTS(): number {\n return 3;\n }\n get z(): number {\n return this[2];\n }\n set z(value: number) {\n this[2] = checkNumber(value);\n }\n\n // ACCESSORS\n\n angle(vector: Readonly): number {\n return vec3.angle(this, vector);\n }\n\n // MODIFIERS\n\n cross(vector: Readonly): this {\n vec3.cross(this, this, vector);\n return this.check();\n }\n\n rotateX({radians, origin = ORIGIN}: {radians: number; origin?: Readonly}): this {\n vec3.rotateX(this, this, origin, radians);\n return this.check();\n }\n\n rotateY({radians, origin = ORIGIN}: {radians: number; origin?: Readonly}): this {\n vec3.rotateY(this, this, origin, radians);\n return this.check();\n }\n\n rotateZ({radians, origin = ORIGIN}: {radians: number; origin?: Readonly}): this {\n vec3.rotateZ(this, this, origin, radians);\n return this.check();\n }\n\n // Transforms\n\n // transforms as point (4th component is implicitly 1)\n transform(matrix4: Readonly): this {\n return this.transformAsPoint(matrix4);\n }\n\n // transforms as point (4th component is implicitly 1)\n transformAsPoint(matrix4: Readonly): this {\n vec3.transformMat4(this, this, matrix4);\n return this.check();\n }\n\n // transforms as vector (4th component is implicitly 0, ignores translation. slightly faster)\n transformAsVector(matrix4: Readonly): this {\n vec3_transformMat4AsVector(this, this, matrix4);\n return this.check();\n }\n\n transformByMatrix3(matrix3: Readonly): this {\n vec3.transformMat3(this, this, matrix3);\n return this.check();\n }\n\n transformByMatrix2(matrix2: Readonly): this {\n vec3_transformMat2(this, this, matrix2);\n return this.check();\n }\n\n transformByQuaternion(quaternion: Readonly): this {\n vec3.transformQuat(this, this, quaternion);\n return this.check();\n }\n}\n","// Extensions to math.gl library. Intended to be folded back.\nimport typedArrayManager from './typed-array-manager';\nimport {Vector3, NumericArray} from '@math.gl/core';\n\nimport type {Matrix4} from '@math.gl/core';\n\n// Helper, avoids low-precision 32 bit matrices from gl-matrix mat4.create()\nexport function createMat4(): number[] {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\n\nexport function mod(value: number, divisor: number): number {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\n\n// Extract camera vectors (move to math library?)\nexport function getCameraPosition(\n viewMatrixInverse: Matrix4 | NumericArray\n): [number, number, number] {\n // Read the translation from the inverse view matrix\n return [viewMatrixInverse[12], viewMatrixInverse[13], viewMatrixInverse[14]];\n}\n\nexport type FrustumPlane = {\n distance: number;\n normal: Vector3;\n};\n\n// https://www.gamedevs.org/uploads/fast-extraction-viewing-frustum-planes-from-world-view-projection-matrix.pdf\nexport function getFrustumPlanes(viewProjectionMatrix: Matrix4 | NumericArray): {\n left: FrustumPlane;\n right: FrustumPlane;\n top: FrustumPlane;\n bottom: FrustumPlane;\n near: FrustumPlane;\n far: FrustumPlane;\n} {\n return {\n left: getFrustumPlane(\n viewProjectionMatrix[3] + viewProjectionMatrix[0],\n viewProjectionMatrix[7] + viewProjectionMatrix[4],\n viewProjectionMatrix[11] + viewProjectionMatrix[8],\n viewProjectionMatrix[15] + viewProjectionMatrix[12]\n ),\n right: getFrustumPlane(\n viewProjectionMatrix[3] - viewProjectionMatrix[0],\n viewProjectionMatrix[7] - viewProjectionMatrix[4],\n viewProjectionMatrix[11] - viewProjectionMatrix[8],\n viewProjectionMatrix[15] - viewProjectionMatrix[12]\n ),\n bottom: getFrustumPlane(\n viewProjectionMatrix[3] + viewProjectionMatrix[1],\n viewProjectionMatrix[7] + viewProjectionMatrix[5],\n viewProjectionMatrix[11] + viewProjectionMatrix[9],\n viewProjectionMatrix[15] + viewProjectionMatrix[13]\n ),\n top: getFrustumPlane(\n viewProjectionMatrix[3] - viewProjectionMatrix[1],\n viewProjectionMatrix[7] - viewProjectionMatrix[5],\n viewProjectionMatrix[11] - viewProjectionMatrix[9],\n viewProjectionMatrix[15] - viewProjectionMatrix[13]\n ),\n near: getFrustumPlane(\n viewProjectionMatrix[3] + viewProjectionMatrix[2],\n viewProjectionMatrix[7] + viewProjectionMatrix[6],\n viewProjectionMatrix[11] + viewProjectionMatrix[10],\n viewProjectionMatrix[15] + viewProjectionMatrix[14]\n ),\n far: getFrustumPlane(\n viewProjectionMatrix[3] - viewProjectionMatrix[2],\n viewProjectionMatrix[7] - viewProjectionMatrix[6],\n viewProjectionMatrix[11] - viewProjectionMatrix[10],\n viewProjectionMatrix[15] - viewProjectionMatrix[14]\n )\n };\n}\n\nconst scratchVector = new Vector3();\n\nfunction getFrustumPlane(a: number, b: number, c: number, d: number): FrustumPlane {\n scratchVector.set(a, b, c);\n const L = scratchVector.len();\n return {distance: d / L, normal: new Vector3(-a / L, -b / L, -c / L)};\n}\n\n/**\n * Calculate the low part of a WebGL 64 bit float\n * @param x {number} - the input float number\n * @returns {number} - the lower 32 bit of the number\n */\nexport function fp64LowPart(x: number): number {\n return x - Math.fround(x);\n}\n\nlet scratchArray;\n\n/**\n * Split a Float64Array into a double-length Float32Array\n * @param typedArray\n * @param options\n * @param options.size - per attribute size\n * @param options.startIndex - start index in the source array\n * @param options.endIndex - end index in the source array\n * @returns {} - high part, low part for each attribute:\n [1xHi, 1yHi, 1zHi, 1xLow, 1yLow, 1zLow, 2xHi, ...]\n */\nexport function toDoublePrecisionArray(\n typedArray: Float64Array,\n options: {size?: number; startIndex?: number; endIndex?: number}\n): Float32Array {\n const {size = 1, startIndex = 0} = options;\n\n const endIndex = options.endIndex !== undefined ? options.endIndex : typedArray.length;\n\n const count = (endIndex - startIndex) / size;\n scratchArray = typedArrayManager.allocate(scratchArray, count, {\n type: Float32Array,\n size: size * 2\n });\n\n let sourceIndex = startIndex;\n let targetIndex = 0;\n while (sourceIndex < endIndex) {\n for (let j = 0; j < size; j++) {\n const value = typedArray[sourceIndex++];\n scratchArray[targetIndex + j] = value;\n scratchArray[targetIndex + j + size] = fp64LowPart(value);\n }\n targetIndex += size * 2;\n }\n\n return scratchArray.subarray(0, count * size * 2);\n}\n\ntype LayerBounds = [number[], number[]];\nexport function mergeBounds(boundsList: (LayerBounds | null)[]): LayerBounds | null {\n let mergedBounds: LayerBounds | null = null;\n let isMerged = false;\n\n for (const bounds of boundsList) {\n if (!bounds) continue;\n if (!mergedBounds) {\n mergedBounds = bounds;\n } else {\n if (!isMerged) {\n // Copy to avoid mutating input bounds\n mergedBounds = [\n [mergedBounds[0][0], mergedBounds[0][1]],\n [mergedBounds[1][0], mergedBounds[1][1]]\n ];\n isMerged = true;\n }\n\n mergedBounds[0][0] = Math.min(mergedBounds[0][0], bounds[0][0]);\n mergedBounds[0][1] = Math.min(mergedBounds[0][1], bounds[0][1]);\n mergedBounds[1][0] = Math.max(mergedBounds[1][0], bounds[1][0]);\n mergedBounds[1][1] = Math.max(mergedBounds[1][1], bounds[1][1]);\n }\n }\n\n return mergedBounds;\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport {config} from '../../lib/common';\n\n/** Base class for matrices */\nexport default abstract class Matrix extends MathArray {\n abstract get RANK(): number;\n\n // fromObject(object) {\n // const array = object.elements;\n // return this.fromRowMajor(array);\n // }\n // toObject(object) {\n // const array = object.elements;\n // this.toRowMajor(array);\n // return object;\n // }\n\n // TODO better override formatString?\n toString(): string {\n let string = '[';\n if (config.printRowMajor) {\n string += 'row-major:';\n for (let row = 0; row < this.RANK; ++row) {\n for (let col = 0; col < this.RANK; ++col) {\n string += ` ${this[col * this.RANK + row]}`;\n }\n }\n } else {\n string += 'column-major:';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += ` ${this[i]}`;\n }\n }\n string += ']';\n return string;\n }\n\n getElementIndex(row: number, col: number): number {\n return col * this.RANK + row;\n }\n\n // By default assumes row major indices\n getElement(row: number, col: number): number {\n return this[col * this.RANK + row];\n }\n\n // By default assumes row major indices\n setElement(row: number, col: number, value: number): this {\n this[col * this.RANK + row] = checkNumber(value);\n return this;\n }\n getColumn(columnIndex: number, result: NumArrayT): NumArrayT;\n getColumn(columnIndex: number): number[];\n\n getColumn(columnIndex: number, result: number[] = new Array(this.RANK).fill(-0)): number[] {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n result[i] = this[firstIndex + i];\n }\n return result;\n }\n\n setColumn(columnIndex: number, columnVector: Readonly): this {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n this[firstIndex + i] = columnVector[i];\n }\n return this;\n }\n}\n","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport Matrix from './base/matrix';\nimport {NumericArray} from '@math.gl/types';\nimport {checkVector} from '../lib/validators';\n\n/* eslint-disable camelcase */\nimport {vec2_transformMat4AsVector, vec3_transformMat4AsVector} from '../lib/gl-matrix-extras';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport * as vec4 from 'gl-matrix/vec4';\n\nenum INDICES {\n COL0ROW0 = 0,\n COL0ROW1 = 1,\n COL0ROW2 = 2,\n COL0ROW3 = 3,\n COL1ROW0 = 4,\n COL1ROW1 = 5,\n COL1ROW2 = 6,\n COL1ROW3 = 7,\n COL2ROW0 = 8,\n COL2ROW1 = 9,\n COL2ROW2 = 10,\n COL2ROW3 = 11,\n COL3ROW0 = 12,\n COL3ROW1 = 13,\n COL3ROW2 = 14,\n COL3ROW3 = 15\n}\n\nconst DEFAULT_FOVY = (45 * Math.PI) / 180;\nconst DEFAULT_ASPECT = 1;\nconst DEFAULT_NEAR = 0.1;\nconst DEFAULT_FAR = 500;\n\nconst IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n\n/** 4x4 matrix */\nexport default class Matrix4 extends Matrix {\n static get IDENTITY(): Readonly {\n return getIdentityMatrix();\n }\n\n static get ZERO(): Readonly {\n return getZeroMatrix();\n }\n\n get ELEMENTS(): number {\n return 16;\n }\n\n get RANK(): number {\n return 4;\n }\n\n get INDICES(): typeof INDICES {\n return INDICES;\n }\n\n constructor(array?: Readonly) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0);\n if (arguments.length === 1 && Array.isArray(array)) {\n this.copy(array);\n } else {\n this.identity();\n }\n }\n\n copy(array: Readonly): this {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n this[4] = array[4];\n this[5] = array[5];\n this[6] = array[6];\n this[7] = array[7];\n this[8] = array[8];\n this[9] = array[9];\n this[10] = array[10];\n this[11] = array[11];\n this[12] = array[12];\n this[13] = array[13];\n this[14] = array[14];\n this[15] = array[15];\n return this.check();\n }\n\n // eslint-disable-next-line max-params\n set(\n m00: number,\n m10: number,\n m20: number,\n m30: number,\n m01: number,\n m11: number,\n m21: number,\n m31: number,\n m02: number,\n m12: number,\n m22: number,\n m32: number,\n m03: number,\n m13: number,\n m23: number,\n m33: number\n ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n // accepts row major order, stores as column major\n // eslint-disable-next-line max-params\n setRowMajor(\n m00: number,\n m01: number,\n m02: number,\n m03: number,\n m10: number,\n m11: number,\n m12: number,\n m13: number,\n m20: number,\n m21: number,\n m22: number,\n m23: number,\n m30: number,\n m31: number,\n m32: number,\n m33: number\n ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n toRowMajor(result: NumericArray): NumericArray {\n result[0] = this[0];\n result[1] = this[4];\n result[2] = this[8];\n result[3] = this[12];\n result[4] = this[1];\n result[5] = this[5];\n result[6] = this[9];\n result[7] = this[13];\n result[8] = this[2];\n result[9] = this[6];\n result[10] = this[10];\n result[11] = this[14];\n result[12] = this[3];\n result[13] = this[7];\n result[14] = this[11];\n result[15] = this[15];\n return result;\n }\n\n // Constructors\n\n /** Set to identity matrix */\n identity(): this {\n return this.copy(IDENTITY_MATRIX);\n }\n\n /**\n *\n * @param object\n * @returns self\n */\n fromObject(object: {[key: string]: any}): this {\n return this.check();\n }\n\n /**\n * Calculates a 4x4 matrix from the given quaternion\n * @param quaternion Quaternion to create matrix from\n * @returns self\n */\n fromQuaternion(quaternion: Readonly): this {\n mat4.fromQuat(this, quaternion);\n return this.check();\n }\n\n /**\n * Generates a frustum matrix with the given bounds\n * @param view.left - Left bound of the frustum\n * @param view.right - Right bound of the frustum\n * @param view.bottom - Bottom bound of the frustum\n * @param view.top - Top bound of the frustum\n * @param view.near - Near bound of the frustum\n * @param view.far - Far bound of the frustum. Can be set to Infinity.\n * @returns self\n */\n frustum(view: {\n left: number;\n right: number;\n bottom: number;\n top: number;\n near: number;\n far?: number;\n }): this {\n const {left, right, bottom, top, near = DEFAULT_NEAR, far = DEFAULT_FAR} = view;\n if (far === Infinity) {\n computeInfinitePerspectiveOffCenter(this, left, right, bottom, top, near);\n } else {\n mat4.frustum(this, left, right, bottom, top, near, far);\n }\n return this.check();\n }\n\n /**\n * Generates a look-at matrix with the given eye position, focal point,\n * and up axis\n * @param view.eye - (vector) Position of the viewer\n * @param view.center - (vector) Point the viewer is looking at\n * @param view.up - (vector) Up axis\n * @returns self\n */\n lookAt(view: {\n eye: Readonly;\n center?: Readonly;\n up?: Readonly;\n }): this {\n const {eye, center = [0, 0, 0], up = [0, 1, 0]} = view;\n mat4.lookAt(this, eye, center, up);\n return this.check();\n }\n\n /**\n * Generates a orthogonal projection matrix with the given bounds\n * from \"traditional\" view space parameters\n * @param view.left - Left bound of the frustum\n * @param view.right number Right bound of the frustum\n * @param view.bottom - Bottom bound of the frustum\n * @param view.top number Top bound of the frustum\n * @param view.near - Near bound of the frustum\n * @param view.far number Far bound of the frustum\n * @returns self\n */\n ortho(view: {\n left: number;\n right: number;\n bottom: number;\n top: number;\n near?: number;\n far?: number;\n }): this {\n const {left, right, bottom, top, near = DEFAULT_NEAR, far = DEFAULT_FAR} = view;\n mat4.ortho(this, left, right, bottom, top, near, far);\n return this.check();\n }\n\n /**\n * Generates an orthogonal projection matrix with the same parameters\n * as a perspective matrix (plus focalDistance)\n * @param view.fovy Vertical field of view in radians\n * @param view.aspect Aspect ratio. Typically viewport width / viewport height\n * @param view.focalDistance Distance in the view frustum used for extent calculations\n * @param view.near Near bound of the frustum\n * @param view.far Far bound of the frustum\n * @returns self\n */\n orthographic(view: {\n fovy?: number;\n aspect?: number;\n focalDistance?: number;\n near?: number;\n far?: number;\n }): this {\n const {\n fovy = DEFAULT_FOVY,\n aspect = DEFAULT_ASPECT,\n focalDistance = 1,\n near = DEFAULT_NEAR,\n far = DEFAULT_FAR\n } = view;\n\n checkRadians(fovy);\n\n const halfY = fovy / 2;\n const top = focalDistance * Math.tan(halfY); // focus_plane is the distance from the camera\n const right = top * aspect;\n\n return this.ortho({\n left: -right,\n right,\n bottom: -top,\n top,\n near,\n far\n });\n }\n\n /**\n * Generates a perspective projection matrix with the given bounds\n * @param view.fovy Vertical field of view in radians\n * @param view.aspect Aspect ratio. typically viewport width/height\n * @param view.near Near bound of the frustum\n * @param view.far Far bound of the frustum\n * @returns self\n */\n perspective(view: {fovy: number; aspect?: number; near?: number; far?: number}): this {\n const {fovy = (45 * Math.PI) / 180, aspect = 1, near = 0.1, far = 500} = view;\n checkRadians(fovy);\n mat4.perspective(this, fovy, aspect, near, far);\n return this.check();\n }\n\n // Accessors\n\n determinant(): number {\n return mat4.determinant(this);\n }\n\n /**\n * Extracts the non-uniform scale assuming the matrix is an affine transformation.\n * The scales are the \"lengths\" of the column vectors in the upper-left 3x3 matrix.\n * @param result\n * @returns self\n */\n getScale(result: NumericArray = [-0, -0, -0]): NumericArray {\n // explicit is faster than hypot...\n result[0] = Math.sqrt(this[0] * this[0] + this[1] * this[1] + this[2] * this[2]);\n result[1] = Math.sqrt(this[4] * this[4] + this[5] * this[5] + this[6] * this[6]);\n result[2] = Math.sqrt(this[8] * this[8] + this[9] * this[9] + this[10] * this[10]);\n // result[0] = Math.hypot(this[0], this[1], this[2]);\n // result[1] = Math.hypot(this[4], this[5], this[6]);\n // result[2] = Math.hypot(this[8], this[9], this[10]);\n return result;\n }\n\n /**\n * Gets the translation portion, assuming the matrix is a affine transformation matrix.\n * @param result\n * @returns self\n */\n getTranslation(result: NumericArray = [-0, -0, -0]): NumericArray {\n result[0] = this[12];\n result[1] = this[13];\n result[2] = this[14];\n return result;\n }\n\n /**\n * Gets upper left 3x3 pure rotation matrix (non-scaling), assume affine transformation matrix\n * @param result\n * @param scaleResult\n * @returns self\n */\n getRotation(result?: NumericArray, scaleResult?: NumericArray): NumericArray {\n result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n scaleResult = scaleResult || [-0, -0, -0];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = 0;\n result[4] = this[4] * inverseScale0;\n result[5] = this[5] * inverseScale1;\n result[6] = this[6] * inverseScale2;\n result[7] = 0;\n result[8] = this[8] * inverseScale0;\n result[9] = this[9] * inverseScale1;\n result[10] = this[10] * inverseScale2;\n result[11] = 0;\n result[12] = 0;\n result[13] = 0;\n result[14] = 0;\n result[15] = 1;\n return result;\n }\n\n /**\n *\n * @param result\n * @param scaleResult\n * @returns self\n */\n getRotationMatrix3(result?: NumericArray, scaleResult?: NumericArray): NumericArray {\n result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0];\n scaleResult = scaleResult || [-0, -0, -0];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = this[4] * inverseScale0;\n result[4] = this[5] * inverseScale1;\n result[5] = this[6] * inverseScale2;\n result[6] = this[8] * inverseScale0;\n result[7] = this[9] * inverseScale1;\n result[8] = this[10] * inverseScale2;\n return result;\n }\n\n // Modifiers\n\n transpose(): this {\n mat4.transpose(this, this);\n return this.check();\n }\n\n invert(): this {\n mat4.invert(this, this);\n return this.check();\n }\n\n // Operations\n\n multiplyLeft(a: Readonly): this {\n mat4.multiply(this, a, this);\n return this.check();\n }\n\n multiplyRight(a: Readonly): this {\n mat4.multiply(this, this, a);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the X axis\n rotateX(radians: number): this {\n mat4.rotateX(this, this, radians);\n // mat4.rotate(this, this, radians, [1, 0, 0]);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the Y axis.\n rotateY(radians: number): this {\n mat4.rotateY(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 1, 0]);\n return this.check();\n }\n\n /**\n * Rotates a matrix by the given angle around the Z axis.\n * @param radians\n * @returns self\n */\n rotateZ(radians: number): this {\n mat4.rotateZ(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 0, 1]);\n return this.check();\n }\n\n /**\n *\n * @param param0\n * @returns self\n */\n rotateXYZ(angleXYZ: Readonly): this {\n return this.rotateX(angleXYZ[0]).rotateY(angleXYZ[1]).rotateZ(angleXYZ[2]);\n }\n\n /**\n *\n * @param radians\n * @param axis\n * @returns self\n */\n rotateAxis(radians: number, axis: Readonly): this {\n mat4.rotate(this, this, radians, axis);\n return this.check();\n }\n\n /**\n *\n * @param factor\n * @returns self\n */\n scale(factor: number | Readonly): this {\n mat4.scale(this, this, Array.isArray(factor) ? factor : [factor, factor, factor]);\n return this.check();\n }\n\n /**\n *\n * @param vec\n * @returns self\n */\n translate(vector: Readonly): this {\n mat4.translate(this, this, vector);\n return this.check();\n }\n\n // Transforms\n\n /**\n * Transforms any 2, 3 or 4 element vector. 2 and 3 elements are treated as points\n * @param vector\n * @param result\n * @returns self\n */\n transform(vector: Readonly, result?: NumericArray): NumericArray {\n if (vector.length === 4) {\n result = vec4.transformMat4(result || [-0, -0, -0, -0], vector, this);\n checkVector(result, 4);\n return result;\n }\n return this.transformAsPoint(vector, result);\n }\n\n /**\n * Transforms any 2 or 3 element array as point (w implicitly 1)\n * @param vector\n * @param result\n * @returns self\n */\n transformAsPoint(vector: Readonly, result?: NumericArray): NumericArray {\n const {length} = vector;\n let out: NumericArray;\n switch (length) {\n case 2:\n out = vec2.transformMat4(result || [-0, -0], vector, this);\n break;\n case 3:\n out = vec3.transformMat4(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(out, vector.length);\n return out;\n }\n\n /**\n * Transforms any 2 or 3 element array as vector (w implicitly 0)\n * @param vector\n * @param result\n * @returns self\n */\n transformAsVector(vector: Readonly, result?: NumericArray): NumericArray {\n let out: NumericArray;\n switch (vector.length) {\n case 2:\n out = vec2_transformMat4AsVector(result || [-0, -0], vector, this);\n break;\n case 3:\n out = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(out, vector.length);\n return out;\n }\n\n /** @deprecated */\n transformPoint(vector: Readonly, result?: NumericArray): NumericArray {\n return this.transformAsPoint(vector, result);\n }\n\n /** @deprecated */\n transformVector(vector: Readonly, result?: NumericArray): NumericArray {\n return this.transformAsPoint(vector, result);\n }\n\n /** @deprecated */\n transformDirection(vector: Readonly, result?: NumericArray): NumericArray {\n return this.transformAsVector(vector, result);\n }\n\n // three.js math API compatibility\n\n makeRotationX(radians: number): this {\n return this.identity().rotateX(radians);\n }\n\n makeTranslation(x: number, y: number, z: number): this {\n return this.identity().translate([x, y, z]);\n }\n}\n\n// TODO initializing static members directly is an option, but make sure no tree-shaking issues\nlet ZERO: Matrix4;\nlet IDENTITY: Matrix4;\n\nfunction getZeroMatrix(): Readonly {\n if (!ZERO) {\n ZERO = new Matrix4([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n Object.freeze(ZERO);\n }\n return ZERO;\n}\n\nfunction getIdentityMatrix(): Matrix4 {\n if (!IDENTITY) {\n IDENTITY = new Matrix4();\n Object.freeze(IDENTITY);\n }\n return IDENTITY;\n}\n\n// HELPER FUNCTIONS\n\nfunction checkRadians(possiblyDegrees: number) {\n if (possiblyDegrees > Math.PI * 2) {\n throw Error('expected radians');\n }\n}\n\n// eslint-disable-next-line max-params\nfunction computeInfinitePerspectiveOffCenter(\n result: NumericArray,\n left: number,\n right: number,\n bottom: number,\n top: number,\n near: number\n): NumericArray {\n const column0Row0 = (2 * near) / (right - left);\n const column1Row1 = (2 * near) / (top - bottom);\n const column2Row0 = (right + left) / (right - left);\n const column2Row1 = (top + bottom) / (top - bottom);\n const column2Row2 = -1;\n const column2Row3 = -1;\n const column3Row2 = -2 * near;\n result[0] = column0Row0;\n result[1] = 0;\n result[2] = 0;\n result[3] = 0;\n result[4] = 0;\n result[5] = column1Row1;\n result[6] = 0;\n result[7] = 0;\n result[8] = column2Row0;\n result[9] = column2Row1;\n result[10] = column2Row2;\n result[11] = column2Row3;\n result[12] = 0;\n result[13] = 0;\n result[14] = column3Row2;\n result[15] = 0;\n return result;\n}\n","import {transformMat4, scale} from 'gl-matrix/vec4';\n\n// Helper, avoids low-precision 32 bit matrices from gl-matrix mat4.create()\nexport function createMat4(): number[] {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\n\n// Transforms a vec4 with a projection matrix\nexport function transformVector(matrix: number[], vector: number[]): number[] {\n const result = transformMat4([] as number[], vector, matrix);\n scale(result, result, 1 / result[3]);\n return result;\n}\n\nexport function mod(value: number, divisor: number): number {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\n\nexport function lerp(start: number, end: number, step: number): number {\n return step * end + (1 - step) * start;\n}\n\nexport function clamp(x: number, min: number, max: number): number {\n return x < min ? min : x > max ? max : x;\n}\n\nfunction ieLog2(x: number): number {\n return Math.log(x) * Math.LOG2E;\n}\n// Handle missing log2 in IE 11\nexport const log2 = Math.log2 || ieLog2;\n","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition: unknown, message?: string): void {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n","// TODO - THE UTILITIES IN THIS FILE SHOULD BE IMPORTED FROM WEB-MERCATOR-VIEWPORT MODULE\n\nimport {createMat4, transformVector, clamp, log2} from './math-utils';\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport assert from './assert';\n\n// CONSTANTS\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\n// Average circumference (40075 km equatorial, 40007 km meridional)\nconst EARTH_CIRCUMFERENCE = 40.03e6;\n// Latitude that makes a square world, 2 * atan(E ** PI) - PI / 2\nexport const MAX_LATITUDE = 85.051129;\n\n// Mapbox default altitude\nexport const DEFAULT_ALTITUDE = 1.5;\n\nexport type DistanceScales = {\n unitsPerMeter: number[];\n metersPerUnit: number[];\n unitsPerMeter2?: number[];\n unitsPerDegree: number[];\n degreesPerUnit: number[];\n unitsPerDegree2?: number[];\n};\n\n/**\n * PROJECTION MATRIX PARAMETERS\n *\n * TODO how to document mebers\n * @param fov in radians. fov is variable, depends on pitch and altitude\n * @param aspect width/height\n * @param focalDistance distance at which visual scale factor is 1\n * @param near near clipping plane\n * @param far far clipping plane\n */\ntype ProjectionParameters = {\n fov: number;\n aspect: number;\n focalDistance: number;\n near: number;\n far: number;\n};\n\n/** Logarithimic zoom to linear scale **/\nexport function zoomToScale(zoom: number): number {\n return Math.pow(2, zoom);\n}\n\n/** Linear scale to logarithimic zoom **/\nexport function scaleToZoom(scale: number): number {\n return log2(scale);\n}\n\n/**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return [x,y] coordinates.\n */\nexport function lngLatToWorld(lngLat: number[]): [number, number] {\n const [lng, lat] = lngLat;\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = (TILE_SIZE * (lambda2 + PI)) / (2 * PI);\n const y = (TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5)))) / (2 * PI);\n return [x, y];\n}\n\n/**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param xy - array with [x,y] members\n * representing point on projected map plane\n * @return - array with [x,y] of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\nexport function worldToLngLat(xy: number[]): [number, number] {\n const [x, y] = xy;\n const lambda2 = (x / TILE_SIZE) * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp((y / TILE_SIZE) * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\n\n/**\n * Returns the zoom level that gives a 1 meter pixel at a certain latitude\n * 1 = C*cos(y)/2^z/TILE_SIZE = C*cos(y)/2^(z+9)\n */\nexport function getMeterZoom(options: {latitude: number}): number {\n const {latitude} = options;\n assert(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\n\n/**\n * Calculate the conversion from meter to common units at a given latitude\n * This is a cheaper version of `getDistanceScales`\n * @param latitude center latitude in degrees\n * @returns common units per meter\n */\nexport function unitsPerMeter(latitude: number): number {\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;\n}\n\n/**\n * Calculate distance scales in meters around current lat/lon, both for\n * degrees and pixels.\n * In mercator projection mode, the distance scales vary significantly\n * with latitude.\n */\nexport function getDistanceScales(options: {\n latitude: number;\n longitude: number;\n highPrecision?: boolean;\n}): DistanceScales {\n const {latitude, longitude, highPrecision = false} = options;\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n\n /**\n * Number of pixels occupied by one degree longitude around current lat/lon:\n unitsPerDegreeX = d(lngLatToWorld([lng, lat])[0])/d(lng)\n = scale * TILE_SIZE * DEGREES_TO_RADIANS / (2 * PI)\n unitsPerDegreeY = d(lngLatToWorld([lng, lat])[1])/d(lat)\n = -scale * TILE_SIZE * DEGREES_TO_RADIANS / cos(lat * DEGREES_TO_RADIANS) / (2 * PI)\n */\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n\n /**\n * Number of pixels occupied by one meter around current lat/lon:\n */\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n\n /**\n * LngLat: longitude -> east and latitude -> north (bottom left)\n * UTM meter offset: x -> east and y -> north (bottom left)\n * World space: x -> east and y -> south (top left)\n *\n * Y needs to be flipped when converting delta degree/meter to delta pixels\n */\n const result: DistanceScales = {\n unitsPerMeter: [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter],\n metersPerUnit: [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter],\n\n unitsPerDegree: [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter],\n degreesPerUnit: [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter]\n };\n\n /**\n * Taylor series 2nd order for 1/latCosine\n f'(a) * (x - a)\n = d(1/cos(lat * DEGREES_TO_RADIANS))/d(lat) * dLat\n = DEGREES_TO_RADIANS * tan(lat * DEGREES_TO_RADIANS) / cos(lat * DEGREES_TO_RADIANS) * dLat\n */\n if (highPrecision) {\n const latCosine2 = (DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS)) / latCosine;\n const unitsPerDegreeY2 = (unitsPerDegreeX * latCosine2) / 2;\n const altUnitsPerDegree2 = (worldSize / EARTH_CIRCUMFERENCE) * latCosine2;\n const altUnitsPerMeter2 = (altUnitsPerDegree2 / unitsPerDegreeY) * altUnitsPerMeter;\n\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n\n // Main results, used for converting meters to latlng deltas and scaling offsets\n return result;\n}\n\n/**\n * Offset a lng/lat position by meterOffset (northing, easting)\n */\nexport function addMetersToLngLat(lngLatZ: number[], xyz: number[]): number[] {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n\n const {unitsPerMeter, unitsPerMeter2} = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\n\n/**\n *\n * view and projection matrix creation is intentionally kept compatible with\n * mapbox-gl's implementation to ensure that seamless interoperation\n * with mapbox and react-map-gl. See: https://github.com/mapbox/mapbox-gl-js\n */\nexport function getViewMatrix(options: {\n // Viewport props\n height: number;\n pitch: number;\n bearing: number;\n altitude: number;\n // Pre-calculated parameters\n scale: number;\n center?: number[];\n}): number[] {\n const {\n // Viewport props\n height,\n pitch,\n bearing,\n altitude,\n // Pre-calculated parameters\n scale,\n center\n } = options;\n // VIEW MATRIX: PROJECTS MERCATOR WORLD COORDINATES\n // Note that mercator world coordinates typically need to be flipped\n //\n // Note: As usual, matrix operation orders should be read in reverse\n // since vectors will be multiplied from the right during transformation\n const vm = createMat4();\n\n // Move camera to altitude (along the pitch & bearing direction)\n mat4.translate(vm, vm, [0, 0, -altitude]);\n\n // Rotate by bearing, and then by pitch (which tilts the view)\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n\n const relativeScale = scale / height;\n mat4.scale(vm, vm, [relativeScale, relativeScale, relativeScale]);\n\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n\n return vm;\n}\n\n/**\n * Calculates mapbox compatible projection matrix from parameters\n *\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns project parameters object\n */\nexport function getProjectionParameters(options: {\n width: number;\n height: number;\n scale?: number;\n center?: number[];\n offset?: [number, number];\n fovy?: number;\n altitude?: number;\n pitch?: number;\n nearZMultiplier?: number;\n farZMultiplier?: number;\n}): ProjectionParameters {\n const {\n width,\n height,\n altitude,\n pitch = 0,\n offset,\n center,\n scale,\n nearZMultiplier = 1,\n farZMultiplier = 1\n } = options;\n let {fovy = altitudeToFovy(DEFAULT_ALTITUDE)} = options;\n\n // For back-compatibility allow field of view to be\n // derived from altitude\n if (altitude !== undefined) {\n fovy = altitudeToFovy(altitude);\n }\n\n const fovRadians = fovy * DEGREES_TO_RADIANS;\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n\n // Distance from camera to the target\n const focalDistance = fovyToAltitude(fovy);\n\n let cameraToSeaLevelDistance = focalDistance;\n\n if (center) {\n cameraToSeaLevelDistance += (center[2] * scale) / Math.cos(pitchRadians) / height;\n }\n\n const fovAboveCenter = fovRadians * (0.5 + (offset ? offset[1] : 0) / height);\n\n // Find the distance from the center point to the center top\n // in focal distance units using law of sines.\n const topHalfSurfaceDistance =\n (Math.sin(fovAboveCenter) * cameraToSeaLevelDistance) /\n Math.sin(clamp(Math.PI / 2 - pitchRadians - fovAboveCenter, 0.01, Math.PI - 0.01));\n\n // Calculate z distance of the farthest fragment that should be rendered.\n const furthestDistance =\n Math.sin(pitchRadians) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n // Matches mapbox limit\n const horizonDistance = cameraToSeaLevelDistance * 10;\n\n // Calculate z value of the farthest fragment that should be rendered.\n const farZ = Math.min(furthestDistance * farZMultiplier, horizonDistance);\n\n return {\n fov: fovRadians,\n aspect: width / height,\n focalDistance,\n near: nearZMultiplier,\n far: farZ\n };\n}\n\n/**\n * CALCULATE PROJECTION MATRIX: PROJECTS FROM CAMERA (VIEW) SPACE TO CLIPSPACE\n *\n * To match mapbox's z buffer:\n * - \\<= 0.28: nearZMultiplier: 0.1, farZmultiplier: 1\n * - \\>= 0.29: nearZMultiplier: 1 / height, farZMultiplier: 1.01\n *\n * @param options Viewport options\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns 4x4 projection matrix\n */\nexport function getProjectionMatrix(options: {\n width: number;\n height: number;\n pitch: number;\n scale?: number;\n center?: number[];\n offset?: [number, number];\n fovy?: number;\n altitude?: number;\n nearZMultiplier: number;\n farZMultiplier: number;\n}): number[] {\n const {fov, aspect, near, far} = getProjectionParameters(options);\n\n const projectionMatrix = mat4.perspective(\n [] as number[],\n fov, // fov in radians\n aspect, // aspect ratio\n near, // near plane\n far // far plane\n );\n\n return projectionMatrix;\n}\n\n/**\n *\n * Convert an altitude to field of view such that the\n * focal distance is equal to the altitude\n *\n * @param altitude - altitude of camera in screen units\n * @return fovy field of view in degrees\n */\nexport function altitudeToFovy(altitude: number): number {\n return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;\n}\n\n/**\n *\n * Convert an field of view such that the\n * focal distance is equal to the altitude\n *\n * @param fovy - field of view in degrees\n * @return altitude altitude of camera in screen units\n */\nexport function fovyToAltitude(fovy: number): number {\n return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);\n}\n\n/**\n * Project flat coordinates to pixels on screen.\n *\n * @param xyz - flat coordinate on 512*512 Mercator Zoom 0 tile\n * @param pixelProjectionMatrix - projection matrix 4x4\n * @return [x, y, depth] pixel coordinate on screen.\n */\nexport function worldToPixels(xyz: number[], pixelProjectionMatrix: number[]): number[];\n\n// Project flat coordinates to pixels on screen.\nexport function worldToPixels(xyz: number[], pixelProjectionMatrix: number[]): number[] {\n const [x, y, z = 0] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\n\n/**\n * Unproject pixels on screen to flat coordinates.\n *\n * @param xyz - pixel coordinate on screen.\n * @param pixelUnprojectionMatrix - unprojection matrix 4x4\n * @param targetZ - if pixel coordinate does not have a 3rd component (depth),\n * targetZ is used as the elevation plane to unproject onto\n * @return [x, y, Z] flat coordinates on 512*512 Mercator Zoom 0 tile.\n */\nexport function pixelsToWorld(\n xyz: number[],\n pixelUnprojectionMatrix: number[],\n targetZ: number = 0\n): number[] {\n const [x, y, z] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n if (Number.isFinite(z)) {\n // Has depth component\n const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n\n // since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that line with z=0\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n\n const z0 = coord0[2];\n const z1 = coord1[2];\n\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([] as number[], coord0, coord1, t);\n}\n","import assert from './assert';\nimport {log2, clamp} from './math-utils';\nimport {MAX_LATITUDE, lngLatToWorld, worldToLngLat} from './web-mercator-utils';\n\n/**\n * Options for fitBounds\n * @param width - viewport width\n * @param height - viewport height\n * @param bounds - [[lon, lat], [lon, lat]]\n * @param minExtent - The width/height of the bounded area will never be smaller than this\n * @param padding - The amount of padding in pixels\n * to add to the given bounds. Can also be an object with top, bottom, left and right\n * properties defining the padding.\n * @param options.offset= - The center of the given bounds relative to the map's center,\n */\nexport type FitBoundsOptions = {\n width: number;\n height: number;\n bounds: [[number, number], [number, number]];\n minExtent?: number; // 0.01 would be about 1000 meters (degree is ~110KM)\n maxZoom?: number; // ~x4,000,000 => About 10 meter extents\n // options\n padding?: number | Padding;\n offset?: number[];\n};\n\n/**\n * An object describing the padding to add to the bounds.\n * @property top - Padding from top in pixels to add to the given bounds\n * @property bottom - Padding from bottom in pixels to add to the given bounds\n * @property left - Padding from left in pixels to add to the given bounds\n * @property right - Padding from right in pixels to add to the given bounds\n */\nexport type Padding = {\n top: number;\n bottom: number;\n left: number;\n right: number;\n};\n\ntype ViewportProps = {\n longitude: number;\n latitude: number;\n zoom: number;\n};\n\n/**\n * Returns map settings {latitude, longitude, zoom}\n * that will contain the provided corners within the provided width.\n *\n * > _Note: Only supports non-perspective mode._\n *\n * @param options fit bounds parameters\n * @returns - latitude, longitude and zoom\n */\nexport default function fitBounds(options: FitBoundsOptions): ViewportProps {\n const {\n width,\n height,\n bounds,\n minExtent = 0, // 0.01 would be about 1000 meters (degree is ~110KM)\n maxZoom = 24, // ~x4,000,000 => About 10 meter extents\n offset = [0, 0]\n } = options;\n\n const [[west, south], [east, north]] = bounds;\n const padding = getPaddingObject(options.padding);\n\n const nw = lngLatToWorld([west, clamp(north, -MAX_LATITUDE, MAX_LATITUDE)]);\n const se = lngLatToWorld([east, clamp(south, -MAX_LATITUDE, MAX_LATITUDE)]);\n\n // width/height on the Web Mercator plane\n const size = [\n Math.max(Math.abs(se[0] - nw[0]), minExtent),\n Math.max(Math.abs(se[1] - nw[1]), minExtent)\n ];\n\n const targetSize = [\n width - padding.left - padding.right - Math.abs(offset[0]) * 2,\n height - padding.top - padding.bottom - Math.abs(offset[1]) * 2\n ];\n\n assert(targetSize[0] > 0 && targetSize[1] > 0);\n\n // scale = screen pixels per unit on the Web Mercator plane\n const scaleX = targetSize[0] / size[0];\n const scaleY = targetSize[1] / size[1];\n\n // Find how much we need to shift the center\n const offsetX = (padding.right - padding.left) / 2 / scaleX;\n const offsetY = (padding.top - padding.bottom) / 2 / scaleY;\n\n const center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n\n const centerLngLat = worldToLngLat(center);\n const zoom = Math.min(maxZoom, log2(Math.abs(Math.min(scaleX, scaleY))));\n\n assert(Number.isFinite(zoom));\n\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom\n };\n}\n\n// Helpers\nfunction getPaddingObject(padding: number | Padding = 0): Padding {\n if (typeof padding === 'number') {\n return {\n top: padding,\n bottom: padding,\n left: padding,\n right: padding\n };\n }\n\n // Make sure all the required properties are set\n assert(\n Number.isFinite(padding.top) &&\n Number.isFinite(padding.bottom) &&\n Number.isFinite(padding.left) &&\n Number.isFinite(padding.right)\n );\n\n return padding;\n}\n","import {worldToLngLat} from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\nimport {transformVector} from './math-utils';\nimport type WebMercatorViewport from './web-mercator-viewport';\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\n/*\n * Returns the quad at the intersection of the frustum and the given z plane\n * @param {WebMercatorViewport} viewport\n * @param {Number} z - elevation in meters\n */\nexport default function getBounds(viewport: WebMercatorViewport, z: number = 0): number[][] {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const {width, height, unproject} = viewport;\n const unprojectOps = {targetZ: z};\n const bottomLeft = unproject([0, height], unprojectOps);\n const bottomRight = unproject([width, height], unprojectOps);\n let topLeft: number[];\n let topRight: number[];\n\n const halfFov = viewport.fovy\n ? 0.5 * viewport.fovy * DEGREES_TO_RADIANS\n : Math.atan(0.5 / viewport.altitude);\n const angleToGround = (90 - viewport.pitch) * DEGREES_TO_RADIANS;\n // The top plane is parallel to the ground if halfFov == angleToGround\n if (halfFov > angleToGround - 0.01) {\n // intersect with the far plane\n topLeft = unprojectOnFarPlane(viewport, 0, z);\n topRight = unprojectOnFarPlane(viewport, width, z);\n } else {\n // intersect with the top plane\n topLeft = unproject([0, 0], unprojectOps);\n topRight = unproject([width, 0], unprojectOps);\n }\n\n return [bottomLeft, bottomRight, topRight, topLeft];\n}\n\n/*\n * Find a point on the far clipping plane of the viewport\n * @param {WebMercatorViewport} viewport\n * @param {Number} x - projected x in screen space\n * @param {Number} targetZ - the elevation of the point in meters\n */\nfunction unprojectOnFarPlane(viewport: WebMercatorViewport, x: number, targetZ: number): number[] {\n const {pixelUnprojectionMatrix} = viewport;\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, 0, 1, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, viewport.height, 1, 1]);\n\n const z = targetZ * viewport.distanceScales.unitsPerMeter[2];\n const t = (z - coord0[2]) / (coord1[2] - coord0[2]);\n const coord = vec2.lerp([], coord0, coord1, t);\n\n const result = worldToLngLat(coord);\n result.push(targetZ);\n return result;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Note: The numeric values here are matched by shader code in the\n// \"project\" and \"project64\" shader modules. Both places need to be\n// updated.\nimport log from '../utils/log';\n\n/**\n * The coordinate system that positions/dimensions are defined in.\n */\nexport const COORDINATE_SYSTEM = {\n /**\n * `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise\n */\n DEFAULT: -1,\n /**\n * Positions are interpreted as [longitude, latitude, elevation]\n * longitude/latitude are in degrees, elevation is in meters.\n * Dimensions are in meters.\n */\n LNGLAT: 1,\n\n /**\n * Positions are interpreted as [x, y, z] in meter offsets from the coordinate origin.\n * Dimensions are in meters.\n */\n METER_OFFSETS: 2,\n\n /**\n * Positions are interpreted as [deltaLng, deltaLat, elevation] from the coordinate origin.\n * deltaLng/deltaLat are in degrees, elevation is in meters.\n * Dimensions are in meters.\n */\n LNGLAT_OFFSETS: 3,\n\n /**\n * Positions and dimensions are in the common units of the viewport.\n */\n CARTESIAN: 0\n} as const;\n\n// Enums cannot be directly exported as they are not transpiled correctly into ES5, see https://github.com/visgl/deck.gl/issues/7130\nexport type CoordinateSystem = -1 | 0 | 1 | 2 | 3;\n\n// Deprecated\n/* eslint-disable accessor-pairs */\nObject.defineProperty(COORDINATE_SYSTEM, 'IDENTITY', {\n get: () => {\n log.deprecated('COORDINATE_SYSTEM.IDENTITY', 'COORDINATE_SYSTEM.CARTESIAN')();\n return 0;\n }\n});\n/* eslint-enable accessor-pairs */\n\n/**\n * How coordinates are transformed from the world space into the common space.\n */\nexport const PROJECTION_MODE = {\n /**\n * Render geospatial data in Web Mercator projection\n */\n WEB_MERCATOR: 1,\n /**\n * Render geospatial data as a 3D globe\n */\n GLOBE: 2,\n\n /**\n * (Internal use only) Web Mercator projection at high zoom\n */\n WEB_MERCATOR_AUTO_OFFSET: 4,\n\n /**\n * No transformation\n */\n IDENTITY: 0\n} as const;\n\nexport const UNIT = {\n common: 0,\n meters: 1,\n pixels: 2\n} as const;\n\nexport const EVENTS = {\n click: {handler: 'onClick'},\n panstart: {handler: 'onDragStart'},\n panmove: {handler: 'onDrag'},\n panend: {handler: 'onDragEnd'}\n} as const;\n\n/**\n * @deprecated Use string constants directly\n */\nexport const OPERATION = {\n DRAW: 'draw',\n MASK: 'mask',\n TERRAIN: 'terrain'\n} as const;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport log from '../utils/log';\nimport {createMat4, getCameraPosition, getFrustumPlanes, FrustumPlane} from '../utils/math-utils';\n\nimport {Matrix4, Vector3, equals, clamp} from '@math.gl/core';\nimport * as mat4 from 'gl-matrix/mat4';\n\nimport {\n getDistanceScales,\n getMeterZoom,\n lngLatToWorld,\n worldToLngLat,\n worldToPixels,\n pixelsToWorld\n} from '@math.gl/web-mercator';\n\nimport {PROJECTION_MODE} from '../lib/constants';\n\nexport type DistanceScales = {\n unitsPerMeter: number[];\n metersPerUnit: number[];\n};\n\nexport type Padding = {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n};\n\nexport type ViewportOptions = {\n /** Name of the viewport */\n id?: string;\n /** Left offset from the canvas edge, in pixels */\n x?: number;\n /** Top offset from the canvas edge, in pixels */\n y?: number;\n /** Viewport width in pixels */\n width?: number;\n /** Viewport height in pixels */\n height?: number;\n /** Longitude in degrees (geospatial only) */\n longitude?: number;\n /** Latitude in degrees (geospatial only) */\n latitude?: number;\n /** Viewport center in world space. If geospatial, refers to meter offsets from lng, lat */\n position?: number[];\n /** Zoom level */\n zoom?: number;\n /** Padding around the viewport, in pixels. */\n padding?: Padding | null;\n distanceScales?: DistanceScales;\n /** Model matrix of viewport center */\n modelMatrix?: number[] | null;\n /** Custom view matrix */\n viewMatrix?: number[];\n /** Custom projection matrix */\n projectionMatrix?: number[];\n /** Modifier of viewport scale. Corresponds to the number of pixels per common unit at zoom 0. */\n focalDistance?: number;\n /** Use orthographic projection */\n orthographic?: boolean;\n /** fovy in radians. If supplied, overrides fovy */\n fovyRadians?: number;\n /** fovy in degrees. */\n fovy?: number;\n /** Near plane of the projection matrix */\n near?: number;\n /** Far plane of the projection matrix */\n far?: number;\n};\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\nconst IDENTITY = createMat4();\n\nconst ZERO_VECTOR = [0, 0, 0];\n\nconst DEFAULT_DISTANCE_SCALES: DistanceScales = {\n unitsPerMeter: [1, 1, 1],\n metersPerUnit: [1, 1, 1]\n};\n\n// / Helpers\nfunction createProjectionMatrix({\n width,\n height,\n orthographic,\n fovyRadians,\n focalDistance,\n padding,\n near,\n far\n}: {\n width: number;\n height: number;\n orthographic: boolean;\n fovyRadians: number;\n focalDistance: number;\n padding: Padding | null;\n near: number;\n far: number;\n}) {\n const aspect = width / height;\n const matrix = orthographic\n ? new Matrix4().orthographic({fovy: fovyRadians, aspect, focalDistance, near, far})\n : new Matrix4().perspective({fovy: fovyRadians, aspect, near, far});\n if (padding) {\n const {left = 0, right = 0, top = 0, bottom = 0} = padding;\n const offsetX = clamp((left + width - right) / 2, 0, width) - width / 2;\n const offsetY = clamp((top + height - bottom) / 2, 0, height) - height / 2;\n // pixels to clip space\n matrix[8] -= (offsetX * 2) / width;\n matrix[9] += (offsetY * 2) / height;\n }\n return matrix;\n}\n\n/**\n * Manages coordinate system transformations.\n *\n * Note: The Viewport is immutable in the sense that it only has accessors.\n * A new viewport instance should be created if any parameters have changed.\n */\nexport default class Viewport {\n static displayName = 'Viewport';\n\n /** Init parameters */\n\n id: string;\n x: number;\n y: number;\n width: number;\n height: number;\n padding?: Padding | null;\n isGeospatial: boolean;\n zoom: number;\n focalDistance: number;\n position: number[];\n modelMatrix: number[] | null;\n\n /** Derived parameters */\n\n // `!` post-fix expression operator asserts that its operand is non-null and non-undefined in contexts\n // where the type checker is unable to conclude that fact.\n\n distanceScales: DistanceScales; /** scale factors between world space and common space */\n scale!: number; /** scale factor, equals 2^zoom */\n center!: number[]; /** viewport center in common space */\n cameraPosition!: number[]; /** Camera position in common space */\n projectionMatrix!: number[];\n viewMatrix!: number[];\n viewMatrixUncentered!: number[];\n viewMatrixInverse!: number[];\n viewProjectionMatrix!: number[];\n pixelProjectionMatrix!: number[];\n pixelUnprojectionMatrix!: number[];\n resolution?: number;\n\n private _frustumPlanes: {[name: string]: FrustumPlane} = {};\n\n // eslint-disable-next-line complexity\n constructor(opts: ViewportOptions = {}) {\n // @ts-ignore\n this.id = opts.id || this.constructor.displayName || 'viewport';\n\n this.x = opts.x || 0;\n this.y = opts.y || 0;\n // Silently allow apps to send in w,h = 0,0\n this.width = opts.width || 1;\n this.height = opts.height || 1;\n this.zoom = opts.zoom || 0;\n this.padding = opts.padding;\n this.distanceScales = opts.distanceScales || DEFAULT_DISTANCE_SCALES;\n this.focalDistance = opts.focalDistance || 1;\n this.position = opts.position || ZERO_VECTOR;\n this.modelMatrix = opts.modelMatrix || null;\n\n const {longitude, latitude} = opts;\n this.isGeospatial = Number.isFinite(latitude) && Number.isFinite(longitude);\n\n this._initProps(opts);\n this._initMatrices(opts);\n\n // Bind methods for easy access\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n\n get subViewports(): Viewport[] | null {\n return null;\n }\n\n get metersPerPixel(): number {\n return this.distanceScales.metersPerUnit[2] / this.scale;\n }\n\n get projectionMode(): number {\n if (this.isGeospatial) {\n return this.zoom < 12\n ? PROJECTION_MODE.WEB_MERCATOR\n : PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET;\n }\n return PROJECTION_MODE.IDENTITY;\n }\n\n // Two viewports are equal if width and height are identical, and if\n // their view and projection matrices are (approximately) equal.\n equals(viewport: Viewport): boolean {\n if (!(viewport instanceof Viewport)) {\n return false;\n }\n if (this === viewport) {\n return true;\n }\n\n return (\n viewport.width === this.width &&\n viewport.height === this.height &&\n viewport.scale === this.scale &&\n equals(viewport.projectionMatrix, this.projectionMatrix) &&\n equals(viewport.viewMatrix, this.viewMatrix)\n );\n // TODO - check distance scales?\n }\n\n /**\n * Projects xyz (possibly latitude and longitude) to pixel coordinates in window\n * using viewport projection parameters\n * - [longitude, latitude] to [x, y]\n * - [longitude, latitude, Z] => [x, y, z]\n * Note: By default, returns top-left coordinates for canvas/SVG type render\n *\n * @param {Array} lngLatZ - [lng, lat] or [lng, lat, Z]\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether projected coords are top left\n * @return {Array} - [x, y] or [x, y, z] in top left coords\n */\n project(xyz: number[], {topLeft = true}: {topLeft?: boolean} = {}): number[] {\n const worldPosition = this.projectPosition(xyz);\n const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n }\n\n /**\n * Unproject pixel coordinates on screen onto world coordinates,\n * (possibly [lon, lat]) on map.\n * - [x, y] => [lng, lat]\n * - [x, y, z] => [lng, lat, Z]\n * @param {Array} xyz -\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether origin is top left\n * @return {Array|null} - [lng, lat, Z] or [X, Y, Z]\n */\n unproject(\n xyz: number[],\n {topLeft = true, targetZ}: {topLeft?: boolean; targetZ?: number} = {}\n ): number[] {\n const [x, y, z] = xyz;\n\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n return Number.isFinite(targetZ) ? [X, Y, targetZ as number] : [X, Y];\n }\n\n // NON_LINEAR PROJECTION HOOKS\n // Used for web meractor projection\n\n projectPosition(xyz: number[]): [number, number, number] {\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n return [X, Y, Z];\n }\n\n unprojectPosition(xyz: number[]): [number, number, number] {\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n return [X, Y, Z];\n }\n\n /**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n * @param {Array} lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return {Array} [x,y] coordinates.\n */\n projectFlat(xyz: number[]): [number, number] {\n if (this.isGeospatial) {\n // Shader clamps latitude to +-89.9, see /shaderlib/project/project.glsl.js\n // lngLatToWorld([0, -89.9])[1] = -317.9934163758329\n // lngLatToWorld([0, 89.9])[1] = 829.9934163758271\n const result = lngLatToWorld(xyz);\n result[1] = clamp(result[1], -318, 830);\n return result;\n }\n return xyz as [number, number];\n }\n\n /**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n * @param {object|Vector} xy - object with {x,y} members\n * representing point on projected map plane\n * @return {GeoCoordinates} - object with {lat,lon} of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\n unprojectFlat(xyz: number[]): [number, number] {\n if (this.isGeospatial) {\n return worldToLngLat(xyz);\n }\n return xyz as [number, number];\n }\n\n /**\n * Get bounds of the current viewport\n * @return {Array} - [minX, minY, maxX, maxY]\n */\n getBounds(options: {z?: number} = {}): [number, number, number, number] {\n const unprojectOption = {targetZ: options.z || 0};\n\n const topLeft = this.unproject([0, 0], unprojectOption);\n const topRight = this.unproject([this.width, 0], unprojectOption);\n const bottomLeft = this.unproject([0, this.height], unprojectOption);\n const bottomRight = this.unproject([this.width, this.height], unprojectOption);\n\n return [\n Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),\n Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]),\n Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),\n Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1])\n ];\n }\n\n getDistanceScales(coordinateOrigin?: number[]): DistanceScales {\n if (coordinateOrigin) {\n return getDistanceScales({\n longitude: coordinateOrigin[0],\n latitude: coordinateOrigin[1],\n highPrecision: true\n });\n }\n return this.distanceScales;\n }\n\n containsPixel({\n x,\n y,\n width = 1,\n height = 1\n }: {\n x: number;\n y: number;\n width?: number;\n height?: number;\n }): boolean {\n return (\n x < this.x + this.width &&\n this.x < x + width &&\n y < this.y + this.height &&\n this.y < y + height\n );\n }\n\n // Extract frustum planes in common space\n getFrustumPlanes(): {\n left: FrustumPlane;\n right: FrustumPlane;\n bottom: FrustumPlane;\n top: FrustumPlane;\n near: FrustumPlane;\n far: FrustumPlane;\n } {\n if (this._frustumPlanes.near) {\n // @ts-ignore\n return this._frustumPlanes;\n }\n\n Object.assign(this._frustumPlanes, getFrustumPlanes(this.viewProjectionMatrix));\n\n // @ts-ignore\n return this._frustumPlanes;\n }\n\n // EXPERIMENTAL METHODS\n\n /**\n * Needed by panning and linear transition\n * Pan the viewport to place a given world coordinate at screen point [x, y]\n *\n * @param {Array} coords - world coordinates\n * @param {Array} pixel - [x,y] coordinates on screen\n * @return {Object} props of the new viewport\n */\n panByPosition(coords: number[], pixel: number[]): any {\n return null;\n }\n\n // INTERNAL METHODS\n\n /* eslint-disable complexity, max-statements */\n private _initProps(opts: ViewportOptions) {\n const longitude = opts.longitude as number;\n const latitude = opts.latitude as number;\n\n if (this.isGeospatial) {\n if (!Number.isFinite(opts.zoom)) {\n this.zoom = getMeterZoom({latitude}) + Math.log2(this.focalDistance);\n }\n this.distanceScales = opts.distanceScales || getDistanceScales({latitude, longitude});\n }\n const scale = Math.pow(2, this.zoom);\n this.scale = scale;\n\n const {position, modelMatrix} = opts;\n let meterOffset: number[] = ZERO_VECTOR;\n if (position) {\n meterOffset = modelMatrix\n ? (new Matrix4(modelMatrix).transformAsVector(position, []) as number[])\n : position;\n }\n\n if (this.isGeospatial) {\n // Determine camera center in common space\n const center = this.projectPosition([longitude, latitude, 0]);\n\n this.center = new Vector3(meterOffset)\n // Convert to pixels in current zoom\n .scale(this.distanceScales.unitsPerMeter)\n .add(center);\n } else {\n this.center = this.projectPosition(meterOffset);\n }\n }\n /* eslint-enable complexity, max-statements */\n\n private _initMatrices(opts: ViewportOptions) {\n const {\n // View matrix\n viewMatrix = IDENTITY,\n // Projection matrix\n projectionMatrix = null,\n\n // Projection matrix parameters, used if projectionMatrix not supplied\n orthographic = false,\n fovyRadians,\n fovy = 75,\n near = 0.1, // Distance of near clipping plane\n far = 1000, // Distance of far clipping plane\n padding = null, // Center offset in pixels\n focalDistance = 1\n } = opts;\n\n this.viewMatrixUncentered = viewMatrix;\n // Make a centered version of the matrix for projection modes without an offset\n this.viewMatrix = new Matrix4()\n // Apply the uncentered view matrix\n .multiplyRight(viewMatrix)\n // And center it\n .translate(new Vector3(this.center).negate());\n\n this.projectionMatrix =\n projectionMatrix ||\n createProjectionMatrix({\n width: this.width,\n height: this.height,\n orthographic,\n fovyRadians: fovyRadians || fovy * DEGREES_TO_RADIANS,\n focalDistance,\n padding,\n near,\n far\n });\n\n // Note: As usual, matrix operations should be applied in \"reverse\" order\n // since vectors will be multiplied in from the right during transformation\n const vpm = createMat4();\n mat4.multiply(vpm, vpm, this.projectionMatrix);\n mat4.multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n\n // console.log('VPM', this.viewMatrix, this.projectionMatrix, this.viewProjectionMatrix);\n\n // Calculate inverse view matrix\n this.viewMatrixInverse = mat4.invert([], this.viewMatrix) || this.viewMatrix;\n\n // Decompose camera parameters\n this.cameraPosition = getCameraPosition(this.viewMatrixInverse);\n\n /*\n * Builds matrices that converts preprojected lngLats to screen pixels\n * and vice versa.\n * Note: Currently returns bottom-left coordinates!\n * Note: Starts with the GL projection matrix and adds steps to the\n * scale and translate that matrix onto the window.\n * Note: WebGL controls clip space to screen projection with gl.viewport\n * and does not need this step.\n */\n\n // matrix for conversion from world location to screen (pixel) coordinates\n const viewportMatrix = createMat4(); // matrix from NDC to viewport.\n const pixelProjectionMatrix = createMat4(); // matrix from world space to viewport.\n mat4.scale(viewportMatrix, viewportMatrix, [this.width / 2, -this.height / 2, 1]);\n mat4.translate(viewportMatrix, viewportMatrix, [1, -1, 0]);\n mat4.multiply(pixelProjectionMatrix, viewportMatrix, this.viewProjectionMatrix);\n this.pixelProjectionMatrix = pixelProjectionMatrix;\n\n this.pixelUnprojectionMatrix = mat4.invert(createMat4(), this.pixelProjectionMatrix);\n if (!this.pixelUnprojectionMatrix) {\n log.warn('Pixel project matrix not invertible')();\n // throw new Error('Pixel project matrix not invertible');\n }\n }\n}\n","export const VERTEX_SHADER = 'vs';\nexport const FRAGMENT_SHADER = 'fs';\n","// Recommendation is to ignore message but current test suite checks agains the\n// message so keep it for now.\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'shadertools: assertion failed.');\n }\n}\n","const TYPE_DEFINITIONS = {\n number: {\n validate(value, propType) {\n return (\n Number.isFinite(value) &&\n (!('max' in propType) || value <= propType.max) &&\n (!('min' in propType) || value >= propType.min)\n );\n }\n },\n array: {\n validate(value, propType) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n }\n }\n};\n\nexport function parsePropTypes(propDefs) {\n const propTypes = {};\n for (const propName in propDefs) {\n const propDef = propDefs[propName];\n const propType = parsePropType(propDef);\n propTypes[propName] = propType;\n }\n return propTypes;\n}\n\n// Parses one property definition entry. Either contains:\n// * a valid prop type object ({type, ...})\n// * or just a default value, in which case type and name inference is used\nfunction parsePropType(propDef) {\n let type = getTypeOf(propDef);\n if (type === 'object') {\n if (!propDef) {\n return {type: 'object', value: null};\n }\n if ('type' in propDef) {\n return Object.assign({}, propDef, TYPE_DEFINITIONS[propDef.type]);\n }\n if (!('value' in propDef)) {\n // If no type and value this object is likely the value\n return {type: 'object', value: propDef};\n }\n type = getTypeOf(propDef.value);\n return Object.assign({type}, propDef, TYPE_DEFINITIONS[type]);\n }\n return Object.assign({type, value: propDef}, TYPE_DEFINITIONS[type]);\n}\n\n// improved version of javascript typeof that can distinguish arrays and null values\nfunction getTypeOf(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return 'array';\n }\n return typeof value;\n}\n","import {assert} from '../utils';\nimport {parsePropTypes} from './filters/prop-types';\n\nconst VERTEX_SHADER = 'vs';\nconst FRAGMENT_SHADER = 'fs';\n\nexport default class ShaderModule {\n constructor({\n name,\n vs,\n fs,\n dependencies = [],\n uniforms,\n getUniforms,\n deprecations = [],\n defines = {},\n inject = {},\n // DEPRECATED\n vertexShader,\n fragmentShader\n }) {\n assert(typeof name === 'string');\n this.name = name;\n this.vs = vs || vertexShader;\n this.fs = fs || fragmentShader;\n this.getModuleUniforms = getUniforms;\n this.dependencies = dependencies;\n this.deprecations = this._parseDeprecationDefinitions(deprecations);\n this.defines = defines;\n this.injections = normalizeInjections(inject);\n\n if (uniforms) {\n this.uniforms = parsePropTypes(uniforms);\n }\n }\n\n // Extracts the source code chunk for the specified shader type from the named shader module\n getModuleSource(type) {\n let moduleSource;\n switch (type) {\n case VERTEX_SHADER:\n moduleSource = this.vs || '';\n break;\n case FRAGMENT_SHADER:\n moduleSource = this.fs || '';\n break;\n default:\n assert(false);\n }\n\n return `\\\n#define MODULE_${this.name.toUpperCase().replace(/[^0-9a-z]/gi, '_')}\n${moduleSource}\\\n// END MODULE_${this.name}\n\n`;\n }\n\n getUniforms(opts, uniforms) {\n if (this.getModuleUniforms) {\n return this.getModuleUniforms(opts, uniforms);\n }\n // Build uniforms from the uniforms array\n if (this.uniforms) {\n return this._defaultGetUniforms(opts);\n }\n return {};\n }\n\n getDefines() {\n return this.defines;\n }\n\n // Warn about deprecated uniforms or functions\n checkDeprecations(shaderSource, log) {\n this.deprecations.forEach(def => {\n if (def.regex.test(shaderSource)) {\n if (def.deprecated) {\n log.deprecated(def.old, def.new)();\n } else {\n log.removed(def.old, def.new)();\n }\n }\n });\n }\n\n _parseDeprecationDefinitions(deprecations) {\n deprecations.forEach(def => {\n switch (def.type) {\n case 'function':\n def.regex = new RegExp(`\\\\b${def.old}\\\\(`);\n break;\n default:\n def.regex = new RegExp(`${def.type} ${def.old};`);\n }\n });\n\n return deprecations;\n }\n\n _defaultGetUniforms(opts = {}) {\n const uniforms = {};\n const propTypes = this.uniforms;\n\n for (const key in propTypes) {\n const propDef = propTypes[key];\n if (key in opts && !propDef.private) {\n if (propDef.validate) {\n assert(propDef.validate(opts[key], propDef), `${this.name}: invalid ${key}`);\n }\n uniforms[key] = opts[key];\n } else {\n uniforms[key] = propDef.value;\n }\n }\n\n return uniforms;\n }\n}\n\n// This utility mutates the original module\n// Keeping for backward compatibility\n// TODO - remove in v8\nexport function normalizeShaderModule(module) {\n if (!module.normalized) {\n module.normalized = true;\n if (module.uniforms && !module.getUniforms) {\n const shaderModule = new ShaderModule(module);\n module.getUniforms = shaderModule.getUniforms.bind(shaderModule);\n }\n }\n return module;\n}\n\nfunction normalizeInjections(injections) {\n const result = {\n vs: {},\n fs: {}\n };\n\n for (const hook in injections) {\n let injection = injections[hook];\n const stage = hook.slice(0, 2);\n\n if (typeof injection === 'string') {\n injection = {\n order: 0,\n injection\n };\n }\n\n result[stage][hook] = injection;\n }\n\n return result;\n}\n","import ShaderModule from './shader-module';\nimport {assert} from '../utils';\n\n// Instantiate shader modules and any dependencies resolve dependencies\nexport function resolveModules(modules) {\n return getShaderDependencies(instantiateModules(modules));\n}\n\n/**\n * Takes a list of shader module names and returns a new list of\n * shader module names that includes all dependencies, sorted so\n * that modules that are dependencies of other modules come first.\n *\n * If the shader glsl code from the returned modules is concatenated\n * in the reverse order, it is guaranteed that all functions be resolved and\n * that all function and variable definitions come before use.\n *\n * @param {String[]} modules - Array of modules (inline modules or module names)\n * @return {String[]} - Array of modules\n */\nfunction getShaderDependencies(modules) {\n const moduleMap = {};\n const moduleDepth = {};\n getDependencyGraph({modules, level: 0, moduleMap, moduleDepth});\n\n // Return a reverse sort so that dependencies come before the modules that use them\n return Object.keys(moduleDepth)\n .sort((a, b) => moduleDepth[b] - moduleDepth[a])\n .map(name => moduleMap[name]);\n}\n\n/**\n * Recursively checks module dpendencies to calculate dependency\n * level of each module.\n *\n * @param {object} options\n * @param {object[]} options.modules - Array of modules\n * @param {number} options.level - Current level\n * @param {object} options.moduleMap -\n * @param {object} options.moduleDepth - Current level\n * @return {object} - Map of module name to its level\n */\n// Adds another level of dependencies to the result map\nfunction getDependencyGraph({modules, level, moduleMap, moduleDepth}) {\n if (level >= 5) {\n throw new Error('Possible loop in shader dependency graph');\n }\n\n // Update level on all current modules\n for (const module of modules) {\n moduleMap[module.name] = module;\n if (moduleDepth[module.name] === undefined || moduleDepth[module.name] < level) {\n moduleDepth[module.name] = level;\n }\n }\n\n // Recurse\n for (const module of modules) {\n if (module.dependencies) {\n getDependencyGraph({modules: module.dependencies, level: level + 1, moduleMap, moduleDepth});\n }\n }\n}\n\nfunction instantiateModules(modules, seen) {\n return modules.map(module => {\n if (module instanceof ShaderModule) {\n return module;\n }\n\n assert(\n typeof module !== 'string',\n `Shader module use by name is deprecated. Import shader module '${module}' and use it directly.`\n );\n assert(module.name, 'shader module has no name');\n\n module = new ShaderModule(module);\n module.dependencies = instantiateModules(module.dependencies);\n\n return module;\n });\n}\n\nexport const TEST_EXPORTS = {\n getShaderDependencies,\n getDependencyGraph\n};\n","// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\n/* eslint-disable no-inline-comments, max-len */\nimport isOldIE from './is-old-ie';\nimport assert from './assert';\n\nconst GL_VENDOR = 0x1f00;\nconst GL_RENDERER = 0x1f01;\nconst GL_VERSION = 0x1f02;\nconst GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\n\n// Defines luma.gl \"feature\" names and semantics\nconst WEBGL_FEATURES = {\n // GLSL extensions\n GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true], // TODO - name makes no sense in GLSL 3.00\n GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],\n GLSL_DERIVATIVES: ['OES_standard_derivatives', true],\n GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]\n};\n\n// Create a key-mirrored FEATURES array\nconst FEATURES = {};\nObject.keys(WEBGL_FEATURES).forEach(key => {\n FEATURES[key] = key;\n});\n\nexport {FEATURES};\n\nfunction isWebGL2(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n return Boolean(gl && gl._version === 2);\n}\n\nexport function getContextInfo(gl) {\n const info = gl.getExtension('WEBGL_debug_renderer_info');\n const vendor = gl.getParameter((info && info.UNMASKED_VENDOR_WEBGL) || GL_VENDOR);\n const renderer = gl.getParameter((info && info.UNMASKED_RENDERER_WEBGL) || GL_RENDERER);\n const gpuVendor = identifyGPUVendor(vendor, renderer);\n const gpuInfo = {\n gpuVendor,\n vendor,\n renderer,\n version: gl.getParameter(GL_VERSION),\n shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)\n };\n return gpuInfo;\n}\n\nfunction identifyGPUVendor(vendor, renderer) {\n if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n return 'NVIDIA';\n }\n if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n return 'INTEL';\n }\n if (\n vendor.match(/AMD/i) ||\n renderer.match(/AMD/i) ||\n vendor.match(/ATI/i) ||\n renderer.match(/ATI/i)\n ) {\n return 'AMD';\n }\n return 'UNKNOWN GPU';\n}\n\nconst compiledGlslExtensions = {};\n\n// Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n// but fail to compile when the extension is enabled in the shader. Specifically,\n// the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n// in the list of supported extensions.\n// opts allows user agent to be overridden for testing\n/*\n* Inputs :\n* gl : WebGL context\n* cap : Key of WEBGL_FEATURES object identifying the extension\n* opts :\n* behavior : behavior of extension to be tested, by defualt `enable` is used\n* Returns : true, if shader is compiled successfully, false otherwise\n*/\nexport function canCompileGLGSExtension(gl, cap, opts = {}) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (cap in compiledGlslExtensions) {\n return compiledGlslExtensions[cap];\n }\n\n const extensionName = feature[0];\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGlslExtensions[cap] = canCompile;\n return canCompile;\n}\n\n// TODO - cache the value\nfunction getFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n // Get extension name from table\n const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking an extension\n const value =\n typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;\n\n assert(value === false || value === true);\n\n return value;\n}\n\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => getFeature(gl, feature));\n}\n","// opts allows user agent to be overridden for testing\nexport default function isOldIE(opts = {}) {\n const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};\n // @ts-ignore\n const userAgent = opts.userAgent || navigator.userAgent || '';\n // We only care about older versions of IE (IE 11 and below). Newer versions of IE (Edge)\n // have much better web standards support.\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n return isMSIE || isTrident;\n}\n","import {getContextInfo, hasFeatures, canCompileGLGSExtension, FEATURES} from '../utils/webgl-info';\n\nexport function getPlatformShaderDefines(gl) {\n const debugInfo = getContextInfo(gl);\n\n switch (debugInfo.gpuVendor.toLowerCase()) {\n case 'nvidia':\n return `\\\n#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;\n\n case 'intel':\n return `\\\n#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n\n case 'amd':\n // AMD Does not eliminate fp64 code\n return `\\\n#define AMD_GPU\n`;\n\n default:\n // We don't know what GPU it is, could be that the GPU driver or\n // browser is not implementing UNMASKED_RENDERER constant and not\n // reporting a correct name\n return `\\\n#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n }\n}\n\nexport function getVersionDefines(gl, glslVersion, isFragment) {\n // Add shadertools defines to let shaders portably v1/v3 check for features\n let versionDefines = `\\\n#if (__VERSION__ > 120)\n\n# define FEATURE_GLSL_DERIVATIVES\n# define FEATURE_GLSL_DRAW_BUFFERS\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FEATURE_GLSL_TEXTURE_LOD\n\n// DEPRECATED FLAGS, remove in v9\n# define FRAG_DEPTH\n# define DERIVATIVES\n# define DRAW_BUFFERS\n# define TEXTURE_LOD\n\n#endif // __VERSION\n`;\n\n if (hasFeatures(gl, FEATURES.GLSL_FRAG_DEPTH)) {\n versionDefines += `\\\n\n// FRAG_DEPTH => gl_FragDepth is available\n#ifdef GL_EXT_frag_depth\n#extension GL_EXT_frag_depth : enable\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FRAG_DEPTH\n# define gl_FragDepth gl_FragDepthEXT\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_DERIVATIVES) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_DERIVATIVES)\n ) {\n versionDefines += `\\\n\n// DERIVATIVES => dxdF, dxdY and fwidth are available\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n# define FEATURE_GLSL_DERIVATIVES\n# define DERIVATIVES\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_FRAG_DATA) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_FRAG_DATA, {behavior: 'require'})\n ) {\n versionDefines += `\\\n\n// DRAW_BUFFERS => gl_FragData[] is available\n#ifdef GL_EXT_draw_buffers\n#extension GL_EXT_draw_buffers : require\n#define FEATURE_GLSL_DRAW_BUFFERS\n#define DRAW_BUFFERS\n#endif\n`;\n }\n if (hasFeatures(gl, FEATURES.GLSL_TEXTURE_LOD)) {\n versionDefines += `\\\n// TEXTURE_LOD => texture2DLod etc are available\n#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n\n# define FEATURE_GLSL_TEXTURE_LOD\n# define TEXTURE_LOD\n\n#endif\n`;\n }\n return versionDefines;\n}\n","export const MODULE_INJECTORS_VS = `\\\n#ifdef MODULE_LOGDEPTH\n logdepth_adjustPosition(gl_Position);\n#endif\n`;\n\nexport const MODULE_INJECTORS_FS = `\\\n#ifdef MODULE_MATERIAL\n gl_FragColor = material_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LIGHTING\n gl_FragColor = lighting_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_FOG\n gl_FragColor = fog_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_PICKING\n gl_FragColor = picking_filterHighlightColor(gl_FragColor);\n gl_FragColor = picking_filterPickingColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LOGDEPTH\n logdepth_setFragDepth();\n#endif\n`;\n","import {MODULE_INJECTORS_VS, MODULE_INJECTORS_FS} from '../modules/module-injectors';\nimport {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {assert} from '../utils';\n\n// TODO - experimental\nconst MODULE_INJECTORS = {\n [VERTEX_SHADER]: MODULE_INJECTORS_VS,\n [FRAGMENT_SHADER]: MODULE_INJECTORS_FS\n};\n\nexport const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__'; // Uniform/attribute declarations\n\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/; // End of main, assumes main is last function\nconst fragments = [];\n\n// A minimal shader injection/templating system.\n// RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/shader-injection-rfc.md\n/* eslint-disable complexity */\nexport default function injectShader(source, type, inject, injectStandardStubs = false) {\n const isVertex = type === VERTEX_SHADER;\n\n for (const key in inject) {\n const fragmentData = inject[key];\n fragmentData.sort((a, b) => a.order - b.order);\n fragments.length = fragmentData.length;\n for (let i = 0, len = fragmentData.length; i < len; ++i) {\n fragments[i] = fragmentData[i].injection;\n }\n const fragmentString = `${fragments.join('\\n')}\\n`;\n switch (key) {\n // declarations are injected before the main function\n case 'vs:#decl':\n if (isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'vs:#main-start':\n if (isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'vs:#main-end':\n if (isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n // declarations are injected before the main function\n case 'fs:#decl':\n if (!isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'fs:#main-start':\n if (!isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'fs:#main-end':\n if (!isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n\n default:\n // TODO(Tarek): I think this usage should be deprecated.\n\n // inject code after key, leaving key in place\n source = source.replace(key, match => match + fragmentString);\n }\n }\n\n // Remove if it hasn't already been replaced\n source = source.replace(DECLARATION_INJECT_MARKER, '');\n\n // Finally, if requested, insert an automatic module injector chunk\n if (injectStandardStubs) {\n source = source.replace(/\\}\\s*$/, match => match + MODULE_INJECTORS[type]);\n }\n\n return source;\n}\n\n/* eslint-enable complexity */\n\n// Takes an array of inject objects and combines them into one\nexport function combineInjects(injects) {\n const result = {};\n assert(Array.isArray(injects) && injects.length > 1);\n injects.forEach(inject => {\n for (const key in inject) {\n result[key] = result[key] ? `${result[key]}\\n${inject[key]}` : inject[key];\n }\n });\n return result;\n}\n","// TRANSPILATION TABLES\n\nfunction testVariable(qualifier) {\n /*\n should match:\n in float weight;\n out vec4 positions[2];\n should not match:\n void f(out float a, in float b) {}\n */\n return new RegExp(`\\\\b${qualifier}[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)`, 'g');\n}\n\n/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */\nconst ES300_REPLACEMENTS = [\n // Fix poorly formatted version directive\n [/^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/, '#version 300 es\\n'],\n // The individual `texture...()` functions were replaced with `texture()` overloads\n [/\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g, 'textureLod('],\n [/\\btexture(2D|2DProj|Cube)(EXT)?\\(/g, 'texture(']\n];\n\nconst ES300_VERTEX_REPLACEMENTS = [\n ...ES300_REPLACEMENTS,\n // `attribute` keyword replaced with `in`\n [testVariable('attribute'), 'in $1'],\n // `varying` keyword replaced with `out`\n [testVariable('varying'), 'out $1']\n];\n\n/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */\nconst ES300_FRAGMENT_REPLACEMENTS = [\n ...ES300_REPLACEMENTS,\n // `varying` keyword replaced with `in`\n [testVariable('varying'), 'in $1']\n];\n\nconst ES100_REPLACEMENTS = [\n [/^#version[ \\t]+300[ \\t]+es/, '#version 100'],\n\n // In GLSL 1.00 ES these functions are provided by an extension\n [/\\btexture(2D|2DProj|Cube)Lod\\(/g, 'texture$1LodEXT('],\n\n // Overloads in GLSL 3.00 map to individual functions. Note that we cannot\n // differentiate 2D,2DProj,Cube without type analysis so we choose the most common variant.\n [/\\btexture\\(/g, 'texture2D('],\n [/\\btextureLod\\(/g, 'texture2DLodEXT(']\n];\n\nconst ES100_VERTEX_REPLACEMENTS = [\n ...ES100_REPLACEMENTS,\n [testVariable('in'), 'attribute $1'],\n [testVariable('out'), 'varying $1']\n];\n\nconst ES100_FRAGMENT_REPLACEMENTS = [\n ...ES100_REPLACEMENTS,\n // Replace `in` with `varying`\n [testVariable('in'), 'varying $1']\n];\n\nconst ES100_FRAGMENT_OUTPUT_NAME = 'gl_FragColor';\nconst ES300_FRAGMENT_OUTPUT_REGEX = /\\bout[ \\t]+vec4[ \\t]+(\\w+)[ \\t]*;\\n?/;\n\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\n\n// Transpiles shader source code to target GLSL version\n// Note: We always run transpiler even if same version e.g. 3.00 => 3.00\n// RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/portable-glsl-300-rfc.md\nexport default function transpileShader(source, targetGLSLVersion, isVertex) {\n switch (targetGLSLVersion) {\n case 300:\n return isVertex\n ? convertShader(source, ES300_VERTEX_REPLACEMENTS)\n : convertFragmentShaderTo300(source);\n case 100:\n return isVertex\n ? convertShader(source, ES100_VERTEX_REPLACEMENTS)\n : convertFragmentShaderTo100(source);\n default:\n throw new Error(`unknown GLSL version ${targetGLSLVersion}`);\n }\n}\n\nfunction convertShader(source, replacements) {\n for (const [pattern, replacement] of replacements) {\n source = source.replace(pattern, replacement);\n }\n return source;\n}\n\nfunction convertFragmentShaderTo300(source) {\n source = convertShader(source, ES300_FRAGMENT_REPLACEMENTS);\n\n const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source.replace(new RegExp(`\\\\b${ES100_FRAGMENT_OUTPUT_NAME}\\\\b`, 'g'), outputName);\n } else {\n const outputName = 'fragmentColor';\n source = source\n .replace(REGEX_START_OF_MAIN, match => `out vec4 ${outputName};\\n${match}`)\n .replace(new RegExp(`\\\\b${ES100_FRAGMENT_OUTPUT_NAME}\\\\b`, 'g'), outputName);\n }\n\n return source;\n}\n\nfunction convertFragmentShaderTo100(source) {\n source = convertShader(source, ES100_FRAGMENT_REPLACEMENTS);\n\n const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source\n .replace(ES300_FRAGMENT_OUTPUT_REGEX, '')\n .replace(new RegExp(`\\\\b${outputName}\\\\b`, 'g'), ES100_FRAGMENT_OUTPUT_NAME);\n }\n\n return source;\n}\n","import {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {resolveModules} from './resolve-modules';\nimport {getPlatformShaderDefines, getVersionDefines} from './platform-defines';\nimport injectShader, {DECLARATION_INJECT_MARKER} from './inject-shader';\nimport transpileShader from './transpile-shader';\nimport {assert} from '../utils';\n\nconst INJECT_SHADER_DECLARATIONS = `\\n\\n${DECLARATION_INJECT_MARKER}\\n\\n`;\n\nconst SHADER_TYPE = {\n [VERTEX_SHADER]: 'vertex',\n [FRAGMENT_SHADER]: 'fragment'\n};\n\n// Precision prologue to inject before functions are injected in shader\n// TODO - extract any existing prologue in the fragment source and move it up...\nconst FRAGMENT_SHADER_PROLOGUE = `\\\nprecision highp float;\n\n`;\n\n// Inject a list of modules\nexport function assembleShaders(gl, opts) {\n const {vs, fs} = opts;\n const modules = resolveModules(opts.modules || []);\n return {\n gl,\n vs: assembleShader(gl, Object.assign({}, opts, {source: vs, type: VERTEX_SHADER, modules})),\n fs: assembleShader(gl, Object.assign({}, opts, {source: fs, type: FRAGMENT_SHADER, modules})),\n getUniforms: assembleGetUniforms(modules)\n };\n}\n\n// Pulls together complete source code for either a vertex or a fragment shader\n// adding prologues, requested module chunks, and any final injections.\nfunction assembleShader(\n gl,\n {\n id,\n source,\n type,\n modules,\n defines = {},\n hookFunctions = [],\n inject = {},\n transpileToGLSL100 = false,\n prologue = true,\n log\n }\n) {\n assert(typeof source === 'string', 'shader source must be a string');\n\n const isVertex = type === VERTEX_SHADER;\n\n const sourceLines = source.split('\\n');\n let glslVersion = 100;\n let versionLine = '';\n let coreSource = source;\n // Extract any version directive string from source.\n // TODO : keep all pre-processor statements at the begining of the shader.\n if (sourceLines[0].indexOf('#version ') === 0) {\n glslVersion = 300; // TODO - regexp that matches actual version number\n versionLine = sourceLines[0];\n coreSource = sourceLines.slice(1).join('\\n');\n } else {\n versionLine = `#version ${glslVersion}`;\n }\n\n // Combine Module and Application Defines\n const allDefines = {};\n modules.forEach(module => {\n Object.assign(allDefines, module.getDefines());\n });\n Object.assign(allDefines, defines);\n\n // Add platform defines (use these to work around platform-specific bugs and limitations)\n // Add common defines (GLSL version compatibility, feature detection)\n // Add precision declaration for fragment shaders\n let assembledSource = prologue\n ? `\\\n${versionLine}\n${getShaderName({id, source, type})}\n${getShaderType({type})}\n${getPlatformShaderDefines(gl)}\n${getVersionDefines(gl, glslVersion, !isVertex)}\n${getApplicationDefines(allDefines)}\n${isVertex ? '' : FRAGMENT_SHADER_PROLOGUE}\n`\n : `${versionLine}\n`;\n\n const hookFunctionMap = normalizeHookFunctions(hookFunctions);\n\n // Add source of dependent modules in resolved order\n const hookInjections = {};\n const declInjections = {};\n const mainInjections = {};\n\n for (const key in inject) {\n const injection =\n typeof inject[key] === 'string' ? {injection: inject[key], order: 0} : inject[key];\n const match = key.match(/^(v|f)s:(#)?([\\w-]+)$/);\n if (match) {\n const hash = match[2];\n const name = match[3];\n if (hash) {\n if (name === 'decl') {\n declInjections[key] = [injection];\n } else {\n mainInjections[key] = [injection];\n }\n } else {\n hookInjections[key] = [injection];\n }\n } else {\n // Regex injection\n mainInjections[key] = [injection];\n }\n }\n\n for (const module of modules) {\n if (log) {\n module.checkDeprecations(coreSource, log);\n }\n const moduleSource = module.getModuleSource(type, glslVersion);\n // Add the module source, and a #define that declares it presence\n assembledSource += moduleSource;\n\n const injections = module.injections[type];\n for (const key in injections) {\n const match = key.match(/^(v|f)s:#([\\w-]+)$/);\n if (match) {\n const name = match[2];\n const injectionType = name === 'decl' ? declInjections : mainInjections;\n injectionType[key] = injectionType[key] || [];\n injectionType[key].push(injections[key]);\n } else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n\n // For injectShader\n assembledSource += INJECT_SHADER_DECLARATIONS;\n\n assembledSource = injectShader(assembledSource, type, declInjections);\n\n assembledSource += getHookFunctions(hookFunctionMap[type], hookInjections);\n\n // Add the version directive and actual source of this shader\n assembledSource += coreSource;\n\n // Apply any requested shader injections\n assembledSource = injectShader(assembledSource, type, mainInjections);\n\n assembledSource = transpileShader(\n assembledSource,\n transpileToGLSL100 ? 100 : glslVersion,\n isVertex\n );\n\n return assembledSource;\n}\n\n// Returns a combined `getUniforms` covering the options for all the modules,\n// the created function will pass on options to the inidividual `getUniforms`\n// function of each shader module and combine the results into one object that\n// can be passed to setUniforms.\nfunction assembleGetUniforms(modules) {\n return function getUniforms(opts) {\n const uniforms = {};\n for (const module of modules) {\n // `modules` is already sorted by dependency level. This guarantees that\n // modules have access to the uniforms that are generated by their dependencies.\n const moduleUniforms = module.getUniforms(opts, uniforms);\n Object.assign(uniforms, moduleUniforms);\n }\n return uniforms;\n };\n}\n\nfunction getShaderType({type}) {\n return `\n#define SHADER_TYPE_${SHADER_TYPE[type].toUpperCase()}\n`;\n}\n\n// Generate \"glslify-compatible\" SHADER_NAME defines\n// These are understood by the GLSL error parsing function\n// If id is provided and no SHADER_NAME constant is present in source, create one\nfunction getShaderName({id, source, type}) {\n const injectShaderName = id && typeof id === 'string' && source.indexOf('SHADER_NAME') === -1;\n return injectShaderName\n ? `\n#define SHADER_NAME ${id}_${SHADER_TYPE[type]}\n\n`\n : '';\n}\n\n// Generates application defines from an object\nfunction getApplicationDefines(defines = {}) {\n let count = 0;\n let sourceText = '';\n for (const define in defines) {\n if (count === 0) {\n sourceText += '\\n// APPLICATION DEFINES\\n';\n }\n count++;\n\n const value = defines[define];\n if (value || Number.isFinite(value)) {\n sourceText += `#define ${define.toUpperCase()} ${defines[define]}\\n`;\n }\n }\n if (count === 0) {\n sourceText += '\\n';\n }\n return sourceText;\n}\n\nfunction getHookFunctions(hookFunctions, hookInjections) {\n let result = '';\n for (const hookName in hookFunctions) {\n const hookFunction = hookFunctions[hookName];\n result += `void ${hookFunction.signature} {\\n`;\n if (hookFunction.header) {\n result += ` ${hookFunction.header}`;\n }\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a, b) => a.order - b.order);\n for (const injection of injections) {\n result += ` ${injection.injection}\\n`;\n }\n }\n if (hookFunction.footer) {\n result += ` ${hookFunction.footer}`;\n }\n result += '}\\n';\n }\n\n return result;\n}\n\nfunction normalizeHookFunctions(hookFunctions) {\n const result = {\n vs: {},\n fs: {}\n };\n\n hookFunctions.forEach(hook => {\n let opts;\n if (typeof hook !== 'string') {\n opts = hook;\n hook = opts.hook;\n } else {\n opts = {};\n }\n hook = hook.trim();\n const [stage, signature] = hook.split(':');\n const name = hook.replace(/\\(.+/, '');\n result[stage][name] = Object.assign(opts, {signature});\n });\n\n return result;\n}\n","import {log} from '@luma.gl/gltools';\nimport {Stats} from '@probe.gl/stats';\nimport {isBrowser} from '@probe.gl/env';\n\n// Version detection using babel plugin\n/* global __VERSION__ */\n// @ts-ignore\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nconst STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';\n// Assign luma.log.level in console to control logging: \\\n// 0: none, 1: minimal, 2: verbose, 3: attribute/uniforms, 4: gl logs\n// luma.log.break[], set to gl funcs, luma.log.profile[] set to model names`;\n\nexport class StatsManager {\n constructor() {\n this.stats = new Map();\n }\n\n get(name) {\n if (!this.stats.has(name)) {\n this.stats.set(name, new Stats({id: name}));\n }\n\n return this.stats.get(name);\n }\n}\n\nconst lumaStats = new StatsManager();\n\nif (globalThis.luma && globalThis.luma.VERSION !== VERSION) {\n throw new Error(`luma.gl - multiple VERSIONs detected: ${globalThis.luma.VERSION} vs ${VERSION}`);\n}\n\nif (!globalThis.luma) {\n if (isBrowser()) {\n log.log(1, `luma.gl ${VERSION} - ${STARTUP_MESSAGE}`)();\n }\n\n globalThis.luma = globalThis.luma || {\n VERSION,\n version: VERSION,\n log,\n\n // A global stats object that various components can add information to\n // E.g. see webgl/resource.js\n stats: lumaStats,\n\n // Keep some luma globals in a sub-object\n // This allows us to dynamically detect if certain modules have been\n // included (such as IO and headless) and enable related functionality,\n // without unconditionally requiring and thus bundling big dependencies\n // into the app.\n globals: {\n modules: {},\n nodeIO: {}\n }\n };\n}\n\nexport {lumaStats};\nexport default globalThis.luma;\n","// Recommendation is to ignore message but current test suite checks agains the\n// message so keep it for now.\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'luma.gl: assertion failed.');\n }\n}\n","import {assert} from '../utils/assert';\n\n// Resolve a WebGL enumeration name (returns itself if already a number)\nexport function getKeyValue(gl, name) {\n // If not a string, return (assume number)\n if (typeof name !== 'string') {\n return name;\n }\n\n // If string converts to number, return number\n const number = Number(name);\n if (!isNaN(number)) {\n return number;\n }\n\n // Look up string, after removing any 'GL.' or 'gl.' prefix\n name = name.replace(/^.*\\./, '');\n const value = gl[name];\n assert(value !== undefined, `Accessing undefined constant GL.${name}`);\n return value;\n}\n\nexport function getKey(gl, value) {\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n\nexport function getKeyType(gl, value) {\n assert(value !== undefined, 'undefined key');\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n","import {assert} from './assert';\n\nconst uidCounters = {};\n\n/**\n * Returns a UID.\n * @param {string} id= - Identifier base name\n * @return {string} uid\n **/\nexport function uid(id = 'id') {\n uidCounters[id] = uidCounters[id] || 1;\n const count = uidCounters[id]++;\n return `${id}-${count}`;\n}\n\n/**\n * Verifies if a given number is power of two or not.\n * @param {object} n - The number to check.\n * @return {boolean} Returns true if the given number is power of 2, false otherwise.\n **/\nexport function isPowerOfTwo(n) {\n assert(typeof n === 'number', 'Input must be a number');\n return n && (n & (n - 1)) === 0;\n}\n\n// Returns true if given object is empty, false otherwise.\nexport function isObjectEmpty(obj) {\n let isEmpty = true;\n /* eslint-disable no-unused-vars */\n for (const key in obj) {\n isEmpty = false;\n break;\n }\n /* eslint-enable no-unused-vars */\n return isEmpty;\n}\n","import {log} from '@luma.gl/gltools';\n\n// Install stubs for removed methods\nexport function stubRemovedMethods(instance, className, version, methodNames) {\n const upgradeMessage = `See luma.gl ${version} Upgrade Guide at \\\nhttps://luma.gl/docs/upgrade-guide`;\n\n const prototype = Object.getPrototypeOf(instance);\n\n methodNames.forEach(methodName => {\n if (prototype.methodName) {\n return;\n }\n\n prototype[methodName] = () => {\n log.removed(`Calling removed method ${className}.${methodName}: `, upgradeMessage)();\n throw new Error(methodName);\n };\n });\n}\n","import {isWebGL2, assertWebGLContext} from '@luma.gl/gltools';\nimport {lumaStats} from '../init';\nimport {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n// TODO - Handle context loss\n// function glGetContextLossCount(gl) {\n// return (gl.luma && gl.luma.glCount) || 0;\n// }\n\nexport default class Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Resource';\n }\n constructor(gl, opts = {}) {\n assertWebGLContext(gl);\n\n const {id, userData = {}} = opts;\n this.gl = gl;\n // @ts-ignore\n this.gl2 = gl;\n // this.ext = polyfillContext(gl);\n this.id = id || uid(this[Symbol.toStringTag]);\n this.userData = userData;\n this._bound = false;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n this._handle = opts.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n // Only meaningful for resources that allocate GPU memory\n this.byteLength = 0;\n\n this._addStats();\n }\n\n toString() {\n return `${this[Symbol.toStringTag] || this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.opts);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.opts);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-ignore\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this._removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-ignore\n if (children && deleteChildren) {\n // @ts-ignore\n children.filter(Boolean).forEach(child => child.delete());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param {GLenum} pname\n * @return {GLint|GLfloat|GLenum} param\n */\n getParameter(pname, opts = {}) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, opts);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-ignore\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {string} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(opts) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n /** @returns {number} */\n _getParameter(pname, opts) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n\n _addStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n /**\n * Track common allocated memory and memory based on particular gl context.\n * @param {number} bytes\n * @param {string} name\n */\n _trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {\n this._trackAllocatedMemoryForContext(bytes, name);\n this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);\n this.byteLength = bytes;\n }\n\n _trackAllocatedMemoryForContext(bytes, name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n }\n\n /**\n * Deallocate memory for common statistic and for each gl context as well.\n * @param {string} name\n */\n _trackDeallocatedMemory(name = this[Symbol.toStringTag]) {\n this._trackDeallocatedMemoryForContext(name);\n this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);\n this.byteLength = 0;\n }\n\n _trackDeallocatedMemoryForContext(name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n }\n}\n","import GL from '@luma.gl/constants';\n\nconst ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\n\n// Converts TYPED ARRAYS to corresponding GL constant\n// Used to auto deduce gl parameter types\nexport function getGLTypeFromTypedArray(arrayOrType) {\n // If typed array, look up constructor\n const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n switch (type) {\n case Float32Array:\n return GL.FLOAT;\n case Uint16Array:\n return GL.UNSIGNED_SHORT;\n case Uint32Array:\n return GL.UNSIGNED_INT;\n case Uint8Array:\n return GL.UNSIGNED_BYTE;\n case Uint8ClampedArray:\n return GL.UNSIGNED_BYTE;\n case Int8Array:\n return GL.BYTE;\n case Int16Array:\n return GL.SHORT;\n case Int32Array:\n return GL.INT;\n default:\n throw new Error(ERR_TYPE_DEDUCTION);\n }\n}\n\n// Converts GL constant to corresponding TYPED ARRAY\n// Used to auto deduce gl parameter types\n\n/* eslint-disable complexity */\nexport function getTypedArrayFromGLType(glType, {clamped = true} = {}) {\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return clamped ? Uint8ClampedArray : Uint8Array;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Failed to deduce typed array type from GL constant');\n }\n}\n/* eslint-enable complexity */\n\n// Flip rows (can be used on arrays returned from `Framebuffer.readPixels`)\n// https://stackoverflow.com/questions/41969562/\n// how-can-i-flip-the-result-of-webglrenderingcontext-readpixels\nexport function flipRows({data, width, height, bytesPerPixel = 4, temp}) {\n const bytesPerRow = width * bytesPerPixel;\n\n // make a temp buffer to hold one row\n temp = temp || new Uint8Array(bytesPerRow);\n for (let y = 0; y < height / 2; ++y) {\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n // make copy of a row on the top half\n temp.set(data.subarray(topOffset, topOffset + bytesPerRow));\n // copy a row from the bottom half to the top\n data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n // copy the copy of the top half row to the bottom half\n data.set(temp, bottomOffset);\n }\n}\n\nexport function scalePixels({data, width, height}) {\n const newWidth = Math.round(width / 2);\n const newHeight = Math.round(height / 2);\n const newData = new Uint8Array(newWidth * newHeight * 4);\n for (let y = 0; y < newHeight; y++) {\n for (let x = 0; x < newWidth; x++) {\n for (let c = 0; c < 4; c++) {\n newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n }\n }\n }\n return {data: newData, width: newWidth, height: newHeight};\n}\n","/* Use as\nimport {checkProps} from '../util/check-props;'\n\nconst PROP_CHECKS = {\n // Removed props no longer supported, print error and link to upgrade guide\n removedProps: {\n },\n // Deprecated props\n deprecatedProps: {\n offset: 'accessor',\n stride: 'accessor',\n type: 'accessor',\n size: 'accessor',\n divisor: 'accessor',\n normalized: 'accessor',\n integer: 'accessor'\n },\n // Deprecated props that can be autosubstituted, print warning and return updated props object\n replacedProps: {\n bytes: 'byteLength'\n }\n}\n\nclass Buffer {\n setProps(props) {\n checkProps('Buffer', props, PROP_CHECKS);\n }\n}\n*/\nimport {log} from '@luma.gl/gltools';\n\nexport function checkProps(className, props, propChecks) {\n const {removedProps = {}, deprecatedProps = {}, replacedProps = {}} = propChecks;\n\n // removedProps: Removed props no longer supported\n // print error and link to upgrade guide\n for (const propName in removedProps) {\n if (propName in props) {\n const replacementProp = removedProps[propName];\n const replacement = replacementProp ? `${className}.${removedProps[propName]}` : 'N/A';\n log.removed(`${className}.${propName}`, replacement)();\n }\n }\n\n // deprecatedProps: Deprecated props that can not be autosubstituted\n // print warning and rely on caller to substitute\n for (const propName in deprecatedProps) {\n if (propName in props) {\n const replacementProp = deprecatedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n }\n }\n\n // replacedProps: Deprecated props that can be autosubstituted\n // print warning and return updated props object\n let newProps = null;\n for (const propName in replacedProps) {\n if (propName in props) {\n const replacementProp = replacedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n newProps = newProps || Object.assign({}, props);\n newProps[replacementProp] = props[propName];\n delete newProps[propName];\n }\n }\n\n return newProps || props;\n}\n","import GL from '@luma.gl/constants';\nimport {getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';\nimport {assert} from '../utils/assert';\nimport {checkProps} from '../utils/check-props';\n\nconst DEFAULT_ACCESSOR_VALUES = {\n offset: 0,\n stride: 0,\n type: GL.FLOAT,\n size: 1,\n divisor: 0,\n normalized: false,\n integer: false\n};\n\nconst PROP_CHECKS = {\n deprecatedProps: {\n instanced: 'divisor',\n isInstanced: 'divisor'\n }\n};\n\nexport default class Accessor {\n static getBytesPerElement(accessor) {\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT;\n }\n\n static getBytesPerVertex(accessor) {\n assert(accessor.size);\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n }\n\n // Combines (merges) a list of accessors. On top of default values\n // Usually [programAccessor, bufferAccessor, appAccessor]\n // All props will be set in the returned object.\n // TODO check for conflicts between values in the supplied accessors\n static resolve(...accessors) {\n return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]); // Default values\n }\n\n constructor(...accessors) {\n accessors.forEach(accessor => this._assign(accessor)); // Merge in sequence\n Object.freeze(this);\n }\n\n toString() {\n return JSON.stringify(this);\n }\n\n // ACCESSORS\n\n // TODO - remove>\n get BYTES_PER_ELEMENT() {\n return Accessor.getBytesPerElement(this);\n }\n\n get BYTES_PER_VERTEX() {\n return Accessor.getBytesPerVertex(this);\n }\n\n // PRIVATE\n\n // eslint-disable-next-line complexity, max-statements\n _assign(props = {}) {\n props = checkProps('Accessor', props, PROP_CHECKS);\n\n if (props.type !== undefined) {\n this.type = props.type;\n\n // Auto-deduce integer type?\n if (props.type === GL.INT || props.type === GL.UNSIGNED_INT) {\n this.integer = true;\n }\n }\n if (props.size !== undefined) {\n this.size = props.size;\n }\n if (props.offset !== undefined) {\n this.offset = props.offset;\n }\n if (props.stride !== undefined) {\n this.stride = props.stride;\n }\n if (props.normalized !== undefined) {\n this.normalized = props.normalized;\n }\n if (props.integer !== undefined) {\n this.integer = props.integer;\n }\n\n // INSTANCE DIVISOR\n if (props.divisor !== undefined) {\n this.divisor = props.divisor;\n }\n\n // Buffer is optional\n if (props.buffer !== undefined) {\n this.buffer = props.buffer;\n }\n\n // The binding index (for binding e.g. Transform feedbacks and Uniform buffers)\n // TODO - should this be part of accessor?\n if (props.index !== undefined) {\n if (typeof props.index === 'boolean') {\n this.index = props.index ? 1 : 0;\n } else {\n this.index = props.index;\n }\n }\n\n // DEPRECATED\n if (props.instanced !== undefined) {\n this.divisor = props.instanced ? 1 : 0;\n }\n if (props.isInstanced !== undefined) {\n this.divisor = props.isInstanced ? 1 : 0;\n }\n\n return this;\n }\n}\n\n// TEST EXPORTS\nexport {DEFAULT_ACCESSOR_VALUES};\n","import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Accessor from './accessor';\nimport {getGLTypeFromTypedArray, getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';\nimport {assertWebGL2Context, log} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\nimport {checkProps} from '../utils/check-props';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\nexport default class Buffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Buffer';\n }\n constructor(gl, props = {}) {\n super(gl, props);\n\n this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);\n // this.stubRemovedMethods('Buffer', 'v7.0', ['updateAccessor']);\n\n // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n this.target = props.target || (this.gl.webgl2 ? GL.COPY_READ_BUFFER : GL.ARRAY_BUFFER);\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props = {}) {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.usage = props.usage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data, props.offset, props.byteLength);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props) {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor) {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength) {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(props) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n const {data, offset = 0, srcOffset = 0} = props;\n const byteLength = props.byteLength || props.length;\n\n assert(data);\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n // WEBGL2 ONLY: Copies part of the data of another buffer into this buffer\n copyData({sourceBuffer, readOffset = 0, writeOffset = 0, size}) {\n const {gl} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n // WEBGL2 ONLY: Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n getData({dstData = null, srcByteOffset = 0, dstOffset = 0, length = 0} = {}) {\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind({\n target = this.target, // target for the bind operation\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = {}) {\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind({target = this.target, index = this.accessor && this.accessor.index} = {}) {\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData() {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, offset = 0, byteLength = data.byteLength + offset) {\n assert(ArrayBuffer.isView(data));\n\n this._trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.usage);\n this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength, usage = this.usage) {\n assert(byteLength >= 0);\n\n this._trackDeallocatedMemory();\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n\n this.usage = usage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n _getTarget() {\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createBuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteBuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _getParameter(pname) {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n get type() {\n log.deprecated('Buffer.type', 'Buffer.accessor.type')();\n return this.accessor.type;\n }\n\n get bytes() {\n log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n return this.byteLength;\n }\n\n // DEPRECATIONS - v6.0\n // Deprecated in v6.x, but not warnings not properly implemented\n setByteLength(byteLength) {\n log.deprecated('setByteLength', 'reallocate')();\n return this.reallocate(byteLength);\n }\n\n // Deprecated in v6.x, but not warnings not properly implemented\n updateAccessor(opts) {\n log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n this.accessor = new Accessor(this.accessor, opts);\n return this;\n }\n}\n","import GL from '@luma.gl/constants';\nimport {isWebGL2} from '@luma.gl/gltools';\n\n// const S3TC = 'WEBGL_compressed_texture_s3tc';\n// const PVRTC = 'WEBGL_compressed_texture_pvrtc';\n// const ES3 = 'WEBGL_compressed_texture_es3';\n// const ETC1 = 'WEBGL_compressed_texture_etc1';\n// const SRGB = 'EXT_sRGB';\n// const DEPTH = 'WEBGL_depth_texture';\n\n// Legal combinations for internalFormat, format and type\nexport const TEXTURE_FORMATS = {\n // Unsized texture format - more performance\n [GL.RGB]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n // TODO: format: GL.RGBA type: GL.FLOAT is supported in WebGL1 when 'OES_texure_float' is suported\n // we need to update this table structure to specify extensions (gl1: 'OES_texure_float', gl2: false) for each type.\n [GL.RGBA]: {\n dataFormat: GL.RGBA,\n types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]\n },\n [GL.ALPHA]: {dataFormat: GL.ALPHA, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE]: {dataFormat: GL.LUMINANCE, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE_ALPHA]: {dataFormat: GL.LUMINANCE_ALPHA, types: [GL.UNSIGNED_BYTE]},\n\n // 32 bit floats\n [GL.R32F]: {dataFormat: GL.RED, types: [GL.FLOAT], gl2: true},\n [GL.RG32F]: {dataFormat: GL.RG, types: [GL.FLOAT], gl2: true},\n [GL.RGB32F]: {dataFormat: GL.RGB, types: [GL.FLOAT], gl2: true},\n [GL.RGBA32F]: {dataFormat: GL.RGBA, types: [GL.FLOAT], gl2: true}\n\n // [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1: DEPTH},\n // [GL.DEPTH_STENCIL]: {gl1: DEPTH},\n\n // Sized texture format - more performance\n // R\n // [GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RG\n // [GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGB\n // [GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n // [GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_half_float'},\n // [GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_float'},\n // [GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGBA\n // [GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n // [GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n // [GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n\n // Compressed formats\n\n // WEBGL_compressed_texture_s3tc\n\n // [GL.COMPRESSED_RGB_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT3_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT5_EXT]: {compressed: true, gl1: S3TC},\n\n // WEBGL_compressed_texture_es3\n\n // [GL.COMPRESSED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_SIGNED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_SIGNED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_RGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_RGBA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RBG\n // [GL.COMPRESSED_SRGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n /* WebGL2 guaranteed availability compressed formats?\n COMPRESSED_R11_EAC RED\n COMPRESSED_SIGNED_R11_EAC RED\n COMPRESSED_RG11_EAC RG\n COMPRESSED_SIGNED_RG11_EAC RG\n COMPRESSED_RGB8_ETC2 RGB\n COMPRESSED_SRGB8_ETC2 RGB\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_RGBA8_ETC2_EAC RGBA\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n */\n\n // WEBGL_compressed_texture_pvrtc\n\n // [GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n\n // WEBGL_compressed_texture_etc1\n\n // [GL.COMPRESSED_RGB_ETC1_WEBGL]: {compressed: true, gl1: ETC1},\n\n // WEBGL_compressed_texture_atc\n\n // [GL.COMPRESSED_RGB_ATC_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL]: {compressed: true, gl1: ETC1}\n};\n\nexport const DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\nexport const TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\nexport function isFormatSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n if (info.gl1 === undefined && info.gl2 === undefined) {\n // No info - always supported\n return true;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n return typeof value === 'string' ? gl.getExtension(value) : value;\n}\n\nexport function isLinearFilteringSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n switch (info && info.types[0]) {\n // Both WebGL1 and WebGL2?\n case GL.FLOAT:\n return gl.getExtension('OES_texture_float_linear');\n // Not in WebGL2?\n case GL.HALF_FLOAT:\n return gl.getExtension('OES_texture_half_float_linear');\n default:\n return true;\n }\n}\n","import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\n\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {\n TEXTURE_FORMATS,\n DATA_FORMAT_CHANNELS,\n TYPE_SIZES,\n isFormatSupported,\n isLinearFilteringSupported\n} from './texture-formats';\nimport {assert} from '../utils/assert';\nimport {uid, isPowerOfTwo} from '../utils/utils';\n\n// Supported min filters for NPOT texture.\nconst NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];\n\n// Polyfill\n// Note (Tarek): Do we really need to support this API?\nconst WebGLBuffer = globalThis.WebGLBuffer || function WebGLBuffer() {};\n\nexport default class Texture extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture';\n }\n static isSupported(gl, opts = {}) {\n const {format, linearFiltering} = opts;\n let supported = true;\n if (format) {\n supported = supported && isFormatSupported(gl, format);\n supported = supported && (!linearFiltering || isLinearFilteringSupported(gl, format));\n }\n return supported;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n constructor(gl, props) {\n const {\n id = uid('texture'),\n handle,\n target\n // , magFilter, minFilter, wrapS, wrapT\n } = props;\n\n super(gl, {id, handle});\n\n this.target = target;\n this.textureUnit = undefined;\n\n // Program.draw() checks the loaded flag of all textures to avoid\n // Textures that are still loading from promises\n // Set to true as soon as texture has been initialized with valid data\n this.loaded = false;\n\n this.width = undefined;\n this.height = undefined;\n this.depth = undefined;\n this.format = undefined;\n this.type = undefined;\n this.dataFormat = undefined;\n this.border = undefined;\n this.textureUnit = undefined;\n this.mipmaps = undefined;\n }\n\n toString() {\n return `Texture(${this.id},${this.width}x${this.height})`;\n }\n\n /* eslint-disable max-len, max-statements */\n initialize(props = {}) {\n let data = props.data;\n\n if (data instanceof Promise) {\n data.then(resolvedImageData =>\n this.initialize(\n Object.assign({}, props, {\n pixels: resolvedImageData,\n data: resolvedImageData\n })\n )\n );\n return this;\n }\n const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;\n // @ts-ignore\n if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {\n this._video = null; // Declare member before the object is sealed\n data.addEventListener('loadeddata', () => this.initialize(props));\n return this;\n }\n\n const {\n pixels = null,\n format = GL.RGBA,\n border = 0,\n recreate = false,\n parameters = {},\n pixelStore = {},\n textureUnit = undefined\n } = props;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n // TODO - This looks backwards? Commenting out for now until we decide\n // which prop to use\n // log.deprecated('data', 'pixels')();\n data = pixels;\n }\n\n let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;\n const {depth = 0} = props;\n\n // Deduce width and height\n ({width, height, compressed, dataFormat, type} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n // Store opts for accessors\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.format = format;\n this.type = type;\n this.dataFormat = dataFormat;\n this.border = border;\n this.textureUnit = textureUnit;\n\n if (Number.isFinite(this.textureUnit)) {\n this.gl.activeTexture(GL.TEXTURE0 + this.textureUnit);\n this.gl.bindTexture(this.target, this.handle);\n }\n\n if (mipmaps && this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n mipmaps = false;\n\n this._updateForNPOT(parameters);\n }\n\n this.mipmaps = mipmaps;\n\n this.setImageData({\n data,\n width,\n height,\n depth,\n format,\n type,\n dataFormat,\n border,\n mipmaps,\n parameters: pixelStore,\n compressed\n });\n\n if (mipmaps) {\n this.generateMipmap();\n }\n\n // Set texture sampler parameters\n this.setParameters(parameters);\n\n // TODO - Store data to enable auto recreate on context loss\n if (recreate) {\n this.data = data;\n }\n if (isVideo) {\n this._video = {\n video: data,\n parameters,\n // @ts-ignore\n lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1\n };\n }\n\n return this;\n }\n\n update() {\n if (this._video) {\n const {video, parameters, lastTime} = this._video;\n // @ts-ignore\n if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {\n return;\n }\n this.setSubImageData({\n data: video,\n parameters\n });\n if (this.mipmaps) {\n this.generateMipmap();\n }\n this._video.lastTime = video.currentTime;\n }\n }\n\n // If size has changed, reinitializes with current format\n // note clears image and mipmaps\n resize({height, width, mipmaps = false}) {\n if (width !== this.width || height !== this.height) {\n return this.initialize({\n width,\n height,\n format: this.format,\n type: this.type,\n dataFormat: this.dataFormat,\n border: this.border,\n mipmaps\n });\n }\n return this;\n }\n\n // Call to regenerate mipmaps after modifying texture(s)\n generateMipmap(params = {}) {\n if (this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n return this;\n }\n\n this.mipmaps = true;\n\n this.gl.bindTexture(this.target, this.handle);\n withParameters(this.gl, params, () => {\n this.gl.generateMipmap(this.target);\n });\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n /*\n * Allocates storage\n * @param {*} pixels -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} width -\n * @param {GLint} height -\n * @param {GLint} mipMapLevel -\n * @param {GLenum} format - format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n /* eslint-disable max-len, max-statements, complexity */\n setImageData(options) {\n this._trackDeallocatedMemory('Texture');\n\n const {\n target = this.target,\n pixels = null,\n level = 0,\n format = this.format,\n border = this.border,\n offset = 0,\n parameters = {}\n } = options;\n\n let {\n data = null,\n type = this.type,\n width = this.width,\n height = this.height,\n dataFormat = this.dataFormat,\n compressed = false\n } = options;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n const {gl} = this;\n gl.bindTexture(this.target, this.handle);\n\n let dataType = null;\n ({data, dataType} = this._getDataType({data, compressed}));\n\n let gl2;\n\n let compressedTextureSize = 0;\n\n withParameters(this.gl, parameters, () => {\n switch (dataType) {\n case 'null':\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n break;\n case 'typed-array':\n // Looks like this assert is not necessary, as offset is ignored under WebGL1\n // assert((offset === 0 || isWebGL2(gl)), 'offset supported in WebGL2 only');\n // @ts-ignore\n gl.texImage2D(\n target,\n level,\n format,\n width,\n height,\n border,\n dataFormat,\n type,\n data,\n // @ts-ignore\n offset\n );\n break;\n case 'buffer':\n // WebGL2 enables creating textures directly from a WebGL buffer\n gl2 = assertWebGL2Context(gl);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);\n gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n break;\n case 'browser-object':\n if (isWebGL2(gl)) {\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n } else {\n gl.texImage2D(target, level, format, dataFormat, type, data);\n }\n break;\n case 'compressed':\n for (const [levelIndex, levelData] of data.entries()) {\n gl.compressedTexImage2D(\n target,\n levelIndex,\n levelData.format,\n levelData.width,\n levelData.height,\n border,\n levelData.data\n );\n compressedTextureSize += levelData.levelSize;\n }\n break;\n default:\n assert(false, 'Unknown image data type');\n }\n });\n\n if (dataType === 'compressed') {\n this._trackAllocatedMemory(compressedTextureSize, 'Texture');\n } else if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');\n }\n\n this.loaded = true;\n\n return this;\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Redefines an area of an existing texture\n * Note: does not allocate storage\n */\n /*\n * Redefines an area of an existing texture\n * @param {*} pixels, data -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} x - xOffset from where texture to be updated\n * @param {GLint} y - yOffset from where texture to be updated\n * @param {GLint} width - width of the sub image to be updated\n * @param {GLint} height - height of the sub image to be updated\n * @param {GLint} level - mip level to be updated\n * @param {GLenum} format - internal format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer or ArrayBufferView\n * @param {GLenum} dataFormat - format of image data.\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n setSubImageData({\n target = this.target,\n pixels = null,\n data = null,\n x = 0,\n y = 0,\n width = this.width,\n height = this.height,\n level = 0,\n format = this.format,\n type = this.type,\n dataFormat = this.dataFormat,\n compressed = false,\n offset = 0,\n border = this.border,\n parameters = {}\n }) {\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n assert(this.depth === 0, 'texSubImage not supported for 3D textures');\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n // Support ndarrays\n if (data && data.data) {\n const ndarray = data;\n data = ndarray.data;\n width = ndarray.shape[0];\n height = ndarray.shape[1];\n }\n\n // Support buffers\n if (data instanceof Buffer) {\n data = data.handle;\n }\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n // TODO - x,y parameters\n if (compressed) {\n this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n } else if (data === null) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n } else if (ArrayBuffer.isView(data)) {\n // const gl2 = assertWebGL2Context(this.gl);\n // @ts-ignore last offset parameter is ignored under WebGL1\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n } else if (data instanceof WebGLBuffer) {\n // WebGL2 allows us to create texture directly from a WebGL buffer\n const gl2 = assertWebGL2Context(this.gl);\n // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n } else if (isWebGL2(this.gl)) {\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n const gl2 = assertWebGL2Context(this.gl);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n } else {\n this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n }\n });\n\n this.gl.bindTexture(this.target, null);\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Defines a two-dimensional texture image or cube-map texture image with\n * pixels from the current framebuffer (rather than from client memory).\n * (gl.copyTexImage2D wrapper)\n *\n * Note that binding a texture into a Framebuffer's color buffer and\n * rendering can be faster.\n */\n copyFramebuffer(opts = {}) {\n log.error(\n 'Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n getActiveUnit() {\n return this.gl.getParameter(GL.ACTIVE_TEXTURE) - GL.TEXTURE0;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n\n bind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, this.handle);\n return textureUnit;\n }\n\n unbind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, null);\n return textureUnit;\n }\n\n // PRIVATE METHODS\n\n _getDataType({data, compressed = false}) {\n if (compressed) {\n return {data, dataType: 'compressed'};\n }\n if (data === null) {\n return {data, dataType: 'null'};\n }\n if (ArrayBuffer.isView(data)) {\n return {data, dataType: 'typed-array'};\n }\n if (data instanceof Buffer) {\n return {data: data.handle, dataType: 'buffer'};\n }\n if (data instanceof WebGLBuffer) {\n return {data, dataType: 'buffer'};\n }\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n return {data, dataType: 'browser-object'};\n }\n\n /* Copied from texture-2d.js\n // WebGL2\n setPixels(opts = {}) {\n const {\n buffer,\n width = null,\n height = null,\n mipmapLevel = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n\n // This signature of texImage2D uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, buffer.target);\n // And as always, we must also bind the texture itself\n this.bind();\n\n gl.texImage2D(gl.TEXTURE_2D,\n mipmapLevel, format, width, height, border, format, type, buffer.target);\n\n this.unbind();\n gl.bindBuffer(GL.GL.PIXEL_UNPACK_BUFFER, null);\n return this;\n }\n\n setImageDataFromCompressedBuffer(opts) {\n const {\n buffer,\n // offset = 0,\n width = null,\n height = null,\n mipmapLevel = 0,\n internalFormat = GL.RGBA,\n // format = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n gl.compressedTexImage2D(this.target,\n mipmapLevel, internalFormat, width, height, border, buffer);\n // gl.compressedTexSubImage2D(target,\n // level, xoffset, yoffset, width, height, format, ArrayBufferView? pixels);\n return this;\n }\n\n copySubImage(opts) {\n const {\n // pixels,\n // offset = 0,\n // x,\n // y,\n // width,\n // height,\n // mipmapLevel = 0,\n // internalFormat = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n // border = 0\n } = opts;\n\n // if (pixels instanceof ArrayBufferView) {\n // gl.texSubImage2D(target, level, x, y, width, height, format, type, pixels);\n // }\n // gl.texSubImage2D(target, level, x, y, format, type, ? pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLImageElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLCanvasElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLVideoElement pixels);\n // // Additional signature in a WebGL 2 context:\n // gl.texSubImage2D(target, level, x, y, format, type, GLintptr offset);\n }\n */\n\n // HELPER METHODS\n\n _deduceParameters(opts) {\n const {format, data} = opts;\n let {width, height, dataFormat, type, compressed} = opts;\n\n // Deduce format and type from format\n const textureFormat = TEXTURE_FORMATS[format];\n dataFormat = dataFormat || (textureFormat && textureFormat.dataFormat);\n type = type || (textureFormat && textureFormat.types[0]);\n\n // Deduce compression from format\n compressed = compressed || (textureFormat && textureFormat.compressed);\n\n ({width, height} = this._deduceImageSize(data, width, height));\n\n return {dataFormat, type, compressed, width, height, format, data};\n }\n\n // eslint-disable-next-line complexity\n _deduceImageSize(data, width, height) {\n let size;\n\n if (typeof ImageData !== 'undefined' && data instanceof ImageData) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n size = {width: data.naturalWidth, height: data.naturalHeight};\n } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {\n size = {width: data.width, height: data.height};\n } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n size = {width: data.videoWidth, height: data.videoHeight};\n } else if (!data) {\n size = {width: width >= 0 ? width : 1, height: height >= 0 ? height : 1};\n } else {\n size = {width, height};\n }\n\n assert(size, 'Could not deduced texture size');\n assert(\n width === undefined || size.width === width,\n 'Deduced texture width does not match supplied width'\n );\n assert(\n height === undefined || size.height === height,\n 'Deduced texture height does not match supplied height'\n );\n\n return size;\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createTexture();\n }\n\n _deleteHandle() {\n this.gl.deleteTexture(this.handle);\n this._trackDeallocatedMemory('Texture');\n }\n\n _getParameter(pname) {\n switch (pname) {\n case GL.TEXTURE_WIDTH:\n return this.width;\n case GL.TEXTURE_HEIGHT:\n return this.height;\n default:\n this.gl.bindTexture(this.target, this.handle);\n const value = this.gl.getTexParameter(this.target, pname);\n this.gl.bindTexture(this.target, null);\n return value;\n }\n }\n\n _setParameter(pname, param) {\n this.gl.bindTexture(this.target, this.handle);\n\n // NOTE: Apply NPOT workaround\n param = this._getNPOTParam(pname, param);\n\n // Apparently there are some integer/float conversion rules that made\n // the WebGL committe expose two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n switch (pname) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.gl.texParameterf(this.handle, pname, param);\n break;\n\n case GL.TEXTURE_WIDTH:\n case GL.TEXTURE_HEIGHT:\n assert(false);\n break;\n\n default:\n this.gl.texParameteri(this.target, pname, param);\n break;\n }\n\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n _isNPOT() {\n if (isWebGL2(this.gl)) {\n // NPOT restriction is only for WebGL1\n return false;\n }\n // Width and height not available, consider it is not NPOT texture\n if (!this.width || !this.height) {\n return false;\n }\n return !isPowerOfTwo(this.width) || !isPowerOfTwo(this.height);\n }\n\n // Update default settings which are not supported by NPOT textures.\n _updateForNPOT(parameters) {\n if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;\n }\n if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_S to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;\n }\n if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_T to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;\n }\n }\n\n _getNPOTParam(pname, param) {\n if (this._isNPOT()) {\n switch (pname) {\n case GL.TEXTURE_MIN_FILTER:\n if (NPOT_MIN_FILTERS.indexOf(param) === -1) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n param = GL.LINEAR;\n }\n break;\n case GL.TEXTURE_WRAP_S:\n case GL.TEXTURE_WRAP_T:\n if (param !== GL.CLAMP_TO_EDGE) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, ${getKey(this.gl, pname)} to CLAMP_TO_EDGE`)();\n param = GL.CLAMP_TO_EDGE;\n }\n break;\n default:\n break;\n }\n }\n return param;\n }\n}\n","import {assert} from '../utils/assert';\n\nlet pathPrefix = '';\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\n\n// Reads raw file data from:\nexport function loadFile(url, options = {}) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n const dataType = options.dataType || 'text';\n return fetch(url, options).then(res => res[dataType]());\n}\n\n/*\n * Loads images asynchronously\n * image.crossOrigin can be set via opts.crossOrigin, default to 'anonymous'\n * returns a promise tracking the load\n */\nexport function loadImage(url, opts) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n return new Promise((resolve, reject) => {\n try {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = () => reject(new Error(`Could not load image ${url}.`));\n image.crossOrigin = (opts && opts.crossOrigin) || 'anonymous';\n image.src = url;\n } catch (error) {\n reject(error);\n }\n });\n}\n","import GL from '@luma.gl/constants';\nimport {assertWebGLContext} from '@luma.gl/gltools';\nimport Texture from './texture';\nimport {loadImage} from '../utils/load-file';\n\nexport default class Texture2D extends Texture {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture2D';\n }\n\n static isSupported(gl, opts) {\n return Texture.isSupported(gl, opts);\n }\n\n constructor(gl, props = {}) {\n assertWebGLContext(gl);\n\n // Signature: new Texture2D(gl, url | Promise)\n if (props instanceof Promise || typeof props === 'string') {\n props = {data: props};\n }\n\n // Signature: new Texture2D(gl, {data: url})\n if (typeof props.data === 'string') {\n props = Object.assign({}, props, {data: loadImage(props.data)});\n }\n\n super(gl, Object.assign({}, props, {target: GL.TEXTURE_2D}));\n\n this.initialize(props);\n\n Object.seal(this);\n }\n}\n","import GL from '@luma.gl/constants';\n\n// Define local extension strings to optimize minification\n// const SRGB = 'EXT_sRGB';\n// const EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';\nconst EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';\n// const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';\n\n// NOTE(Tarek): bpp === \"bytes per pixel\", used for\n// memory usage calculations.\nexport default {\n [GL.DEPTH_COMPONENT16]: {bpp: 2}, // 16 depth bits.\n [GL.DEPTH_COMPONENT24]: {gl2: true, bpp: 3},\n [GL.DEPTH_COMPONENT32F]: {gl2: true, bpp: 4},\n\n [GL.STENCIL_INDEX8]: {bpp: 1}, // 8 stencil bits.\n\n [GL.DEPTH_STENCIL]: {bpp: 4},\n [GL.DEPTH24_STENCIL8]: {gl2: true, bpp: 4},\n [GL.DEPTH32F_STENCIL8]: {gl2: true, bpp: 5},\n\n // When using a WebGL 1 context, color renderbuffer formats are limited\n [GL.RGBA4]: {bpp: 2},\n [GL.RGB565]: {bpp: 2},\n [GL.RGB5_A1]: {bpp: 2},\n\n // When using a WebGL 2 context, the following values are available additionally:\n [GL.R8]: {gl2: true, bpp: 1},\n [GL.R8UI]: {gl2: true, bpp: 1},\n [GL.R8I]: {gl2: true, bpp: 1},\n [GL.R16UI]: {gl2: true, bpp: 2},\n [GL.R16I]: {gl2: true, bpp: 2},\n [GL.R32UI]: {gl2: true, bpp: 4},\n [GL.R32I]: {gl2: true, bpp: 4},\n [GL.RG8]: {gl2: true, bpp: 2},\n [GL.RG8UI]: {gl2: true, bpp: 2},\n [GL.RG8I]: {gl2: true, bpp: 2},\n [GL.RG16UI]: {gl2: true, bpp: 4},\n [GL.RG16I]: {gl2: true, bpp: 4},\n [GL.RG32UI]: {gl2: true, bpp: 8},\n [GL.RG32I]: {gl2: true, bpp: 8},\n [GL.RGB8]: {gl2: true, bpp: 3},\n [GL.RGBA8]: {gl2: true, bpp: 4},\n // [GL.SRGB8_ALPHA8]: {gl2: true, gl1: SRGB}, // When using the EXT_sRGB WebGL1 extension\n [GL.RGB10_A2]: {gl2: true, bpp: 4},\n [GL.RGBA8UI]: {gl2: true, bpp: 4},\n [GL.RGBA8I]: {gl2: true, bpp: 4},\n [GL.RGB10_A2UI]: {gl2: true, bpp: 4},\n [GL.RGBA16UI]: {gl2: true, bpp: 8},\n [GL.RGBA16I]: {gl2: true, bpp: 8},\n [GL.RGBA32I]: {gl2: true, bpp: 16},\n [GL.RGBA32UI]: {gl2: true, bpp: 16},\n\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n [GL.R16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 2},\n [GL.RG16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RGBA16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n [GL.R32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RG32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n // TODO - can't get WEBGL_color_buffer_float to work on renderbuffers\n [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 16},\n // [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},\n [GL.R11F_G11F_B10F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4}\n};\n","/* eslint-disable no-inline-comments */\nimport GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport RENDERBUFFER_FORMATS from './renderbuffer-formats';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\nfunction isFormatSupported(gl, format, formats) {\n const info = formats[format];\n if (!info) {\n return false;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n if (typeof value === 'string') {\n return gl.getExtension(value);\n }\n return value;\n}\n\nexport default class Renderbuffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Renderbuffer';\n }\n static isSupported(gl, {format} = {format: null}) {\n return !format || isFormatSupported(gl, format, RENDERBUFFER_FORMATS);\n }\n\n static getSamplesForFormat(gl, {format}) {\n // Polyfilled to return [0] under WebGL1\n return gl.getInternalformatParameter(GL.RENDERBUFFER, format, GL.SAMPLES);\n }\n\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n // @ts-ignore\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n // Creates and initializes a renderbuffer object's data store\n initialize({format, width = 1, height = 1, samples = 0}) {\n assert(format, 'Needs format');\n\n this._trackDeallocatedMemory();\n\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n\n if (samples !== 0 && isWebGL2(this.gl)) {\n // @ts-ignore\n this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);\n } else {\n this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);\n }\n\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n\n this.format = format;\n this.width = width;\n this.height = height;\n this.samples = samples;\n\n this._trackAllocatedMemory(\n this.width * this.height * (this.samples || 1) * RENDERBUFFER_FORMATS[this.format].bpp\n );\n\n return this;\n }\n\n resize({width, height}) {\n // Don't resize if width/height haven't changed\n if (width !== this.width || height !== this.height) {\n return this.initialize({width, height, format: this.format, samples: this.samples});\n }\n return this;\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createRenderbuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteRenderbuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _bindHandle(handle) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);\n }\n\n _syncHandle(handle) {\n this.format = this.getParameter(GL.RENDERBUFFER_INTERNAL_FORMAT);\n this.width = this.getParameter(GL.RENDERBUFFER_WIDTH);\n this.height = this.getParameter(GL.RENDERBUFFER_HEIGHT);\n this.samples = this.getParameter(GL.RENDERBUFFER_SAMPLES);\n }\n\n // @param {Boolean} opt.autobind=true - method call will bind/unbind object\n // @returns {GLenum|GLint} - depends on pname\n _getParameter(pname) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n const value = this.gl.getRenderbufferParameter(GL.RENDERBUFFER, pname);\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n return value;\n }\n}\n","import {assertWebGL2Context, withParameters} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\n// Should collapse during minification\nconst GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst GL_COLOR_BUFFER_BIT = 0x00004000;\n\nconst GL_COLOR = 0x1800;\nconst GL_DEPTH = 0x1801;\nconst GL_STENCIL = 0x1802;\nconst GL_DEPTH_STENCIL = 0x84f9;\n\n// Should disappear if asserts are removed\nconst ERR_ARGUMENTS = 'clear: bad arguments';\n\n// Optionally clears depth, color and stencil buffers\n/** @type {import('./clear').clear} */\nexport function clear(gl, {framebuffer = null, color = null, depth = null, stencil = null} = {}) {\n const parameters = {};\n\n if (framebuffer) {\n parameters.framebuffer = framebuffer;\n }\n\n let clearFlags = 0;\n\n if (color) {\n clearFlags |= GL_COLOR_BUFFER_BIT;\n if (color !== true) {\n parameters.clearColor = color;\n }\n }\n\n if (depth) {\n clearFlags |= GL_DEPTH_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearDepth = depth;\n }\n }\n\n if (stencil) {\n clearFlags |= GL_STENCIL_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearStencil = depth;\n }\n }\n\n assert(clearFlags !== 0, ERR_ARGUMENTS);\n\n // Temporarily set any clear \"colors\" and call clear\n withParameters(gl, parameters, () => {\n gl.clear(clearFlags);\n });\n}\n\n// WebGL2 - clear a specific drawing buffer\n/** @type {import('./clear').clearBuffer} */\nexport function clearBuffer(\n gl,\n {framebuffer = null, buffer = GL_COLOR, drawBuffer = 0, value = [0, 0, 0, 0]} = {}\n) {\n assertWebGL2Context(gl);\n\n withParameters(gl, {framebuffer}, () => {\n // Method selection per OpenGL ES 3 docs\n switch (buffer) {\n case GL_COLOR:\n switch (value.constructor) {\n case Int32Array:\n gl.clearBufferiv(buffer, drawBuffer, value);\n break;\n case Uint32Array:\n gl.clearBufferuiv(buffer, drawBuffer, value);\n break;\n case Float32Array:\n default:\n gl.clearBufferfv(buffer, drawBuffer, value);\n }\n break;\n\n case GL_DEPTH:\n gl.clearBufferfv(GL_DEPTH, 0, [value]);\n break;\n\n case GL_STENCIL:\n gl.clearBufferiv(GL_STENCIL, 0, [value]);\n break;\n\n case GL_DEPTH_STENCIL:\n const [depth, stencil] = value;\n gl.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);\n break;\n\n default:\n assert(false, ERR_ARGUMENTS);\n }\n });\n}\n","import GL from '@luma.gl/constants';\nimport {log, assertWebGLContext} from '@luma.gl/gltools';\nimport Texture from './texture';\n\nconst FACES = [\n GL.TEXTURE_CUBE_MAP_POSITIVE_X,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_X,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Y,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Z,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Z\n];\n\nexport default class TextureCube extends Texture {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'TextureCube';\n }\n\n constructor(gl, props = {}) {\n assertWebGLContext(gl);\n\n super(gl, Object.assign({}, props, {target: GL.TEXTURE_CUBE_MAP}));\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n initialize(props = {}) {\n const {mipmaps = true, parameters = {}} = props;\n\n // Store props for accessors\n this.opts = props;\n\n // @ts-ignore\n this.setCubeMapImageData(props).then(() => {\n this.loaded = true;\n\n // TODO - should genMipmap() be called on the cubemap or on the faces?\n // TODO - without generateMipmap() cube textures do not work at all!!! Why?\n if (mipmaps) {\n this.generateMipmap(props);\n }\n\n this.setParameters(parameters);\n });\n return this;\n }\n\n subImage({face, data, x = 0, y = 0, mipmapLevel = 0}) {\n // @ts-ignore TODO - is this a bug?\n return this._subImage({target: face, data, x, y, mipmapLevel});\n }\n\n /* eslint-disable max-statements, max-len */\n async setCubeMapImageData({\n width,\n height,\n pixels,\n data,\n border = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE\n }) {\n const {gl} = this;\n const imageDataMap = pixels || data;\n\n // pixel data (imageDataMap) is an Object from Face to Image or Promise.\n // For example:\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : Image-or-Promise,\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : Image-or-Promise,\n // ... }\n // To provide multiple level-of-details (LODs) this can be Face to Array\n // of Image or Promise, like this\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // ... }\n\n const resolvedFaces = await Promise.all(\n FACES.map(face => {\n const facePixels = imageDataMap[face];\n return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);\n })\n );\n\n this.bind();\n\n FACES.forEach((face, index) => {\n if (resolvedFaces[index].length > 1 && this.opts.mipmaps !== false) {\n // If the user provides multiple LODs, then automatic mipmap\n // generation generateMipmap() should be disabled to avoid overwritting them.\n log.warn(`${this.id} has mipmap and multiple LODs.`)();\n }\n resolvedFaces[index].forEach((image, lodLevel) => {\n // TODO: adjust width & height for LOD!\n if (width && height) {\n gl.texImage2D(face, lodLevel, format, width, height, border, format, type, image);\n } else {\n gl.texImage2D(face, lodLevel, format, format, type, image);\n }\n });\n });\n\n this.unbind();\n }\n\n // TODO: update this method to accept LODs\n setImageDataForFace(options) {\n const {\n face,\n width,\n height,\n pixels,\n data,\n border = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE\n // generateMipmap = false // TODO\n } = options;\n\n const {gl} = this;\n\n const imageData = pixels || data;\n\n this.bind();\n if (imageData instanceof Promise) {\n imageData.then(resolvedImageData =>\n this.setImageDataForFace(\n Object.assign({}, options, {\n face,\n data: resolvedImageData,\n pixels: resolvedImageData\n })\n )\n );\n } else if (this.width || this.height) {\n gl.texImage2D(face, 0, format, width, height, border, format, type, imageData);\n } else {\n gl.texImage2D(face, 0, format, format, type, imageData);\n }\n\n return this;\n }\n}\n\nTextureCube.FACES = FACES;\n","import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, withParameters} from '@luma.gl/gltools';\nimport Texture from './texture';\nimport {DATA_FORMAT_CHANNELS, TYPE_SIZES} from './texture-formats';\nimport Buffer from './buffer';\n\nexport default class Texture3D extends Texture {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture3D';\n }\n\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n assertWebGL2Context(gl);\n props = Object.assign({depth: 1}, props, {target: GL.TEXTURE_3D, unpackFlipY: false});\n super(gl, props);\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // Image 3D copies from Typed Array or WebGLBuffer\n setImageData({\n level = 0,\n dataFormat = GL.RGBA,\n width,\n height,\n depth = 1,\n border = 0,\n format,\n type = GL.UNSIGNED_BYTE,\n offset = 0,\n data,\n parameters = {}\n }) {\n this._trackDeallocatedMemory('Texture');\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n if (ArrayBuffer.isView(data)) {\n // @ts-ignore\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n data\n );\n }\n\n if (data instanceof Buffer) {\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);\n // @ts-ignore\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n offset\n );\n }\n });\n\n if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n // @ts-ignore\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n // @ts-ignore\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(\n this.width * this.height * this.depth * channels * channelSize,\n 'Texture'\n );\n }\n\n this.loaded = true;\n\n return this;\n }\n}\n","// TODO: Two subdirectories must not depend on each other (classes vs utils)!\nimport Texture2D from '../classes/texture-2d';\nimport TextureCube from '../classes/texture-cube';\nimport Texture3D from '../classes/texture-3d';\nimport Framebuffer from '../classes/framebuffer';\nimport GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\n\n// Clone a new texture object from a reference texture object.\n/** @type {import('./texture-utils').cloneTextureFrom} */\nexport function cloneTextureFrom(refTexture, overrides) {\n assert(\n refTexture instanceof Texture2D ||\n refTexture instanceof TextureCube ||\n refTexture instanceof Texture3D\n );\n\n const TextureType = refTexture.constructor;\n\n // @ts-expect-error\n const {gl, width, height, format, type, dataFormat, border, mipmaps} = refTexture;\n\n const textureOptions = Object.assign(\n {\n width,\n height,\n format,\n type,\n dataFormat,\n border,\n mipmaps\n },\n overrides\n );\n\n // TODO: move this to `Texture` class as instance method and use this.constructor\n // @ts-expect-error\n return new TextureType(gl, textureOptions);\n}\n\n// Wraps a given texture into a framebuffer object, that can be further used\n// to read data from the texture object.\n/** @type {import('./texture-utils').toFramebuffer} */\nexport function toFramebuffer(texture, opts) {\n const {gl, width, height, id} = texture;\n const framebuffer = new Framebuffer(\n gl,\n Object.assign({}, opts, {\n id: `framebuffer-for-${id}`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: texture\n }\n })\n );\n return framebuffer;\n}\n","import GL from '@luma.gl/constants';\nimport Buffer from './buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\nimport {flipRows, scalePixels} from '../webgl-utils/typed-array-utils';\nimport {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';\nimport {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';\nimport {toFramebuffer} from '../webgl-utils/texture-utils';\nimport {assert} from '../utils/assert';\n\n// NOTE: Slow requires roundtrip to GPU\n// Copies data from a Framebuffer or a Texture object into ArrayBuffer object.\n// App can provide targetPixelArray or have it auto allocated by this method\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n// newly allocated by this method unless provided by app.\nexport function readPixelsToArray(source, options = {}) {\n const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options;\n let {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n target = null,\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle, attachments} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // TODO - Set and unset gl.readBuffer\n if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {\n sourceAttachment = GL.FRONT;\n }\n\n assert(attachments[sourceAttachment]);\n\n // Deduce the type from color attachment if not provided.\n sourceType = sourceType || attachments[sourceAttachment].type;\n\n // Deduce type and allocated pixelArray if needed\n target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n\n // Pixel array available, if necessary, deduce type from it.\n sourceType = sourceType || getGLTypeFromTypedArray(target);\n\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return target;\n}\n\n// NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n// Copies data from a Framebuffer or a Texture object into a Buffer object.\nexport function readPixelsToBuffer(\n source,\n {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = GL.RGBA,\n target = null, // A new Buffer object is created when not provided.\n targetByteOffset = 0, // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n }\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // Asynchronus read (PIXEL_PACK_BUFFER) is WebGL2 only feature\n const gl2 = assertWebGL2Context(framebuffer.gl);\n\n // deduce type if not available.\n sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);\n\n if (!target) {\n // Create new buffer with enough size\n const components = glFormatToComponents(sourceFormat);\n const byteCount = glTypeToBytes(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n target = new Buffer(gl2, {byteLength, accessor: {type: sourceType, size: components}});\n }\n\n target.bind({target: GL.PIXEL_PACK_BUFFER});\n withParameters(gl2, {framebuffer}, () => {\n gl2.readPixels(\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n sourceFormat,\n sourceType,\n targetByteOffset\n );\n });\n target.unbind({target: GL.PIXEL_PACK_BUFFER});\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMaxHeight = Number.MAX_SAFE_INTEGER\n } = {}\n) {\n let data = readPixelsToArray(source, {sourceAttachment});\n\n // Scale down\n let {width, height} = source;\n while (height > targetMaxHeight) {\n ({data, width, height} = scalePixels({data, width, height}));\n }\n\n // Flip to top down coordinate system\n flipRows({data, width, height});\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n\n // Copy the pixels to a 2D canvas\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n}\n\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetImage = null\n } = {}\n) {\n const dataUrl = copyToDataUrl(source, {sourceAttachment});\n targetImage = targetImage || new Image();\n targetImage.src = dataUrl;\n return targetImage;\n}\n\n// Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(source, target, options = {}) {\n const {\n sourceX = 0,\n sourceY = 0,\n // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMipmaplevel = 0,\n targetInternalFormat = GL.RGBA\n } = options;\n let {\n targetX,\n targetY,\n targetZ,\n width, // defaults to target width\n height // defaults to target height\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle} = framebuffer;\n const isSubCopy =\n typeof targetX !== 'undefined' ||\n typeof targetY !== 'undefined' ||\n typeof targetZ !== 'undefined';\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n // TODO - support gl.readBuffer (WebGL2 only)\n // const prevBuffer = gl.readBuffer(attachment);\n assert(target);\n let texture = null;\n if (target instanceof Texture) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n target = texture.target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(\n target,\n targetMipmaplevel,\n targetInternalFormat,\n sourceX,\n sourceY,\n width,\n height,\n 0 /* border must be 0 */\n );\n } else {\n switch (target) {\n case GL.TEXTURE_2D:\n case GL.TEXTURE_CUBE_MAP:\n gl.copyTexSubImage2D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n const gl2 = assertWebGL2Context(gl);\n gl2.copyTexSubImage3D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n targetZ,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n default:\n }\n }\n if (texture) {\n texture.unbind();\n }\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return texture;\n}\n\n// NOTE: WEBLG2 only\n// Copies a rectangle of pixels between Framebuffer or Texture objects\n// eslint-disable-next-line max-statements, complexity\nexport function blit(source, target, options = {}) {\n const {\n sourceX0 = 0,\n sourceY0 = 0,\n targetX0 = 0,\n targetY0 = 0,\n color = true,\n depth = false,\n stencil = false,\n filter = GL.NEAREST\n } = options;\n\n let {\n sourceX1,\n sourceY1,\n targetX1,\n targetY1,\n sourceAttachment = GL.COLOR_ATTACHMENT0,\n mask = 0\n } = options;\n\n const {framebuffer: srcFramebuffer, deleteFramebuffer: deleteSrcFramebuffer} = getFramebuffer(\n source\n );\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} = getFramebuffer(\n target\n );\n\n assert(srcFramebuffer);\n assert(dstFramebuffer);\n // @ts-ignore\n const {gl, handle, width, height, readBuffer} = dstFramebuffer;\n const gl2 = assertWebGL2Context(gl);\n\n if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {\n sourceAttachment = GL.FRONT;\n }\n\n if (color) {\n mask |= GL.COLOR_BUFFER_BIT;\n }\n if (depth) {\n mask |= GL.DEPTH_BUFFER_BIT;\n }\n if (stencil) {\n mask |= GL.STENCIL_BUFFER_BIT;\n }\n\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n // Either source or destiantion was a texture object, which is wrapped in a Framebuffer objecgt as color attachment.\n // Overwrite the mask to `COLOR_BUFFER_BIT`\n if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {\n mask = GL.COLOR_BUFFER_BIT;\n log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n }\n }\n assert(mask);\n\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n\n const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);\n const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);\n gl2.readBuffer(sourceAttachment);\n gl2.blitFramebuffer(\n sourceX0,\n sourceY0,\n sourceX1,\n sourceY1,\n targetX0,\n targetY0,\n targetX1,\n targetY1,\n mask,\n filter\n );\n gl2.readBuffer(readBuffer);\n // @ts-ignore\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);\n // @ts-ignore\n gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);\n if (deleteSrcFramebuffer) {\n srcFramebuffer.delete();\n }\n if (deleteDstFramebuffer) {\n dstFramebuffer.delete();\n }\n\n return dstFramebuffer;\n}\n\n// Helper methods\n\nfunction getFramebuffer(source) {\n if (!(source instanceof Framebuffer)) {\n return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};\n }\n return {framebuffer: source, deleteFramebuffer: false};\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) {\n return pixelArray;\n }\n // Allocate pixel array if not already available, using supplied type\n type = type || GL.UNSIGNED_BYTE;\n const ArrayType = getTypedArrayFromGLType(type, {clamped: false});\n const components = glFormatToComponents(format);\n // TODO - check for composite type (components = 1).\n return new ArrayType(width * height * components);\n}\n","import GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\n\n// Returns number of components in a specific readPixels WebGL format\nexport function glFormatToComponents(format) {\n switch (format) {\n case GL.ALPHA:\n case GL.R32F:\n case GL.RED:\n return 1;\n case GL.RG32F:\n case GL.RG:\n return 2;\n case GL.RGB:\n case GL.RGB32F:\n return 3;\n case GL.RGBA:\n case GL.RGBA32F:\n return 4;\n // TODO: Add support for additional WebGL2 formats\n default:\n assert(false);\n return 0;\n }\n}\n\n// Return byte count for given readPixels WebGL type\nexport function glTypeToBytes(type) {\n switch (type) {\n case GL.UNSIGNED_BYTE:\n return 1;\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return 2;\n case GL.FLOAT:\n return 4;\n // TODO: Add support for additional WebGL2 types\n default:\n assert(false);\n return 0;\n }\n}\n","import Framebuffer from '../classes/framebuffer';\nimport Texture2D from '../classes/texture-2d';\n// TODO - this should be the default export, test cases need updating\nexport const FEATURES = {\n WEBGL2: 'WEBGL2',\n\n // API SUPPORT\n VERTEX_ARRAY_OBJECT: 'VERTEX_ARRAY_OBJECT',\n TIMER_QUERY: 'TIMER_QUERY',\n INSTANCED_RENDERING: 'INSTANCED_RENDERING',\n MULTIPLE_RENDER_TARGETS: 'MULTIPLE_RENDER_TARGETS',\n\n // FEATURES\n ELEMENT_INDEX_UINT32: 'ELEMENT_INDEX_UINT32',\n\n // BLENDING\n BLEND_EQUATION_MINMAX: 'BLEND_EQUATION_MINMAX',\n FLOAT_BLEND: 'FLOAT_BLEND',\n\n // TEXTURES: '// TEXTURES', RENDERBUFFERS\n COLOR_ENCODING_SRGB: 'COLOR_ENCODING_SRGB',\n\n // TEXTURES\n TEXTURE_DEPTH: 'TEXTURE_DEPTH',\n TEXTURE_FLOAT: 'TEXTURE_FLOAT',\n TEXTURE_HALF_FLOAT: 'TEXTURE_HALF_FLOAT',\n\n TEXTURE_FILTER_LINEAR_FLOAT: 'TEXTURE_FILTER_LINEAR_FLOAT',\n TEXTURE_FILTER_LINEAR_HALF_FLOAT: 'TEXTURE_FILTER_LINEAR_HALF_FLOAT',\n TEXTURE_FILTER_ANISOTROPIC: 'TEXTURE_FILTER_ANISOTROPIC',\n\n // FRAMEBUFFERS: '// FRAMEBUFFERS', TEXTURES AND RENDERBUFFERS\n COLOR_ATTACHMENT_RGBA32F: 'COLOR_ATTACHMENT_RGBA32F',\n COLOR_ATTACHMENT_FLOAT: 'COLOR_ATTACHMENT_FLOAT',\n COLOR_ATTACHMENT_HALF_FLOAT: 'COLOR_ATTACHMENT_HALF_FLOAT',\n\n // GLSL extensions\n GLSL_FRAG_DATA: 'GLSL_FRAG_DATA',\n GLSL_FRAG_DEPTH: 'GLSL_FRAG_DEPTH',\n GLSL_DERIVATIVES: 'GLSL_DERIVATIVES',\n GLSL_TEXTURE_LOD: 'GLSL_TEXTURE_LOD'\n};\n\n// function to test if Float 32 bit format texture can be bound as color attachment\nfunction checkFloat32ColorAttachment(gl) {\n const testTexture = new Texture2D(gl, {\n format: gl.RGBA,\n type: gl.FLOAT,\n dataFormat: gl.RGBA\n });\n const testFb = new Framebuffer(gl, {\n id: `test-framebuffer`,\n check: false,\n attachments: {\n [gl.COLOR_ATTACHMENT0]: testTexture\n }\n });\n const status = testFb.getStatus();\n testTexture.delete();\n testFb.delete();\n return status === gl.FRAMEBUFFER_COMPLETE;\n}\n\n// Defines luma.gl \"feature\" names and semantics\n// Format: 'feature-name: [WebGL1 support, WebGL2 support] / [WebGL1 and WebGL2 support]', when support is 'string' it is the name of the extension\nexport default {\n [FEATURES.WEBGL2]: [false, true],\n\n // API SUPPORT\n [FEATURES.VERTEX_ARRAY_OBJECT]: ['OES_vertex_array_object', true],\n [FEATURES.TIMER_QUERY]: ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n [FEATURES.INSTANCED_RENDERING]: ['ANGLE_instanced_arrays', true],\n [FEATURES.MULTIPLE_RENDER_TARGETS]: ['WEBGL_draw_buffers', true],\n\n // FEATURES\n [FEATURES.ELEMENT_INDEX_UINT32]: ['OES_element_index_uint', true],\n\n // BLENDING\n [FEATURES.BLEND_EQUATION_MINMAX]: ['EXT_blend_minmax', true],\n [FEATURES.FLOAT_BLEND]: ['EXT_float_blend'],\n\n // TEXTURES, RENDERBUFFERS\n [FEATURES.COLOR_ENCODING_SRGB]: ['EXT_sRGB', true],\n\n // TEXTURES\n [FEATURES.TEXTURE_DEPTH]: ['WEBGL_depth_texture', true],\n [FEATURES.TEXTURE_FLOAT]: ['OES_texture_float', true],\n [FEATURES.TEXTURE_HALF_FLOAT]: ['OES_texture_half_float', true],\n\n [FEATURES.TEXTURE_FILTER_LINEAR_FLOAT]: ['OES_texture_float_linear'],\n [FEATURES.TEXTURE_FILTER_LINEAR_HALF_FLOAT]: ['OES_texture_half_float_linear'],\n [FEATURES.TEXTURE_FILTER_ANISOTROPIC]: ['EXT_texture_filter_anisotropic'],\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n [FEATURES.COLOR_ATTACHMENT_RGBA32F]: [checkFloat32ColorAttachment, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_FLOAT]: [false, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_HALF_FLOAT]: ['EXT_color_buffer_half_float'],\n\n // GLSL extensions\n [FEATURES.GLSL_FRAG_DATA]: ['WEBGL_draw_buffers', true],\n [FEATURES.GLSL_FRAG_DEPTH]: ['EXT_frag_depth', true],\n [FEATURES.GLSL_DERIVATIVES]: ['OES_standard_derivatives', true],\n [FEATURES.GLSL_TEXTURE_LOD]: ['EXT_shader_texture_lod', true]\n};\n","// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\nimport WEBGL_FEATURES from './webgl-features-table';\nimport {isWebGL2, log} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\nconst LOG_UNSUPPORTED_FEATURE = 2;\n\n// Check one feature\nexport function hasFeature(gl, feature) {\n return hasFeatures(gl, feature);\n}\n\n// Check one or more features\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => {\n return isFeatureSupported(gl, feature);\n });\n}\n\n// Return a list of supported features\nexport function getFeatures(gl) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n for (const cap in WEBGL_FEATURES) {\n if (gl.luma.caps[cap] === undefined) {\n gl.luma.caps[cap] = isFeatureSupported(gl, cap);\n }\n }\n return gl.luma.caps;\n}\n\n// TODO - cache the value\nfunction isFeatureSupported(gl, cap) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n\n if (gl.luma.caps[cap] === undefined) {\n gl.luma.caps[cap] = queryFeature(gl, cap);\n }\n\n if (!gl.luma.caps[cap]) {\n log.log(LOG_UNSUPPORTED_FEATURE, `Feature: ${cap} not supported`)();\n }\n\n return gl.luma.caps[cap];\n}\n\nfunction queryFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n let isSupported;\n\n // Get extension name from table\n const featureDefinition = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking one or more extensions\n if (typeof featureDefinition === 'function') {\n isSupported = featureDefinition(gl);\n } else if (Array.isArray(featureDefinition)) {\n isSupported = true;\n for (const extension of featureDefinition) {\n isSupported = isSupported && Boolean(gl.getExtension(extension));\n }\n } else if (typeof featureDefinition === 'string') {\n isSupported = Boolean(gl.getExtension(featureDefinition));\n } else if (typeof featureDefinition === 'boolean') {\n isSupported = featureDefinition;\n } else {\n assert(false);\n }\n\n return isSupported;\n}\n","import GL from '@luma.gl/constants';\nimport {getWebGL2Context, assertWebGL2Context, log} from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Texture2D from './texture-2d';\nimport Renderbuffer from './renderbuffer';\nimport {clear, clearBuffer} from './clear';\nimport {copyToDataUrl} from './copy-and-blit.js';\n\nimport {getFeatures} from '../features';\nimport {getKey} from '../webgl-utils/constants-to-keys';\nimport {assert} from '../utils/assert';\n\nconst ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';\n\nexport default class Framebuffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Framebuffer';\n }\n static isSupported(gl, options = {}) {\n const {\n colorBufferFloat, // Whether floating point textures can be rendered and read\n colorBufferHalfFloat // Whether half float textures can be rendered and read\n } = options;\n let supported = true;\n\n if (colorBufferFloat) {\n supported = Boolean(\n // WebGL 2\n gl.getExtension('EXT_color_buffer_float') ||\n // WebGL 1, not exposed on all platforms\n gl.getExtension('WEBGL_color_buffer_float') ||\n // WebGL 1, implicitly enables float render targets https://www.khronos.org/registry/webgl/extensions/OES_texture_float/\n gl.getExtension('OES_texture_float')\n );\n }\n\n if (colorBufferHalfFloat) {\n supported =\n supported &&\n Boolean(\n // WebGL 2\n gl.getExtension('EXT_color_buffer_float') ||\n // WebGL 1\n gl.getExtension('EXT_color_buffer_half_float')\n );\n }\n\n return supported;\n }\n\n // Create a Framebuffer wrapper for the default framebuffer (target === null)\n static getDefaultFramebuffer(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultFramebuffer =\n gl.luma.defaultFramebuffer ||\n new Framebuffer(gl, {\n id: 'default-framebuffer',\n handle: null,\n attachments: {}\n });\n // TODO - can we query for and get a handle to the GL.FRONT renderbuffer?\n return gl.luma.defaultFramebuffer;\n }\n\n get MAX_COLOR_ATTACHMENTS() {\n const gl2 = assertWebGL2Context(this.gl);\n return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);\n }\n\n get MAX_DRAW_BUFFERS() {\n const gl2 = assertWebGL2Context(this.gl);\n return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);\n }\n\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n // Public members\n this.width = null;\n this.height = null;\n this.attachments = {};\n this.readBuffer = GL.COLOR_ATTACHMENT0;\n this.drawBuffers = [GL.COLOR_ATTACHMENT0];\n this.ownResources = [];\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n get color() {\n return this.attachments[GL.COLOR_ATTACHMENT0] || null;\n }\n\n get texture() {\n return this.attachments[GL.COLOR_ATTACHMENT0] || null;\n }\n\n get depth() {\n return (\n this.attachments[GL.DEPTH_ATTACHMENT] || this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] || null\n );\n }\n\n get stencil() {\n return (\n this.attachments[GL.STENCIL_ATTACHMENT] ||\n this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] ||\n null\n );\n }\n\n initialize({\n width = 1,\n height = 1,\n attachments = null,\n color = true,\n depth = true,\n stencil = false,\n check = true,\n readBuffer = undefined,\n drawBuffers = undefined\n }) {\n assert(width >= 0 && height >= 0, 'Width and height need to be integers');\n\n // Store actual width and height for diffing\n this.width = width;\n this.height = height;\n\n // Resize any provided attachments - note that resize only resizes if needed\n // Note: A framebuffer has no separate size, it is defined by its attachments (which must agree)\n if (attachments) {\n for (const attachment in attachments) {\n const target = attachments[attachment];\n const object = Array.isArray(target) ? target[0] : target;\n object.resize({width, height});\n }\n } else {\n // Create any requested default attachments\n attachments = this._createDefaultAttachments(color, depth, stencil, width, height);\n }\n\n this.update({clearAttachments: true, attachments, readBuffer, drawBuffers});\n\n // Checks that framebuffer was properly set up, if not, throws an explanatory error\n if (attachments && check) {\n this.checkStatus();\n }\n }\n\n delete() {\n for (const resource of this.ownResources) {\n resource.delete();\n }\n super.delete();\n return this;\n }\n\n update({\n attachments = {},\n readBuffer,\n drawBuffers,\n clearAttachments = false,\n resizeAttachments = true\n }) {\n this.attach(attachments, {clearAttachments, resizeAttachments});\n\n const {gl} = this;\n // Multiple render target support, set read buffer and draw buffers\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n if (readBuffer) {\n this._setReadBuffer(readBuffer);\n }\n if (drawBuffers) {\n this._setDrawBuffers(drawBuffers);\n }\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n return this;\n }\n\n // Attachment resize is expected to be a noop if size is same\n resize(options = {}) {\n let {width, height} = options;\n // for default framebuffer, just update the stored size\n if (this.handle === null) {\n assert(width === undefined && height === undefined);\n this.width = this.gl.drawingBufferWidth;\n this.height = this.gl.drawingBufferHeight;\n return this;\n }\n\n if (width === undefined) {\n width = this.gl.drawingBufferWidth;\n }\n if (height === undefined) {\n height = this.gl.drawingBufferHeight;\n }\n\n if (width !== this.width && height !== this.height) {\n log.log(2, `Resizing framebuffer ${this.id} to ${width}x${height}`)();\n }\n for (const attachmentPoint in this.attachments) {\n this.attachments[attachmentPoint].resize({width, height});\n }\n this.width = width;\n this.height = height;\n return this;\n }\n\n // Attach from a map of attachments\n attach(attachments, {clearAttachments = false, resizeAttachments = true} = {}) {\n const newAttachments = {};\n\n // Any current attachments need to be removed, add null values to map\n if (clearAttachments) {\n Object.keys(this.attachments).forEach(key => {\n newAttachments[key] = null;\n });\n }\n\n // Overlay the new attachments\n Object.assign(newAttachments, attachments);\n\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n // Walk the attachments\n for (const key in newAttachments) {\n // Ensure key is not undefined\n assert(key !== undefined, 'Misspelled framebuffer binding point?');\n\n const attachment = Number(key);\n\n const descriptor = newAttachments[attachment];\n let object = descriptor;\n if (!object) {\n this._unattach(attachment);\n } else if (object instanceof Renderbuffer) {\n this._attachRenderbuffer({attachment, renderbuffer: object});\n } else if (Array.isArray(descriptor)) {\n const [texture, layer = 0, level = 0] = descriptor;\n object = texture;\n this._attachTexture({attachment, texture, layer, level});\n } else {\n this._attachTexture({attachment, texture: object, layer: 0, level: 0});\n }\n\n // Resize objects\n if (resizeAttachments && object) {\n object.resize({width: this.width, height: this.height});\n }\n }\n\n // @ts-ignore\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n // Assign to attachments and remove any nulls to get a clean attachment map\n Object.assign(this.attachments, attachments);\n Object.keys(this.attachments)\n .filter(key => !this.attachments[key])\n .forEach(key => {\n delete this.attachments[key];\n });\n }\n\n checkStatus() {\n const {gl} = this;\n const status = this.getStatus();\n if (status !== gl.FRAMEBUFFER_COMPLETE) {\n throw new Error(_getFrameBufferStatus(status));\n }\n return this;\n }\n\n getStatus() {\n const {gl} = this;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n return status;\n }\n\n clear(options = {}) {\n const {color, depth, stencil, drawBuffers = []} = options;\n\n // Bind framebuffer and delegate to global clear functions\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n if (color || depth || stencil) {\n clear(this.gl, {color, depth, stencil});\n }\n\n drawBuffers.forEach((value, drawBuffer) => {\n clearBuffer(this.gl, {drawBuffer, value});\n });\n\n // @ts-ignore\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n return this;\n }\n\n // NOTE: Slow requires roundtrip to GPU\n // App can provide pixelArray or have it auto allocated by this method\n // @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n // newly allocated by this method unless provided by app.\n readPixels(opts = {}) {\n log.error(\n 'Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)'\n )();\n return null;\n }\n\n // Reads data into provided buffer object asynchronously\n // This function doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n readPixelsToBuffer(opts = {}) {\n log.error(\n 'Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)'\n )();\n return null;\n }\n\n // Reads pixels as a dataUrl\n copyToDataUrl(opts = {}) {\n log.error(\n 'Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)'\n )();\n return null;\n }\n\n // Reads pixels into an HTML Image\n copyToImage(opts = {}) {\n log.error('Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)')();\n return null;\n }\n\n // copyToFramebuffer({width, height}) {\n // const scaleX = width / this.width;\n // const scaleY = height / this.height;\n // const scale = Math.min(scaleX, scaleY);\n // width = width * scale;\n // height = height * scale;\n // const scaledFramebuffer = new Framebuffer(this.gl, {width, height});\n // this.blit();\n // }\n\n // Copy a rectangle from a framebuffer attachment into a texture (at an offset)\n // NOTE: assumes texture has enough storage allocated\n // eslint-disable-next-line complexity\n copyToTexture(opts = {}) {\n log.error(\n 'Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n // WEBGL2 INTERFACE\n\n // Copies a rectangle of pixels between framebuffers\n // eslint-disable-next-line complexity\n blit(opts = {}) {\n log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();\n return null;\n }\n\n // signals to the GL that it need not preserve all pixels of a specified region of the framebuffer\n invalidate({attachments = [], x = 0, y = 0, width, height}) {\n const gl2 = assertWebGL2Context(this.gl);\n const prevHandle = gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, this.handle);\n const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;\n if (invalidateAll) {\n gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments);\n } else {\n // TODO - why does type checking fail on this line\n // @ts-ignore\n gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments, x, y, width, height);\n }\n // @ts-ignore\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevHandle);\n return this;\n }\n\n // Return the value for `pname` of the specified attachment.\n // The type returned is the type of the requested pname\n getAttachmentParameter(attachment, pname, keys) {\n let value = this._getAttachmentParameterFallback(pname);\n if (value === null) {\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n value = this.gl.getFramebufferAttachmentParameter(GL.FRAMEBUFFER, attachment, pname);\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);\n }\n if (keys && value > 1000) {\n // @ts-ignore\n value = getKey(this.gl, value);\n }\n return value;\n }\n\n getAttachmentParameters(\n attachment = GL.COLOR_ATTACHMENT0,\n keys,\n // @ts-ignore\n parameters = this.constructor.ATTACHMENT_PARAMETERS || []\n ) {\n const values = {};\n for (const pname of parameters) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getAttachmentParameter(attachment, pname, keys);\n }\n return values;\n }\n\n getParameters(keys = true) {\n const attachments = Object.keys(this.attachments);\n // if (this === this.gl.luma.defaultFramebuffer) {\n // attachments = [GL.COLOR_ATTACHMENT0, GL.DEPTH_STENCIL_ATTACHMENT];\n // }\n const parameters = {};\n for (const attachmentName of attachments) {\n const attachment = Number(attachmentName);\n const key = keys ? getKey(this.gl, attachment) : attachment;\n parameters[key] = this.getAttachmentParameters(attachment, keys);\n }\n return parameters;\n }\n\n // DEBUG\n\n // Note: Will only work when called in an event handler\n show() {\n if (typeof window !== 'undefined') {\n window.open(copyToDataUrl(this), 'luma-debug-texture');\n }\n return this;\n }\n\n log(logLevel = 0, message = '') {\n if (logLevel > log.level || typeof window === 'undefined') {\n return this;\n }\n message = message || `Framebuffer ${this.id}`;\n const image = copyToDataUrl(this, {targetMaxHeight: 100});\n // @ts-expect-error\n log.image({logLevel, message, image}, message)();\n return this;\n }\n\n // WEBGL INTERFACE\n bind({target = GL.FRAMEBUFFER} = {}) {\n this.gl.bindFramebuffer(target, this.handle);\n return this;\n }\n\n unbind({target = GL.FRAMEBUFFER} = {}) {\n this.gl.bindFramebuffer(target, null);\n return this;\n }\n\n // PRIVATE METHODS\n\n _createDefaultAttachments(color, depth, stencil, width, height) {\n let defaultAttachments = null;\n\n // Add a color buffer if requested and not supplied\n if (color) {\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.COLOR_ATTACHMENT0] = new Texture2D(this.gl, {\n id: `${this.id}-color0`,\n pixels: null, // reserves texture memory, but texels are undefined\n format: GL.RGBA,\n type: GL.UNSIGNED_BYTE,\n width,\n height,\n // Note: Mipmapping can be disabled by texture resource when we resize the texture\n // to a non-power-of-two dimenstion (NPOT texture) under WebGL1. To have consistant\n // behavior we always disable mipmaps.\n mipmaps: false,\n // Set MIN and MAG filtering parameters so mipmaps are not used in sampling.\n // Use LINEAR so subpixel algos like fxaa work.\n // Set WRAP modes that support NPOT textures too.\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n }\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.COLOR_ATTACHMENT0]);\n }\n\n if (depth && stencil) {\n // TODO - handle separate stencil\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT] = new Renderbuffer(this.gl, {\n id: `${this.id}-depth-stencil`,\n format: GL.DEPTH24_STENCIL8,\n width,\n height: 111\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT]);\n // TODO - optional texture\n // new Texture2D(this.gl, {\n // id: `${this.id}-depth-stencil`,\n // format: GL.DEPTH24_STENCIL8,\n // dataFormat: GL.DEPTH_STENCIL,\n // type: GL.UNSIGNED_INT_24_8,\n // width,\n // height,\n // mipmaps: false\n // });\n } else if (depth) {\n // Add a depth buffer if requested and not supplied\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.DEPTH_ATTACHMENT] = new Renderbuffer(this.gl, {\n id: `${this.id}-depth`,\n format: GL.DEPTH_COMPONENT16,\n width,\n height\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.DEPTH_ATTACHMENT]);\n } else if (stencil) {\n // TODO - handle separate stencil\n assert(false);\n }\n\n return defaultAttachments;\n }\n\n _unattach(attachment) {\n const oldAttachment = this.attachments[attachment];\n if (!oldAttachment) {\n return;\n }\n if (oldAttachment instanceof Renderbuffer) {\n // render buffer\n this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, null);\n } else {\n // Must be a texture attachment\n this.gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, null, 0);\n }\n delete this.attachments[attachment];\n }\n\n _attachRenderbuffer({attachment = GL.COLOR_ATTACHMENT0, renderbuffer}) {\n const {gl} = this;\n // TODO - is the bind needed?\n // gl.bindRenderbuffer(GL.RENDERBUFFER, renderbuffer.handle);\n gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);\n // TODO - is the unbind needed?\n // gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n\n this.attachments[attachment] = renderbuffer;\n }\n\n // layer = 0 - index into Texture2DArray and Texture3D or face for `TextureCubeMap`\n // level = 0 - mipmapLevel (must be 0 in WebGL1)\n _attachTexture({attachment = GL.COLOR_ATTACHMENT0, texture, layer, level}) {\n const {gl} = this;\n gl.bindTexture(texture.target, texture.handle);\n\n switch (texture.target) {\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n const gl2 = assertWebGL2Context(gl);\n gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);\n break;\n\n case GL.TEXTURE_CUBE_MAP:\n // layer must be a cubemap face (or if index, converted to cube map face)\n const face = mapIndexToCubeMapFace(layer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);\n break;\n\n case GL.TEXTURE_2D:\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);\n break;\n\n default:\n assert(false, 'Illegal texture type');\n }\n\n gl.bindTexture(texture.target, null);\n this.attachments[attachment] = texture;\n }\n\n // Expects framebuffer to be bound\n _setReadBuffer(readBuffer) {\n const gl2 = getWebGL2Context(this.gl);\n if (gl2) {\n gl2.readBuffer(readBuffer);\n } else {\n // Setting to color attachment 0 is a noop, so allow it in WebGL1\n assert(\n readBuffer === GL.COLOR_ATTACHMENT0 || readBuffer === GL.BACK,\n ERR_MULTIPLE_RENDERTARGETS\n );\n }\n this.readBuffer = readBuffer;\n }\n\n // Expects framebuffer to be bound\n _setDrawBuffers(drawBuffers) {\n const {gl} = this;\n const gl2 = assertWebGL2Context(gl);\n if (gl2) {\n gl2.drawBuffers(drawBuffers);\n } else {\n // TODO - is this not handled by polyfills?\n const ext = gl.getExtension('WEBGL_draw_buffers');\n if (ext) {\n ext.drawBuffersWEBGL(drawBuffers);\n } else {\n // Setting a single draw buffer to color attachment 0 is a noop, allow in WebGL1\n assert(\n drawBuffers.length === 1 &&\n (drawBuffers[0] === GL.COLOR_ATTACHMENT0 || drawBuffers[0] === GL.BACK),\n ERR_MULTIPLE_RENDERTARGETS\n );\n }\n }\n this.drawBuffers = drawBuffers;\n }\n\n // Attempt to provide workable defaults for WebGL2 symbols under WebGL1\n // null means OK to query\n // TODO - move to webgl1 polyfills\n /* eslint-disable complexity */\n _getAttachmentParameterFallback(pname) {\n const caps = getFeatures(this.gl);\n\n switch (pname) {\n case GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: // GLint\n return !caps.WEBGL2 ? 0 : null;\n case GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: // GLint\n return !caps.WEBGL2 ? 8 : null;\n case GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: // GLenum\n return !caps.WEBGL2 ? GL.UNSIGNED_INT : null;\n case GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:\n return !caps.WEBGL2 && !caps.EXT_sRGB ? GL.LINEAR : null;\n default:\n return null;\n }\n }\n /* eslint-enable complexity */\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createFramebuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteFramebuffer(this.handle);\n }\n\n _bindHandle(handle) {\n return this.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n }\n}\n\n// PUBLIC METHODS\n\n// Map an index to a cube map face constant\nfunction mapIndexToCubeMapFace(layer) {\n // TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)\n // if smaller assume layer is index, otherwise assume it is already a cube map face constant\n return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;\n}\n\n// Helper METHODS\n// Get a string describing the framebuffer error if installed\nfunction _getFrameBufferStatus(status) {\n // Use error mapping if installed\n // @ts-ignore\n const STATUS = Framebuffer.STATUS || {};\n return STATUS[status] || `Framebuffer error ${status}`;\n}\n\nexport const FRAMEBUFFER_ATTACHMENT_PARAMETERS = [\n GL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, // WebGLRenderbuffer or WebGLTexture\n GL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, // GL.RENDERBUFFER, GL.TEXTURE, GL.NONE\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, // GL.TEXTURE_CUBE_MAP_POSITIVE_X, etc.\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, // GLint\n // EXT_sRGB or WebGL2\n GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, // GL.LINEAR, GL.SRBG\n // WebGL2\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE // GLint\n // GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE\n // GL.FLOAT, GL.INT, GL.UNSIGNED_INT, GL.SIGNED_NORMALIZED, OR GL.UNSIGNED_NORMALIZED.\n];\n\nFramebuffer.ATTACHMENT_PARAMETERS = FRAMEBUFFER_ATTACHMENT_PARAMETERS;\n","/** @typedef {import('./uniforms')} types */\n\nimport GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\n\nimport Framebuffer from './framebuffer';\nimport Renderbuffer from './renderbuffer';\nimport Texture from './texture';\nimport {assert} from '../utils/assert';\n\nconst UNIFORM_SETTERS = {\n // WEBGL1\n\n /* eslint-disable max-len */\n [GL.FLOAT]: getArraySetter.bind(null, 'uniform1fv', toFloatArray, 1, setVectorUniform),\n [GL.FLOAT_VEC2]: getArraySetter.bind(null, 'uniform2fv', toFloatArray, 2, setVectorUniform),\n [GL.FLOAT_VEC3]: getArraySetter.bind(null, 'uniform3fv', toFloatArray, 3, setVectorUniform),\n [GL.FLOAT_VEC4]: getArraySetter.bind(null, 'uniform4fv', toFloatArray, 4, setVectorUniform),\n\n [GL.INT]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [GL.INT_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [GL.INT_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [GL.INT_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n\n [GL.BOOL]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [GL.BOOL_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [GL.BOOL_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [GL.BOOL_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n\n // uniformMatrix(false): don't transpose the matrix\n [GL.FLOAT_MAT2]: getArraySetter.bind(null, 'uniformMatrix2fv', toFloatArray, 4, setMatrixUniform),\n [GL.FLOAT_MAT3]: getArraySetter.bind(null, 'uniformMatrix3fv', toFloatArray, 9, setMatrixUniform),\n [GL.FLOAT_MAT4]: getArraySetter.bind(\n null,\n 'uniformMatrix4fv',\n toFloatArray,\n 16,\n setMatrixUniform\n ),\n\n [GL.SAMPLER_2D]: getSamplerSetter,\n [GL.SAMPLER_CUBE]: getSamplerSetter,\n\n // WEBGL2 - unsigned integers, irregular matrices, additional texture samplers\n\n [GL.UNSIGNED_INT]: getArraySetter.bind(null, 'uniform1uiv', toUIntArray, 1, setVectorUniform),\n [GL.UNSIGNED_INT_VEC2]: getArraySetter.bind(\n null,\n 'uniform2uiv',\n toUIntArray,\n 2,\n setVectorUniform\n ),\n [GL.UNSIGNED_INT_VEC3]: getArraySetter.bind(\n null,\n 'uniform3uiv',\n toUIntArray,\n 3,\n setVectorUniform\n ),\n [GL.UNSIGNED_INT_VEC4]: getArraySetter.bind(\n null,\n 'uniform4uiv',\n toUIntArray,\n 4,\n setVectorUniform\n ),\n\n // uniformMatrix(false): don't transpose the matrix\n [GL.FLOAT_MAT2x3]: getArraySetter.bind(\n null,\n 'uniformMatrix2x3fv',\n toFloatArray,\n 6,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT2x4]: getArraySetter.bind(\n null,\n 'uniformMatrix2x4fv',\n toFloatArray,\n 8,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT3x2]: getArraySetter.bind(\n null,\n 'uniformMatrix3x2fv',\n toFloatArray,\n 6,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT3x4]: getArraySetter.bind(\n null,\n 'uniformMatrix3x4fv',\n toFloatArray,\n 12,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT4x2]: getArraySetter.bind(\n null,\n 'uniformMatrix4x2fv',\n toFloatArray,\n 8,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT4x3]: getArraySetter.bind(\n null,\n 'uniformMatrix4x3fv',\n toFloatArray,\n 12,\n setMatrixUniform\n ),\n\n [GL.SAMPLER_2D]: getSamplerSetter,\n [GL.SAMPLER_CUBE]: getSamplerSetter,\n\n [GL.SAMPLER_3D]: getSamplerSetter,\n [GL.SAMPLER_2D_SHADOW]: getSamplerSetter,\n [GL.SAMPLER_2D_ARRAY]: getSamplerSetter,\n [GL.SAMPLER_2D_ARRAY_SHADOW]: getSamplerSetter,\n [GL.SAMPLER_CUBE_SHADOW]: getSamplerSetter,\n [GL.INT_SAMPLER_2D]: getSamplerSetter,\n [GL.INT_SAMPLER_3D]: getSamplerSetter,\n [GL.INT_SAMPLER_CUBE]: getSamplerSetter,\n [GL.INT_SAMPLER_2D_ARRAY]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_2D]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_3D]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_CUBE]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: getSamplerSetter\n /* eslint-enable max-len */\n};\n\n// Pre-allocated typed arrays for temporary conversion\nconst FLOAT_ARRAY = {};\nconst INT_ARRAY = {};\nconst UINT_ARRAY = {};\n\nconst array1 = [0];\n\n// Functions to ensure the type of uniform values\n// This is done because uniform*v functions\n// are extremely slow when consuming JS arrays directly.\nfunction toTypedArray(value, uniformLength, Type, cache) {\n // convert boolean uniforms to Number\n if (uniformLength === 1 && typeof value === 'boolean') {\n value = value ? 1 : 0;\n }\n if (Number.isFinite(value)) {\n array1[0] = value;\n value = array1;\n }\n const length = value.length;\n if (length % uniformLength) {\n log.warn(`Uniform size should be multiples of ${uniformLength}`, value)();\n }\n\n if (value instanceof Type) {\n return value;\n }\n let result = cache[length];\n if (!result) {\n result = new Type(length);\n cache[length] = result;\n }\n for (let i = 0; i < length; i++) {\n result[i] = value[i];\n }\n return result;\n}\n\nfunction toFloatArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);\n}\n\nfunction toIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);\n}\n\nfunction toUIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);\n} // Returns a Magic Uniform Setter\n\n// PUBLIC API\n\n/** @type {types['getUniformSetter']} */ export function getUniformSetter(gl, location, info) {\n const setter = UNIFORM_SETTERS[info.type];\n if (!setter) {\n throw new Error(`Unknown GLSL uniform type ${info.type}`);\n }\n\n // NOTE(Tarek): This construction is the ensure\n // separate caches for all setters.\n return setter().bind(null, gl, location);\n}\n\n/** @type {types['parseUniformName']} */\nexport function parseUniformName(name) {\n // Shortcut to avoid redundant or bad matches\n if (name[name.length - 1] !== ']') {\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n // if array name then clean the array brackets\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = name.match(UNIFORM_NAME_REGEXP);\n if (!matches || matches.length < 2) {\n throw new Error(`Failed to parse GLSL uniform name ${name}`);\n }\n\n return {\n name: matches[1],\n length: matches[2] || 1,\n isArray: Boolean(matches[2])\n };\n} // To facilitate early detection of e.g. undefined values in JavaScript\n\n// Basic checks of uniform values (with or without knowledge of program)\n\n/** @type {types['checkUniformValues']} */\nexport function checkUniformValues(uniforms, source, uniformMap) {\n for (const uniformName in uniforms) {\n const value = uniforms[uniformName];\n const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);\n if (shouldCheck && !checkUniformValue(value)) {\n // Add space to source\n source = source ? `${source} ` : '';\n // Value could be unprintable so write the object on console\n console.error(`${source} Bad uniform ${uniformName}`, value); // eslint-disable-line\n /* eslint-enable no-console */\n throw new Error(`${source} Bad uniform ${uniformName}`);\n }\n }\n return true;\n}\n\n// TODO use type information during validation\nfunction checkUniformValue(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return checkUniformArray(value);\n }\n\n // Check if single value is a number\n if (isFinite(value)) {\n return true;\n } else if (value === true || value === false) {\n return true;\n } else if (value instanceof Texture) {\n return true;\n } else if (value instanceof Renderbuffer) {\n return true;\n } else if (value instanceof Framebuffer) {\n return Boolean(value.texture);\n }\n return false;\n}\n\n/** @type {types['copyUniform']} */\nexport function copyUniform(uniforms, key, value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n if (uniforms[key]) {\n const dest = uniforms[key];\n // @ts-ignore\n for (let i = 0, len = value.length; i < len; ++i) {\n dest[i] = value[i];\n }\n } else {\n // @ts-ignore\n uniforms[key] = value.slice();\n }\n } else {\n uniforms[key] = value;\n }\n}\n\n// HELPERS\n\nfunction checkUniformArray(value) {\n // Check that every element in array is a number, and at least 1 element\n if (value.length === 0) {\n return false;\n }\n\n const checkLength = Math.min(value.length, 16);\n\n for (let i = 0; i < checkLength; ++i) {\n if (!Number.isFinite(value[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n// NOTE(Tarek): Setters maintain a cache\n// of the previously set value, and\n// avoid resetting it if it's the same.\nfunction getSamplerSetter() {\n let cache = null;\n return (gl, location, value) => {\n const update = cache !== value;\n if (update) {\n gl.uniform1i(location, value);\n cache = value;\n }\n\n return update;\n };\n}\n\nfunction getArraySetter(functionName, toArray, size, uniformSetter) {\n let cache = null;\n let cacheLength = null;\n return (gl, location, value) => {\n const arrayValue = toArray(value, size);\n const length = arrayValue.length;\n let update = false;\n if (cache === null) {\n cache = new Float32Array(length);\n cacheLength = length;\n update = true;\n } else {\n assert(cacheLength === length, 'Uniform length cannot change.');\n for (let i = 0; i < length; ++i) {\n if (arrayValue[i] !== cache[i]) {\n update = true;\n break;\n }\n }\n }\n if (update) {\n uniformSetter(gl, functionName, location, arrayValue);\n cache.set(arrayValue);\n }\n\n return update;\n };\n}\n\nfunction setVectorUniform(gl, functionName, location, value) {\n gl[functionName](location, value);\n}\n\nfunction setMatrixUniform(gl, functionName, location, value) {\n gl[functionName](location, false, value);\n}\n","// Supports GLSLIFY style naming of shaders\n// #define SHADER_NAME ...\nexport default function getShaderName(shader, defaultName = 'unnamed') {\n const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n const match = shader.match(SHADER_NAME_REGEXP);\n return match ? match[1] : defaultName;\n}\n","const GL_FRAGMENT_SHADER = 0x8b30;\nconst GL_VERTEX_SHADER = 0x8b31;\n\nexport default function getShaderTypeName(type) {\n switch (type) {\n case GL_FRAGMENT_SHADER:\n return 'fragment';\n case GL_VERTEX_SHADER:\n return 'vertex';\n default:\n return 'unknown type';\n }\n}\n","// TODO - formatGLSLCompilerError should not depend on this\nimport getShaderName from './get-shader-name';\nimport getShaderTypeName from './get-shader-type-name';\n\n// Formats GLSL compiler error log into single string\nexport default function formatGLSLCompilerError(errLog, src, shaderType) {\n const {shaderName, errors, warnings} = parseGLSLCompilerError(errLog, src, shaderType);\n return `GLSL compilation error in ${shaderName}\\n\\n${errors}\\n${warnings}`;\n}\n\n/**\n * Parse a GLSL compiler error log into a string showing the source code around each error.\n * Based on https://github.com/wwwtyro/gl-format-compiler-error (public domain)\n */\n/* eslint-disable no-continue, max-statements */\nexport function parseGLSLCompilerError(errLog, src, shaderType, shaderName) {\n const errorStrings = errLog.split(/\\r?\\n/);\n const errors = {};\n const warnings = {};\n\n // Patch the shader name\n const name = shaderName || getShaderName(src) || '(unnamed)';\n const shaderDescription = `${getShaderTypeName(shaderType)} shader ${name}`;\n\n // Parse the error - note: browser and driver dependent\n for (let i = 0; i < errorStrings.length; i++) {\n const errorString = errorStrings[i];\n if (errorString.length <= 1) {\n continue;\n }\n const segments = errorString.split(':');\n const type = segments[0];\n const line = parseInt(segments[2], 10);\n if (isNaN(line)) {\n throw new Error(`GLSL compilation error in ${shaderDescription}: ${errLog}`);\n }\n if (type !== 'WARNING') {\n errors[line] = errorString;\n } else {\n warnings[line] = errorString;\n }\n }\n\n // Format the error inline with the code\n const lines = addLineNumbers(src);\n\n return {\n shaderName: shaderDescription,\n errors: formatErrors(errors, lines),\n warnings: formatErrors(warnings, lines)\n };\n}\n\n// helper function, outputs annotated errors or warnings\nfunction formatErrors(errors, lines) {\n let message = '';\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!errors[i + 3] && !errors[i + 2] && !errors[i + 1]) {\n continue;\n }\n message += `${line}\\n`;\n if (errors[i + 1]) {\n const error = errors[i + 1];\n const segments = error.split(':', 3);\n const type = segments[0];\n const column = parseInt(segments[1], 10) || 0;\n const err = error.substring(segments.join(':').length + 1).trim();\n message += padLeft(`^^^ ${type}: ${err}\\n\\n`, column);\n }\n }\n return message;\n}\n\n/**\n * Prepends line numbers to each line of a string.\n * The line numbers will be left-padded with spaces to ensure an\n * aligned layout when rendered using monospace fonts.\n * @param {String} string - multi-line string to add line numbers to\n * @param {Number} start=1 - number of spaces to add\n * @param {String} delim =': ' - injected between line number and original line\n * @return {String[]} strings - array of string, one per line, with line numbers added\n */\nfunction addLineNumbers(string, start = 1, delim = ': ') {\n const lines = string.split(/\\r?\\n/);\n const maxDigits = String(lines.length + start - 1).length;\n return lines.map((line, i) => {\n const lineNumber = String(i + start);\n const digits = lineNumber.length;\n const prefix = padLeft(lineNumber, maxDigits - digits);\n return prefix + delim + line;\n });\n}\n\n/**\n * Pads a string with a number of spaces (space characters) to the left\n * @param {String} string - string to pad\n * @param {Number} digits - number of spaces to add\n * @return {String} string - The padded string\n */\nfunction padLeft(string, digits) {\n let result = '';\n for (let i = 0; i < digits; ++i) {\n result += ' ';\n }\n return `${result}${string}`;\n}\n","import GL from '@luma.gl/constants';\nimport {assertWebGLContext, log} from '@luma.gl/gltools';\nimport {parseGLSLCompilerError, getShaderName} from '../glsl-utils';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport Resource from './resource';\n\nconst ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';\n\n// For now this is an internal class\nexport class Shader extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Shader';\n }\n\n static getTypeName(shaderType) {\n switch (shaderType) {\n case GL.VERTEX_SHADER:\n return 'vertex-shader';\n case GL.FRAGMENT_SHADER:\n return 'fragment-shader';\n default:\n assert(false);\n return 'unknown';\n }\n }\n\n /* eslint-disable max-statements */\n constructor(gl, props) {\n assertWebGLContext(gl);\n\n // Validate arguments\n assert(typeof props.source === 'string', ERR_SOURCE);\n\n // Deduce an id, from shader source, or supplied id, or shader type\n const id =\n getShaderName(props.source, null) ||\n props.id ||\n uid(`unnamed ${Shader.getTypeName(props.shaderType)}`);\n\n super(gl, {id});\n\n this.shaderType = props.shaderType;\n this.source = props.source;\n\n this.initialize(props);\n }\n\n initialize({source}) {\n const shaderName = getShaderName(source, null);\n if (shaderName) {\n this.id = uid(shaderName);\n }\n this._compile(source);\n }\n\n // Accessors\n\n getParameter(pname) {\n return this.gl.getShaderParameter(this.handle, pname);\n }\n\n toString() {\n return `${Shader.getTypeName(this.shaderType)}:${this.id}`;\n }\n\n getName() {\n return getShaderName(this.source) || 'unnamed-shader';\n }\n\n getSource() {\n return this.gl.getShaderSource(this.handle);\n }\n\n // Debug method - Returns translated source if available\n getTranslatedSource() {\n const extension = this.gl.getExtension('WEBGL_debug_shaders');\n return extension\n ? extension.getTranslatedShaderSource(this.handle)\n : 'No translated source available. WEBGL_debug_shaders not implemented';\n }\n\n // PRIVATE METHODS\n _compile(source = this.source) {\n if (!source.startsWith('#version ')) {\n source = `#version 100\\n${source}`;\n }\n this.source = source;\n this.gl.shaderSource(this.handle, this.source);\n this.gl.compileShader(this.handle);\n\n // TODO - For performance reasons, avoid checking shader compilation errors on production?\n // TODO - Load log even when no error reported, to catch warnings?\n // https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings\n const compileStatus = this.getParameter(GL.COMPILE_STATUS);\n if (!compileStatus) {\n const infoLog = this.gl.getShaderInfoLog(this.handle);\n const {shaderName, errors, warnings} = parseGLSLCompilerError(\n infoLog,\n this.source,\n this.shaderType,\n this.id\n );\n log.error(`GLSL compilation errors in ${shaderName}\\n${errors}`)();\n log.warn(`GLSL compilation warnings in ${shaderName}\\n${warnings}`)();\n throw new Error(`GLSL compilation errors in ${shaderName}`);\n }\n }\n\n _deleteHandle() {\n this.gl.deleteShader(this.handle);\n }\n\n _getOptsFromHandle() {\n return {\n type: this.getParameter(GL.SHADER_TYPE),\n source: this.getSource()\n };\n }\n}\n\nexport class VertexShader extends Shader {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'VertexShader';\n }\n\n constructor(gl, props) {\n // Signature: new VertexShader(gl, source)\n if (typeof props === 'string') {\n props = {source: props};\n }\n super(gl, Object.assign({}, props, {shaderType: GL.VERTEX_SHADER}));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.VERTEX_SHADER);\n }\n}\n\nexport class FragmentShader extends Shader {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'FragmentShader';\n }\n constructor(gl, props) {\n // Signature: new FragmentShader(gl, source)\n if (typeof props === 'string') {\n props = {source: props};\n }\n\n super(gl, Object.assign({}, props, {shaderType: GL.FRAGMENT_SHADER}));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.FRAGMENT_SHADER);\n }\n}\n","/* eslint-disable camelcase */\nimport {assert} from '../utils/assert';\n\nconst GL_BYTE = 0x1400;\nconst GL_UNSIGNED_BYTE = 0x1401;\nconst GL_SHORT = 0x1402;\nconst GL_UNSIGNED_SHORT = 0x1403;\n\nconst GL_POINTS = 0x0;\nconst GL_LINES = 0x1;\nconst GL_LINE_LOOP = 0x2;\nconst GL_LINE_STRIP = 0x3;\nconst GL_TRIANGLES = 0x4;\nconst GL_TRIANGLE_STRIP = 0x5;\nconst GL_TRIANGLE_FAN = 0x6;\n\n// Local constants - these will \"collapse\" during minification\nconst GL_FLOAT = 0x1406;\nconst GL_FLOAT_VEC2 = 0x8b50;\nconst GL_FLOAT_VEC3 = 0x8b51;\nconst GL_FLOAT_VEC4 = 0x8b52;\n\nconst GL_INT = 0x1404;\nconst GL_INT_VEC2 = 0x8b53;\nconst GL_INT_VEC3 = 0x8b54;\nconst GL_INT_VEC4 = 0x8b55;\n\nconst GL_UNSIGNED_INT = 0x1405;\nconst GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst GL_UNSIGNED_INT_VEC4 = 0x8dc8;\n\nconst GL_BOOL = 0x8b56;\nconst GL_BOOL_VEC2 = 0x8b57;\nconst GL_BOOL_VEC3 = 0x8b58;\nconst GL_BOOL_VEC4 = 0x8b59;\n\nconst GL_FLOAT_MAT2 = 0x8b5a;\nconst GL_FLOAT_MAT3 = 0x8b5b;\nconst GL_FLOAT_MAT4 = 0x8b5c;\n\nconst GL_FLOAT_MAT2x3 = 0x8b65;\nconst GL_FLOAT_MAT2x4 = 0x8b66;\nconst GL_FLOAT_MAT3x2 = 0x8b67;\nconst GL_FLOAT_MAT3x4 = 0x8b68;\nconst GL_FLOAT_MAT4x2 = 0x8b69;\nconst GL_FLOAT_MAT4x3 = 0x8b6a;\n\n// Composite types table\nconst COMPOSITE_GL_TYPES = {\n [GL_FLOAT]: [GL_FLOAT, 1, 'float'],\n [GL_FLOAT_VEC2]: [GL_FLOAT, 2, 'vec2'],\n [GL_FLOAT_VEC3]: [GL_FLOAT, 3, 'vec3'],\n [GL_FLOAT_VEC4]: [GL_FLOAT, 4, 'vec4'],\n\n [GL_INT]: [GL_INT, 1, 'int'],\n [GL_INT_VEC2]: [GL_INT, 2, 'ivec2'],\n [GL_INT_VEC3]: [GL_INT, 3, 'ivec3'],\n [GL_INT_VEC4]: [GL_INT, 4, 'ivec4'],\n\n [GL_UNSIGNED_INT]: [GL_UNSIGNED_INT, 1, 'uint'],\n [GL_UNSIGNED_INT_VEC2]: [GL_UNSIGNED_INT, 2, 'uvec2'],\n [GL_UNSIGNED_INT_VEC3]: [GL_UNSIGNED_INT, 3, 'uvec3'],\n [GL_UNSIGNED_INT_VEC4]: [GL_UNSIGNED_INT, 4, 'uvec4'],\n\n [GL_BOOL]: [GL_FLOAT, 1, 'bool'],\n [GL_BOOL_VEC2]: [GL_FLOAT, 2, 'bvec2'],\n [GL_BOOL_VEC3]: [GL_FLOAT, 3, 'bvec3'],\n [GL_BOOL_VEC4]: [GL_FLOAT, 4, 'bvec4'],\n\n [GL_FLOAT_MAT2]: [GL_FLOAT, 8, 'mat2'], // 4\n [GL_FLOAT_MAT2x3]: [GL_FLOAT, 8, 'mat2x3'], // 6\n [GL_FLOAT_MAT2x4]: [GL_FLOAT, 8, 'mat2x4'], // 8\n\n [GL_FLOAT_MAT3]: [GL_FLOAT, 12, 'mat3'], // 9\n [GL_FLOAT_MAT3x2]: [GL_FLOAT, 12, 'mat3x2'], // 6\n [GL_FLOAT_MAT3x4]: [GL_FLOAT, 12, 'mat3x4'], // 12\n\n [GL_FLOAT_MAT4]: [GL_FLOAT, 16, 'mat4'], // 16\n [GL_FLOAT_MAT4x2]: [GL_FLOAT, 16, 'mat4x2'], // 8\n [GL_FLOAT_MAT4x3]: [GL_FLOAT, 16, 'mat4x3'] // 12\n};\n\n// Counts the number of complete primitives given a number of vertices and a drawMode\nexport function getPrimitiveDrawMode(drawMode) {\n switch (drawMode) {\n case GL_POINTS:\n return GL_POINTS;\n case GL_LINES:\n return GL_LINES;\n case GL_LINE_STRIP:\n return GL_LINES;\n case GL_LINE_LOOP:\n return GL_LINES;\n case GL_TRIANGLES:\n return GL_TRIANGLES;\n case GL_TRIANGLE_STRIP:\n return GL_TRIANGLES;\n case GL_TRIANGLE_FAN:\n return GL_TRIANGLES;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of complete \"primitives\" given a number of vertices and a drawMode\nexport function getPrimitiveCount({drawMode, vertexCount}) {\n switch (drawMode) {\n case GL_POINTS:\n case GL_LINE_LOOP:\n return vertexCount;\n case GL_LINES:\n return vertexCount / 2;\n case GL_LINE_STRIP:\n return vertexCount - 1;\n case GL_TRIANGLES:\n return vertexCount / 3;\n case GL_TRIANGLE_STRIP:\n case GL_TRIANGLE_FAN:\n return vertexCount - 2;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of vertices after splitting the vertex stream into separate \"primitives\"\nexport function getVertexCount({drawMode, vertexCount}) {\n const primitiveCount = getPrimitiveCount({drawMode, vertexCount});\n switch (getPrimitiveDrawMode(drawMode)) {\n case GL_POINTS:\n return primitiveCount;\n case GL_LINES:\n return primitiveCount * 2;\n case GL_TRIANGLES:\n return primitiveCount * 3;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3)\nexport function decomposeCompositeGLType(compositeGLType) {\n const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];\n if (!typeAndSize) {\n return null;\n }\n const [type, components] = typeAndSize;\n return {type, components};\n}\n\nexport function getCompositeGLType(type, components) {\n switch (type) {\n case GL_BYTE:\n case GL_UNSIGNED_BYTE:\n case GL_SHORT:\n case GL_UNSIGNED_SHORT:\n type = GL_FLOAT;\n break;\n default:\n }\n\n for (const glType in COMPOSITE_GL_TYPES) {\n const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n if (compType === type && compComponents === components) {\n return {glType, name};\n }\n }\n return null;\n}\n","// Contains metadata describing attribute configurations for a program's shaders\n// Much of this is automatically extracted from shaders after program linking\nimport Accessor from './accessor';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';\n\nexport default class ProgramConfiguration {\n constructor(program) {\n this.id = program.id;\n this.attributeInfos = [];\n this.attributeInfosByName = {};\n\n // Locations may not be contiguous the case of matrix attributes\n // so keep a separate location->attribute map.\n this.attributeInfosByLocation = [];\n this.varyingInfos = [];\n this.varyingInfosByName = {};\n Object.seal(this);\n this._readAttributesFromProgram(program);\n this._readVaryingsFromProgram(program);\n }\n\n getAttributeInfo(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return this.attributeInfosByLocation[location];\n }\n return this.attributeInfosByName[locationOrName] || null;\n }\n\n // Resolves an attribute name or index to an index\n getAttributeLocation(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.location : -1;\n }\n\n getAttributeAccessor(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.accessor : null;\n }\n\n getVaryingInfo(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return this.varyingInfos[location];\n }\n return this.varyingInfosByName[locationOrName] || null;\n }\n\n getVaryingIndex(locationOrName) {\n const varying = this.getVaryingInfo();\n return varying ? varying.location : -1;\n }\n\n getVaryingAccessor(locationOrName) {\n const varying = this.getVaryingInfo();\n return varying ? varying.accessor : null;\n }\n\n // PRIVATE METHODS\n\n // linkProgram needs to have been called, although linking does not need to have been successful\n _readAttributesFromProgram(program) {\n const {gl} = program;\n const count = gl.getProgramParameter(program.handle, gl.ACTIVE_ATTRIBUTES);\n\n for (let index = 0; index < count; index++) {\n const {name, type, size} = gl.getActiveAttrib(program.handle, index);\n const location = gl.getAttribLocation(program.handle, name);\n // Add only user provided attributes, for built-in attributes like\n // `gl_InstanceID` locaiton will be < 0\n if (location >= 0) {\n this._addAttribute(location, name, type, size);\n }\n }\n\n this.attributeInfos.sort((a, b) => a.location - b.location);\n }\n\n // linkProgram needs to have been called, although linking does not need to have been successful\n _readVaryingsFromProgram(program) {\n const {gl} = program;\n if (!isWebGL2(gl)) {\n return;\n }\n\n const count = gl.getProgramParameter(program.handle, gl.TRANSFORM_FEEDBACK_VARYINGS);\n for (let location = 0; location < count; location++) {\n const {name, type, size} = gl.getTransformFeedbackVarying(program.handle, location);\n this._addVarying(location, name, type, size);\n }\n\n this.varyingInfos.sort((a, b) => a.location - b.location);\n }\n\n _addAttribute(location, name, compositeType, size) {\n const {type, components} = decomposeCompositeGLType(compositeType);\n const accessor = {type, size: size * components};\n this._inferProperties(location, name, accessor);\n\n const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values\n this.attributeInfos.push(attributeInfo);\n this.attributeInfosByLocation[location] = attributeInfo; // For quick location based lookup\n this.attributeInfosByName[attributeInfo.name] = attributeInfo; // For quick name based lookup\n }\n\n // Extract additional attribute metadata from shader names (based on attribute naming conventions)\n _inferProperties(location, name, accessor) {\n if (/instance/i.test(name)) {\n // Any attribute containing the word \"instance\" will be assumed to be instanced\n accessor.divisor = 1;\n }\n }\n\n _addVarying(location, name, compositeType, size) {\n const {type, components} = decomposeCompositeGLType(compositeType);\n const accessor = new Accessor({type, size: size * components});\n\n const varying = {location, name, accessor}; // Base values\n this.varyingInfos.push(varying);\n this.varyingInfosByName[varying.name] = varying; // For quick name based lookup\n }\n}\n","import GL from '@luma.gl/constants';\n\nimport Resource from './resource';\nimport Texture from './texture';\nimport Framebuffer from './framebuffer';\nimport {parseUniformName, getUniformSetter} from './uniforms';\nimport {VertexShader, FragmentShader} from './shader';\nimport ProgramConfiguration from './program-configuration';\nimport {copyUniform, checkUniformValues} from './uniforms';\n\nimport {isWebGL2, assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\nimport {getKey} from '../webgl-utils/constants-to-keys';\nimport {getPrimitiveDrawMode} from '../webgl-utils/attribute-utils';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\nconst GL_SEPARATE_ATTRIBS = 0x8c8d;\n\nconst V6_DEPRECATED_METHODS = [\n 'setVertexArray',\n 'setAttributes',\n 'setBuffers',\n 'unsetBuffers',\n\n 'use',\n 'getUniformCount',\n 'getUniformInfo',\n 'getUniformLocation',\n 'getUniformValue',\n\n 'getVarying',\n 'getFragDataLocation',\n 'getAttachedShaders',\n 'getAttributeCount',\n 'getAttributeLocation',\n 'getAttributeInfo'\n];\n\nexport default class Program extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Program';\n }\n constructor(gl, props = {}) {\n super(gl, props);\n\n this.stubRemovedMethods('Program', 'v6.0', V6_DEPRECATED_METHODS);\n\n // Experimental flag to avoid deleting Program object while it is cached\n this._isCached = false;\n\n this.initialize(props);\n\n Object.seal(this);\n\n this._setId(props.id);\n }\n\n initialize(props = {}) {\n const {hash, vs, fs, varyings, bufferMode = GL_SEPARATE_ATTRIBS} = props;\n\n this.hash = hash || ''; // Used by ProgramManager\n\n // Create shaders if needed\n this.vs =\n typeof vs === 'string' ? new VertexShader(this.gl, {id: `${props.id}-vs`, source: vs}) : vs;\n this.fs =\n typeof fs === 'string' ? new FragmentShader(this.gl, {id: `${props.id}-fs`, source: fs}) : fs;\n assert(this.vs instanceof VertexShader);\n assert(this.fs instanceof FragmentShader);\n\n // uniforms\n this.uniforms = {};\n\n this._textureUniforms = {};\n\n // Setup varyings if supplied\n if (varyings && varyings.length > 0) {\n assertWebGL2Context(this.gl);\n this.varyings = varyings;\n this.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n this._readUniformLocationsFromLinkedProgram();\n this.configuration = new ProgramConfiguration(this);\n\n return this.setProps(props);\n }\n\n delete(options = {}) {\n if (this._isCached) {\n // This object is cached, do not delete\n return this;\n }\n return super.delete(options);\n }\n\n setProps(props) {\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n return this;\n }\n\n // A good thing about the WebGL API is that there are so many ways to draw things ;)\n // This function unifies those ways into a single call using common parameters with sane defaults\n draw({\n logPriority, // Probe log priority, enables Model to do more integrated logging\n\n drawMode = GL.TRIANGLES,\n vertexCount,\n offset = 0,\n start,\n end,\n isIndexed = false,\n indexType = GL.UNSIGNED_SHORT,\n instanceCount = 0,\n isInstanced = instanceCount > 0,\n\n vertexArray = null,\n transformFeedback,\n framebuffer,\n parameters = {},\n\n // Deprecated\n uniforms,\n samplers\n }) {\n if (uniforms || samplers) {\n // DEPRECATED: v7.0 (deprecated earlier but warning not properly implemented)\n log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();\n this.setUniforms(uniforms || {});\n }\n\n if (log.priority >= logPriority) {\n const fb = framebuffer ? framebuffer.id : 'default';\n const message =\n `mode=${getKey(this.gl, drawMode)} verts=${vertexCount} ` +\n `instances=${instanceCount} indexType=${getKey(this.gl, indexType)} ` +\n `isInstanced=${isInstanced} isIndexed=${isIndexed} ` +\n `Framebuffer=${fb}`;\n log.log(logPriority, message)();\n }\n\n // TODO - move vertex array binding and transform feedback binding to withParameters?\n assert(vertexArray);\n\n this.gl.useProgram(this.handle);\n\n if (\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n !this._areTexturesRenderable() ||\n // Avoid WebGL draw call when not rendering any data\n vertexCount === 0 ||\n (isInstanced && instanceCount === 0)\n ) {\n return false;\n }\n\n vertexArray.bindForDraw(vertexCount, instanceCount, () => {\n if (framebuffer !== undefined) {\n parameters = Object.assign({}, parameters, {framebuffer});\n }\n\n if (transformFeedback) {\n const primitiveMode = getPrimitiveDrawMode(drawMode);\n transformFeedback.begin(primitiveMode);\n }\n\n this._bindTextures();\n\n withParameters(this.gl, parameters, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n this.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);\n } else if (isIndexed && isWebGL2(this.gl) && !isNaN(start) && !isNaN(end)) {\n this.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.gl.drawElements(drawMode, vertexCount, indexType, offset);\n } else if (isInstanced) {\n this.gl2.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);\n } else {\n this.gl.drawArrays(drawMode, offset, vertexCount);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n\n return true;\n }\n\n setUniforms(uniforms = {}) {\n if (log.priority >= 2) {\n checkUniformValues(uniforms, this.id, this._uniformSetters);\n }\n\n this.gl.useProgram(this.handle);\n\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n const uniformSetter = this._uniformSetters[uniformName];\n\n if (uniformSetter) {\n let value = uniform;\n let textureUpdate = false;\n\n if (value instanceof Framebuffer) {\n value = value.texture;\n }\n if (value instanceof Texture) {\n textureUpdate = this.uniforms[uniformName] !== uniform;\n\n if (textureUpdate) {\n // eslint-disable-next-line max-depth\n if (uniformSetter.textureIndex === undefined) {\n uniformSetter.textureIndex = this._textureIndexCounter++;\n }\n\n // Bind texture to index\n const texture = value;\n const {textureIndex} = uniformSetter;\n\n texture.bind(textureIndex);\n value = textureIndex;\n\n this._textureUniforms[uniformName] = texture;\n } else {\n value = uniformSetter.textureIndex;\n }\n } else if (this._textureUniforms[uniformName]) {\n delete this._textureUniforms[uniformName];\n }\n\n // NOTE(Tarek): uniformSetter returns whether\n // value had to be updated or not.\n if (uniformSetter(value) || textureUpdate) {\n copyUniform(this.uniforms, uniformName, uniform);\n }\n }\n }\n\n return this;\n }\n\n // PRIVATE METHODS\n\n // Checks if all texture-values uniforms are renderable (i.e. loaded)\n // Update a texture if needed (e.g. from video)\n // Note: This is currently done before every draw call\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const uniformName in this._textureUniforms) {\n const texture = this._textureUniforms[uniformName];\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n return texturesRenderable;\n }\n\n // Binds textures\n // Note: This is currently done before every draw call\n _bindTextures() {\n for (const uniformName in this._textureUniforms) {\n const textureIndex = this._uniformSetters[uniformName].textureIndex;\n this._textureUniforms[uniformName].bind(textureIndex);\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createProgram();\n }\n\n _deleteHandle() {\n this.gl.deleteProgram(this.handle);\n }\n\n // Extract opts needed to initialize a `Program` from an independently created WebGLProgram handle\n _getOptionsFromHandle(handle) {\n const shaderHandles = this.gl.getAttachedShaders(handle);\n const opts = {};\n for (const shaderHandle of shaderHandles) {\n const type = this.gl.getShaderParameter(this.handle, GL.SHADER_TYPE);\n switch (type) {\n case GL.VERTEX_SHADER:\n // @ts-ignore\n opts.vs = new VertexShader({handle: shaderHandle});\n break;\n case GL.FRAGMENT_SHADER:\n // @ts-ignore\n opts.fs = new FragmentShader({handle: shaderHandle});\n break;\n default:\n }\n }\n return opts;\n }\n\n _getParameter(pname) {\n return this.gl.getProgramParameter(this.handle, pname);\n }\n\n // If program is not named, name it after shader names\n // TODO - this.id will already have been initialized\n _setId(id) {\n if (!id) {\n const programName = this._getName();\n this.id = uid(programName);\n }\n }\n\n // Generate a default name for the program based on names of the shaders\n _getName() {\n let programName = this.vs.getName() || this.fs.getName();\n programName = programName.replace(/shader/i, '');\n programName = programName ? `${programName}-program` : 'program';\n return programName;\n }\n\n _compileAndLink() {\n const {gl} = this;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n\n // Avoid checking program linking error in production\n // @ts-ignore\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // query uniform locations and build name to setter map.\n // TODO - This overlaps with ProgramConfiguration?\n _readUniformLocationsFromLinkedProgram() {\n const {gl} = this;\n this._uniformSetters = {};\n this._uniformCount = this._getParameter(GL.ACTIVE_UNIFORMS);\n for (let i = 0; i < this._uniformCount; i++) {\n const info = this.gl.getActiveUniform(this.handle, i);\n const {name} = parseUniformName(info.name);\n let location = gl.getUniformLocation(this.handle, name);\n this._uniformSetters[name] = getUniformSetter(gl, location, info);\n if (info.size > 1) {\n for (let l = 0; l < info.size; l++) {\n location = gl.getUniformLocation(this.handle, `${name}[${l}]`);\n this._uniformSetters[`${name}[${l}]`] = getUniformSetter(gl, location, info);\n }\n }\n }\n this._textureIndexCounter = 0;\n }\n\n // TO BE REMOVED in v7?\n\n // Rretrieves information about active uniforms identifed by their indices (`uniformIndices`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniforms\n getActiveUniforms(uniformIndices, pname) {\n return this.gl2.getActiveUniforms(this.handle, uniformIndices, pname);\n }\n\n // Retrieves the index of a uniform block\n getUniformBlockIndex(blockName) {\n return this.gl2.getUniformBlockIndex(this.handle, blockName);\n }\n\n // Retrieves information about an active uniform block (`blockIndex`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockParameter\n getActiveUniformBlockParameter(blockIndex, pname) {\n return this.gl2.getActiveUniformBlockParameter(this.handle, blockIndex, pname);\n }\n\n // Binds a uniform block (`blockIndex`) to a specific binding point (`blockBinding`)\n uniformBlockBinding(blockIndex, blockBinding) {\n this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n }\n}\n","import {assembleShaders} from '@luma.gl/shadertools';\nimport {Program} from '@luma.gl/webgl';\n\nexport default class ProgramManager {\n static getDefaultProgramManager(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new ProgramManager(gl);\n\n return gl.luma.defaultProgramManager;\n }\n\n constructor(gl) {\n this.gl = gl;\n\n this._programCache = {};\n this._getUniforms = {};\n this._registeredModules = {}; // TODO: Remove? This isn't used anywhere in luma.gl\n this._hookFunctions = [];\n this._defaultModules = [];\n\n this._hashes = {};\n this._hashCounter = 0;\n this.stateHash = 0; // Used change hashing if hooks are modified\n this._useCounts = {};\n }\n\n addDefaultModule(module) {\n if (!this._defaultModules.find(m => m.name === module.name)) {\n this._defaultModules.push(module);\n }\n\n this.stateHash++;\n }\n\n removeDefaultModule(module) {\n const moduleName = typeof module === 'string' ? module : module.name;\n this._defaultModules = this._defaultModules.filter(m => m.name !== moduleName);\n this.stateHash++;\n }\n\n addShaderHook(hook, opts) {\n if (opts) {\n hook = Object.assign(opts, {hook});\n }\n\n this._hookFunctions.push(hook);\n\n this.stateHash++;\n }\n\n get(props = {}) {\n const {\n vs = '',\n fs = '',\n defines = {},\n inject = {},\n varyings = [],\n bufferMode = 0x8c8d,\n transpileToGLSL100 = false\n } = props; // varyings/bufferMode for xform feedback, 0x8c8d = SEPARATE_ATTRIBS\n\n const modules = this._getModuleList(props.modules); // Combine with default modules\n\n const vsHash = this._getHash(vs);\n const fsHash = this._getHash(fs);\n const moduleHashes = modules.map(m => this._getHash(m.name)).sort();\n const varyingHashes = varyings.map(v => this._getHash(v));\n\n const defineKeys = Object.keys(defines).sort();\n const injectKeys = Object.keys(inject).sort();\n const defineHashes = [];\n const injectHashes = [];\n\n for (const key of defineKeys) {\n defineHashes.push(this._getHash(key));\n defineHashes.push(this._getHash(defines[key]));\n }\n\n for (const key of injectKeys) {\n injectHashes.push(this._getHash(key));\n injectHashes.push(this._getHash(inject[key]));\n }\n\n const hash = `${vsHash}/${fsHash}D${defineHashes.join('/')}M${moduleHashes.join(\n '/'\n )}I${injectHashes.join('/')}V${varyingHashes.join('/')}H${this.stateHash}B${bufferMode}${\n transpileToGLSL100 ? 'T' : ''\n }`;\n\n if (!this._programCache[hash]) {\n const assembled = assembleShaders(this.gl, {\n vs,\n fs,\n modules,\n inject,\n defines,\n hookFunctions: this._hookFunctions,\n transpileToGLSL100\n });\n\n this._programCache[hash] = new Program(this.gl, {\n hash,\n vs: assembled.vs,\n fs: assembled.fs,\n varyings,\n bufferMode\n });\n\n this._getUniforms[hash] = assembled.getUniforms || (x => {});\n this._useCounts[hash] = 0;\n }\n\n this._useCounts[hash]++;\n\n return this._programCache[hash];\n }\n\n getUniforms(program) {\n return this._getUniforms[program.hash] || null;\n }\n\n release(program) {\n const hash = program.hash;\n this._useCounts[hash]--;\n\n if (this._useCounts[hash] === 0) {\n this._programCache[hash].delete();\n delete this._programCache[hash];\n delete this._getUniforms[hash];\n delete this._useCounts[hash];\n }\n }\n\n _getHash(key) {\n if (this._hashes[key] === undefined) {\n this._hashes[key] = this._hashCounter++;\n }\n\n return this._hashes[key];\n }\n\n // Dedup and combine with default modules\n _getModuleList(appModules = []) {\n const modules = new Array(this._defaultModules.length + appModules.length);\n const seen = {};\n let count = 0;\n\n for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n const module = this._defaultModules[i];\n const name = module.name;\n modules[count++] = module;\n seen[name] = true;\n }\n\n for (let i = 0, len = appModules.length; i < len; ++i) {\n const module = appModules[i];\n const name = module.name;\n if (!seen[name]) {\n modules[count++] = module;\n seen[name] = true;\n }\n }\n\n modules.length = count;\n\n return modules;\n }\n}\n","/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst fp32shader = `\\\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n\n// All these functions are for substituting tan() function from Intel GPU only\nconst float TWO_PI = 6.2831854820251465;\nconst float PI_2 = 1.5707963705062866;\nconst float PI_16 = 0.1963495463132858;\n\nconst float SIN_TABLE_0 = 0.19509032368659973;\nconst float SIN_TABLE_1 = 0.3826834261417389;\nconst float SIN_TABLE_2 = 0.5555702447891235;\nconst float SIN_TABLE_3 = 0.7071067690849304;\n\nconst float COS_TABLE_0 = 0.9807852506637573;\nconst float COS_TABLE_1 = 0.9238795042037964;\nconst float COS_TABLE_2 = 0.8314695954322815;\nconst float COS_TABLE_3 = 0.7071067690849304;\n\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01; // 1/3!\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03; // 1/5!\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04; // 1/7!\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06; // 1/9!\n\nfloat sin_taylor_fp32(float a) {\n float r, s, t, x;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n x = -a * a;\n s = a;\n r = a;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_3;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_5;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_7;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_9;\n s = s + t;\n\n return s;\n}\n\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\n if (a == 0.0) {\n sin_t = 0.0;\n cos_t = 1.0;\n }\n sin_t = sin_taylor_fp32(a);\n cos_t = sqrt(1.0 - sin_t * sin_t);\n}\n\nfloat tan_taylor_fp32(float a) {\n float sin_a;\n float cos_a;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n // 2pi range reduction\n float z = floor(a / TWO_PI);\n float r = a - TWO_PI * z;\n\n float t;\n float q = floor(r / PI_2 + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return 1.0 / 0.0;\n }\n\n t = r - PI_2 * q;\n\n q = floor(t / PI_16 + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return 1.0 / 0.0;\n } else {\n t = t - PI_16 * q;\n }\n\n float u = 0.0;\n float v = 0.0;\n\n float sin_t, cos_t;\n float s, c;\n sincos_taylor_fp32(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0;\n v = SIN_TABLE_0;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1;\n v = SIN_TABLE_1;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2;\n v = SIN_TABLE_2;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3;\n v = SIN_TABLE_3;\n }\n if (k > 0) {\n s = u * sin_t + v * cos_t;\n c = u * cos_t - v * sin_t;\n } else {\n s = u * sin_t - v * cos_t;\n c = u * cos_t + v * sin_t;\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return sin_a / cos_a;\n}\n#endif\n\nfloat tan_fp32(float a) {\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n return tan_taylor_fp32(a);\n#else\n return tan(a);\n#endif\n}\n`;\n\nexport const fp32 = {\n name: 'fp32',\n vs: fp32shader,\n fs: null\n};\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport type {ShaderModule} from '../../types/types';\n\nconst defines = '#define SMOOTH_EDGE_RADIUS 0.5';\nconst vs = `\n${defines}\n\nstruct VertexGeometry {\n vec4 position;\n vec3 worldPosition;\n vec3 worldPositionAlt;\n vec3 normal;\n vec2 uv;\n vec3 pickingColor;\n} geometry = VertexGeometry(\n vec4(0.0, 0.0, 1.0, 0.0),\n vec3(0.0),\n vec3(0.0),\n vec3(0.0),\n vec2(0.0),\n vec3(0.0)\n);\n`;\n\nconst fs = `\n${defines}\n\nstruct FragmentGeometry {\n vec2 uv;\n} geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n`;\n\nexport default {name: 'geometry', vs, fs} as ShaderModule;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {COORDINATE_SYSTEM, PROJECTION_MODE, UNIT} from '../../lib/constants';\n\n// We are generating these from the js code in constants.js\nconst COORDINATE_SYSTEM_GLSL_CONSTANTS = Object.keys(COORDINATE_SYSTEM)\n .map(key => `const int COORDINATE_SYSTEM_${key} = ${COORDINATE_SYSTEM[key]};`)\n .join('');\nconst PROJECTION_MODE_GLSL_CONSTANTS = Object.keys(PROJECTION_MODE)\n .map(key => `const int PROJECTION_MODE_${key} = ${PROJECTION_MODE[key]};`)\n .join('');\nconst UNIT_GLSL_CONSTANTS = Object.keys(UNIT)\n .map(key => `const int UNIT_${key.toUpperCase()} = ${UNIT[key]};`)\n .join('');\n\nexport default `\\\n${COORDINATE_SYSTEM_GLSL_CONSTANTS}\n${PROJECTION_MODE_GLSL_CONSTANTS}\n${UNIT_GLSL_CONSTANTS}\n\nuniform int project_uCoordinateSystem;\nuniform int project_uProjectionMode;\nuniform float project_uScale;\nuniform bool project_uWrapLongitude;\nuniform vec3 project_uCommonUnitsPerMeter;\nuniform vec3 project_uCommonUnitsPerWorldUnit;\nuniform vec3 project_uCommonUnitsPerWorldUnit2;\nuniform vec4 project_uCenter;\nuniform mat4 project_uModelMatrix;\nuniform mat4 project_uViewProjectionMatrix;\nuniform vec2 project_uViewportSize;\nuniform float project_uDevicePixelRatio;\nuniform float project_uFocalDistance;\nuniform vec3 project_uCameraPosition;\nuniform vec3 project_uCoordinateOrigin;\nuniform vec3 project_uCommonOrigin;\nuniform bool project_uPseudoMeters;\n\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\nconst vec3 ZERO_64_LOW = vec3(0.0);\nconst float EARTH_RADIUS = 6370972.0; // meters\nconst float GLOBE_RADIUS = 256.0;\n\n// returns an adjustment factor for uCommonUnitsPerMeter\nfloat project_size_at_latitude(float lat) {\n float y = clamp(lat, -89.9, 89.9);\n return 1.0 / cos(radians(y));\n}\n\nfloat project_size() {\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR &&\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT &&\n project_uPseudoMeters == false) {\n\n // uCommonUnitsPerMeter in low-zoom Web Mercator is non-linear\n // Adjust by 1 / cos(latitude)\n // If geometry.position (vertex in common space) is populated, use it\n // Otherwise use geometry.worldPosition (anchor in world space)\n \n if (geometry.position.w == 0.0) {\n return project_size_at_latitude(geometry.worldPosition.y);\n }\n\n // latitude from common y: 2.0 * (atan(exp(y / TILE_SIZE * 2.0 * PI - PI)) - PI / 4.0)\n // Taylor series of 1 / cos(latitude)\n // Max error < 0.003\n \n float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;\n float y2 = y * y;\n float y4 = y2 * y2;\n float y6 = y4 * y2;\n return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;\n }\n return 1.0;\n}\n\nfloat project_size_at_latitude(float meters, float lat) {\n return meters * project_uCommonUnitsPerMeter.z * project_size_at_latitude(lat);\n}\n\n//\n// Scaling offsets - scales meters to \"world distance\"\n// Note the scalar version of project_size is for scaling the z component only\n//\nfloat project_size(float meters) {\n return meters * project_uCommonUnitsPerMeter.z * project_size();\n}\n\nvec2 project_size(vec2 meters) {\n return meters * project_uCommonUnitsPerMeter.xy * project_size();\n}\n\nvec3 project_size(vec3 meters) {\n return meters * project_uCommonUnitsPerMeter * project_size();\n}\n\nvec4 project_size(vec4 meters) {\n return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w);\n}\n\n// Get rotation matrix that aligns the z axis with the given up vector\n// Find 3 unit vectors ux, uy, uz that are perpendicular to each other and uz == up\nmat3 project_get_orientation_matrix(vec3 up) {\n vec3 uz = normalize(up);\n // Tangent on XY plane\n vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));\n vec3 uy = cross(uz, ux);\n return mat3(ux, uy, uz);\n}\n\nbool project_needs_rotation(vec3 commonPosition, out mat3 transform) {\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\n transform = project_get_orientation_matrix(commonPosition);\n return true;\n }\n return false;\n}\n\n//\n// Projecting normal - transform deltas from current coordinate system to\n// normals in the worldspace\n//\nvec3 project_normal(vec3 vector) {\n // Apply model matrix\n vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0);\n vec3 n = normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter);\n mat3 rotation;\n if (project_needs_rotation(geometry.position.xyz, rotation)) {\n n = rotation * n;\n }\n return n;\n}\n\nvec4 project_offset_(vec4 offset) {\n float dy = offset.y;\n vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy;\n return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\n}\n\n//\n// Projecting positions - non-linear projection: lnglats => unit tile [0-1, 0-1]\n//\nvec2 project_mercator_(vec2 lnglat) {\n float x = lnglat.x;\n if (project_uWrapLongitude) {\n x = mod(x + 180., 360.0) - 180.;\n }\n float y = clamp(lnglat.y, -89.9, 89.9);\n return vec2(\n radians(x) + PI,\n PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))\n ) * WORLD_SCALE;\n}\n\nvec3 project_globe_(vec3 lnglatz) {\n float lambda = radians(lnglatz.x);\n float phi = radians(lnglatz.y);\n float cosPhi = cos(phi);\n float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;\n\n return vec3(\n sin(lambda) * cosPhi,\n -cos(lambda) * cosPhi,\n sin(phi)\n ) * D;\n}\n\n//\n// Projects positions (defined by project_uCoordinateSystem) to common space (defined by project_uProjectionMode)\n//\nvec4 project_position(vec4 position, vec3 position64Low) {\n vec4 position_world = project_uModelMatrix * position;\n\n // Work around for a Mac+NVIDIA bug https://github.com/visgl/deck.gl/issues/4145\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_mercator_(position_world.xy),\n project_size_at_latitude(position_world.z, position_world.y),\n position_world.w\n );\n }\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {\n position_world.xyz += project_uCoordinateOrigin;\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_globe_(position_world.xyz),\n position_world.w\n );\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n if (abs(position_world.y - project_uCoordinateOrigin.y) > 0.25) {\n // Too far from the projection center for offset mode to be accurate\n // Only use high parts\n return vec4(\n project_mercator_(position_world.xy) - project_uCommonOrigin.xy,\n project_size(position_world.z),\n position_world.w\n );\n }\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_IDENTITY ||\n (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\n (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {\n // Subtract high part of 64 bit value. Convert remainder to float32, preserving precision.\n position_world.xyz -= project_uCoordinateOrigin;\n }\n\n // Translation is already added to the high parts\n return project_offset_(position_world + project_uModelMatrix * vec4(position64Low, 0.0));\n}\n\nvec4 project_position(vec4 position) {\n return project_position(position, ZERO_64_LOW);\n}\n\nvec3 project_position(vec3 position, vec3 position64Low) {\n vec4 projected_position = project_position(vec4(position, 1.0), position64Low);\n return projected_position.xyz;\n}\n\nvec3 project_position(vec3 position) {\n vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\n return projected_position.xyz;\n}\n\nvec2 project_position(vec2 position) {\n vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\n return projected_position.xy;\n}\n\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\n return viewProjectionMatrix * position + center;\n}\n\n//\n// Projects from common space coordinates to clip space.\n// Uses project_uViewProjectionMatrix\n//\nvec4 project_common_position_to_clipspace(vec4 position) {\n return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter);\n}\n\n// Returns a clip space offset that corresponds to a given number of screen pixels\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\n vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0;\n return offset * project_uFocalDistance;\n}\n\nfloat project_size_to_pixel(float meters) {\n return project_size(meters) * project_uScale;\n}\nfloat project_size_to_pixel(float size, int unit) {\n if (unit == UNIT_METERS) return project_size_to_pixel(size);\n if (unit == UNIT_COMMON) return size * project_uScale;\n // UNIT_PIXELS\n return size;\n}\nfloat project_pixel_size(float pixels) {\n return pixels / project_uScale;\n}\nvec2 project_pixel_size(vec2 pixels) {\n return pixels / project_uScale;\n}\n`;\n","function isEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a)) {\n // Special treatment for arrays: compare 1-level deep\n // This is to support equality of matrix/coordinate props\n const len = a.length;\n if (!b || b.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\n/**\n * Speed up consecutive function calls by caching the result of calls with identical input\n * https://en.wikipedia.org/wiki/Memoization\n * @param {function} compute - the function to be memoized\n */\nexport default function memoize(compute: (args: In) => Out): (args: In) => Out {\n let cachedArgs: any = {};\n let cachedResult: Out;\n\n return (args: In) => {\n for (const key in args) {\n if (!isEqual(args[key], cachedArgs[key])) {\n cachedResult = compute(args);\n cachedArgs = args;\n break;\n }\n }\n return cachedResult;\n };\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n/* eslint-disable complexity, camelcase */\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec4 from 'gl-matrix/vec4';\n\nimport {COORDINATE_SYSTEM, PROJECTION_MODE} from '../../lib/constants';\n\nimport memoize from '../../utils/memoize';\n\nimport type Viewport from '../../viewports/viewport';\nimport type {CoordinateSystem} from '../../lib/constants';\nimport type {NumericArray} from '../../types/types';\n\ntype Vec3 = [number, number, number];\ntype Vec4 = [number, number, number, number];\n\n// To quickly set a vector to zero\nconst ZERO_VECTOR: Vec4 = [0, 0, 0, 0];\n// 4x4 matrix that drops 4th component of vector\nconst VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\nconst DEFAULT_PIXELS_PER_UNIT2: Vec3 = [0, 0, 0];\nconst DEFAULT_COORDINATE_ORIGIN: Vec3 = [0, 0, 0];\n\nconst getMemoizedViewportUniforms = memoize(calculateViewportUniforms);\n\nexport function getOffsetOrigin(\n viewport: Viewport,\n coordinateSystem: CoordinateSystem,\n coordinateOrigin: Vec3 = DEFAULT_COORDINATE_ORIGIN\n): {\n geospatialOrigin: Vec3 | null;\n shaderCoordinateOrigin: Vec3;\n offsetMode: boolean;\n} {\n if (coordinateOrigin.length < 3) {\n coordinateOrigin = [coordinateOrigin[0], coordinateOrigin[1], 0];\n }\n\n let shaderCoordinateOrigin = coordinateOrigin;\n let geospatialOrigin: Vec3 | null;\n let offsetMode = true;\n\n if (\n coordinateSystem === COORDINATE_SYSTEM.LNGLAT_OFFSETS ||\n coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS\n ) {\n geospatialOrigin = coordinateOrigin;\n } else {\n geospatialOrigin = viewport.isGeospatial\n ? // @ts-expect-error longitude and latitude are not defined on the base Viewport, but is expected on geospatial viewports\n [Math.fround(viewport.longitude), Math.fround(viewport.latitude), 0]\n : null;\n }\n\n switch (viewport.projectionMode) {\n case PROJECTION_MODE.WEB_MERCATOR:\n if (\n coordinateSystem === COORDINATE_SYSTEM.LNGLAT ||\n coordinateSystem === COORDINATE_SYSTEM.CARTESIAN\n ) {\n geospatialOrigin = [0, 0, 0];\n offsetMode = false;\n }\n break;\n\n case PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET:\n if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {\n // viewport center in world space\n // @ts-expect-error when using LNGLAT coordinates, we expect the viewport to be geospatial, in which case geospatialOrigin is defined\n shaderCoordinateOrigin = geospatialOrigin;\n } else if (coordinateSystem === COORDINATE_SYSTEM.CARTESIAN) {\n // viewport center in common space\n shaderCoordinateOrigin = [\n Math.fround(viewport.center[0]),\n Math.fround(viewport.center[1]),\n 0\n ];\n // Geospatial origin (wgs84) must match shaderCoordinateOrigin (common)\n geospatialOrigin = viewport.unprojectPosition(shaderCoordinateOrigin);\n shaderCoordinateOrigin[0] -= coordinateOrigin[0];\n shaderCoordinateOrigin[1] -= coordinateOrigin[1];\n shaderCoordinateOrigin[2] -= coordinateOrigin[2];\n }\n break;\n\n case PROJECTION_MODE.IDENTITY:\n shaderCoordinateOrigin = viewport.position.map(Math.fround) as Vec3;\n shaderCoordinateOrigin[2] = shaderCoordinateOrigin[2] || 0;\n break;\n\n case PROJECTION_MODE.GLOBE:\n offsetMode = false;\n geospatialOrigin = null;\n break;\n\n default:\n // Unknown projection mode\n offsetMode = false;\n }\n\n return {geospatialOrigin, shaderCoordinateOrigin, offsetMode};\n}\n\n// The code that utilizes Matrix4 does the same calculation as their mat4 counterparts,\n// has lower performance but provides error checking.\nfunction calculateMatrixAndOffset(\n viewport: Viewport,\n coordinateSystem: CoordinateSystem,\n coordinateOrigin: Vec3\n): {\n viewMatrix: NumericArray;\n viewProjectionMatrix: NumericArray;\n projectionCenter: Vec4;\n originCommon: Vec4;\n cameraPosCommon: Vec3;\n shaderCoordinateOrigin: Vec3;\n geospatialOrigin: Vec3 | null;\n} {\n const {viewMatrixUncentered, projectionMatrix} = viewport;\n let {viewMatrix, viewProjectionMatrix} = viewport;\n\n let projectionCenter = ZERO_VECTOR;\n let originCommon: Vec4 = ZERO_VECTOR;\n let cameraPosCommon: Vec3 = viewport.cameraPosition as Vec3;\n const {geospatialOrigin, shaderCoordinateOrigin, offsetMode} = getOffsetOrigin(\n viewport,\n coordinateSystem,\n coordinateOrigin\n );\n\n if (offsetMode) {\n // Calculate transformed projectionCenter (using 64 bit precision JS)\n // This is the key to offset mode precision\n // (avoids doing this addition in 32 bit precision in GLSL)\n // @ts-expect-error the 4th component is assigned below\n originCommon = viewport.projectPosition(geospatialOrigin || shaderCoordinateOrigin);\n\n cameraPosCommon = [\n cameraPosCommon[0] - originCommon[0],\n cameraPosCommon[1] - originCommon[1],\n cameraPosCommon[2] - originCommon[2]\n ];\n\n originCommon[3] = 1;\n\n // projectionCenter = new Matrix4(viewProjectionMatrix)\n // .transformVector([positionPixels[0], positionPixels[1], 0.0, 1.0]);\n projectionCenter = vec4.transformMat4([], originCommon, viewProjectionMatrix);\n\n // Always apply uncentered projection matrix if available (shader adds center)\n viewMatrix = viewMatrixUncentered || viewMatrix;\n\n // Zero out 4th coordinate (\"after\" model matrix) - avoids further translations\n // viewMatrix = new Matrix4(viewMatrixUncentered || viewMatrix)\n // .multiplyRight(VECTOR_TO_POINT_MATRIX);\n viewProjectionMatrix = mat4.multiply([], projectionMatrix, viewMatrix);\n viewProjectionMatrix = mat4.multiply([], viewProjectionMatrix, VECTOR_TO_POINT_MATRIX);\n }\n\n return {\n viewMatrix,\n viewProjectionMatrix,\n projectionCenter,\n originCommon,\n cameraPosCommon,\n shaderCoordinateOrigin,\n geospatialOrigin\n };\n}\n\nexport type ProjectUniforms = {\n project_uCoordinateSystem: number;\n project_uProjectionMode: number;\n project_uCoordinateOrigin: Vec3;\n project_uCommonOrigin: Vec3;\n project_uCenter: Vec4;\n // Backward compatibility\n // TODO: remove in v9\n project_uPseudoMeters: boolean;\n\n // Screen size\n project_uViewportSize: [number, number];\n project_uDevicePixelRatio: number;\n\n project_uFocalDistance: number;\n project_uCommonUnitsPerMeter: Vec3;\n project_uCommonUnitsPerWorldUnit: Vec3;\n project_uCommonUnitsPerWorldUnit2: Vec3;\n /** 2^zoom */\n project_uScale: number;\n project_uWrapLongitude: boolean;\n\n project_uViewProjectionMatrix: NumericArray;\n project_uModelMatrix: NumericArray;\n\n // This is for lighting calculations\n project_uCameraPosition: Vec3;\n};\n\nexport type ProjectModuleSettings = {\n viewport: Viewport;\n devicePixelRatio?: number;\n modelMatrix?: NumericArray | null;\n coordinateSystem?: CoordinateSystem;\n coordinateOrigin?: Vec3;\n autoWrapLongitude?: boolean;\n};\n\n/**\n * Returns uniforms for shaders based on current projection\n * includes: projection matrix suitable for shaders\n *\n * TODO - Ensure this works with any viewport, not just WebMercatorViewports\n *\n * @param {WebMercatorViewport} viewport -\n * @return {Float32Array} - 4x4 projection matrix that can be used in shaders\n */\nexport function getUniformsFromViewport({\n viewport,\n devicePixelRatio = 1,\n modelMatrix = null,\n // Match Layer.defaultProps\n coordinateSystem = COORDINATE_SYSTEM.DEFAULT,\n coordinateOrigin = DEFAULT_COORDINATE_ORIGIN,\n autoWrapLongitude = false\n}: ProjectModuleSettings): ProjectUniforms {\n if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = viewport.isGeospatial\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN;\n }\n\n const uniforms = getMemoizedViewportUniforms({\n viewport,\n devicePixelRatio,\n coordinateSystem,\n coordinateOrigin\n });\n\n uniforms.project_uWrapLongitude = autoWrapLongitude;\n uniforms.project_uModelMatrix = modelMatrix || IDENTITY_MATRIX;\n\n return uniforms;\n}\n\nfunction calculateViewportUniforms({\n viewport,\n devicePixelRatio,\n coordinateSystem,\n coordinateOrigin\n}: {\n viewport: Viewport;\n devicePixelRatio: number;\n coordinateSystem: CoordinateSystem;\n coordinateOrigin: Vec3;\n}): ProjectUniforms {\n const {\n projectionCenter,\n viewProjectionMatrix,\n originCommon,\n cameraPosCommon,\n shaderCoordinateOrigin,\n geospatialOrigin\n } = calculateMatrixAndOffset(viewport, coordinateSystem, coordinateOrigin);\n\n // Calculate projection pixels per unit\n const distanceScales = viewport.getDistanceScales();\n\n const viewportSize: [number, number] = [\n viewport.width * devicePixelRatio,\n viewport.height * devicePixelRatio\n ];\n\n // Distance at which screen pixels are projected.\n // Used to scale sizes in clipspace to match screen pixels.\n // When using Viewport class's default projection matrix, this yields 1 for orthographic\n // and `viewport.focalDistance` for perspective views\n const focalDistance =\n vec4.transformMat4([], [0, 0, -viewport.focalDistance, 1], viewport.projectionMatrix)[3] || 1;\n\n const uniforms: ProjectUniforms = {\n // Projection mode values\n project_uCoordinateSystem: coordinateSystem,\n project_uProjectionMode: viewport.projectionMode,\n project_uCoordinateOrigin: shaderCoordinateOrigin,\n project_uCommonOrigin: originCommon.slice(0, 3) as Vec3,\n project_uCenter: projectionCenter,\n\n // Backward compatibility\n // TODO: remove in v9\n // @ts-expect-error _pseudoMeters is only defined on WebMercator viewport\n project_uPseudoMeters: Boolean(viewport._pseudoMeters),\n\n // Screen size\n project_uViewportSize: viewportSize,\n project_uDevicePixelRatio: devicePixelRatio,\n\n project_uFocalDistance: focalDistance,\n project_uCommonUnitsPerMeter: distanceScales.unitsPerMeter as Vec3,\n project_uCommonUnitsPerWorldUnit: distanceScales.unitsPerMeter as Vec3,\n project_uCommonUnitsPerWorldUnit2: DEFAULT_PIXELS_PER_UNIT2,\n project_uScale: viewport.scale, // This is the mercator scale (2 ** zoom)\n project_uWrapLongitude: false,\n\n project_uViewProjectionMatrix: viewProjectionMatrix,\n project_uModelMatrix: IDENTITY_MATRIX,\n\n // This is for lighting calculations\n project_uCameraPosition: cameraPosCommon\n };\n\n if (geospatialOrigin) {\n // Get high-precision DistanceScales from geospatial viewport\n // TODO: stricter types in Viewport classes\n const distanceScalesAtOrigin = viewport.getDistanceScales(geospatialOrigin) as {\n unitsPerMeter: Vec3;\n metersPerUnit: Vec3;\n unitsPerMeter2: Vec3;\n unitsPerDegree: Vec3;\n degreesPerUnit: Vec3;\n unitsPerDegree2: Vec3;\n };\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.METER_OFFSETS:\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerMeter;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerMeter2;\n break;\n\n case COORDINATE_SYSTEM.LNGLAT:\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n // @ts-expect-error _pseudoMeters only exists on WebMercatorView\n if (!viewport._pseudoMeters) {\n uniforms.project_uCommonUnitsPerMeter = distanceScalesAtOrigin.unitsPerMeter;\n }\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerDegree;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerDegree2;\n break;\n\n // a.k.a \"preprojected\" positions\n case COORDINATE_SYSTEM.CARTESIAN:\n uniforms.project_uCommonUnitsPerWorldUnit = [1, 1, distanceScalesAtOrigin.unitsPerMeter[2]];\n uniforms.project_uCommonUnitsPerWorldUnit2 = [\n 0,\n 0,\n distanceScalesAtOrigin.unitsPerMeter2[2]\n ];\n break;\n\n default:\n break;\n }\n }\n\n return uniforms;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {fp32} from '@luma.gl/core';\nimport geometry from '../misc/geometry';\nimport projectShader from './project.glsl';\nimport {getUniformsFromViewport} from './viewport-uniforms';\n\nimport type {ProjectModuleSettings} from './viewport-uniforms';\nimport type {ShaderModule} from '../../types/types';\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getUniforms(opts: ProjectModuleSettings | {} = INITIAL_MODULE_OPTIONS) {\n if ('viewport' in opts) {\n return getUniformsFromViewport(opts);\n }\n return {};\n}\n\nexport default {\n name: 'project',\n dependencies: [fp32, geometry],\n vs: projectShader,\n getUniforms\n} as ShaderModule;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {ProgramManager} from '@luma.gl/core';\nimport {gouraudLighting, phongLighting} from '@luma.gl/core';\nimport project from './project/project';\nimport project32 from './project32/project32';\nimport shadow from './shadow/shadow';\nimport picking from './picking/picking';\n\nconst DEFAULT_MODULES = [project];\n\nconst SHADER_HOOKS = [\n 'vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)',\n 'vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)',\n 'vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)',\n 'fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)'\n];\n\nexport function createProgramManager(gl) {\n const programManager = ProgramManager.getDefaultProgramManager(gl);\n\n for (const shaderModule of DEFAULT_MODULES) {\n programManager.addDefaultModule(shaderModule);\n }\n for (const shaderHook of SHADER_HOOKS) {\n programManager.addShaderHook(shaderHook);\n }\n\n return programManager;\n}\n\nexport {picking, project, project32, gouraudLighting, phongLighting, shadow};\n\n// Useful for custom shader modules\nexport type {ProjectUniforms} from './project/viewport-uniforms';\n\n// TODO - these should be imported from luma.gl\n/* eslint-disable camelcase */\nexport type PickingUniforms = {\n picking_uActive: boolean;\n picking_uAttribute: boolean;\n picking_uSelectedColor: [number, number, number];\n picking_uSelectedColorValid: boolean;\n picking_uHighlightColor: [number, number, number, number];\n};\n\nexport type LightingModuleSettings = {\n material:\n | boolean\n | {\n ambient?: number;\n diffuse?: number;\n shininess?: number;\n specularColor?: [number, number, number];\n };\n};\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Timeline} from '@luma.gl/core';\nimport {LIFECYCLE} from '../lifecycle/constants';\nimport log from '../utils/log';\nimport debug from '../debug';\nimport {flatten} from '../utils/flatten';\nimport {Stats} from '@probe.gl/stats';\nimport ResourceManager from './resource/resource-manager';\n\nimport Viewport from '../viewports/viewport';\nimport {createProgramManager} from '../shaderlib';\n\nimport type Layer from './layer';\nimport type CompositeLayer from './composite-layer';\nimport type Deck from './deck';\nimport type {ProgramManager} from '@luma.gl/engine';\n\nconst TRACE_SET_LAYERS = 'layerManager.setLayers';\nconst TRACE_ACTIVATE_VIEWPORT = 'layerManager.activateViewport';\n\nexport type LayerContext = {\n layerManager: LayerManager;\n resourceManager: ResourceManager;\n deck?: Deck;\n gl: WebGLRenderingContext;\n programManager: ProgramManager;\n stats: Stats;\n viewport: Viewport;\n timeline: Timeline;\n mousePosition: {x: number; y: number} | null;\n userData: any;\n onError?: (error: Error, source: Layer) => void;\n};\n\nexport type LayersList = (Layer | undefined | false | null | LayersList)[];\n\nexport default class LayerManager {\n layers: Layer[];\n context: LayerContext;\n resourceManager: ResourceManager;\n\n private _lastRenderedLayers: LayersList = [];\n private _needsRedraw: string | false = false;\n private _needsUpdate: string | false = false;\n private _nextLayers: LayersList | null = null;\n private _debug: boolean = false;\n\n // eslint-disable-next-line\n constructor(\n gl,\n {\n deck,\n stats,\n viewport,\n timeline\n }: {\n deck?: Deck;\n stats?: Stats;\n viewport?: Viewport;\n timeline?: Timeline;\n } = {}\n ) {\n // Currently deck.gl expects the DeckGL.layers array to be different\n // whenever React rerenders. If the same layers array is used, the\n // LayerManager's diffing algorithm will generate a fatal error and\n // break the rendering.\n\n // `this._lastRenderedLayers` stores the UNFILTERED layers sent\n // down to LayerManager, so that `layers` reference can be compared.\n // If it's the same across two React render calls, the diffing logic\n // will be skipped.\n this.layers = [];\n this.resourceManager = new ResourceManager({gl, protocol: 'deck://'});\n\n this.context = {\n mousePosition: null,\n userData: {},\n layerManager: this,\n gl,\n deck,\n // Enabling luma.gl Program caching using private API (_cachePrograms)\n programManager: gl && createProgramManager(gl),\n stats: stats || new Stats({id: 'deck.gl'}),\n // Make sure context.viewport is not empty on the first layer initialization\n viewport: viewport || new Viewport({id: 'DEFAULT-INITIAL-VIEWPORT'}), // Current viewport, exposed to layers for project* function\n timeline: timeline || new Timeline(),\n resourceManager: this.resourceManager,\n onError: undefined\n };\n\n Object.seal(this);\n }\n\n /** Method to call when the layer manager is not needed anymore. */\n finalize() {\n this.resourceManager.finalize();\n // Finalize all layers\n for (const layer of this.layers) {\n this._finalizeLayer(layer);\n }\n }\n\n /** Check if a redraw is needed */\n needsRedraw(\n opts: {\n /** Reset redraw flags to false after the call */\n clearRedrawFlags: boolean;\n } = {clearRedrawFlags: false}\n ): string | false {\n let redraw = this._needsRedraw;\n if (opts.clearRedrawFlags) {\n this._needsRedraw = false;\n }\n\n // This layers list doesn't include sublayers, relying on composite layers\n for (const layer of this.layers) {\n // Call every layer to clear their flags\n const layerNeedsRedraw = layer.getNeedsRedraw(opts);\n redraw = redraw || layerNeedsRedraw;\n }\n\n return redraw;\n }\n\n /** Check if a deep update of all layers is needed */\n needsUpdate(): string | false {\n if (this._nextLayers && this._nextLayers !== this._lastRenderedLayers) {\n // New layers array may be the same as the old one if `setProps` is called by React\n return 'layers changed';\n }\n return this._needsUpdate;\n }\n\n /** Layers will be redrawn (in next animation frame) */\n setNeedsRedraw(reason: string): void {\n this._needsRedraw = this._needsRedraw || reason;\n }\n\n /** Layers will be updated deeply (in next animation frame)\n Potentially regenerating attributes and sub layers */\n setNeedsUpdate(reason: string): void {\n this._needsUpdate = this._needsUpdate || reason;\n }\n\n /** Gets a list of currently rendered layers. Optionally filter by id. */\n getLayers({layerIds}: {layerIds?: string[]} = {}): Layer[] {\n // Filtering by layerId compares beginning of strings, so that sublayers will be included\n // Dependes on the convention of adding suffixes to the parent's layer name\n return layerIds\n ? this.layers.filter(layer => layerIds.find(layerId => layer.id.indexOf(layerId) === 0))\n : this.layers;\n }\n\n /** Set props needed for layer rendering and picking. */\n setProps(props: any): void {\n if ('debug' in props) {\n this._debug = props.debug;\n }\n\n // A way for apps to add data to context that can be accessed in layers\n if ('userData' in props) {\n this.context.userData = props.userData;\n }\n\n // New layers will be processed in `updateLayers` in the next update cycle\n if ('layers' in props) {\n this._nextLayers = props.layers;\n }\n\n if ('onError' in props) {\n this.context.onError = props.onError;\n }\n }\n\n /** Supply a new layer list, initiating sublayer generation and layer matching */\n setLayers(newLayers: LayersList, reason?: string): void {\n debug(TRACE_SET_LAYERS, this, reason, newLayers);\n\n this._lastRenderedLayers = newLayers;\n\n const flatLayers = flatten(newLayers, Boolean) as Layer[];\n\n for (const layer of flatLayers) {\n layer.context = this.context;\n }\n\n this._updateLayers(this.layers, flatLayers);\n }\n\n /** Update layers from last cycle if `setNeedsUpdate()` has been called */\n updateLayers(): void {\n // NOTE: For now, even if only some layer has changed, we update all layers\n // to ensure that layer id maps etc remain consistent even if different\n // sublayers are rendered\n const reason = this.needsUpdate();\n if (reason) {\n this.setNeedsRedraw(`updating layers: ${reason}`);\n // Force a full update\n this.setLayers(this._nextLayers || this._lastRenderedLayers, reason);\n }\n // Updated, clear the backlog\n this._nextLayers = null;\n }\n\n //\n // INTERNAL METHODS\n //\n\n /** Make a viewport \"current\" in layer context, updating viewportChanged flags */\n activateViewport = (viewport: Viewport) => {\n debug(TRACE_ACTIVATE_VIEWPORT, this, viewport);\n if (viewport) {\n this.context.viewport = viewport;\n }\n };\n\n private _handleError(stage: string, error: Error, layer: Layer) {\n layer.raiseError(error, `${stage} of ${layer}`);\n }\n\n // TODO - mark layers with exceptions as bad and remove from rendering cycle?\n /** Match all layers, checking for caught errors\n to avoid having an exception in one layer disrupt other layers */\n private _updateLayers(oldLayers: Layer[], newLayers: Layer[]): void {\n // Create old layer map\n const oldLayerMap: {[layerId: string]: Layer | null} = {};\n for (const oldLayer of oldLayers) {\n if (oldLayerMap[oldLayer.id]) {\n log.warn(`Multiple old layers with same id ${oldLayer.id}`)();\n } else {\n oldLayerMap[oldLayer.id] = oldLayer;\n }\n }\n\n // Allocate array for generated layers\n const generatedLayers: Layer[] = [];\n\n // Match sublayers\n this._updateSublayersRecursively(newLayers, oldLayerMap, generatedLayers);\n\n // Finalize unmatched layers\n this._finalizeOldLayers(oldLayerMap);\n\n let needsUpdate: string | false = false;\n for (const layer of generatedLayers) {\n if (layer.hasUniformTransition()) {\n needsUpdate = `Uniform transition in ${layer}`;\n break;\n }\n }\n\n this._needsUpdate = needsUpdate;\n this.layers = generatedLayers;\n }\n\n /* eslint-disable complexity,max-statements */\n // Note: adds generated layers to `generatedLayers` array parameter\n private _updateSublayersRecursively(\n newLayers: Layer[],\n oldLayerMap: {[layerId: string]: Layer | null},\n generatedLayers: Layer[]\n ) {\n for (const newLayer of newLayers) {\n newLayer.context = this.context;\n\n // Given a new coming layer, find its matching old layer (if any)\n const oldLayer = oldLayerMap[newLayer.id];\n if (oldLayer === null) {\n // null, rather than undefined, means this id was originally there\n log.warn(`Multiple new layers with same id ${newLayer.id}`)();\n }\n // Remove the old layer from candidates, as it has been matched with this layer\n oldLayerMap[newLayer.id] = null;\n\n let sublayers: Layer[] | null = null;\n\n // We must not generate exceptions until after layer matching is complete\n try {\n if (this._debug && oldLayer !== newLayer) {\n newLayer.validateProps();\n }\n\n if (!oldLayer) {\n this._initializeLayer(newLayer);\n } else {\n this._transferLayerState(oldLayer, newLayer);\n this._updateLayer(newLayer);\n }\n generatedLayers.push(newLayer);\n\n // Call layer lifecycle method: render sublayers\n sublayers = newLayer.isComposite ? (newLayer as CompositeLayer).getSubLayers() : null;\n // End layer lifecycle method: render sublayers\n } catch (err) {\n this._handleError('matching', err as Error, newLayer); // Record first exception\n }\n\n if (sublayers) {\n this._updateSublayersRecursively(sublayers, oldLayerMap, generatedLayers);\n }\n }\n }\n /* eslint-enable complexity,max-statements */\n\n // Finalize any old layers that were not matched\n private _finalizeOldLayers(oldLayerMap: {[layerId: string]: Layer | null}): void {\n for (const layerId in oldLayerMap) {\n const layer = oldLayerMap[layerId];\n if (layer) {\n this._finalizeLayer(layer);\n }\n }\n }\n\n // / EXCEPTION SAFE LAYER ACCESS\n\n /** Safely initializes a single layer, calling layer methods */\n private _initializeLayer(layer: Layer): void {\n try {\n layer._initialize();\n layer.lifecycle = LIFECYCLE.INITIALIZED;\n } catch (err) {\n this._handleError('initialization', err as Error, layer);\n // TODO - what should the lifecycle state be here? LIFECYCLE.INITIALIZATION_FAILED?\n }\n }\n\n /** Transfer state from one layer to a newer version */\n private _transferLayerState(oldLayer: Layer, newLayer: Layer): void {\n newLayer._transferState(oldLayer);\n newLayer.lifecycle = LIFECYCLE.MATCHED;\n\n if (newLayer !== oldLayer) {\n oldLayer.lifecycle = LIFECYCLE.AWAITING_GC;\n }\n }\n\n /** Safely updates a single layer, cleaning all flags */\n private _updateLayer(layer: Layer): void {\n try {\n layer._update();\n } catch (err) {\n this._handleError('update', err as Error, layer);\n }\n }\n\n /** Safely finalizes a single layer, removing all resources */\n private _finalizeLayer(layer: Layer): void {\n this._needsRedraw = this._needsRedraw || `finalized ${layer}`;\n\n layer.lifecycle = LIFECYCLE.AWAITING_FINALIZATION;\n\n try {\n layer._finalize();\n layer.lifecycle = LIFECYCLE.FINALIZED;\n } catch (err) {\n this._handleError('finalization', err as Error, layer);\n }\n }\n}\n","/**\n * Fast partial deep equal for prop.\n *\n * @param a Prop\n * @param b Prop to compare against `a`\n * @param depth Depth to which to recurse in nested Objects/Arrays. Use 0 (default) for shallow comparison, -1 for infinite depth\n */\n/* eslint-disable complexity */\nexport function deepEqual(a: any, b: any, depth: number): boolean {\n if (a === b) {\n return true;\n }\n if (!depth || !a || !b) {\n return false;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i], depth - 1)) {\n return false;\n }\n }\n return true;\n }\n if (Array.isArray(b)) {\n return false;\n }\n if (typeof a === 'object' && typeof b === 'object') {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n for (const key of aKeys) {\n if (!b.hasOwnProperty(key)) {\n return false;\n }\n if (!deepEqual(a[key], b[key], depth - 1)) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {deepEqual} from '../utils/deep-equal';\nimport log from '../utils/log';\nimport {flatten} from '../utils/flatten';\n\nimport type Controller from '../controllers/controller';\nimport type {ViewStateChangeParameters, InteractionState} from '../controllers/controller';\nimport type Viewport from '../viewports/viewport';\nimport type View from '../views/view';\nimport type {Timeline} from '@luma.gl/engine';\nimport type {EventManager} from 'mjolnir.js';\nimport type {ConstructorOf} from '../types/types';\n\nexport default class ViewManager {\n width: number;\n height: number;\n views: View[];\n viewState: any;\n controllers: {[viewId: string]: Controller | null};\n timeline: Timeline;\n\n private _viewports: Viewport[];\n private _viewportMap: {[viewId: string]: Viewport};\n private _isUpdating: boolean;\n private _needsRedraw: string | false;\n private _needsUpdate: string | false;\n private _eventManager: EventManager;\n private _eventCallbacks: {\n onViewStateChange?: (params: ViewStateChangeParameters & {viewId: string}) => void;\n onInteractionStateChange?: (state: InteractionState) => void;\n };\n\n constructor(props: {\n // Initial options\n timeline: Timeline;\n eventManager: EventManager;\n onViewStateChange?: (params: ViewStateChangeParameters & {viewId: string}) => void;\n onInteractionStateChange?: (state: InteractionState) => void;\n // Props\n views?: View[];\n viewState?: any;\n width?: number;\n height?: number;\n }) {\n // List of view descriptors, gets re-evaluated when width/height changes\n this.views = [];\n this.width = 100;\n this.height = 100;\n this.viewState = {};\n this.controllers = {};\n this.timeline = props.timeline;\n\n this._viewports = []; // Generated viewports\n this._viewportMap = {};\n this._isUpdating = false;\n this._needsRedraw = 'First render';\n this._needsUpdate = 'Initialize';\n\n this._eventManager = props.eventManager;\n this._eventCallbacks = {\n onViewStateChange: props.onViewStateChange,\n onInteractionStateChange: props.onInteractionStateChange\n };\n\n Object.seal(this);\n\n // Init with default map viewport\n this.setProps(props);\n }\n\n /** Remove all resources and event listeners */\n finalize(): void {\n for (const key in this.controllers) {\n const controller = this.controllers[key];\n if (controller) {\n controller.finalize();\n }\n }\n this.controllers = {};\n }\n\n /** Check if a redraw is needed */\n needsRedraw(\n opts: {\n /** Reset redraw flags to false */\n clearRedrawFlags?: boolean;\n } = {clearRedrawFlags: false}\n ): string | false {\n const redraw = this._needsRedraw;\n if (opts.clearRedrawFlags) {\n this._needsRedraw = false;\n }\n return redraw;\n }\n\n /** Mark the manager as dirty. Will rebuild all viewports and update controllers. */\n setNeedsUpdate(reason: string): void {\n this._needsUpdate = this._needsUpdate || reason;\n this._needsRedraw = this._needsRedraw || reason;\n }\n\n /** Checks each viewport for transition updates */\n updateViewStates(): void {\n for (const viewId in this.controllers) {\n const controller = this.controllers[viewId];\n if (controller) {\n controller.updateTransition();\n }\n }\n }\n\n /** Get a set of viewports for a given width and height\n * TODO - Intention is for deck.gl to autodeduce width and height and drop the need for props\n * @param rect (object, optional) - filter the viewports\n * + not provided - return all viewports\n * + {x, y} - only return viewports that contain this pixel\n * + {x, y, width, height} - only return viewports that overlap with this rectangle\n */\n getViewports(rect?: {x: number; y: number; width?: number; height?: number}): Viewport[] {\n if (rect) {\n return this._viewports.filter(viewport => viewport.containsPixel(rect));\n }\n return this._viewports;\n }\n\n /** Get a map of all views */\n getViews(): {[viewId: string]: View} {\n const viewMap = {};\n this.views.forEach(view => {\n viewMap[view.id] = view;\n });\n return viewMap;\n }\n\n /** Resolves a viewId string to a View */\n getView(viewId: string): View | undefined {\n return this.views.find(view => view.id === viewId);\n }\n\n /** Returns the viewState for a specific viewId. Matches the viewState by\n 1. view.viewStateId\n 2. view.id\n 3. root viewState\n then applies the view's filter if any */\n getViewState(viewOrViewId: string | View): any {\n const view: View | undefined =\n typeof viewOrViewId === 'string' ? this.getView(viewOrViewId) : viewOrViewId;\n // Backward compatibility: view state for single view\n const viewState = (view && this.viewState[view.getViewStateId()]) || this.viewState;\n return view ? view.filterViewState(viewState) : viewState;\n }\n\n getViewport(viewId: string): Viewport | undefined {\n return this._viewportMap[viewId];\n }\n\n /**\n * Unproject pixel coordinates on screen onto world coordinates,\n * (possibly [lon, lat]) on map.\n * - [x, y] => [lng, lat]\n * - [x, y, z] => [lng, lat, Z]\n * @param {Array} xyz -\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether origin is top left\n * @return {Array|null} - [lng, lat, Z] or [X, Y, Z]\n */\n unproject(xyz: number[], opts?: {topLeft?: boolean}): number[] | null {\n const viewports = this.getViewports();\n const pixel = {x: xyz[0], y: xyz[1]};\n for (let i = viewports.length - 1; i >= 0; --i) {\n const viewport = viewports[i];\n if (viewport.containsPixel(pixel)) {\n const p = xyz.slice();\n p[0] -= viewport.x;\n p[1] -= viewport.y;\n return viewport.unproject(p, opts);\n }\n }\n return null;\n }\n\n /** Update the manager with new Deck props */\n setProps(props: {views?: View[]; viewState?: any; width?: number; height?: number}) {\n if (props.views) {\n this._setViews(props.views);\n }\n\n if (props.viewState) {\n this._setViewState(props.viewState);\n }\n\n if ('width' in props || 'height' in props) {\n this._setSize(props.width as number, props.height as number);\n }\n\n // Important: avoid invoking _update() inside itself\n // Nested updates result in unexpected side effects inside _rebuildViewports()\n // when using auto control in pure-js\n if (!this._isUpdating) {\n this._update();\n }\n }\n\n //\n // PRIVATE METHODS\n //\n\n private _update(): void {\n this._isUpdating = true;\n\n // Only rebuild viewports if the update flag is set\n if (this._needsUpdate) {\n this._needsUpdate = false;\n this._rebuildViewports();\n }\n\n // If viewport transition(s) are triggered during viewports update, controller(s)\n // will immediately call `onViewStateChange` which calls `viewManager.setProps` again.\n if (this._needsUpdate) {\n this._needsUpdate = false;\n this._rebuildViewports();\n }\n\n this._isUpdating = false;\n }\n\n private _setSize(width: number, height: number): void {\n if (width !== this.width || height !== this.height) {\n this.width = width;\n this.height = height;\n this.setNeedsUpdate('Size changed');\n }\n }\n\n // Update the view descriptor list and set change flag if needed\n // Does not actually rebuild the `Viewport`s until `getViewports` is called\n private _setViews(views: View[]): void {\n views = flatten(views, Boolean);\n\n const viewsChanged = this._diffViews(views, this.views);\n if (viewsChanged) {\n this.setNeedsUpdate('views changed');\n }\n\n this.views = views;\n }\n\n private _setViewState(viewState: any): void {\n if (viewState) {\n // depth = 3 when comparing viewStates: viewId.position.0\n const viewStateChanged = !deepEqual(viewState, this.viewState, 3);\n\n if (viewStateChanged) {\n this.setNeedsUpdate('viewState changed');\n }\n\n this.viewState = viewState;\n } else {\n log.warn('missing `viewState` or `initialViewState`')();\n }\n }\n\n private _onViewStateChange(viewId: string, event: ViewStateChangeParameters) {\n if (this._eventCallbacks.onViewStateChange) {\n this._eventCallbacks.onViewStateChange({...event, viewId});\n }\n }\n\n private _createController(\n view: View,\n props: {id: string; type: ConstructorOf>}\n ): Controller {\n const Controller = props.type;\n\n const controller = new Controller({\n timeline: this.timeline,\n eventManager: this._eventManager,\n // Set an internal callback that calls the prop callback if provided\n onViewStateChange: this._onViewStateChange.bind(this, props.id),\n onStateChange: this._eventCallbacks.onInteractionStateChange,\n makeViewport: viewState =>\n this.getView(view.id)?.makeViewport({\n viewState,\n width: this.width,\n height: this.height\n })\n });\n\n return controller;\n }\n\n private _updateController(\n view: View,\n viewState: any,\n viewport: Viewport | null,\n controller?: Controller | null\n ): Controller | null {\n const controllerProps = view.controller;\n if (controllerProps && viewport) {\n const resolvedProps = {\n ...viewState,\n ...controllerProps,\n id: view.id,\n x: viewport.x,\n y: viewport.y,\n width: viewport.width,\n height: viewport.height\n };\n\n // Create controller if not already existing or if the type of the\n // controller has changed.\n if (!controller || controller.constructor !== view.ControllerType) {\n controller = this._createController(view, resolvedProps);\n }\n if (controller) {\n controller.setProps(resolvedProps);\n }\n return controller;\n }\n return null;\n }\n\n // Rebuilds viewports from descriptors towards a certain window size\n private _rebuildViewports(): void {\n const {views} = this;\n\n const oldControllers = this.controllers;\n this._viewports = [];\n this.controllers = {};\n\n let invalidateControllers = false;\n // Create controllers in reverse order, so that views on top receive events first\n for (let i = views.length; i--; ) {\n const view = views[i];\n const viewState = this.getViewState(view);\n const viewport = view.makeViewport({viewState, width: this.width, height: this.height});\n\n let oldController = oldControllers[view.id];\n const hasController = Boolean(view.controller);\n if (hasController && !oldController) {\n // When a new controller is added, invalidate all controllers below it so that\n // events are registered in the correct order\n invalidateControllers = true;\n }\n if ((invalidateControllers || !hasController) && oldController) {\n // Remove and reattach invalidated controller\n oldController.finalize();\n oldController = null;\n }\n\n // Update the controller\n this.controllers[view.id] = this._updateController(view, viewState, viewport, oldController);\n\n if (viewport) {\n this._viewports.unshift(viewport);\n }\n }\n\n // Remove unused controllers\n for (const id in oldControllers) {\n const oldController = oldControllers[id];\n if (oldController && !this.controllers[id]) {\n oldController.finalize();\n }\n }\n\n this._buildViewportMap();\n }\n\n _buildViewportMap(): void {\n // Build a view id to view index\n this._viewportMap = {};\n this._viewports.forEach(viewport => {\n if (viewport.id) {\n // TODO - issue warning if multiple viewports use same id\n this._viewportMap[viewport.id] = this._viewportMap[viewport.id] || viewport;\n }\n });\n }\n\n // Check if viewport array has changed, returns true if any change\n // Note that descriptors can be the same\n _diffViews(newViews: View[], oldViews: View[]): boolean {\n if (newViews.length !== oldViews.length) {\n return true;\n }\n\n return newViews.some((_, i) => !newViews[i].equals(oldViews[i]));\n }\n}\n","const PERCENT_OR_PIXELS_REGEX = /([0-9]+\\.?[0-9]*)(%|px)/;\n\nexport type Position = {\n position: number;\n relative: boolean;\n};\n\n// Takes a number or a string of formats `50%`, `33.3%` or `200px`\nexport function parsePosition(value: number | string): Position {\n switch (typeof value) {\n case 'number':\n return {\n position: value,\n relative: false\n };\n\n case 'string':\n const match = PERCENT_OR_PIXELS_REGEX.exec(value);\n if (match && match.length >= 3) {\n const relative = match[2] === '%';\n const position = parseFloat(match[1]);\n return {\n position: relative ? position / 100 : position,\n relative\n };\n }\n // fallthrough\n\n default:\n // eslint-disable-line\n throw new Error(`Could not parse position string ${value}`);\n }\n}\n\nexport function getPosition(position: Position, extent: number): number {\n return position.relative ? Math.round(position.position * extent) : position.position;\n}\n","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition: any, message?: string): asserts condition {\n if (!condition) {\n throw new Error(message || 'deck.gl: assertion failed.');\n }\n}\n","import Viewport from '../viewports/viewport';\nimport {parsePosition, getPosition, Position} from '../utils/positions';\nimport {deepEqual} from '../utils/deep-equal';\nimport assert from '../utils/assert';\nimport type Controller from '../controllers/controller';\nimport type {ControllerOptions} from '../controllers/controller';\nimport type {TransitionProps} from '../controllers/transition-manager';\nimport type {Padding} from '../viewports/viewport';\nimport type {ConstructorOf} from '../types/types';\n\nexport type CommonViewState = TransitionProps;\n\ntype CommonViewProps = {\n /** A unique id of the view. In a multi-view use case, this is important for matching view states and place contents into this view. */\n id?: string;\n /** A relative (e.g. `'50%'`) or absolute position. Default `0`. */\n x?: number | string;\n /** A relative (e.g. `'50%'`) or absolute position. Default `0`. */\n y?: number | string;\n /** A relative (e.g. `'50%'`) or absolute extent. Default `'100%'`. */\n width?: number | string;\n /** A relative (e.g. `'50%'`) or absolute extent. Default `'100%'`. */\n height?: number | string;\n /** Padding around the view, expressed in either relative (e.g. `'50%'`) or absolute pixels. Default `null`. */\n padding?: {\n left?: number | string;\n right?: number | string;\n top?: number | string;\n bottom?: number | string;\n } | null;\n /** State of the view */\n viewState?:\n | string\n | ({\n id?: string;\n } & Partial);\n /** Options for viewport interactivity. */\n controller?:\n | null\n | boolean\n | ConstructorOf>\n | (ControllerOptions & {\n type?: ConstructorOf>;\n });\n\n /** @deprecated Directly wrap a viewport instance */\n viewportInstance?: Viewport;\n};\n\nexport default abstract class View<\n ViewState extends CommonViewState = CommonViewState,\n ViewProps = {}\n> {\n id: string;\n abstract get ViewportType(): ConstructorOf;\n abstract get ControllerType(): ConstructorOf>;\n\n private viewportInstance?: Viewport;\n private _x: Position;\n private _y: Position;\n private _width: Position;\n private _height: Position;\n private _padding: {\n left: Position;\n right: Position;\n top: Position;\n bottom: Position;\n } | null;\n\n readonly props: ViewProps & CommonViewProps;\n\n constructor(props: ViewProps & CommonViewProps) {\n const {\n id,\n x = 0,\n y = 0,\n width = '100%',\n height = '100%',\n padding = null,\n viewportInstance\n } = props || {};\n\n assert(!viewportInstance || viewportInstance instanceof Viewport);\n this.viewportInstance = viewportInstance;\n\n // @ts-ignore\n this.id = id || this.constructor.displayName || 'view';\n\n this.props = {...props, id: this.id};\n\n // Extents\n this._x = parsePosition(x);\n this._y = parsePosition(y);\n this._width = parsePosition(width);\n this._height = parsePosition(height);\n this._padding = padding && {\n left: parsePosition(padding.left || 0),\n right: parsePosition(padding.right || 0),\n top: parsePosition(padding.top || 0),\n bottom: parsePosition(padding.bottom || 0)\n };\n\n // Bind methods for easy access\n this.equals = this.equals.bind(this);\n\n Object.seal(this);\n }\n\n equals(view: View): boolean {\n if (this === view) {\n return true;\n }\n\n // if `viewportInstance` is set, it is the only prop that is used\n // Delegate to `Viewport.equals`\n if (this.viewportInstance) {\n return view.viewportInstance ? this.viewportInstance.equals(view.viewportInstance) : false;\n }\n\n // To correctly compare padding use depth=2\n return this.ViewportType === view.ViewportType && deepEqual(this.props, view.props, 2);\n }\n\n /** Make viewport from canvas dimensions and view state */\n makeViewport({width, height, viewState}: {width: number; height: number; viewState: any}) {\n if (this.viewportInstance) {\n return this.viewportInstance;\n }\n\n viewState = this.filterViewState(viewState);\n\n // Resolve relative viewport dimensions\n const viewportDimensions = this.getDimensions({width, height});\n if (!viewportDimensions.height || !viewportDimensions.width) {\n return null;\n }\n return new this.ViewportType({...viewState, ...this.props, ...viewportDimensions});\n }\n\n getViewStateId(): string {\n const {viewState} = this.props;\n if (typeof viewState === 'string') {\n // if View.viewState is a string, return it\n return viewState;\n }\n return viewState?.id || this.id;\n }\n\n // Allows view to override (or completely define) viewState\n filterViewState(viewState: ViewState): ViewState {\n if (this.props.viewState && typeof this.props.viewState === 'object') {\n // If we have specified an id, then intent is to override,\n // If not, completely specify the view state\n if (!this.props.viewState.id) {\n return this.props.viewState as ViewState;\n }\n\n // Merge in all props from View's viewState, except id\n const newViewState = {...viewState};\n for (const key in this.props.viewState) {\n if (key !== 'id') {\n newViewState[key] = this.props.viewState[key];\n }\n }\n return newViewState;\n }\n\n return viewState;\n }\n\n /** Resolve the dimensions of the view from overall canvas dimensions */\n getDimensions({width, height}: {width: number; height: number}): {\n x: number;\n y: number;\n width: number;\n height: number;\n padding?: Padding;\n } {\n const dimensions: {\n x: number;\n y: number;\n width: number;\n height: number;\n padding?: Padding;\n } = {\n x: getPosition(this._x, width),\n y: getPosition(this._y, height),\n width: getPosition(this._width, width),\n height: getPosition(this._height, height)\n };\n\n if (this._padding) {\n dimensions.padding = {\n left: getPosition(this._padding.left, width),\n top: getPosition(this._padding.top, height),\n right: getPosition(this._padding.right, width),\n bottom: getPosition(this._padding.bottom, height)\n };\n }\n return dimensions;\n }\n\n // Used by sub classes to resolve controller props\n get controller(): (ControllerOptions & {type: ConstructorOf>}) | null {\n const opts = this.props.controller;\n\n if (!opts) {\n return null;\n }\n if (opts === true) {\n return {type: this.ControllerType};\n }\n if (typeof opts === 'function') {\n return {type: opts};\n }\n return {type: this.ControllerType, ...opts};\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// View and Projection Matrix calculations for mapbox-js style\n// map view properties\nimport Viewport from './viewport';\n\nimport {\n pixelsToWorld,\n getViewMatrix,\n addMetersToLngLat,\n unitsPerMeter,\n getProjectionParameters,\n altitudeToFovy,\n fovyToAltitude,\n fitBounds,\n getBounds\n} from '@math.gl/web-mercator';\nimport {Padding} from './viewport';\n\n// TODO - import from math.gl\nimport * as vec2 from 'gl-matrix/vec2';\nimport {Matrix4, clamp} from '@math.gl/core';\n\nexport type WebMercatorViewportOptions = {\n /** Name of the viewport */\n id?: string;\n /** Left offset from the canvas edge, in pixels */\n x?: number;\n /** Top offset from the canvas edge, in pixels */\n y?: number;\n /** Viewport width in pixels */\n width?: number;\n /** Viewport height in pixels */\n height?: number;\n /** Longitude in degrees */\n longitude?: number;\n /** Latitude in degrees */\n latitude?: number;\n /** Tilt of the camera in degrees */\n pitch?: number;\n /** Heading of the camera in degrees */\n bearing?: number;\n /** Camera altitude relative to the viewport height, legacy property used to control the FOV. Default `1.5` */\n altitude?: number;\n /** Camera fovy in degrees. If provided, overrides `altitude` */\n fovy?: number;\n /** Viewport center in world space. If geospatial, refers to meter offsets from lng, lat */\n position?: number[];\n /** Zoom level */\n zoom?: number;\n /** Padding around the viewport, in pixels. */\n padding?: Padding | null;\n /** Model matrix of viewport center */\n modelMatrix?: number[] | null;\n /** Custom projection matrix */\n projectionMatrix?: number[];\n /** Use orthographic projection */\n orthographic?: boolean;\n /** Scaler for the near plane, 1 unit equals to the height of the viewport. Default `0.1` */\n nearZMultiplier?: number;\n /** Scaler for the far plane, 1 unit equals to the distance from the camera to the edge of the screen. Default `1.01` */\n farZMultiplier?: number;\n /** Render multiple copies of the world */\n repeat?: boolean;\n /** Internal use */\n worldOffset?: number;\n /** @deprecated Revert to approximated meter size calculation prior to v8.5 */\n legacyMeterSizes?: boolean;\n};\n\n/**\n * Manages transformations to/from WGS84 coordinates using the Web Mercator Projection.\n */\nexport default class WebMercatorViewport extends Viewport {\n static displayName = 'WebMercatorViewport';\n\n longitude: number;\n latitude: number;\n pitch: number;\n bearing: number;\n altitude: number;\n fovy: number;\n orthographic: boolean;\n\n /** Each sub viewport renders one copy of the world if repeat:true. The list is generated and cached on first request. */\n private _subViewports: WebMercatorViewport[] | null;\n /** @deprecated Revert to approximated meter size calculation prior to v8.5 */\n private _pseudoMeters: boolean;\n\n /* eslint-disable complexity, max-statements */\n constructor(opts: WebMercatorViewportOptions = {}) {\n const {\n latitude = 0,\n longitude = 0,\n zoom = 0,\n pitch = 0,\n bearing = 0,\n nearZMultiplier = 0.1,\n farZMultiplier = 1.01,\n orthographic = false,\n projectionMatrix,\n\n repeat = false,\n worldOffset = 0,\n position,\n padding,\n\n // backward compatibility\n // TODO: remove in v9\n legacyMeterSizes = false\n } = opts;\n\n let {width, height, altitude = 1.5} = opts;\n const scale = Math.pow(2, zoom);\n\n // Silently allow apps to send in 0,0 to facilitate isomorphic render etc\n width = width || 1;\n height = height || 1;\n\n let fovy;\n let projectionParameters: any = null;\n if (projectionMatrix) {\n altitude = projectionMatrix[5] / 2;\n fovy = altitudeToFovy(altitude);\n } else {\n if (opts.fovy) {\n fovy = opts.fovy;\n altitude = fovyToAltitude(fovy);\n } else {\n fovy = altitudeToFovy(altitude);\n }\n\n let offset: [number, number] | undefined;\n if (padding) {\n const {top = 0, bottom = 0} = padding;\n offset = [0, clamp((top + height - bottom) / 2, 0, height) - height / 2];\n }\n\n projectionParameters = getProjectionParameters({\n width,\n height,\n scale,\n center: position && [0, 0, position[2] * unitsPerMeter(latitude)],\n offset,\n pitch,\n fovy,\n nearZMultiplier,\n farZMultiplier\n });\n }\n\n // The uncentered matrix allows us two move the center addition to the\n // shader (cheap) which gives a coordinate system that has its center in\n // the layer's center position. This makes rotations and other modelMatrx\n // transforms much more useful.\n let viewMatrixUncentered = getViewMatrix({\n height,\n pitch,\n bearing,\n scale,\n altitude\n });\n\n if (worldOffset) {\n const viewOffset = new Matrix4().translate([512 * worldOffset, 0, 0]);\n viewMatrixUncentered = viewOffset.multiplyLeft(viewMatrixUncentered);\n }\n\n super({\n ...opts,\n // x, y,\n width,\n height,\n\n // view matrix\n viewMatrix: viewMatrixUncentered,\n longitude,\n latitude,\n zoom,\n\n // projection matrix parameters\n ...projectionParameters,\n fovy,\n focalDistance: altitude\n });\n\n // Save parameters\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n this.fovy = fovy;\n\n this.orthographic = orthographic;\n\n this._subViewports = repeat ? [] : null;\n this._pseudoMeters = legacyMeterSizes;\n\n Object.freeze(this);\n }\n /* eslint-enable complexity, max-statements */\n\n get subViewports(): WebMercatorViewport[] | null {\n if (this._subViewports && !this._subViewports.length) {\n // Cache sub viewports so that we only calculate them once\n const bounds = this.getBounds();\n\n const minOffset = Math.floor((bounds[0] + 180) / 360);\n const maxOffset = Math.ceil((bounds[2] - 180) / 360);\n\n for (let x = minOffset; x <= maxOffset; x++) {\n const offsetViewport = x\n ? new WebMercatorViewport({\n ...this,\n worldOffset: x\n })\n : this;\n this._subViewports.push(offsetViewport);\n }\n }\n return this._subViewports;\n }\n\n projectPosition(xyz: number[]): [number, number, number] {\n if (this._pseudoMeters) {\n // Backward compatibility\n return super.projectPosition(xyz);\n }\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * unitsPerMeter(xyz[1]);\n return [X, Y, Z];\n }\n\n unprojectPosition(xyz: number[]): [number, number, number] {\n if (this._pseudoMeters) {\n // Backward compatibility\n return super.unprojectPosition(xyz);\n }\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) / unitsPerMeter(Y);\n return [X, Y, Z];\n }\n\n /**\n * Add a meter delta to a base lnglat coordinate, returning a new lnglat array\n *\n * Note: Uses simple linear approximation around the viewport center\n * Error increases with size of offset (roughly 1% per 100km)\n *\n * @param {[Number,Number]|[Number,Number,Number]) lngLatZ - base coordinate\n * @param {[Number,Number]|[Number,Number,Number]) xyz - array of meter deltas\n * @return {[Number,Number]|[Number,Number,Number]) array of [lng,lat,z] deltas\n */\n addMetersToLngLat(lngLatZ: number[], xyz: number[]): number[] {\n return addMetersToLngLat(lngLatZ, xyz);\n }\n\n panByPosition(coords: number[], pixel: number[]): WebMercatorViewportOptions {\n const fromLocation = pixelsToWorld(pixel, this.pixelUnprojectionMatrix);\n const toLocation = this.projectFlat(coords);\n\n const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n const newCenter = vec2.add([], this.center, translate);\n\n const [longitude, latitude] = this.unprojectFlat(newCenter);\n return {longitude, latitude};\n }\n\n getBounds(options: {z?: number} = {}): [number, number, number, number] {\n // @ts-ignore\n const corners = getBounds(this, options.z || 0);\n\n return [\n Math.min(corners[0][0], corners[1][0], corners[2][0], corners[3][0]),\n Math.min(corners[0][1], corners[1][1], corners[2][1], corners[3][1]),\n Math.max(corners[0][0], corners[1][0], corners[2][0], corners[3][0]),\n Math.max(corners[0][1], corners[1][1], corners[2][1], corners[3][1])\n ];\n }\n\n /**\n * Returns a new viewport that fit around the given rectangle.\n * Only supports non-perspective mode.\n */\n fitBounds(\n /** [[lon, lat], [lon, lat]] */\n bounds: [[number, number], [number, number]],\n options: {\n /** If not supplied, will use the current width of the viewport (default `1`) */\n width?: number;\n /** If not supplied, will use the current height of the viewport (default `1`) */\n height?: number;\n /** In degrees, 0.01 would be about 1000 meters */\n minExtent?: number;\n /** Max zoom level */\n maxZoom?: number;\n /** Extra padding in pixels */\n padding?: number | Required;\n /** Center shift in pixels */\n offset?: number[];\n } = {}\n ) {\n const {width, height} = this;\n const {longitude, latitude, zoom} = fitBounds({width, height, bounds, ...options});\n return new WebMercatorViewport({width, height, longitude, latitude, zoom});\n }\n}\n","import type {Timeline} from '@luma.gl/core';\n\nexport type TransitionSettings = {\n duration: number;\n onStart?: (transition: Transition) => void;\n onUpdate?: (transition: Transition) => void;\n onInterrupt?: (transition: Transition) => void;\n onEnd?: (transition: Transition) => void;\n};\n\nexport default class Transition {\n private _inProgress: boolean;\n private _handle: number | null;\n private _timeline: Timeline;\n\n time: number;\n settings: TransitionSettings;\n\n /**\n * @params timeline {Timeline}\n */\n constructor(timeline: Timeline) {\n this._inProgress = false;\n this._handle = null;\n this._timeline = timeline;\n this.time = 0;\n\n // Defaults\n this.settings = {duration: 0};\n }\n\n /* Public API */\n get inProgress(): boolean {\n return this._inProgress;\n }\n\n /**\n * (re)start this transition.\n * @params props {object} - optional overriding props. see constructor\n */\n start(settings: TransitionSettings) {\n this.cancel();\n this.settings = settings;\n this._inProgress = true;\n this.settings.onStart?.(this);\n }\n\n /**\n * end this transition if it is in progress.\n */\n end() {\n if (this._inProgress) {\n this._timeline.removeChannel(this._handle);\n this._handle = null;\n this._inProgress = false;\n this.settings.onEnd?.(this);\n }\n }\n\n /**\n * cancel this transition if it is in progress.\n */\n cancel() {\n if (this._inProgress) {\n this.settings.onInterrupt?.(this);\n this._timeline.removeChannel(this._handle);\n this._handle = null;\n this._inProgress = false;\n }\n }\n\n /**\n * update this transition. Returns `true` if updated.\n */\n update() {\n if (!this._inProgress) {\n return false;\n }\n\n // It is important to initialize the handle during `update` instead of `start`.\n // The CPU time that the `start` frame takes should not be counted towards the duration.\n // On the other hand, `update` always happens during a render cycle. The clock starts when the\n // transition is rendered for the first time.\n if (this._handle === null) {\n const {_timeline: timeline, settings} = this;\n this._handle = timeline.addChannel({\n delay: timeline.getTime(),\n duration: settings.duration\n });\n }\n\n this.time = this._timeline.getTime(this._handle);\n // Call subclass method\n this._onUpdate();\n // Call user callback\n this.settings.onUpdate?.(this);\n\n // This only works if `settings.duration` is set\n // Spring transition must call `end` manually\n if (this._timeline.isFinished(this._handle)) {\n this.end();\n }\n return true;\n }\n\n /* Private API */\n\n protected _onUpdate() {\n // for subclass override\n }\n}\n","import Transition, {TransitionSettings as BaseTransitionSettings} from '../transitions/transition';\nimport TransitionInterpolator from '../transitions/transition-interpolator';\nimport type {IViewState} from './view-state';\n\nimport type {Timeline} from '@luma.gl/core';\nimport type {InteractionState} from './controller';\n\nconst noop = () => {};\n\n// Enums cannot be directly exported as they are not transpiled correctly into ES5, see https://github.com/visgl/deck.gl/issues/7130\nexport const TRANSITION_EVENTS = {\n BREAK: 1,\n SNAP_TO_END: 2,\n IGNORE: 3\n} as const;\n\ntype TransitionEvent = 1 | 2 | 3;\n\nexport type TransitionProps = {\n /** Transition duration in milliseconds, default value 0, implies no transition. When using `FlyToInterpolator`, it can also be set to `'auto'`. */\n transitionDuration?: number | 'auto';\n /** An interpolator object that defines the transition behavior between two viewports. */\n transitionInterpolator?: TransitionInterpolator;\n /** Easing function that can be used to achieve effects like \"Ease-In-Cubic\", \"Ease-Out-Cubic\", etc. Default value performs Linear easing. */\n transitionEasing?: (t: number) => number;\n /** Controls how to process a new view state change that occurs during an existing transition. */\n transitionInterruption?: TransitionEvent;\n /** Callback fired when requested transition starts. */\n onTransitionStart?: (transition: Transition) => void;\n /** Callback fired when requested transition is interrupted. */\n onTransitionInterrupt?: (transition: Transition) => void;\n /** Callback fired when requested transition ends. */\n onTransitionEnd?: (transition: Transition) => void;\n};\n\nconst DEFAULT_EASING = t => t;\nconst DEFAULT_INTERRUPTION = TRANSITION_EVENTS.BREAK;\n\ntype TransitionSettings = BaseTransitionSettings & {\n interpolator: TransitionInterpolator;\n easing: (t: number) => number;\n interruption: TransitionEvent;\n startProps: Record;\n endProps: Record;\n};\n\nexport default class TransitionManager> {\n getControllerState: (props: any) => ControllerState;\n props?: TransitionProps;\n propsInTransition: Record | null;\n transition: Transition;\n onViewStateChange: (params: {\n viewState: Record;\n oldViewState: Record;\n }) => void;\n onStateChange: (state: InteractionState) => void;\n\n constructor(opts: {\n timeline: Timeline;\n getControllerState: (props: any) => ControllerState;\n onViewStateChange?: (params: {\n viewState: Record;\n oldViewState: Record;\n }) => void;\n onStateChange?: (state: InteractionState) => void;\n }) {\n this.getControllerState = opts.getControllerState;\n this.propsInTransition = null;\n this.transition = new Transition(opts.timeline);\n\n this.onViewStateChange = opts.onViewStateChange || noop;\n this.onStateChange = opts.onStateChange || noop;\n }\n\n finalize(): void {\n this.transition.cancel();\n }\n\n // Returns current transitioned viewport.\n getViewportInTransition(): Record | null {\n return this.propsInTransition;\n }\n\n // Process the vewiport change, either ignore or trigger a new transition.\n // Return true if a new transition is triggered, false otherwise.\n processViewStateChange(nextProps: TransitionProps) {\n let transitionTriggered = false;\n const currentProps = this.props;\n // Set this.props here as '_triggerTransition' calls '_updateViewport' that uses this.props.\n this.props = nextProps;\n\n // NOTE: Be cautious re-ordering statements in this function.\n if (!currentProps || this._shouldIgnoreViewportChange(currentProps, nextProps)) {\n return false;\n }\n\n if (this._isTransitionEnabled(nextProps)) {\n let startProps = currentProps;\n if (this.transition.inProgress) {\n const {interruption, endProps} = this.transition.settings as TransitionSettings;\n startProps = {\n ...currentProps,\n ...(interruption === TRANSITION_EVENTS.SNAP_TO_END\n ? endProps\n : this.propsInTransition || currentProps)\n };\n }\n\n this._triggerTransition(startProps, nextProps);\n\n transitionTriggered = true;\n } else {\n this.transition.cancel();\n }\n\n return transitionTriggered;\n }\n\n updateTransition() {\n this.transition.update();\n }\n\n // Helper methods\n\n _isTransitionEnabled(props: TransitionProps): boolean {\n const {transitionDuration, transitionInterpolator} = props;\n return (\n ((transitionDuration as number) > 0 || transitionDuration === 'auto') &&\n Boolean(transitionInterpolator)\n );\n }\n\n _isUpdateDueToCurrentTransition(props: TransitionProps): boolean {\n if (this.transition.inProgress && this.propsInTransition) {\n return (this.transition.settings as TransitionSettings).interpolator.arePropsEqual(\n props,\n this.propsInTransition\n );\n }\n return false;\n }\n\n _shouldIgnoreViewportChange(currentProps: TransitionProps, nextProps: TransitionProps): boolean {\n if (this.transition.inProgress) {\n // Ignore update if it is requested to be ignored\n return (\n (this.transition.settings as TransitionSettings).interruption ===\n TRANSITION_EVENTS.IGNORE ||\n // Ignore update if it is due to current active transition.\n this._isUpdateDueToCurrentTransition(nextProps)\n );\n }\n if (this._isTransitionEnabled(nextProps)) {\n // Ignore if none of the viewport props changed.\n return (nextProps.transitionInterpolator as TransitionInterpolator).arePropsEqual(\n currentProps,\n nextProps\n );\n }\n return true;\n }\n\n _triggerTransition(startProps: TransitionProps, endProps: TransitionProps): void {\n const startViewstate = this.getControllerState(startProps);\n const endViewStateProps = this.getControllerState(endProps).shortestPathFrom(startViewstate);\n\n // update transitionDuration for 'auto' mode\n const transitionInterpolator = endProps.transitionInterpolator as TransitionInterpolator;\n const duration = transitionInterpolator.getDuration\n ? transitionInterpolator.getDuration(startProps, endProps)\n : (endProps.transitionDuration as number);\n\n if (duration === 0) {\n return;\n }\n\n const initialProps = transitionInterpolator.initializeProps(startProps, endViewStateProps);\n\n this.propsInTransition = {};\n const transitionSettings: TransitionSettings = {\n duration,\n easing: endProps.transitionEasing || DEFAULT_EASING,\n interpolator: transitionInterpolator,\n interruption: endProps.transitionInterruption || DEFAULT_INTERRUPTION,\n\n startProps: initialProps.start,\n endProps: initialProps.end,\n\n onStart: endProps.onTransitionStart,\n onUpdate: this._onTransitionUpdate,\n onInterrupt: this._onTransitionEnd(endProps.onTransitionInterrupt),\n onEnd: this._onTransitionEnd(endProps.onTransitionEnd)\n };\n this.transition.start(transitionSettings);\n\n this.onStateChange({inTransition: true});\n\n this.updateTransition();\n }\n\n _onTransitionEnd(callback?: (transition: Transition) => void) {\n return transition => {\n this.propsInTransition = null;\n\n this.onStateChange({\n inTransition: false,\n isZooming: false,\n isPanning: false,\n isRotating: false\n });\n\n callback?.(transition);\n };\n }\n\n _onTransitionUpdate = transition => {\n // NOTE: Be cautious re-ordering statements in this function.\n const {\n time,\n settings: {interpolator, startProps, endProps, duration, easing}\n } = transition;\n const t = easing(time / duration);\n const viewport = interpolator.interpolateProps(startProps, endProps, t);\n\n // This gurantees all props (e.g. bearing, longitude) are normalized\n // So when viewports are compared they are in same range.\n this.propsInTransition = this.getControllerState({\n ...this.props,\n ...viewport\n }).getViewportProps();\n\n this.onViewStateChange({\n viewState: this.propsInTransition,\n oldViewState: this.props as TransitionProps\n });\n };\n}\n","import {equals} from '@math.gl/core';\nimport assert from '../utils/assert';\n\nexport default abstract class TransitionInterpolator {\n protected _propsToCompare: string[];\n protected _propsToExtract: string[];\n protected _requiredProps?: string[];\n\n /**\n * @param opts {array|object}\n * @param opts.compare {array} - prop names used in equality check\n * @param opts.extract {array} - prop names needed for interpolation\n * @param opts.required {array} - prop names that must be supplied\n * alternatively, supply one list of prop names as `opts` if all of the above are the same.\n */\n constructor(opts: {compare: string[]; extract?: string[]; required?: string[]}) {\n const {compare, extract, required} = opts;\n\n this._propsToCompare = compare;\n this._propsToExtract = extract || compare;\n this._requiredProps = required;\n }\n\n /**\n * Checks if two sets of props need transition in between\n * @param currentProps {object} - a list of viewport props\n * @param nextProps {object} - a list of viewport props\n * @returns {bool} - true if two props are equivalent\n */\n arePropsEqual(currentProps: Record, nextProps: Record): boolean {\n for (const key of this._propsToCompare) {\n if (\n !(key in currentProps) ||\n !(key in nextProps) ||\n !equals(currentProps[key], nextProps[key])\n ) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Called before transition starts to validate/pre-process start and end props\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Object} {start, end} - start and end props to be passed\n * to `interpolateProps`\n */\n initializeProps(\n startProps: Record,\n endProps: Record\n ): {\n start: Record;\n end: Record;\n } {\n const startViewStateProps = {};\n const endViewStateProps = {};\n\n for (const key of this._propsToExtract) {\n if (key in startProps || key in endProps) {\n startViewStateProps[key] = startProps[key];\n endViewStateProps[key] = endProps[key];\n }\n }\n\n this._checkRequiredProps(startViewStateProps);\n this._checkRequiredProps(endViewStateProps);\n\n return {start: startViewStateProps, end: endViewStateProps};\n }\n\n /**\n * Returns viewport props in transition\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @param t {number} - a time factor between [0, 1]\n * @returns {object} - a list of interpolated viewport props\n */\n abstract interpolateProps(\n startProps: Record,\n endProps: Record,\n t: number\n ): Record;\n\n /**\n * Returns transition duration\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Number} - transition duration in milliseconds\n */\n getDuration(startProps: Record, endProps: Record): number {\n return endProps.transitionDuration;\n }\n\n _checkRequiredProps(props) {\n if (!this._requiredProps) {\n return;\n }\n\n this._requiredProps.forEach(propName => {\n const value = props[propName];\n assert(\n Number.isFinite(value) || Array.isArray(value),\n `${propName} is required for transition`\n );\n });\n }\n}\n","import TransitionInterpolator from './transition-interpolator';\nimport {lerp} from '@math.gl/core';\n\nimport type Viewport from '../viewports/viewport';\n\nconst DEFAULT_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\nconst DEFAULT_REQUIRED_PROPS = ['longitude', 'latitude', 'zoom'];\n\ntype PropsWithAnchor = {\n around?: number[];\n aroundPosition?: number[];\n [key: string]: any;\n};\n\n/**\n * Performs linear interpolation of two view states.\n */\nexport default class LinearInterpolator extends TransitionInterpolator {\n opts: {\n around?: number[];\n makeViewport?: (props: Record) => Viewport;\n };\n\n /**\n * @param {Object} opts\n * @param {Array} opts.transitionProps - list of props to apply linear transition to.\n * @param {Array} opts.around - a screen point to zoom/rotate around.\n * @param {Function} opts.makeViewport - construct a viewport instance with given props.\n */\n constructor(\n opts:\n | string[]\n | {\n transitionProps?:\n | string[]\n | {\n compare: string[];\n extract?: string[];\n required?: string[];\n };\n around?: number[];\n makeViewport?: (props: Record) => Viewport;\n } = {}\n ) {\n // Backward compatibility\n const transitionProps = Array.isArray(opts) ? opts : opts.transitionProps;\n\n const normalizedOpts = Array.isArray(opts) ? {} : opts;\n normalizedOpts.transitionProps = Array.isArray(transitionProps)\n ? {\n compare: transitionProps,\n required: transitionProps\n }\n : transitionProps || {\n compare: DEFAULT_PROPS,\n required: DEFAULT_REQUIRED_PROPS\n };\n\n super(normalizedOpts.transitionProps);\n this.opts = normalizedOpts;\n }\n\n initializeProps(\n startProps: Record,\n endProps: Record\n ): {\n start: PropsWithAnchor;\n end: PropsWithAnchor;\n } {\n const result = super.initializeProps(startProps, endProps);\n\n const {makeViewport, around} = this.opts;\n if (makeViewport && around) {\n const startViewport = makeViewport(startProps);\n const endViewport = makeViewport(endProps);\n const aroundPosition = startViewport.unproject(around);\n result.start.around = around;\n Object.assign(result.end, {\n around: endViewport.project(aroundPosition),\n aroundPosition,\n width: endProps.width,\n height: endProps.height\n });\n }\n\n return result;\n }\n\n interpolateProps(\n startProps: PropsWithAnchor,\n endProps: PropsWithAnchor,\n t: number\n ): Record {\n const propsInTransition = {};\n for (const key of this._propsToExtract) {\n propsInTransition[key] = lerp(startProps[key] || 0, endProps[key] || 0, t);\n }\n\n if (endProps.aroundPosition && this.opts.makeViewport) {\n // Linear transition should be performed in common space\n const viewport = this.opts.makeViewport({...endProps, ...propsInTransition});\n Object.assign(\n propsInTransition,\n viewport.panByPosition(\n endProps.aroundPosition,\n // anchor point in current screen coordinates\n lerp(startProps.around as number[], endProps.around as number[], t) as number[]\n )\n );\n }\n return propsInTransition;\n }\n}\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable max-statements, complexity */\nimport TransitionManager, {TransitionProps} from './transition-manager';\nimport LinearInterpolator from '../transitions/linear-interpolator';\nimport {IViewState} from './view-state';\nimport {ConstructorOf} from '../types/types';\n\nimport type Viewport from '../viewports/viewport';\n\nimport type {EventManager, MjolnirEvent, MjolnirGestureEvent, MjolnirWheelEvent, MjolnirKeyEvent} from 'mjolnir.js';\nimport type {Timeline} from '@luma.gl/core';\n\nconst NO_TRANSITION_PROPS = {\n transitionDuration: 0\n} as const;\n\nconst DEFAULT_INERTIA = 300;\nconst INERTIA_EASING = t => 1 - (1 - t) * (1 - t);\n\nconst EVENT_TYPES = {\n WHEEL: ['wheel'],\n PAN: ['panstart', 'panmove', 'panend'],\n PINCH: ['pinchstart', 'pinchmove', 'pinchend'],\n TRIPLE_PAN: ['tripanstart', 'tripanmove', 'tripanend'],\n DOUBLE_TAP: ['doubletap'],\n KEYBOARD: ['keydown']\n} as const;\n\n/** Configuration of how user input is handled */\nexport type ControllerOptions = {\n /** Enable zooming with mouse wheel. Default `true`. */\n scrollZoom?: boolean | {\n /** Scaler that translates wheel delta to the change of viewport scale. Default `0.01`. */\n speed?: number;\n /** Smoothly transition to the new zoom. If enabled, will provide a slightly lagged but smoother experience. Default `false`. */\n smooth?: boolean\n };\n /** Enable panning with pointer drag. Default `true` */\n dragPan?: boolean;\n /** Enable rotating with pointer drag. Default `true` */\n dragRotate?: boolean;\n /** Enable zooming with double click. Default `true` */\n doubleClickZoom?: boolean;\n /** Enable zooming with multi-touch. Default `true` */\n touchZoom?: boolean;\n /** Enable rotating with multi-touch. Use two-finger rotating gesture for horizontal and three-finger swiping gesture for vertical rotation. Default `false` */\n touchRotate?: boolean;\n /** Enable interaction with keyboard. Default `true`. */\n keyboard?:\n | boolean\n | {\n /** Speed of zoom using +/- keys. Default `2` */\n zoomSpeed?: number;\n /** Speed of movement using arrow keys, in pixels. */\n moveSpeed?: number;\n /** Speed of rotation using shift + left/right arrow keys, in degrees. Default 15. */\n rotateSpeedX?: number;\n /** Speed of rotation using shift + up/down arrow keys, in degrees. Default 10. */\n rotateSpeedY?: number;\n };\n /** Drag behavior without pressing function keys, one of `pan` and `rotate`. */\n dragMode?: 'pan' | 'rotate';\n /** Enable inertia after panning/pinching. If a number is provided, indicates the duration of time over which the velocity reduces to zero, in milliseconds. Default `false`. */\n inertia?: boolean | number;\n};\n\nexport type ControllerProps = {\n /** Identifier of the controller */\n id: string;\n /** Viewport x position */\n x: number;\n /** Viewport y position */\n y: number;\n /** Viewport width */\n width: number;\n /** Viewport height */\n height: number;\n} & ControllerOptions & TransitionProps;\n\n/** The state of a controller */\nexport type InteractionState = {\n /** If the view state is in transition */\n inTransition?: boolean;\n /** If the user is dragging */\n isDragging?: boolean;\n /** If the view is being panned, either from user input or transition */\n isPanning?: boolean;\n /** If the view is being rotated, either from user input or transition */\n isRotating?: boolean;\n /** If the view is being zoomed, either from user input or transition */\n isZooming?: boolean;\n}\n\n/** Parameters passed to the onViewStateChange callback */\nexport type ViewStateChangeParameters = {\n /** The next view state, either from user input or transition */\n viewState: Record;\n /** Object describing the nature of the view state change */\n interactionState: InteractionState;\n /** The current view state */\n oldViewState?: Record;\n}\n\nconst pinchEventWorkaround: any = {};\n\nexport default abstract class Controller> {\n abstract get ControllerState(): ConstructorOf;\n abstract get transition(): TransitionProps;\n\n // @ts-expect-error (2564) - not assigned in the constructor\n protected props: ControllerProps;\n protected state: Record = {};\n\n protected transitionManager: TransitionManager;\n protected eventManager: EventManager;\n protected onViewStateChange: (params: ViewStateChangeParameters) => void;\n protected onStateChange: (state: InteractionState) => void;\n protected makeViewport: (opts: Record) => Viewport\n\n private _controllerState?: ControllerState;\n private _events: Record = {};\n private _interactionState: InteractionState = {\n isDragging: false\n };\n private _customEvents: string[] = [];\n private _eventStartBlocked: any = null;\n private _panMove: boolean = false;\n\n protected invertPan: boolean = false;\n protected dragMode: 'pan' | 'rotate' = 'rotate';\n protected inertia: number = 0;\n protected scrollZoom: boolean | {speed?: number; smooth?: boolean} = true;\n protected dragPan: boolean = true;\n protected dragRotate: boolean = true;\n protected doubleClickZoom: boolean = true;\n protected touchZoom: boolean = true;\n protected touchRotate: boolean = false;\n protected keyboard:\n | boolean\n | {\n zoomSpeed?: number; // speed of zoom using +/- keys. Default 2.\n moveSpeed?: number; // speed of movement using arrow keys, in pixels.\n rotateSpeedX?: number; // speed of rotation using shift + left/right arrow keys, in degrees. Default 15.\n rotateSpeedY?: number; // speed of rotation using shift + up/down arrow keys, in degrees. Default 10.\n } = true;\n\n constructor(opts: {\n timeline: Timeline,\n eventManager: EventManager;\n makeViewport: (opts: Record) => Viewport;\n onViewStateChange: (params: ViewStateChangeParameters) => void;\n onStateChange: (state: InteractionState) => void;\n }) {\n this.transitionManager = new TransitionManager({\n ...opts,\n getControllerState: props => new this.ControllerState(props),\n onViewStateChange: this._onTransition.bind(this),\n onStateChange: this._setInteractionState.bind(this)\n });\n\n this.handleEvent = this.handleEvent.bind(this);\n\n this.eventManager = opts.eventManager;\n this.onViewStateChange = opts.onViewStateChange || (() => {});\n this.onStateChange = opts.onStateChange || (() => {});\n this.makeViewport = opts.makeViewport;\n }\n\n set events(customEvents) {\n this.toggleEvents(this._customEvents, false);\n this.toggleEvents(customEvents, true);\n this._customEvents = customEvents;\n // Make sure default events are not overwritten\n if (this.props) {\n this.setProps(this.props);\n }\n }\n\n finalize() {\n for (const eventName in this._events) {\n if (this._events[eventName]) {\n // @ts-ignore (2345) event type string cannot be assifned to enum\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.eventManager?.off(eventName, this.handleEvent);\n }\n }\n this.transitionManager.finalize();\n }\n\n /**\n * Callback for events\n */\n handleEvent(event: MjolnirEvent) {\n // Force recalculate controller state\n this._controllerState = undefined;\n const eventStartBlocked = this._eventStartBlocked;\n\n switch (event.type) {\n case 'panstart':\n return eventStartBlocked ? false : this._onPanStart(event);\n case 'panmove':\n return this._onPan(event);\n case 'panend':\n return this._onPanEnd(event);\n case 'pinchstart':\n return eventStartBlocked ? false : this._onPinchStart(event);\n case 'pinchmove':\n return this._onPinch(event);\n case 'pinchend':\n return this._onPinchEnd(event);\n case 'tripanstart':\n return eventStartBlocked ? false : this._onTriplePanStart(event);\n case 'tripanmove':\n return this._onTriplePan(event);\n case 'tripanend':\n return this._onTriplePanEnd(event);\n case 'doubletap':\n return this._onDoubleTap(event);\n case 'wheel':\n return this._onWheel(event);\n case 'keydown':\n return this._onKeyDown(event);\n default:\n return false;\n }\n }\n\n /* Event utils */\n // Event object: http://hammerjs.github.io/api/#event-object\n get controllerState(): ControllerState {\n this._controllerState = this._controllerState || new this.ControllerState({\n makeViewport: this.makeViewport,\n ...this.props,\n ...this.state\n });\n return this._controllerState ;\n }\n\n getCenter(event: MjolnirGestureEvent | MjolnirWheelEvent) : [number, number] {\n const {x, y} = this.props;\n const {offsetCenter} = event;\n return [offsetCenter.x - x, offsetCenter.y - y];\n }\n\n isPointInBounds(pos: [number, number], event: MjolnirEvent): boolean {\n const {width, height} = this.props;\n if (event && event.handled) {\n return false;\n }\n\n const inside = pos[0] >= 0 && pos[0] <= width && pos[1] >= 0 && pos[1] <= height;\n if (inside && event) {\n event.stopPropagation();\n }\n return inside;\n }\n\n isFunctionKeyPressed(event: MjolnirEvent): boolean {\n const {srcEvent} = event;\n return Boolean(srcEvent.metaKey || srcEvent.altKey || srcEvent.ctrlKey || srcEvent.shiftKey);\n }\n\n isDragging(): boolean {\n return this._interactionState.isDragging || false;\n }\n\n // When a multi-touch event ends, e.g. pinch, not all pointers are lifted at the same time.\n // This triggers a brief `pan` event.\n // Calling this method will temporarily disable *start events to avoid conflicting transitions.\n blockEvents(timeout: number): void {\n /* global setTimeout */\n const timer = setTimeout(() => {\n if (this._eventStartBlocked === timer) {\n this._eventStartBlocked = null;\n }\n }, timeout);\n this._eventStartBlocked = timer;\n }\n\n /**\n * Extract interactivity options\n */\n setProps(props: ControllerProps) {\n if (props.dragMode) {\n this.dragMode = props.dragMode;\n }\n this.props = props;\n\n if (!('transitionInterpolator' in props)) {\n // Add default transition interpolator\n props.transitionInterpolator = this._getTransitionProps().transitionInterpolator;\n }\n\n this.transitionManager.processViewStateChange(props);\n\n const {inertia} = props;\n this.inertia = Number.isFinite(inertia) ? (inertia as number) : (inertia === true ? DEFAULT_INERTIA : 0);\n\n // TODO - make sure these are not reset on every setProps\n const {\n scrollZoom = true,\n dragPan = true,\n dragRotate = true,\n doubleClickZoom = true,\n touchZoom = true,\n touchRotate = false,\n keyboard = true\n } = props;\n\n // Register/unregister events\n const isInteractive = Boolean(this.onViewStateChange);\n this.toggleEvents(EVENT_TYPES.WHEEL, isInteractive && scrollZoom);\n // We always need the pan events to set the correct isDragging state, even if dragPan & dragRotate are both false\n this.toggleEvents(EVENT_TYPES.PAN, isInteractive);\n this.toggleEvents(EVENT_TYPES.PINCH, isInteractive && (touchZoom || touchRotate));\n this.toggleEvents(EVENT_TYPES.TRIPLE_PAN, isInteractive && touchRotate);\n this.toggleEvents(EVENT_TYPES.DOUBLE_TAP, isInteractive && doubleClickZoom);\n this.toggleEvents(EVENT_TYPES.KEYBOARD, isInteractive && keyboard);\n\n // Interaction toggles\n this.scrollZoom = scrollZoom;\n this.dragPan = dragPan;\n this.dragRotate = dragRotate;\n this.doubleClickZoom = doubleClickZoom;\n this.touchZoom = touchZoom;\n this.touchRotate = touchRotate;\n this.keyboard = keyboard;\n }\n\n updateTransition() {\n this.transitionManager.updateTransition();\n }\n\n toggleEvents(eventNames, enabled) {\n if (this.eventManager) {\n eventNames.forEach(eventName => {\n if (this._events[eventName] !== enabled) {\n this._events[eventName] = enabled;\n if (enabled) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.eventManager.on(eventName, this.handleEvent);\n } else {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.eventManager.off(eventName, this.handleEvent);\n }\n }\n });\n }\n }\n\n // Private Methods\n\n /* Callback util */\n // formats map state and invokes callback function\n protected updateViewport(newControllerState: ControllerState, extraProps: Record | null = null, interactionState: InteractionState = {}) {\n const viewState = {...newControllerState.getViewportProps(), ...extraProps};\n\n // TODO - to restore diffing, we need to include interactionState\n const changed = this.controllerState !== newControllerState;\n // const oldViewState = this.controllerState.getViewportProps();\n // const changed = Object.keys(viewState).some(key => oldViewState[key] !== viewState[key]);\n\n this.state = newControllerState.getState();\n this._setInteractionState(interactionState);\n\n if (changed) {\n const oldViewState = this.controllerState && this.controllerState.getViewportProps();\n if (this.onViewStateChange) {\n this.onViewStateChange({viewState, interactionState: this._interactionState, oldViewState});\n }\n }\n }\n\n private _onTransition(params: {viewState: Record, oldViewState: Record}) {\n this.onViewStateChange({...params, interactionState: this._interactionState});\n }\n\n private _setInteractionState(newStates: InteractionState) {\n Object.assign(this._interactionState, newStates);\n this.onStateChange(this._interactionState);\n }\n\n /* Event handlers */\n // Default handler for the `panstart` event.\n protected _onPanStart(event: MjolnirGestureEvent): boolean {\n const pos = this.getCenter(event);\n if (!this.isPointInBounds(pos, event)) {\n return false;\n }\n let alternateMode = this.isFunctionKeyPressed(event) || event.rightButton || false;\n if (this.invertPan || this.dragMode === 'pan') {\n // invertPan is replaced by props.dragMode, keeping for backward compatibility\n alternateMode = !alternateMode;\n }\n const newControllerState = this.controllerState[alternateMode ? 'panStart' : 'rotateStart']({\n pos\n });\n this._panMove = alternateMode;\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {isDragging: true});\n return true;\n }\n\n // Default handler for the `panmove` and `panend` event.\n protected _onPan(event: MjolnirGestureEvent): boolean {\n if (!this.isDragging()) {\n return false;\n }\n return this._panMove ? this._onPanMove(event) : this._onPanRotate(event);\n }\n\n protected _onPanEnd(event: MjolnirGestureEvent): boolean {\n if (!this.isDragging()) {\n return false;\n }\n return this._panMove ? this._onPanMoveEnd(event) : this._onPanRotateEnd(event);\n }\n\n // Default handler for panning to move.\n // Called by `_onPan` when panning without function key pressed.\n protected _onPanMove(event: MjolnirGestureEvent): boolean {\n if (!this.dragPan) {\n return false;\n }\n const pos = this.getCenter(event);\n const newControllerState = this.controllerState.pan({pos});\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n isDragging: true,\n isPanning: true\n });\n return true;\n }\n\n protected _onPanMoveEnd(event: MjolnirGestureEvent): boolean {\n const {inertia} = this;\n if (this.dragPan && inertia && event.velocity) {\n const pos = this.getCenter(event);\n const endPos: [number, number] = [\n pos[0] + (event.velocityX * inertia) / 2,\n pos[1] + (event.velocityY * inertia) / 2\n ];\n const newControllerState = this.controllerState.pan({pos: endPos}).panEnd();\n this.updateViewport(\n newControllerState,\n {\n ...this._getTransitionProps(),\n transitionDuration: inertia,\n transitionEasing: INERTIA_EASING\n },\n {\n isDragging: false,\n isPanning: true\n }\n );\n } else {\n const newControllerState = this.controllerState.panEnd();\n this.updateViewport(newControllerState, null, {\n isDragging: false,\n isPanning: false\n });\n }\n return true;\n }\n\n // Default handler for panning to rotate.\n // Called by `_onPan` when panning with function key pressed.\n protected _onPanRotate(event: MjolnirGestureEvent): boolean {\n if (!this.dragRotate) {\n return false;\n }\n\n const pos = this.getCenter(event);\n const newControllerState = this.controllerState.rotate({pos});\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n isDragging: true,\n isRotating: true\n });\n return true;\n }\n\n protected _onPanRotateEnd(event): boolean {\n const {inertia} = this;\n if (this.dragRotate && inertia && event.velocity) {\n const pos = this.getCenter(event);\n const endPos: [number, number] = [\n pos[0] + (event.velocityX * inertia) / 2,\n pos[1] + (event.velocityY * inertia) / 2\n ];\n const newControllerState = this.controllerState.rotate({pos: endPos}).rotateEnd();\n this.updateViewport(\n newControllerState,\n {\n ...this._getTransitionProps(),\n transitionDuration: inertia,\n transitionEasing: INERTIA_EASING\n },\n {\n isDragging: false,\n isRotating: true\n }\n );\n } else {\n const newControllerState = this.controllerState.rotateEnd();\n this.updateViewport(newControllerState, null, {\n isDragging: false,\n isRotating: false\n });\n }\n return true;\n }\n\n // Default handler for the `wheel` event.\n protected _onWheel(event: MjolnirWheelEvent): boolean {\n if (!this.scrollZoom) {\n return false;\n }\n event.srcEvent.preventDefault();\n\n const pos = this.getCenter(event);\n if (!this.isPointInBounds(pos, event)) {\n return false;\n }\n\n const {speed = 0.01, smooth = false} = this.scrollZoom === true ? {} : this.scrollZoom;\n const {delta} = event;\n\n // Map wheel delta to relative scale\n let scale = 2 / (1 + Math.exp(-Math.abs(delta * speed)));\n if (delta < 0 && scale !== 0) {\n scale = 1 / scale;\n }\n\n const newControllerState = this.controllerState.zoom({pos, scale});\n this.updateViewport(\n newControllerState,\n {...this._getTransitionProps({around: pos}), transitionDuration: smooth ? 250 : 1},\n {\n isZooming: true,\n isPanning: true\n }\n );\n return true;\n }\n\n protected _onTriplePanStart(event: MjolnirGestureEvent): boolean {\n const pos = this.getCenter(event);\n if (!this.isPointInBounds(pos, event)) {\n return false;\n }\n const newControllerState = this.controllerState.rotateStart({pos});\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {isDragging: true});\n return true;\n }\n\n protected _onTriplePan(event: MjolnirGestureEvent): boolean {\n if (!this.touchRotate) {\n return false;\n }\n if (!this.isDragging()) {\n return false;\n }\n\n const pos = this.getCenter(event);\n pos[0] -= event.deltaX;\n\n const newControllerState = this.controllerState.rotate({pos});\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n isDragging: true,\n isRotating: true\n });\n return true;\n }\n\n protected _onTriplePanEnd(event: MjolnirGestureEvent): boolean {\n if (!this.isDragging()) {\n return false;\n }\n const {inertia} = this;\n if (this.touchRotate && inertia && event.velocityY) {\n const pos = this.getCenter(event);\n const endPos: [number, number] = [pos[0], (pos[1] += (event.velocityY * inertia) / 2)];\n const newControllerState = this.controllerState.rotate({pos: endPos});\n this.updateViewport(\n newControllerState,\n {\n ...this._getTransitionProps(),\n transitionDuration: inertia,\n transitionEasing: INERTIA_EASING\n },\n {\n isDragging: false,\n isRotating: true\n }\n );\n this.blockEvents(inertia);\n } else {\n const newControllerState = this.controllerState.rotateEnd();\n this.updateViewport(newControllerState, null, {\n isDragging: false,\n isRotating: false\n });\n }\n return true;\n }\n\n // Default handler for the `pinchstart` event.\n protected _onPinchStart(event: MjolnirGestureEvent): boolean {\n const pos = this.getCenter(event);\n if (!this.isPointInBounds(pos, event)) {\n return false;\n }\n\n const newControllerState = this.controllerState.zoomStart({pos}).rotateStart({pos});\n // hack - hammer's `rotation` field doesn't seem to produce the correct angle\n pinchEventWorkaround._startPinchRotation = event.rotation;\n pinchEventWorkaround._lastPinchEvent = event;\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {isDragging: true});\n return true;\n }\n\n // Default handler for the `pinchmove` and `pinchend` events.\n protected _onPinch(event: MjolnirGestureEvent): boolean {\n if (!this.touchZoom && !this.touchRotate) {\n return false;\n }\n if (!this.isDragging()) {\n return false;\n }\n\n let newControllerState = this.controllerState;\n if (this.touchZoom) {\n const {scale} = event;\n const pos = this.getCenter(event);\n newControllerState = newControllerState.zoom({pos, scale});\n }\n if (this.touchRotate) {\n const {rotation} = event;\n newControllerState = newControllerState.rotate({\n deltaAngleX: pinchEventWorkaround._startPinchRotation - rotation\n });\n }\n\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n isDragging: true,\n isPanning: this.touchZoom,\n isZooming: this.touchZoom,\n isRotating: this.touchRotate\n });\n pinchEventWorkaround._lastPinchEvent = event;\n return true;\n }\n\n protected _onPinchEnd(event: MjolnirGestureEvent): boolean {\n if (!this.isDragging()) {\n return false;\n }\n const {inertia} = this;\n const {_lastPinchEvent} = pinchEventWorkaround;\n if (this.touchZoom && inertia && _lastPinchEvent && event.scale !== _lastPinchEvent.scale) {\n const pos = this.getCenter(event);\n let newControllerState = this.controllerState.rotateEnd();\n const z = Math.log2(event.scale);\n const velocityZ =\n (z - Math.log2(_lastPinchEvent.scale)) / (event.deltaTime - _lastPinchEvent.deltaTime);\n const endScale = Math.pow(2, z + (velocityZ * inertia) / 2);\n newControllerState = newControllerState.zoom({pos, scale: endScale}).zoomEnd();\n\n this.updateViewport(\n newControllerState,\n {\n ...this._getTransitionProps({around: pos}),\n transitionDuration: inertia,\n transitionEasing: INERTIA_EASING\n },\n {\n isDragging: false,\n isPanning: this.touchZoom,\n isZooming: this.touchZoom,\n isRotating: false\n }\n );\n this.blockEvents(inertia);\n } else {\n const newControllerState = this.controllerState.zoomEnd().rotateEnd();\n this.updateViewport(newControllerState, null, {\n isDragging: false,\n isPanning: false,\n isZooming: false,\n isRotating: false\n });\n }\n pinchEventWorkaround._startPinchRotation = null;\n pinchEventWorkaround._lastPinchEvent = null;\n return true;\n }\n\n // Default handler for the `doubletap` event.\n protected _onDoubleTap(event: MjolnirGestureEvent): boolean {\n if (!this.doubleClickZoom) {\n return false;\n }\n const pos = this.getCenter(event);\n if (!this.isPointInBounds(pos, event)) {\n return false;\n }\n\n const isZoomOut = this.isFunctionKeyPressed(event);\n\n const newControllerState = this.controllerState.zoom({pos, scale: isZoomOut ? 0.5 : 2});\n this.updateViewport(newControllerState, this._getTransitionProps({around: pos}), {\n isZooming: true,\n isPanning: true\n });\n this.blockEvents(100);\n return true;\n }\n\n // Default handler for the `keydown` event\n protected _onKeyDown(event: MjolnirKeyEvent): boolean {\n if (!this.keyboard) {\n return false;\n }\n const funcKey = this.isFunctionKeyPressed(event);\n // @ts-ignore\n const {zoomSpeed, moveSpeed, rotateSpeedX, rotateSpeedY} = this.keyboard === true ? {} : this.keyboard;\n const {controllerState} = this;\n let newControllerState;\n const interactionState: InteractionState = {};\n\n switch (event.srcEvent.code) {\n case 'Minus':\n newControllerState = funcKey\n ? controllerState.zoomOut(zoomSpeed).zoomOut(zoomSpeed)\n : controllerState.zoomOut(zoomSpeed);\n interactionState.isZooming = true;\n break;\n case 'Equal':\n newControllerState = funcKey\n ? controllerState.zoomIn(zoomSpeed).zoomIn(zoomSpeed)\n : controllerState.zoomIn(zoomSpeed);\n interactionState.isZooming = true;\n break;\n case 'ArrowLeft':\n if (funcKey) {\n newControllerState = controllerState.rotateLeft(rotateSpeedX);\n interactionState.isRotating = true;\n } else {\n newControllerState = controllerState.moveLeft(moveSpeed);\n interactionState.isPanning = true;\n }\n break;\n case 'ArrowRight':\n if (funcKey) {\n newControllerState = controllerState.rotateRight(rotateSpeedX);\n interactionState.isRotating = true;\n } else {\n newControllerState = controllerState.moveRight(moveSpeed);\n interactionState.isPanning = true;\n }\n break;\n case 'ArrowUp':\n if (funcKey) {\n newControllerState = controllerState.rotateUp(rotateSpeedY);\n interactionState.isRotating = true;\n } else {\n newControllerState = controllerState.moveUp(moveSpeed);\n interactionState.isPanning = true;\n }\n break;\n case 'ArrowDown':\n if (funcKey) {\n newControllerState = controllerState.rotateDown(rotateSpeedY);\n interactionState.isRotating = true;\n } else {\n newControllerState = controllerState.moveDown(moveSpeed);\n interactionState.isPanning = true;\n }\n break;\n default:\n return false;\n }\n this.updateViewport(newControllerState, this._getTransitionProps(), interactionState);\n return true;\n }\n\n protected _getTransitionProps(opts?: any): TransitionProps {\n const {transition} = this;\n\n if (!transition || !transition.transitionInterpolator) {\n return NO_TRANSITION_PROPS;\n }\n\n // Enables Transitions on double-tap and key-down events.\n return opts\n ? {\n ...transition,\n transitionInterpolator: new LinearInterpolator({\n ...opts,\n ...(transition.transitionInterpolator as LinearInterpolator).opts,\n makeViewport: this.controllerState.makeViewport\n })\n }\n : transition;\n }\n}\n","import type Viewport from '../viewports/viewport';\n\nexport default abstract class ViewState implements IViewState {\n private _viewportProps: Required;\n private _state: State;\n\n constructor(props: Required, state: State) {\n this._viewportProps = this.applyConstraints(props);\n this._state = state;\n }\n\n getViewportProps(): Required {\n return this._viewportProps;\n }\n\n getState(): State {\n return this._state;\n }\n\n abstract applyConstraints(props: Required): Required;\n\n abstract shortestPathFrom(viewState: T): Props;\n\n abstract panStart(params: {pos: [number, number]}): T;\n abstract pan({pos, startPos}: {pos: [number, number]; startPos?: [number, number]}): T;\n abstract panEnd(): T;\n\n abstract rotateStart(params: {pos: [number, number]}): T;\n abstract rotate(params: {pos?: [number, number]; deltaAngleX?: number; deltaAngleY: number}): T;\n abstract rotateEnd(): T;\n\n abstract zoomStart({pos}: {pos: [number, number]}): T;\n abstract zoom({\n pos,\n startPos,\n scale\n }: {\n pos: [number, number];\n startPos?: [number, number];\n scale: number;\n }): T;\n abstract zoomEnd(): T;\n\n abstract zoomIn(speed?: number): T;\n abstract zoomOut(speed?: number): T;\n\n abstract moveLeft(speed?: number): T;\n abstract moveRight(speed?: number): T;\n abstract moveUp(speed?: number): T;\n abstract moveDown(speed?: number): T;\n\n abstract rotateLeft(speed?: number): T;\n abstract rotateRight(speed?: number): T;\n abstract rotateUp(speed?: number): T;\n abstract rotateDown(speed?: number): T;\n}\n\nexport interface IViewState {\n makeViewport?: (props: Record) => Viewport;\n\n getViewportProps(): Record;\n\n getState(): Record;\n\n shortestPathFrom(viewState: T): Record;\n\n panStart(params: {pos: [number, number]}): T;\n pan({pos, startPos}: {pos: [number, number]; startPos?: [number, number]}): T;\n panEnd(): T;\n\n rotateStart(params: {pos: [number, number]}): T;\n rotate(params: {pos?: [number, number]; deltaAngleX?: number; deltaAngleY?: number}): T;\n rotateEnd(): T;\n\n zoomStart({pos}: {pos: [number, number]}): T;\n zoom({\n pos,\n startPos,\n scale\n }: {\n pos: [number, number];\n startPos?: [number, number];\n scale: number;\n }): T;\n zoomEnd(): T;\n\n zoomIn(speed?: number): T;\n zoomOut(speed?: number): T;\n\n moveLeft(speed?: number): T;\n moveRight(speed?: number): T;\n moveUp(speed?: number): T;\n moveDown(speed?: number): T;\n\n rotateLeft(speed?: number): T;\n rotateRight(speed?: number): T;\n rotateUp(speed?: number): T;\n rotateDown(speed?: number): T;\n}\n","import {clamp} from '@math.gl/core';\nimport Controller, {ControllerProps} from './controller';\nimport ViewState from './view-state';\nimport {normalizeViewportProps} from '@math.gl/web-mercator';\nimport assert from '../utils/assert';\n\nimport LinearInterpolator from '../transitions/linear-interpolator';\nimport type Viewport from '../viewports/viewport';\n\nconst PITCH_MOUSE_THRESHOLD = 5;\nconst PITCH_ACCEL = 1.2;\n\nexport type MapStateProps = {\n /** Mapbox viewport properties */\n /** The width of the viewport */\n width: number;\n /** The height of the viewport */\n height: number;\n /** The latitude at the center of the viewport */\n latitude: number;\n /** The longitude at the center of the viewport */\n longitude: number;\n /** The tile zoom level of the map. */\n zoom: number;\n /** The bearing of the viewport in degrees */\n bearing?: number;\n /** The pitch of the viewport in degrees */\n pitch?: number;\n /**\n * Specify the altitude of the viewport camera\n * Unit: map heights, default 1.5\n * Non-public API, see https://github.com/mapbox/mapbox-gl-js/issues/1137\n */\n altitude?: number;\n /** Viewport position */\n position?: [number, number, number];\n\n /** Viewport constraints */\n maxZoom?: number;\n minZoom?: number;\n maxPitch?: number;\n minPitch?: number;\n\n /** Normalize viewport props to fit map height into viewport. Default `true` */\n normalize?: boolean;\n};\n\ntype MapStateInternal = {\n /** Interaction states, required to calculate change during transform */\n /* The point on map being grabbed when the operation first started */\n startPanLngLat?: [number, number];\n /* Center of the zoom when the operation first started */\n startZoomLngLat?: [number, number];\n /* Pointer position when rotation started */\n startRotatePos?: [number, number];\n /** Bearing when current perspective rotate operation started */\n startBearing?: number;\n /** Pitch when current perspective rotate operation started */\n startPitch?: number;\n /** Zoom when current zoom operation started */\n startZoom?: number;\n};\n\n/* Utils */\n\nexport class MapState extends ViewState {\n makeViewport: (props: Record) => Viewport;\n\n constructor(\n options: MapStateProps &\n MapStateInternal & {\n makeViewport: (props: Record) => Viewport;\n }\n ) {\n const {\n /** Mapbox viewport properties */\n /** The width of the viewport */\n width,\n /** The height of the viewport */\n height,\n /** The latitude at the center of the viewport */\n latitude,\n /** The longitude at the center of the viewport */\n longitude,\n /** The tile zoom level of the map. */\n zoom,\n /** The bearing of the viewport in degrees */\n bearing = 0,\n /** The pitch of the viewport in degrees */\n pitch = 0,\n /**\n * Specify the altitude of the viewport camera\n * Unit: map heights, default 1.5\n * Non-public API, see https://github.com/mapbox/mapbox-gl-js/issues/1137\n */\n altitude = 1.5,\n /** Viewport position */\n position = [0, 0, 0],\n\n /** Viewport constraints */\n maxZoom = 20,\n minZoom = 0,\n maxPitch = 60,\n minPitch = 0,\n\n /** Interaction states, required to calculate change during transform */\n /* The point on map being grabbed when the operation first started */\n startPanLngLat,\n /* Center of the zoom when the operation first started */\n startZoomLngLat,\n /* Pointer position when rotation started */\n startRotatePos,\n /** Bearing when current perspective rotate operation started */\n startBearing,\n /** Pitch when current perspective rotate operation started */\n startPitch,\n /** Zoom when current zoom operation started */\n startZoom,\n\n /** Normalize viewport props to fit map height into viewport */\n normalize = true\n } = options;\n\n assert(Number.isFinite(longitude)); // `longitude` must be supplied\n assert(Number.isFinite(latitude)); // `latitude` must be supplied\n assert(Number.isFinite(zoom)); // `zoom` must be supplied\n\n super(\n {\n width,\n height,\n latitude,\n longitude,\n zoom,\n bearing,\n pitch,\n altitude,\n maxZoom,\n minZoom,\n maxPitch,\n minPitch,\n normalize,\n position\n },\n {\n startPanLngLat,\n startZoomLngLat,\n startRotatePos,\n startBearing,\n startPitch,\n startZoom\n }\n );\n\n this.makeViewport = options.makeViewport;\n }\n\n /**\n * Start panning\n * @param {[Number, Number]} pos - position on screen where the pointer grabs\n */\n panStart({pos}: {pos: [number, number]}): MapState {\n return this._getUpdatedState({\n startPanLngLat: this._unproject(pos)\n });\n }\n\n /**\n * Pan\n * @param {[Number, Number]} pos - position on screen where the pointer is\n * @param {[Number, Number], optional} startPos - where the pointer grabbed at\n * the start of the operation. Must be supplied of `panStart()` was not called\n */\n pan({pos, startPos}: {pos: [number, number]; startPos?: [number, number]}): MapState {\n const startPanLngLat = this.getState().startPanLngLat || this._unproject(startPos);\n\n if (!startPanLngLat) {\n return this;\n }\n\n const viewport = this.makeViewport(this.getViewportProps());\n const newProps = viewport.panByPosition(startPanLngLat, pos);\n\n return this._getUpdatedState(newProps);\n }\n\n /**\n * End panning\n * Must call if `panStart()` was called\n */\n panEnd(): MapState {\n return this._getUpdatedState({\n startPanLngLat: null\n });\n }\n\n /**\n * Start rotating\n * @param {[Number, Number]} pos - position on screen where the center is\n */\n rotateStart({pos}: {pos: [number, number]}): MapState {\n return this._getUpdatedState({\n startRotatePos: pos,\n startBearing: this.getViewportProps().bearing,\n startPitch: this.getViewportProps().pitch\n });\n }\n\n /**\n * Rotate\n * @param {[Number, Number]} pos - position on screen where the center is\n */\n rotate({\n pos,\n deltaAngleX = 0,\n deltaAngleY = 0\n }: {\n pos?: [number, number];\n deltaAngleX?: number;\n deltaAngleY?: number;\n }): MapState {\n const {startRotatePos, startBearing, startPitch} = this.getState();\n\n if (!startRotatePos || startBearing === undefined || startPitch === undefined) {\n return this;\n }\n let newRotation;\n if (pos) {\n newRotation = this._getNewRotation(pos, startRotatePos, startPitch, startBearing);\n } else {\n newRotation = {\n bearing: startBearing + deltaAngleX,\n pitch: startPitch + deltaAngleY\n };\n }\n return this._getUpdatedState(newRotation);\n }\n\n /**\n * End rotating\n * Must call if `rotateStart()` was called\n */\n rotateEnd(): MapState {\n return this._getUpdatedState({\n startBearing: null,\n startPitch: null\n });\n }\n\n /**\n * Start zooming\n * @param {[Number, Number]} pos - position on screen where the center is\n */\n zoomStart({pos}: {pos: [number, number]}): MapState {\n return this._getUpdatedState({\n startZoomLngLat: this._unproject(pos),\n startZoom: this.getViewportProps().zoom\n });\n }\n\n /**\n * Zoom\n * @param {[Number, Number]} pos - position on screen where the current center is\n * @param {[Number, Number]} startPos - the center position at\n * the start of the operation. Must be supplied of `zoomStart()` was not called\n * @param {Number} scale - a number between [0, 1] specifying the accumulated\n * relative scale.\n */\n zoom({\n pos,\n startPos,\n scale\n }: {\n pos: [number, number];\n startPos?: [number, number];\n scale: number;\n }): MapState {\n // Make sure we zoom around the current mouse position rather than map center\n let {startZoom, startZoomLngLat} = this.getState();\n\n if (!startZoomLngLat) {\n // We have two modes of zoom:\n // scroll zoom that are discrete events (transform from the current zoom level),\n // and pinch zoom that are continuous events (transform from the zoom level when\n // pinch started).\n // If startZoom state is defined, then use the startZoom state;\n // otherwise assume discrete zooming\n startZoom = this.getViewportProps().zoom;\n startZoomLngLat = this._unproject(startPos) || this._unproject(pos);\n }\n if (!startZoomLngLat) {\n return this;\n }\n\n const {maxZoom, minZoom} = this.getViewportProps();\n let zoom = (startZoom as number) + Math.log2(scale);\n zoom = clamp(zoom, minZoom, maxZoom);\n\n const zoomedViewport = this.makeViewport({...this.getViewportProps(), zoom});\n\n return this._getUpdatedState({\n zoom,\n ...zoomedViewport.panByPosition(startZoomLngLat, pos)\n });\n }\n\n /**\n * End zooming\n * Must call if `zoomStart()` was called\n */\n zoomEnd(): MapState {\n return this._getUpdatedState({\n startZoomLngLat: null,\n startZoom: null\n });\n }\n\n zoomIn(speed: number = 2): MapState {\n return this._zoomFromCenter(speed);\n }\n\n zoomOut(speed: number = 2): MapState {\n return this._zoomFromCenter(1 / speed);\n }\n\n moveLeft(speed: number = 100): MapState {\n return this._panFromCenter([speed, 0]);\n }\n\n moveRight(speed: number = 100): MapState {\n return this._panFromCenter([-speed, 0]);\n }\n\n moveUp(speed: number = 100): MapState {\n return this._panFromCenter([0, speed]);\n }\n\n moveDown(speed: number = 100): MapState {\n return this._panFromCenter([0, -speed]);\n }\n\n rotateLeft(speed: number = 15): MapState {\n return this._getUpdatedState({\n bearing: this.getViewportProps().bearing - speed\n });\n }\n\n rotateRight(speed: number = 15): MapState {\n return this._getUpdatedState({\n bearing: this.getViewportProps().bearing + speed\n });\n }\n\n rotateUp(speed: number = 10): MapState {\n return this._getUpdatedState({\n pitch: this.getViewportProps().pitch + speed\n });\n }\n\n rotateDown(speed: number = 10): MapState {\n return this._getUpdatedState({\n pitch: this.getViewportProps().pitch - speed\n });\n }\n\n shortestPathFrom(viewState: MapState): MapStateProps {\n // const endViewStateProps = new this.ControllerState(endProps).shortestPathFrom(startViewstate);\n const fromProps = viewState.getViewportProps();\n const props = {...this.getViewportProps()};\n const {bearing, longitude} = props;\n\n if (Math.abs(bearing - fromProps.bearing) > 180) {\n props.bearing = bearing < 0 ? bearing + 360 : bearing - 360;\n }\n if (Math.abs(longitude - fromProps.longitude) > 180) {\n props.longitude = longitude < 0 ? longitude + 360 : longitude - 360;\n }\n return props;\n }\n\n // Apply any constraints (mathematical or defined by _viewportProps) to map state\n applyConstraints(props: Required): Required {\n // Ensure zoom is within specified range\n const {maxZoom, minZoom, zoom} = props;\n props.zoom = clamp(zoom, minZoom, maxZoom);\n\n // Ensure pitch is within specified range\n const {maxPitch, minPitch, pitch} = props;\n props.pitch = clamp(pitch, minPitch, maxPitch);\n\n // Normalize viewport props to fit map height into viewport\n const {normalize = true} = props;\n if (normalize) {\n Object.assign(props, normalizeViewportProps(props));\n }\n\n return props;\n }\n\n /* Private methods */\n\n _zoomFromCenter(scale) {\n const {width, height} = this.getViewportProps();\n return this.zoom({\n pos: [width / 2, height / 2],\n scale\n });\n }\n\n _panFromCenter(offset) {\n const {width, height} = this.getViewportProps();\n return this.pan({\n startPos: [width / 2, height / 2],\n pos: [width / 2 + offset[0], height / 2 + offset[1]]\n });\n }\n\n _getUpdatedState(newProps): MapState {\n // @ts-ignore\n return new this.constructor({\n makeViewport: this.makeViewport,\n ...this.getViewportProps(),\n ...this.getState(),\n ...newProps\n });\n }\n\n _unproject(pos?: [number, number]): [number, number] | undefined {\n const viewport = this.makeViewport(this.getViewportProps());\n // @ts-ignore\n return pos && viewport.unproject(pos);\n }\n\n _getNewRotation(\n pos: [number, number],\n startPos: [number, number],\n startPitch: number,\n startBearing: number\n ): {\n pitch: number;\n bearing: number;\n } {\n const deltaX = pos[0] - startPos[0];\n const deltaY = pos[1] - startPos[1];\n const centerY = pos[1];\n const startY = startPos[1];\n const {width, height} = this.getViewportProps();\n\n const deltaScaleX = deltaX / width;\n let deltaScaleY = 0;\n\n if (deltaY > 0) {\n if (Math.abs(height - startY) > PITCH_MOUSE_THRESHOLD) {\n // Move from 0 to -1 as we drag upwards\n deltaScaleY = (deltaY / (startY - height)) * PITCH_ACCEL;\n }\n } else if (deltaY < 0) {\n if (startY > PITCH_MOUSE_THRESHOLD) {\n // Move from 0 to 1 as we drag upwards\n deltaScaleY = 1 - centerY / startY;\n }\n }\n // clamp deltaScaleY to [-1, 1] so that rotation is constrained between minPitch and maxPitch.\n // deltaScaleX does not need to be clamped as bearing does not have constraints.\n deltaScaleY = clamp(deltaScaleY, -1, 1);\n\n const {minPitch, maxPitch} = this.getViewportProps();\n\n const bearing = startBearing + 180 * deltaScaleX;\n let pitch = startPitch;\n if (deltaScaleY > 0) {\n // Gradually increase pitch\n pitch = startPitch + deltaScaleY * (maxPitch - startPitch);\n } else if (deltaScaleY < 0) {\n // Gradually decrease pitch\n pitch = startPitch - deltaScaleY * (minPitch - startPitch);\n }\n\n return {\n pitch,\n bearing\n };\n }\n}\n\nexport default class MapController extends Controller {\n ControllerState = MapState;\n\n transition = {\n transitionDuration: 300,\n transitionInterpolator: new LinearInterpolator({\n transitionProps: {\n compare: ['longitude', 'latitude', 'zoom', 'bearing', 'pitch', 'position'],\n required: ['longitude', 'latitude', 'zoom']\n }\n })\n };\n\n dragMode: 'pan' | 'rotate' = 'pan';\n\n setProps(props: ControllerProps & MapStateProps) {\n props.position = props.position || [0, 0, 0];\n const oldProps = this.props;\n\n super.setProps(props);\n\n const dimensionChanged = !oldProps || oldProps.height !== props.height;\n if (dimensionChanged) {\n // Dimensions changed, normalize the props\n this.updateViewport(\n new this.ControllerState({\n makeViewport: this.makeViewport,\n ...props,\n ...this.state\n })\n );\n }\n }\n}\n","import {worldToLngLat} from './web-mercator-utils';\nimport {mod, log2} from './math-utils';\n\n// defined by mapbox-gl\nconst TILE_SIZE = 512;\n\n/** Description of viewport */\nexport type ViewportProps = {\n width: number;\n height: number;\n longitude: number;\n latitude: number;\n zoom: number;\n pitch?: number;\n bearing?: number;\n};\n\n/**\n * Apply mathematical constraints to viewport props\n * @param props\n */\n// eslint-disable-next-line complexity\nexport default function normalizeViewportProps(props: ViewportProps): ViewportProps {\n const {width, height, pitch = 0} = props;\n let {longitude, latitude, zoom, bearing = 0} = props;\n\n // Normalize degrees\n if (longitude < -180 || longitude > 180) {\n longitude = mod(longitude + 180, 360) - 180;\n }\n if (bearing < -180 || bearing > 180) {\n bearing = mod(bearing + 180, 360) - 180;\n }\n\n // Constrain zoom and shift center at low zoom levels\n const minZoom = log2(height / TILE_SIZE);\n if (zoom <= minZoom) {\n zoom = minZoom;\n latitude = 0;\n } else {\n // Eliminate white space above and below the map\n const halfHeightPixels = height / 2 / Math.pow(2, zoom);\n const minLatitude = worldToLngLat([0, halfHeightPixels])[1];\n if (latitude < minLatitude) {\n latitude = minLatitude;\n } else {\n const maxLatitude = worldToLngLat([0, TILE_SIZE - halfHeightPixels])[1];\n if (latitude > maxLatitude) {\n latitude = maxLatitude;\n }\n }\n }\n\n return {width, height, longitude, latitude, zoom, pitch, bearing};\n}\n","import View, {CommonViewState} from './view';\nimport WebMercatorViewport from '../viewports/web-mercator-viewport';\nimport MapController from '../controllers/map-controller';\n\nimport type {NumericArray} from '../types/types';\n\nexport type MapViewState = {\n /** Longitude of the map center */\n longitude: number;\n /** Latitude of the map center */\n latitude: number;\n /** Zoom level */\n zoom: number;\n /** Pitch (tilt) of the map, in degrees. `0` looks top down */\n pitch?: number;\n /** Bearing (rotation) of the map, in degrees. `0` is north up */\n bearing?: number;\n /** Min zoom, default `0` */\n minZoom?: number;\n /** Max zoom, default `20` */\n maxZoom?: number;\n /** Min pitch, default `0` */\n minPitch?: number;\n /** Max pitch, default `60` */\n maxPitch?: number;\n /** Viewport center offsets from lng, lat in meters */\n position?: number[];\n} & CommonViewState;\n\ntype MapViewProps = {\n /** Whether to render multiple copies of the map at low zoom levels. Default `false`. */\n repeat?: boolean;\n /** Scaler for the near plane, 1 unit equals to the height of the viewport. Default to `0.1`. Overwrites the `near` parameter. */\n nearZMultiplier?: number;\n /** Scaler for the far plane, 1 unit equals to the distance from the camera to the top edge of the screen. Default to `1.01`. Overwrites the `far` parameter. */\n farZMultiplier?: number;\n /** Custom projection matrix */\n projectionMatrix?: NumericArray;\n /** Field of view covered by the camera, in the perspective case. In degrees. If not supplied, will be calculated from `altitude`. */\n fovy?: number;\n /** Distance of the camera relative to viewport height. Default `1.5`. */\n altitude?: number;\n /** Whether to create an orthographic or perspective projection matrix. Default is `false` (perspective projection). */\n orthographic?: boolean;\n};\n\nexport default class MapView extends View {\n static displayName = 'MapView';\n\n get ViewportType() {\n return WebMercatorViewport;\n }\n\n get ControllerType() {\n return MapController;\n }\n}\n","const DEFAULT_LIGHT_COLOR = [255, 255, 255];\nconst DEFAULT_LIGHT_INTENSITY = 1.0;\n\nlet idCount = 0;\n\nexport type AmbientLightOptions = {\n id?: string;\n /** Light color, [r, g, b] in the 0-255 range\n * @default [255, 255, 255]\n */\n color?: number[];\n /** Light intensity, higher number is brighter\n * @default 1.0\n */\n intensity?: number;\n};\n\nexport class AmbientLight {\n id: string;\n color: number[];\n intensity: number;\n type = 'ambient';\n\n constructor(props: AmbientLightOptions = {}) {\n const {color = DEFAULT_LIGHT_COLOR} = props;\n const {intensity = DEFAULT_LIGHT_INTENSITY} = props;\n\n this.id = props.id || `ambient-${idCount++}`;\n this.color = color;\n this.intensity = intensity;\n }\n}\n","import {Vector3} from '@math.gl/core';\nimport type Layer from '../../lib/layer';\n\nconst DEFAULT_LIGHT_COLOR = [255, 255, 255];\nconst DEFAULT_LIGHT_INTENSITY = 1.0;\nconst DEFAULT_LIGHT_DIRECTION = [0.0, 0.0, -1.0];\n\nlet idCount = 0;\n\nexport type DirectionalLightOptions = {\n id?: string;\n /** Light color, [r, g, b] in the 0-255 range\n * @default [255, 255, 255]\n */\n color?: number[];\n /** Light intensity, higher number is brighter\n * @default 1.0\n */\n intensity?: number;\n /** Light direction in the common space\n * @default [0.0, 0.0, -1.0]\n */\n direction?: number[];\n /** (Experimental) render shadows cast by this light\n * @default false\n */\n _shadow?: boolean;\n};\n\nexport class DirectionalLight {\n id: string;\n color: number[];\n intensity: number;\n type = 'directional';\n direction: number[];\n shadow: boolean;\n\n constructor(props: DirectionalLightOptions = {}) {\n const {color = DEFAULT_LIGHT_COLOR} = props;\n const {intensity = DEFAULT_LIGHT_INTENSITY} = props;\n const {direction = DEFAULT_LIGHT_DIRECTION} = props;\n const {_shadow = false} = props;\n\n this.id = props.id || `directional-${idCount++}`;\n this.color = color;\n this.intensity = intensity;\n this.type = 'directional';\n this.direction = new Vector3(direction).normalize().toArray() as [number, number, number];\n this.shadow = _shadow;\n }\n\n getProjectedLight(opts: {layer: Layer}): DirectionalLight {\n return this;\n }\n}\n","export default class Pass {\n id: string;\n gl: WebGLRenderingContext;\n props: any;\n\n constructor(gl: WebGLRenderingContext, props: {id: string} = {id: 'pass'}) {\n const {id} = props;\n this.id = id; // id of this pass\n this.gl = gl;\n this.props = {...props};\n }\n\n setProps(props): void {\n Object.assign(this.props, props);\n }\n\n render(params): void {} // eslint-disable-line @typescript-eslint/no-empty-function\n\n cleanup() {} // eslint-disable-line @typescript-eslint/no-empty-function\n}\n","import GL from '@luma.gl/constants';\nimport Pass from './pass';\nimport {clear, setParameters, withParameters, cssToDeviceRatio} from '@luma.gl/core';\n\nimport type {Framebuffer} from '@luma.gl/core';\nimport type Viewport from '../viewports/viewport';\nimport type View from '../views/view';\nimport type Layer from '../lib/layer';\nimport type {Effect} from '../lib/effect';\n\nexport type Rect = {x: number; y: number; width: number; height: number};\n\nexport type LayersPassRenderOptions = {\n target?: Framebuffer;\n isPicking?: boolean;\n pass: string;\n layers: Layer[];\n viewports: Viewport[];\n onViewportActive?: (viewport: Viewport) => void;\n cullRect?: Rect;\n views?: Record;\n effects?: Effect[];\n /** If true, recalculates render index (z) from 0. Set to false if a stack of layers are rendered in multiple passes. */\n clearStack?: boolean;\n clearCanvas?: boolean;\n layerFilter?: ((context: FilterContext) => boolean) | null;\n moduleParameters?: any;\n /** Stores returned results from Effect.preRender, for use downstream in the render pipeline */\n preRenderStats?: Record;\n};\n\ntype DrawLayerParameters = {\n shouldDrawLayer: boolean;\n layerRenderIndex?: number;\n moduleParameters?: any;\n layerParameters?: any;\n};\n\nexport type FilterContext = {\n layer: Layer;\n viewport: Viewport;\n isPicking: boolean;\n renderPass: string;\n cullRect?: Rect;\n};\n\nexport type RenderStats = {\n totalCount: number;\n visibleCount: number;\n compositeCount: number;\n pickableCount: number;\n};\n\nexport default class LayersPass extends Pass {\n _lastRenderIndex: number = -1;\n\n render(options: LayersPassRenderOptions): any {\n const gl = this.gl;\n\n setParameters(gl, {framebuffer: options.target});\n return this._drawLayers(options);\n }\n\n // Draw a list of layers in a list of viewports\n private _drawLayers(options: LayersPassRenderOptions) {\n const {\n target,\n moduleParameters,\n viewports,\n views,\n onViewportActive,\n clearStack = true,\n clearCanvas = true\n } = options;\n options.pass = options.pass || 'unknown';\n\n const gl = this.gl;\n if (clearCanvas) {\n clearGLCanvas(gl, target);\n }\n\n if (clearStack) {\n this._lastRenderIndex = -1;\n }\n\n const renderStats: RenderStats[] = [];\n\n for (const viewport of viewports) {\n const view = views && views[viewport.id];\n\n // Update context to point to this viewport\n onViewportActive?.(viewport);\n\n const drawLayerParams = this._getDrawLayerParams(viewport, options);\n\n // render this viewport\n const subViewports = viewport.subViewports || [viewport];\n for (const subViewport of subViewports) {\n const stats = this._drawLayersInViewport(\n gl,\n {\n target,\n moduleParameters,\n viewport: subViewport,\n view,\n pass: options.pass,\n layers: options.layers\n },\n drawLayerParams\n );\n renderStats.push(stats);\n }\n }\n return renderStats;\n }\n\n // When a viewport contains multiple subviewports (e.g. repeated web mercator map),\n // this is only done once for the parent viewport\n /* Resolve the parameters needed to draw each layer */\n protected _getDrawLayerParams(\n viewport: Viewport,\n {\n layers,\n pass,\n isPicking = false,\n layerFilter,\n cullRect,\n effects,\n moduleParameters\n }: LayersPassRenderOptions,\n /** Internal flag, true if only used to determine whether each layer should be drawn */\n evaluateShouldDrawOnly: boolean = false\n ): DrawLayerParameters[] {\n const drawLayerParams: DrawLayerParameters[] = [];\n const indexResolver = layerIndexResolver(this._lastRenderIndex + 1);\n const drawContext: FilterContext = {\n layer: layers[0],\n viewport,\n isPicking,\n renderPass: pass,\n cullRect\n };\n const layerFilterCache = {};\n for (let layerIndex = 0; layerIndex < layers.length; layerIndex++) {\n const layer = layers[layerIndex];\n // Check if we should draw layer\n const shouldDrawLayer = this._shouldDrawLayer(\n layer,\n drawContext,\n layerFilter,\n layerFilterCache\n );\n\n const layerParam: DrawLayerParameters = {\n shouldDrawLayer\n };\n\n if (shouldDrawLayer && !evaluateShouldDrawOnly) {\n // This is the \"logical\" index for ordering this layer in the stack\n // used to calculate polygon offsets\n // It can be the same as another layer\n layerParam.layerRenderIndex = indexResolver(layer, shouldDrawLayer);\n\n layerParam.moduleParameters = this._getModuleParameters(\n layer,\n effects,\n pass,\n moduleParameters\n );\n layerParam.layerParameters = this.getLayerParameters(layer, layerIndex, viewport);\n }\n drawLayerParams[layerIndex] = layerParam;\n }\n return drawLayerParams;\n }\n\n // Draws a list of layers in one viewport\n // TODO - when picking we could completely skip rendering viewports that dont\n // intersect with the picking rect\n /* eslint-disable max-depth, max-statements */\n private _drawLayersInViewport(\n gl,\n {layers, moduleParameters: globalModuleParameters, pass, target, viewport, view},\n drawLayerParams\n ): RenderStats {\n const glViewport = getGLViewport(gl, {\n moduleParameters: globalModuleParameters,\n target,\n viewport\n });\n\n if (view && view.props.clear) {\n const clearOpts = view.props.clear === true ? {color: true, depth: true} : view.props.clear;\n withParameters(\n gl,\n {\n scissorTest: true,\n scissor: glViewport\n },\n () => clear(gl, clearOpts)\n );\n }\n\n // render layers in normal colors\n const renderStatus = {\n totalCount: layers.length,\n visibleCount: 0,\n compositeCount: 0,\n pickableCount: 0\n };\n\n setParameters(gl, {viewport: glViewport});\n\n // render layers in normal colors\n for (let layerIndex = 0; layerIndex < layers.length; layerIndex++) {\n const layer = layers[layerIndex];\n const {shouldDrawLayer, layerRenderIndex, moduleParameters, layerParameters} =\n drawLayerParams[layerIndex];\n\n // Calculate stats\n if (shouldDrawLayer && layer.props.pickable) {\n renderStatus.pickableCount++;\n }\n if (layer.isComposite) {\n renderStatus.compositeCount++;\n } else if (shouldDrawLayer) {\n // Draw the layer\n renderStatus.visibleCount++;\n\n this._lastRenderIndex = Math.max(this._lastRenderIndex, layerRenderIndex);\n\n // overwrite layer.context.viewport with the sub viewport\n moduleParameters.viewport = viewport;\n\n try {\n layer._drawLayer({\n moduleParameters,\n uniforms: {layerIndex: layerRenderIndex},\n parameters: layerParameters\n });\n } catch (err) {\n layer.raiseError(err, `drawing ${layer} to ${pass}`);\n }\n }\n }\n\n return renderStatus;\n }\n /* eslint-enable max-depth, max-statements */\n\n /* Methods for subclass overrides */\n shouldDrawLayer(layer: Layer): boolean {\n return true;\n }\n\n protected getModuleParameters(layer: Layer, effects?: Effect[]): any {\n return null;\n }\n\n protected getLayerParameters(layer: Layer, layerIndex: number, viewport: Viewport): any {\n return layer.props.parameters;\n }\n\n /* Private */\n private _shouldDrawLayer(\n layer: Layer,\n drawContext: FilterContext,\n layerFilter: ((params: FilterContext) => boolean) | undefined | null,\n layerFilterCache: Record\n ) {\n const shouldDrawLayer = layer.props.visible && this.shouldDrawLayer(layer);\n\n if (!shouldDrawLayer) {\n return false;\n }\n\n drawContext.layer = layer;\n\n let parent = layer.parent as Layer;\n while (parent) {\n // @ts-ignore\n if (!parent.props.visible || !parent.filterSubLayer(drawContext)) {\n return false;\n }\n drawContext.layer = parent;\n parent = parent.parent as Layer;\n }\n\n if (layerFilter) {\n const rootLayerId = drawContext.layer.id;\n if (!(rootLayerId in layerFilterCache)) {\n layerFilterCache[rootLayerId] = layerFilter(drawContext);\n }\n if (!layerFilterCache[rootLayerId]) {\n return false;\n }\n }\n\n // If a layer is drawn, update its viewportChanged flag\n layer.activateViewport(drawContext.viewport);\n\n return true;\n }\n\n private _getModuleParameters(\n layer: Layer,\n effects: Effect[] | undefined,\n pass: string,\n overrides: any\n ): any {\n const moduleParameters = Object.assign(\n Object.create(layer.internalState?.propsInTransition || layer.props),\n {\n autoWrapLongitude: layer.wrapLongitude,\n // @ts-ignore\n viewport: layer.context.viewport,\n // @ts-ignore\n mousePosition: layer.context.mousePosition,\n pickingActive: 0,\n devicePixelRatio: cssToDeviceRatio(this.gl)\n }\n );\n\n if (effects) {\n for (const effect of effects) {\n Object.assign(moduleParameters, effect.getModuleParameters?.(layer));\n }\n }\n\n return Object.assign(moduleParameters, this.getModuleParameters(layer, effects), overrides);\n }\n}\n\n// If the _index prop is defined, return a layer index that's relative to its parent\n// Otherwise return the index of the layer among all rendered layers\n// This is done recursively, i.e. if the user overrides a layer's default index,\n// all its descendants will be resolved relative to that index.\n// This implementation assumes that parent layers always appear before its children\n// which is true if the layer array comes from the LayerManager\nexport function layerIndexResolver(\n startIndex: number = 0,\n layerIndices: Record = {}\n): (layer: Layer, isDrawn: boolean) => number {\n const resolvers = {};\n\n const resolveLayerIndex = (layer, isDrawn) => {\n const indexOverride = layer.props._offset;\n const layerId = layer.id;\n const parentId = layer.parent && layer.parent.id;\n\n let index;\n\n if (parentId && !(parentId in layerIndices)) {\n // Populate layerIndices with the parent layer's index\n resolveLayerIndex(layer.parent, false);\n }\n\n if (parentId in resolvers) {\n const resolver = (resolvers[parentId] =\n resolvers[parentId] || layerIndexResolver(layerIndices[parentId], layerIndices));\n index = resolver(layer, isDrawn);\n resolvers[layerId] = resolver;\n } else if (Number.isFinite(indexOverride)) {\n index = indexOverride + (layerIndices[parentId] || 0);\n // Mark layer as needing its own resolver\n // We don't actually create it until it's used for the first time\n resolvers[layerId] = null;\n } else {\n index = startIndex;\n }\n\n if (isDrawn && index >= startIndex) {\n startIndex = index + 1;\n }\n\n layerIndices[layerId] = index;\n return index;\n };\n return resolveLayerIndex;\n}\n\n// Convert viewport top-left CSS coordinates to bottom up WebGL coordinates\nfunction getGLViewport(\n gl,\n {\n moduleParameters,\n target,\n viewport\n }: {\n moduleParameters: any;\n target?: Framebuffer;\n viewport: Viewport;\n }\n): [number, number, number, number] {\n const useTarget = target && target.id !== 'default-framebuffer';\n const pixelRatio =\n (moduleParameters && moduleParameters.devicePixelRatio) || cssToDeviceRatio(gl);\n\n // Default framebuffer is used when writing to canvas\n const height = useTarget ? target.height : gl.drawingBufferHeight;\n\n // Convert viewport top-left CSS coordinates to bottom up WebGL coordinates\n const dimensions = viewport;\n return [\n dimensions.x * pixelRatio,\n height - (dimensions.y + dimensions.height) * pixelRatio,\n dimensions.width * pixelRatio,\n dimensions.height * pixelRatio\n ];\n}\n\nfunction clearGLCanvas(gl: WebGLRenderingContext, targetFramebuffer?: Framebuffer) {\n const width = targetFramebuffer ? targetFramebuffer.width : gl.drawingBufferWidth;\n const height = targetFramebuffer ? targetFramebuffer.height : gl.drawingBufferHeight;\n // clear depth and color buffers, restoring transparency\n setParameters(gl, {viewport: [0, 0, width, height]});\n gl.clear(GL.COLOR_BUFFER_BIT | GL.DEPTH_BUFFER_BIT);\n}\n","import {default as LayersPass} from './layers-pass';\nimport {\n Framebuffer,\n Texture2D,\n Renderbuffer,\n withParameters,\n cssToDeviceRatio\n} from '@luma.gl/core';\n\nexport default class ShadowPass extends LayersPass {\n shadowMap: Texture2D;\n depthBuffer: Renderbuffer;\n fbo: Framebuffer;\n\n constructor(\n gl: WebGLRenderingContext,\n props?: {\n id;\n }\n ) {\n super(gl, props);\n\n // The shadowMap texture\n this.shadowMap = new Texture2D(gl, {\n width: 1,\n height: 1,\n parameters: {\n [gl.TEXTURE_MIN_FILTER]: gl.LINEAR,\n [gl.TEXTURE_MAG_FILTER]: gl.LINEAR,\n [gl.TEXTURE_WRAP_S]: gl.CLAMP_TO_EDGE,\n [gl.TEXTURE_WRAP_T]: gl.CLAMP_TO_EDGE\n }\n });\n\n this.depthBuffer = new Renderbuffer(gl, {\n format: gl.DEPTH_COMPONENT16,\n width: 1,\n height: 1\n });\n\n this.fbo = new Framebuffer(gl, {\n id: 'shadowmap',\n width: 1,\n height: 1,\n attachments: {\n [gl.COLOR_ATTACHMENT0]: this.shadowMap,\n // Depth attachment has to be specified for depth test to work\n [gl.DEPTH_ATTACHMENT]: this.depthBuffer\n }\n });\n }\n\n render(params) {\n const target = this.fbo;\n\n withParameters(\n this.gl,\n {\n depthRange: [0, 1],\n depthTest: true,\n blend: false,\n clearColor: [1, 1, 1, 1]\n },\n () => {\n const viewport = params.viewports[0];\n const pixelRatio = cssToDeviceRatio(this.gl);\n const width = viewport.width * pixelRatio;\n const height = viewport.height * pixelRatio;\n if (width !== target.width || height !== target.height) {\n target.resize({width, height});\n }\n\n super.render({...params, target, pass: 'shadow'});\n }\n );\n }\n\n shouldDrawLayer(layer) {\n return layer.props.shadowEnabled !== false;\n }\n\n getModuleParameters() {\n return {\n drawToShadowMap: true\n };\n }\n\n delete() {\n if (this.fbo) {\n this.fbo.delete();\n this.fbo = null;\n }\n\n if (this.shadowMap) {\n this.shadowMap.delete();\n this.shadowMap = null;\n }\n\n if (this.depthBuffer) {\n this.depthBuffer.delete();\n this.depthBuffer = null;\n }\n }\n}\n","// Copyright (c) 2015-2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {COORDINATE_SYSTEM, PROJECTION_MODE} from '../../lib/constants';\nimport project from '../project/project';\nimport {Vector3, Matrix4} from '@math.gl/core';\nimport memoize from '../../utils/memoize';\nimport {pixelsToWorld} from '@math.gl/web-mercator';\n\nimport type {Texture2D} from '@luma.gl/webgl';\nimport type {ShaderModule, NumericArray} from '../../types/types';\nimport type Viewport from '../../viewports/viewport';\nimport type {ProjectUniforms} from '../project/viewport-uniforms';\n\nconst vs = `\nconst int max_lights = 2;\nuniform mat4 shadow_uViewProjectionMatrices[max_lights];\nuniform vec4 shadow_uProjectCenters[max_lights];\nuniform bool shadow_uDrawShadowMap;\nuniform bool shadow_uUseShadowMap;\nuniform int shadow_uLightId;\nuniform float shadow_uLightCount;\n\nvarying vec3 shadow_vPosition[max_lights];\n\nvec4 shadow_setVertexPosition(vec4 position_commonspace) {\n if (shadow_uDrawShadowMap) {\n return project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[shadow_uLightId], shadow_uProjectCenters[shadow_uLightId]);\n }\n if (shadow_uUseShadowMap) {\n for (int i = 0; i < max_lights; i++) {\n if(i < int(shadow_uLightCount)) {\n vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[i], shadow_uProjectCenters[i]);\n shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0;\n }\n }\n }\n return gl_Position;\n}\n`;\n\nconst fs = `\nconst int max_lights = 2;\nuniform bool shadow_uDrawShadowMap;\nuniform bool shadow_uUseShadowMap;\nuniform sampler2D shadow_uShadowMap0;\nuniform sampler2D shadow_uShadowMap1;\nuniform vec4 shadow_uColor;\nuniform float shadow_uLightCount;\n\nvarying vec3 shadow_vPosition[max_lights];\n\nconst vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0);\nconst vec4 bitUnpackShift = 1.0 / bitPackShift;\nconst vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n\nfloat shadow_getShadowWeight(vec3 position, sampler2D shadowMap) {\n vec4 rgbaDepth = texture2D(shadowMap, position.xy);\n\n float z = dot(rgbaDepth, bitUnpackShift);\n return smoothstep(0.001, 0.01, position.z - z);\n}\n\nvec4 shadow_filterShadowColor(vec4 color) {\n if (shadow_uDrawShadowMap) {\n vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift);\n rgbaDepth -= rgbaDepth.gbaa * bitMask;\n return rgbaDepth;\n }\n if (shadow_uUseShadowMap) {\n float shadowAlpha = 0.0;\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0);\n if(shadow_uLightCount > 1.0) {\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1);\n }\n shadowAlpha *= shadow_uColor.a / shadow_uLightCount;\n float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha);\n\n return vec4(\n mix(color.rgb, shadow_uColor.rgb, shadowAlpha / blendedAlpha),\n blendedAlpha\n );\n }\n return color;\n}\n`;\n\nconst getMemoizedViewportCenterPosition = memoize(getViewportCenterPosition);\nconst getMemoizedViewProjectionMatrices = memoize(getViewProjectionMatrices);\n\nconst DEFAULT_SHADOW_COLOR = [0, 0, 0, 1.0];\nconst VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];\n\ntype ShadowModuleSettings = {\n viewport: Viewport;\n shadowEnabled?: boolean;\n drawToShadowMap?: boolean;\n shadowMaps?: Texture2D[];\n dummyShadowMap?: Texture2D;\n shadowColor?: number[];\n shadowMatrices?: Matrix4[];\n shadowLightId?: number;\n};\n\nfunction screenToCommonSpace(xyz: number[], pixelUnprojectionMatrix: number[]): number[] {\n const [x, y, z] = xyz;\n const coord = pixelsToWorld([x, y, z], pixelUnprojectionMatrix);\n\n if (Number.isFinite(z)) {\n return coord;\n }\n return [coord[0], coord[1], 0];\n}\n\nfunction getViewportCenterPosition({\n viewport,\n center\n}: {\n viewport: Viewport;\n center: NumericArray;\n}): NumericArray {\n return new Matrix4(viewport.viewProjectionMatrix).invert().transform(center);\n}\n\nfunction getViewProjectionMatrices({\n viewport,\n shadowMatrices\n}: {\n viewport: Viewport;\n shadowMatrices: Matrix4[];\n}): Matrix4[] {\n const projectionMatrices: Matrix4[] = [];\n const pixelUnprojectionMatrix = viewport.pixelUnprojectionMatrix;\n const farZ = viewport.isGeospatial ? undefined : 1;\n const corners = [\n [0, 0, farZ], // top left ground\n [viewport.width, 0, farZ], // top right ground\n [0, viewport.height, farZ], // bottom left ground\n [viewport.width, viewport.height, farZ], // bottom right ground\n [0, 0, -1], // top left near\n [viewport.width, 0, -1], // top right near\n [0, viewport.height, -1], // bottom left near\n [viewport.width, viewport.height, -1] // bottom right near\n ].map(pixel =>\n // @ts-expect-error z may be undefined\n screenToCommonSpace(pixel, pixelUnprojectionMatrix)\n );\n\n for (const shadowMatrix of shadowMatrices) {\n const viewMatrix = shadowMatrix.clone().translate(new Vector3(viewport.center).negate());\n const positions = corners.map(corner => viewMatrix.transform(corner));\n const projectionMatrix = new Matrix4().ortho({\n left: Math.min(...positions.map(position => position[0])),\n right: Math.max(...positions.map(position => position[0])),\n bottom: Math.min(...positions.map(position => position[1])),\n top: Math.max(...positions.map(position => position[1])),\n near: Math.min(...positions.map(position => -position[2])),\n far: Math.max(...positions.map(position => -position[2]))\n });\n projectionMatrices.push(projectionMatrix.multiplyRight(shadowMatrix));\n }\n return projectionMatrices;\n}\n\n/* eslint-disable camelcase */\n\n// eslint-disable-next-line complexity\nfunction createShadowUniforms(\n opts: ShadowModuleSettings,\n context: ProjectUniforms\n): Record {\n const {shadowEnabled = true} = opts;\n if (!shadowEnabled || !opts.shadowMatrices || !opts.shadowMatrices.length) {\n return {\n shadow_uDrawShadowMap: false,\n shadow_uUseShadowMap: false\n };\n }\n const uniforms = {\n shadow_uDrawShadowMap: Boolean(opts.drawToShadowMap),\n shadow_uUseShadowMap: opts.shadowMaps ? opts.shadowMaps.length > 0 : false,\n shadow_uColor: opts.shadowColor || DEFAULT_SHADOW_COLOR,\n shadow_uLightId: opts.shadowLightId || 0,\n shadow_uLightCount: opts.shadowMatrices.length\n };\n\n const center = getMemoizedViewportCenterPosition({\n viewport: opts.viewport,\n center: context.project_uCenter\n });\n\n const projectCenters: NumericArray[] = [];\n const viewProjectionMatrices = getMemoizedViewProjectionMatrices({\n shadowMatrices: opts.shadowMatrices,\n viewport: opts.viewport\n }).slice();\n\n for (let i = 0; i < opts.shadowMatrices.length; i++) {\n const viewProjectionMatrix = viewProjectionMatrices[i];\n const viewProjectionMatrixCentered = viewProjectionMatrix\n .clone()\n .translate(new Vector3(opts.viewport.center).negate());\n\n if (\n context.project_uCoordinateSystem === COORDINATE_SYSTEM.LNGLAT &&\n context.project_uProjectionMode === PROJECTION_MODE.WEB_MERCATOR\n ) {\n viewProjectionMatrices[i] = viewProjectionMatrixCentered;\n projectCenters[i] = center;\n } else {\n viewProjectionMatrices[i] = viewProjectionMatrix\n .clone()\n .multiplyRight(VECTOR_TO_POINT_MATRIX);\n projectCenters[i] = viewProjectionMatrixCentered.transform(center);\n }\n }\n\n for (let i = 0; i < viewProjectionMatrices.length; i++) {\n uniforms[`shadow_uViewProjectionMatrices[${i}]`] = viewProjectionMatrices[i];\n uniforms[`shadow_uProjectCenters[${i}]`] = projectCenters[i];\n\n if (opts.shadowMaps && opts.shadowMaps.length > 0) {\n uniforms[`shadow_uShadowMap${i}`] = opts.shadowMaps[i];\n } else {\n uniforms[`shadow_uShadowMap${i}`] = opts.dummyShadowMap;\n }\n }\n return uniforms;\n}\n\nexport default {\n name: 'shadow',\n dependencies: [project],\n vs,\n fs,\n inject: {\n 'vs:DECKGL_FILTER_GL_POSITION': `\n position = shadow_setVertexPosition(geometry.position);\n `,\n 'fs:DECKGL_FILTER_COLOR': `\n color = shadow_filterShadowColor(color);\n `\n },\n getUniforms: (opts = {}, context = {}) => {\n if (\n 'viewport' in opts &&\n (opts.drawToShadowMap || (opts.shadowMaps && opts.shadowMaps.length > 0))\n ) {\n // @ts-expect-error if opts.viewport is defined, context should contain the project module's uniforms\n return createShadowUniforms(opts, context);\n }\n return {};\n }\n} as ShaderModule;\n","import {Texture2D, ProgramManager} from '@luma.gl/core';\nimport {AmbientLight} from './ambient-light';\nimport {DirectionalLight} from './directional-light';\nimport {PointLight} from './point-light';\nimport {Matrix4, Vector3} from '@math.gl/core';\nimport ShadowPass from '../../passes/shadow-pass';\nimport shadow from '../../shaderlib/shadow/shadow';\n\nimport type Layer from '../../lib/layer';\nimport type {Effect, PreRenderOptions} from '../../lib/effect';\n\nconst DEFAULT_AMBIENT_LIGHT_PROPS = {color: [255, 255, 255], intensity: 1.0};\nconst DEFAULT_DIRECTIONAL_LIGHT_PROPS = [\n {\n color: [255, 255, 255],\n intensity: 1.0,\n direction: [-1, 3, -1]\n },\n {\n color: [255, 255, 255],\n intensity: 0.9,\n direction: [1, -8, -2.5]\n }\n];\nconst DEFAULT_SHADOW_COLOR = [0, 0, 0, 200 / 255];\n\ntype LightingEffectProps = Record;\n\n// Class to manage ambient, point and directional light sources in deck\nexport default class LightingEffect implements Effect {\n id = 'lighting-effect';\n props!: LightingEffectProps;\n shadowColor: number[] = DEFAULT_SHADOW_COLOR;\n\n private shadow!: boolean;\n private ambientLight!: AmbientLight | null;\n private directionalLights!: DirectionalLight[];\n private pointLights!: PointLight[];\n private shadowPasses: ShadowPass[] = [];\n private shadowMaps: Texture2D[] = [];\n private dummyShadowMap: Texture2D | null = null;\n private programManager?: ProgramManager;\n private shadowMatrices?: Matrix4[];\n\n constructor(props: LightingEffectProps = {}) {\n this.setProps(props);\n }\n\n setProps(props: LightingEffectProps) {\n this.ambientLight = null;\n this.directionalLights = [];\n this.pointLights = [];\n\n for (const key in props) {\n const lightSource = props[key];\n\n switch (lightSource.type) {\n case 'ambient':\n this.ambientLight = lightSource;\n break;\n\n case 'directional':\n this.directionalLights.push(lightSource as DirectionalLight);\n break;\n\n case 'point':\n this.pointLights.push(lightSource as PointLight);\n break;\n default:\n }\n }\n this._applyDefaultLights();\n\n this.shadow = this.directionalLights.some(light => light.shadow);\n this.props = props;\n }\n\n preRender(\n gl: WebGLRenderingContext,\n {layers, layerFilter, viewports, onViewportActive, views}: PreRenderOptions\n ) {\n if (!this.shadow) return;\n\n // create light matrix every frame to make sure always updated from light source\n this.shadowMatrices = this._calculateMatrices();\n\n if (this.shadowPasses.length === 0) {\n this._createShadowPasses(gl);\n }\n if (!this.programManager) {\n // TODO - support multiple contexts\n this.programManager = ProgramManager.getDefaultProgramManager(gl);\n if (shadow) {\n this.programManager.addDefaultModule(shadow);\n }\n }\n\n if (!this.dummyShadowMap) {\n this.dummyShadowMap = new Texture2D(gl, {\n width: 1,\n height: 1\n });\n }\n\n for (let i = 0; i < this.shadowPasses.length; i++) {\n const shadowPass = this.shadowPasses[i];\n shadowPass.render({\n layers,\n layerFilter,\n viewports,\n onViewportActive,\n views,\n moduleParameters: {\n shadowLightId: i,\n dummyShadowMap: this.dummyShadowMap,\n shadowMatrices: this.shadowMatrices\n }\n });\n }\n }\n\n getModuleParameters(layer: Layer) {\n const parameters: {\n lightSources?: {\n ambientLight: AmbientLight | null;\n directionalLights: DirectionalLight[];\n pointLights: PointLight[];\n };\n shadowMaps?: Texture2D[];\n dummyShadowMap?: Texture2D;\n shadowColor?: number[];\n shadowMatrices?: Matrix4[];\n } = this.shadow\n ? {\n shadowMaps: this.shadowMaps,\n dummyShadowMap: this.dummyShadowMap,\n shadowColor: this.shadowColor,\n shadowMatrices: this.shadowMatrices\n }\n : {};\n\n // when not rendering to screen, turn off lighting by adding empty light source object\n // lights shader module relies on the `lightSources` to turn on/off lighting\n parameters.lightSources = {\n ambientLight: this.ambientLight,\n directionalLights: this.directionalLights.map(directionalLight =>\n directionalLight.getProjectedLight({layer})\n ),\n pointLights: this.pointLights.map(pointLight => pointLight.getProjectedLight({layer}))\n };\n\n return parameters;\n }\n\n cleanup(): void {\n for (const shadowPass of this.shadowPasses) {\n shadowPass.delete();\n }\n this.shadowPasses.length = 0;\n this.shadowMaps.length = 0;\n\n if (this.dummyShadowMap) {\n this.dummyShadowMap.delete();\n this.dummyShadowMap = null;\n }\n\n if (this.shadow && this.programManager) {\n this.programManager.removeDefaultModule(shadow);\n this.programManager = null;\n }\n }\n\n private _calculateMatrices(): Matrix4[] {\n const lightMatrices: Matrix4[] = [];\n for (const light of this.directionalLights) {\n const viewMatrix = new Matrix4().lookAt({\n eye: new Vector3(light.direction).negate()\n });\n\n lightMatrices.push(viewMatrix);\n }\n return lightMatrices;\n }\n\n private _createShadowPasses(gl: WebGLRenderingContext): void {\n for (let i = 0; i < this.directionalLights.length; i++) {\n const shadowPass = new ShadowPass(gl);\n this.shadowPasses[i] = shadowPass;\n this.shadowMaps[i] = shadowPass.shadowMap;\n }\n }\n\n private _applyDefaultLights(): void {\n const {ambientLight, pointLights, directionalLights} = this;\n if (!ambientLight && pointLights.length === 0 && directionalLights.length === 0) {\n this.ambientLight = new AmbientLight(DEFAULT_AMBIENT_LIGHT_PROPS);\n this.directionalLights.push(\n new DirectionalLight(DEFAULT_DIRECTIONAL_LIGHT_PROPS[0]),\n new DirectionalLight(DEFAULT_DIRECTIONAL_LIGHT_PROPS[1])\n );\n }\n }\n}\n","import {deepEqual} from '../utils/deep-equal';\nimport LightingEffect from '../effects/lighting/lighting-effect';\nimport type {Effect} from './effect';\n\nconst DEFAULT_LIGHTING_EFFECT = new LightingEffect();\n\n/** Sort two effects. Returns 0 if equal, negative if e1 < e2, positive if e1 > e2 */\nfunction compareEffects(e1: Effect, e2: Effect): number {\n const o1 = e1.order ?? Infinity;\n const o2 = e2.order ?? Infinity;\n return o1 - o2;\n}\n\nexport default class EffectManager {\n effects: Effect[];\n private _resolvedEffects: Effect[] = [];\n /** Effect instances and order preference pairs, sorted by order */\n private _defaultEffects: Effect[] = [];\n private _needsRedraw: false | string;\n\n constructor() {\n this.effects = [];\n this._needsRedraw = 'Initial render';\n this._setEffects([]);\n }\n\n /**\n * Register a new default effect, i.e. an effect presents regardless of user supplied props.effects\n */\n addDefaultEffect(effect: Effect) {\n const defaultEffects = this._defaultEffects;\n if (!defaultEffects.find(e => e.id === effect.id)) {\n const index = defaultEffects.findIndex(e => compareEffects(e, effect) > 0);\n if (index < 0) {\n defaultEffects.push(effect);\n } else {\n defaultEffects.splice(index, 0, effect);\n }\n this._setEffects(this.effects);\n }\n }\n\n setProps(props) {\n if ('effects' in props) {\n // Compare effects against each other shallowly\n if (!deepEqual(props.effects, this.effects, 1)) {\n this._setEffects(props.effects);\n }\n }\n }\n\n needsRedraw(opts = {clearRedrawFlags: false}): false | string {\n const redraw = this._needsRedraw;\n if (opts.clearRedrawFlags) {\n this._needsRedraw = false;\n }\n return redraw;\n }\n\n getEffects() {\n return this._resolvedEffects;\n }\n\n private _setEffects(effects: Effect[]) {\n const oldEffectsMap: Record = {};\n for (const effect of this.effects) {\n oldEffectsMap[effect.id] = effect;\n }\n\n const nextEffects: Effect[] = [];\n for (const effect of effects) {\n const oldEffect = oldEffectsMap[effect.id];\n if (oldEffect && oldEffect !== effect) {\n if (oldEffect.setProps) {\n oldEffect.setProps(effect.props);\n nextEffects.push(oldEffect);\n } else {\n oldEffect.cleanup();\n nextEffects.push(effect);\n }\n } else {\n nextEffects.push(effect);\n }\n delete oldEffectsMap[effect.id];\n }\n for (const removedEffectId in oldEffectsMap) {\n oldEffectsMap[removedEffectId].cleanup();\n }\n this.effects = nextEffects;\n\n this._resolvedEffects = nextEffects.concat(this._defaultEffects);\n // Special case for lighting: only add default instance if no LightingEffect is specified\n if (!effects.some(effect => effect instanceof LightingEffect)) {\n this._resolvedEffects.push(DEFAULT_LIGHTING_EFFECT);\n }\n this._needsRedraw = 'effects changed';\n }\n\n finalize() {\n for (const effect of this._resolvedEffects) {\n effect.cleanup();\n }\n\n this.effects.length = 0;\n this._resolvedEffects.length = 0;\n this._defaultEffects.length = 0;\n }\n}\n","import LayersPass from './layers-pass';\n\nexport default class DrawLayersPass extends LayersPass {\n shouldDrawLayer(layer) {\n const {operation} = layer.props;\n return operation.includes('draw') || operation.includes('terrain');\n }\n}\n","import LayersPass, {LayersPassRenderOptions, RenderStats, Rect} from './layers-pass';\nimport {withParameters} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\nimport log from '../utils/log';\n\nimport type {Framebuffer} from '@luma.gl/core';\nimport type Viewport from '../viewports/viewport';\nimport type Layer from '../lib/layer';\n\nconst PICKING_PARAMETERS = {\n blendFunc: [GL.ONE, GL.ZERO, GL.CONSTANT_ALPHA, GL.ZERO],\n blendEquation: GL.FUNC_ADD\n};\n\ntype PickLayersPassRenderOptions = LayersPassRenderOptions & {\n pickingFBO: Framebuffer;\n deviceRect: Rect;\n pickZ: boolean;\n};\n\ntype EncodedPickingColors = {\n a: number;\n layer: Layer;\n viewports: Viewport[];\n};\n\nexport type PickingColorDecoder = (pickedColor: number[] | Uint8Array) =>\n | {\n pickedLayer: Layer;\n pickedViewports: Viewport[];\n pickedObjectIndex: number;\n }\n | undefined;\n\nexport default class PickLayersPass extends LayersPass {\n private pickZ?: boolean;\n private _colorEncoderState: {\n byLayer: Map;\n byAlpha: EncodedPickingColors[];\n } | null = null;\n\n render(props: LayersPassRenderOptions | PickLayersPassRenderOptions) {\n if ('pickingFBO' in props) {\n // When drawing into an off-screen buffer, use the alpha channel to encode layer index\n return this._drawPickingBuffer(props);\n }\n // When drawing to screen (debug mode), do not use the alpha channel so that result is always visible\n return super.render(props);\n }\n\n // Private\n // Draws list of layers and viewports into the picking buffer\n // Note: does not sample the buffer, that has to be done by the caller\n _drawPickingBuffer({\n layers,\n layerFilter,\n views,\n viewports,\n onViewportActive,\n pickingFBO,\n deviceRect: {x, y, width, height},\n cullRect,\n effects,\n pass = 'picking',\n pickZ,\n moduleParameters\n }: PickLayersPassRenderOptions): {\n decodePickingColor: PickingColorDecoder | null;\n stats: RenderStats;\n } {\n const gl = this.gl;\n this.pickZ = pickZ;\n const colorEncoderState = this._resetColorEncoder(pickZ);\n\n // Make sure we clear scissor test and fbo bindings in case of exceptions\n // We are only interested in one pixel, no need to render anything else\n // Note that the callback here is called synchronously.\n // Set blend mode for picking\n // always overwrite existing pixel with [r,g,b,layerIndex]\n const renderStatus = withParameters(\n gl,\n {\n scissorTest: true,\n scissor: [x, y, width, height],\n clearColor: [0, 0, 0, 0],\n // When used as Mapbox custom layer, the context state may be dirty\n // TODO - Remove when mapbox fixes this issue\n // https://github.com/mapbox/mapbox-gl-js/issues/7801\n depthMask: true,\n depthTest: true,\n depthRange: [0, 1],\n colorMask: [true, true, true, true],\n // Blending\n ...PICKING_PARAMETERS,\n blend: !pickZ\n },\n () =>\n super.render({\n target: pickingFBO,\n layers,\n layerFilter,\n views,\n viewports,\n onViewportActive,\n cullRect,\n effects: effects?.filter(e => e.useInPicking),\n pass,\n isPicking: true,\n moduleParameters\n })\n );\n\n // Clear the temp field\n this._colorEncoderState = null;\n const decodePickingColor = colorEncoderState && decodeColor.bind(null, colorEncoderState);\n return {decodePickingColor, stats: renderStatus};\n }\n\n shouldDrawLayer(layer: Layer): boolean {\n const {pickable, operation} = layer.props;\n return (pickable && operation.includes('draw')) || operation.includes('terrain');\n }\n\n protected getModuleParameters() {\n return {\n pickingActive: 1,\n pickingAttribute: this.pickZ,\n // turn off lighting by adding empty light source object\n // lights shader module relies on the `lightSources` to turn on/off lighting\n lightSources: {}\n };\n }\n\n protected getLayerParameters(layer: Layer, layerIndex: number, viewport: Viewport): any {\n const pickParameters = {...layer.props.parameters};\n const {pickable, operation} = layer.props;\n\n if (!this._colorEncoderState) {\n pickParameters.blend = false;\n } else if (pickable && operation.includes('draw')) {\n Object.assign(pickParameters, PICKING_PARAMETERS);\n pickParameters.blend = true;\n pickParameters.blendColor = encodeColor(this._colorEncoderState, layer, viewport);\n }\n if (operation.includes('terrain')) {\n pickParameters.blend = false;\n }\n\n return pickParameters;\n }\n\n protected _resetColorEncoder(pickZ: boolean) {\n // Track encoded layer indices\n this._colorEncoderState = pickZ\n ? null\n : {\n byLayer: new Map(),\n byAlpha: []\n };\n // Temporarily store it on the instance so that it can be accessed by this.getLayerParameters\n return this._colorEncoderState;\n }\n}\n\n// Assign an unique alpha value for each pickable layer and track the encoding in the cache object\n// Returns normalized blend color\nfunction encodeColor(\n encoded: {\n byLayer: Map;\n byAlpha: EncodedPickingColors[];\n },\n layer: Layer,\n viewport: Viewport\n): number[] {\n const {byLayer, byAlpha} = encoded;\n let a;\n\n // Encode layerIndex in the alpha channel\n // TODO - combine small layers to better utilize the picking color space\n let entry = byLayer.get(layer);\n if (entry) {\n entry.viewports.push(viewport);\n a = entry.a;\n } else {\n a = byLayer.size + 1;\n if (a <= 255) {\n entry = {a, layer, viewports: [viewport]};\n byLayer.set(layer, entry);\n byAlpha[a] = entry;\n } else {\n log.warn('Too many pickable layers, only picking the first 255')();\n a = 0;\n }\n }\n return [0, 0, 0, a / 255];\n}\n\n// Given a picked color, retrieve the corresponding layer and viewports from cache\nfunction decodeColor(\n encoded: {\n byLayer: Map;\n byAlpha: EncodedPickingColors[];\n },\n pickedColor: number[] | Uint8Array\n):\n | {\n pickedLayer: Layer;\n pickedViewports: Viewport[];\n pickedObjectIndex: number;\n }\n | undefined {\n const entry = encoded.byAlpha[pickedColor[3]];\n return (\n entry && {\n pickedLayer: entry.layer,\n pickedViewports: entry.viewports,\n pickedObjectIndex: entry.layer.decodePickingColor(pickedColor)\n }\n );\n}\n","import debug from '../debug';\nimport DrawLayersPass from '../passes/draw-layers-pass';\nimport PickLayersPass from '../passes/pick-layers-pass';\nimport {Framebuffer} from '@luma.gl/core';\n\nimport type Layer from './layer';\nimport type Viewport from '../viewports/viewport';\nimport type View from '../views/view';\nimport type {Effect} from './effect';\nimport type {LayersPassRenderOptions, FilterContext} from '../passes/layers-pass';\n\nconst TRACE_RENDER_LAYERS = 'deckRenderer.renderLayers';\n\ntype LayerFilter = ((context: FilterContext) => boolean) | null;\n\nexport default class DeckRenderer {\n gl: WebGLRenderingContext;\n layerFilter: LayerFilter;\n drawPickingColors: boolean;\n drawLayersPass: DrawLayersPass;\n pickLayersPass: PickLayersPass;\n\n private renderCount: number;\n private _needsRedraw: string | false;\n private renderBuffers: Framebuffer[];\n private lastPostProcessEffect: string | null;\n\n constructor(gl: WebGLRenderingContext) {\n this.gl = gl;\n this.layerFilter = null;\n this.drawPickingColors = false;\n this.drawLayersPass = new DrawLayersPass(gl);\n this.pickLayersPass = new PickLayersPass(gl);\n this.renderCount = 0;\n this._needsRedraw = 'Initial render';\n this.renderBuffers = [];\n this.lastPostProcessEffect = null;\n }\n\n setProps(props: {layerFilter: LayerFilter; drawPickingColors: boolean}) {\n if (this.layerFilter !== props.layerFilter) {\n this.layerFilter = props.layerFilter;\n this._needsRedraw = 'layerFilter changed';\n }\n\n if (this.drawPickingColors !== props.drawPickingColors) {\n this.drawPickingColors = props.drawPickingColors;\n this._needsRedraw = 'drawPickingColors changed';\n }\n }\n\n renderLayers(opts: {\n pass: string;\n layers: Layer[];\n viewports: Viewport[];\n views: {[viewId: string]: View};\n onViewportActive: (viewport: Viewport) => void;\n effects: Effect[];\n target?: Framebuffer;\n layerFilter?: LayerFilter;\n clearStack?: boolean;\n clearCanvas?: boolean;\n }) {\n const layerPass = this.drawPickingColors ? this.pickLayersPass : this.drawLayersPass;\n\n const renderOpts: LayersPassRenderOptions = {\n layerFilter: this.layerFilter,\n isPicking: this.drawPickingColors,\n ...opts,\n target: opts.target || Framebuffer.getDefaultFramebuffer(this.gl)\n };\n\n if (renderOpts.effects) {\n this._preRender(renderOpts.effects, renderOpts);\n }\n\n const outputBuffer = this.lastPostProcessEffect ? this.renderBuffers[0] : renderOpts.target;\n const renderStats = layerPass.render({...renderOpts, target: outputBuffer});\n\n if (renderOpts.effects) {\n this._postRender(renderOpts.effects, renderOpts);\n }\n\n this.renderCount++;\n\n debug(TRACE_RENDER_LAYERS, this, renderStats, opts);\n }\n\n needsRedraw(opts: {clearRedrawFlags: boolean} = {clearRedrawFlags: false}): string | false {\n const redraw = this._needsRedraw;\n if (opts.clearRedrawFlags) {\n this._needsRedraw = false;\n }\n return redraw;\n }\n\n finalize() {\n const {renderBuffers} = this;\n for (const buffer of renderBuffers) {\n buffer.delete();\n }\n renderBuffers.length = 0;\n }\n\n private _preRender(effects: Effect[], opts: LayersPassRenderOptions) {\n this.lastPostProcessEffect = null;\n opts.preRenderStats = opts.preRenderStats || {};\n\n for (const effect of effects) {\n opts.preRenderStats[effect.id] = effect.preRender(this.gl, opts);\n if (effect.postRender) {\n this.lastPostProcessEffect = effect.id;\n }\n }\n\n if (this.lastPostProcessEffect) {\n this._resizeRenderBuffers();\n }\n }\n\n private _resizeRenderBuffers() {\n const {renderBuffers} = this;\n if (renderBuffers.length === 0) {\n renderBuffers.push(new Framebuffer(this.gl), new Framebuffer(this.gl));\n }\n for (const buffer of renderBuffers) {\n buffer.resize();\n }\n }\n\n private _postRender(effects: Effect[], opts: LayersPassRenderOptions) {\n const {renderBuffers} = this;\n const params = {\n ...opts,\n inputBuffer: renderBuffers[0],\n swapBuffer: renderBuffers[1],\n target: null\n };\n for (const effect of effects) {\n if (effect.postRender) {\n if (effect.id === this.lastPostProcessEffect) {\n params.target = opts.target;\n effect.postRender(this.gl, params);\n break;\n }\n const buffer = effect.postRender(this.gl, params);\n params.inputBuffer = buffer;\n params.swapBuffer = buffer === renderBuffers[0] ? renderBuffers[1] : renderBuffers[0];\n }\n }\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport log from '../../utils/log';\nimport type Layer from '../layer';\nimport type Viewport from '../../viewports/viewport';\nimport type {PickingColorDecoder} from '../../passes/pick-layers-pass';\n\nexport type PickedPixel = {\n pickedColor: Uint8Array | null;\n pickedLayer?: Layer;\n pickedViewports?: Viewport[];\n pickedX?: number;\n pickedY?: number;\n pickedObjectIndex: number;\n};\n\nconst NO_PICKED_OBJECT = {\n pickedColor: null,\n pickedObjectIndex: -1\n};\n\n/* eslint-disable max-depth, max-statements */\n/**\n * Pick at a specified pixel with a tolerance radius\n * Returns the closest object to the pixel in shape `{pickedColor, pickedLayer, pickedObjectIndex}`\n */\nexport function getClosestObject({\n pickedColors,\n decodePickingColor,\n deviceX,\n deviceY,\n deviceRadius,\n deviceRect\n}: {\n pickedColors: Uint8Array;\n decodePickingColor: PickingColorDecoder;\n deviceX: number;\n deviceY: number;\n deviceRadius: number;\n deviceRect: {x: number; y: number; width: number; height: number};\n}): PickedPixel {\n // Traverse all pixels in picking results and find the one closest to the supplied\n // [deviceX, deviceY]\n const {x, y, width, height} = deviceRect;\n let minSquareDistanceToCenter = deviceRadius * deviceRadius;\n let closestPixelIndex = -1;\n let i = 0;\n\n for (let row = 0; row < height; row++) {\n const dy = row + y - deviceY;\n const dy2 = dy * dy;\n\n if (dy2 > minSquareDistanceToCenter) {\n // skip this row\n i += 4 * width;\n } else {\n for (let col = 0; col < width; col++) {\n // Decode picked layer from color\n const pickedLayerIndex = pickedColors[i + 3] - 1;\n\n if (pickedLayerIndex >= 0) {\n const dx = col + x - deviceX;\n const d2 = dx * dx + dy2;\n\n if (d2 <= minSquareDistanceToCenter) {\n minSquareDistanceToCenter = d2;\n closestPixelIndex = i;\n }\n }\n i += 4;\n }\n }\n }\n\n if (closestPixelIndex >= 0) {\n // Decode picked object index from color\n const pickedColor = pickedColors.slice(closestPixelIndex, closestPixelIndex + 4);\n const pickedObject = decodePickingColor(pickedColor);\n if (pickedObject) {\n const dy = Math.floor(closestPixelIndex / 4 / width);\n const dx = closestPixelIndex / 4 - dy * width;\n return {\n ...pickedObject,\n pickedColor,\n pickedX: x + dx,\n pickedY: y + dy\n };\n }\n log.error('Picked non-existent layer. Is picking buffer corrupt?')();\n }\n return NO_PICKED_OBJECT;\n}\n\n/**\n * Examines a picking buffer for unique colors\n * Returns array of unique objects in shape `{x, y, pickedColor, pickedLayer, pickedObjectIndex}`\n */\nexport function getUniqueObjects({\n pickedColors,\n decodePickingColor\n}: {\n pickedColors: Uint8Array;\n decodePickingColor: PickingColorDecoder;\n}): PickedPixel[] {\n const uniqueColors = new Map();\n\n // Traverse all pixels in picking results and get unique colors\n if (pickedColors) {\n for (let i = 0; i < pickedColors.length; i += 4) {\n // Decode picked layer from color\n const pickedLayerIndex = pickedColors[i + 3] - 1;\n\n if (pickedLayerIndex >= 0) {\n const pickedColor = pickedColors.slice(i, i + 4);\n const colorKey = pickedColor.join(',');\n // eslint-disable-next-line\n if (!uniqueColors.has(colorKey)) {\n const pickedObject = decodePickingColor(pickedColor);\n // eslint-disable-next-line\n if (pickedObject) {\n uniqueColors.set(colorKey, {\n ...pickedObject,\n color: pickedColor\n });\n } else {\n log.error('Picked non-existent layer. Is picking buffer corrupt?')();\n }\n }\n }\n }\n }\n\n return Array.from(uniqueColors.values());\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport type Layer from '../layer';\nimport type Viewport from '../../viewports/viewport';\nimport type {PickedPixel} from './query-object';\n\nexport interface PickingInfo {\n color: Uint8Array | null;\n layer: Layer | null;\n sourceLayer?: Layer | null;\n viewport?: Viewport;\n index: number;\n picked: boolean;\n object?: any;\n x: number;\n y: number;\n pixel?: [number, number];\n coordinate?: number[];\n devicePixel?: [number, number];\n pixelRatio: number;\n}\n\nexport interface GetPickingInfoParams {\n info: PickingInfo;\n mode: string;\n sourceLayer: Layer | null;\n}\n\n/** Generates some basic information of the picking action: x, y, coordinates etc.\n * Regardless if anything is picked\n */\nexport function getEmptyPickingInfo({\n pickInfo,\n viewports,\n pixelRatio,\n x,\n y,\n z\n}: {\n pickInfo?: PickedPixel;\n viewports: Viewport[];\n pixelRatio: number;\n x: number;\n y: number;\n z?: number;\n}): PickingInfo {\n // If more than one viewports are used in the picking pass, locate the viewport that\n // drew the picked pixel\n let pickedViewport = viewports[0];\n if (viewports.length > 1) {\n // Find the viewport that contain the picked pixel\n pickedViewport = getViewportFromCoordinates(pickInfo?.pickedViewports || viewports, {x, y});\n }\n let coordinate: number[] | undefined;\n if (pickedViewport) {\n const point = [x - pickedViewport.x, y - pickedViewport.y];\n if (z !== undefined) {\n point[2] = z;\n }\n coordinate = pickedViewport.unproject(point);\n }\n\n return {\n color: null,\n layer: null,\n viewport: pickedViewport,\n index: -1,\n picked: false,\n x,\n y,\n pixel: [x, y],\n coordinate,\n devicePixel:\n pickInfo && 'pickedX' in pickInfo\n ? [pickInfo.pickedX as number, pickInfo.pickedY as number]\n : undefined,\n pixelRatio\n };\n}\n\n/* eslint-disable max-depth */\n/** Generates the picking info of a picking operation */\nexport function processPickInfo(opts: {\n pickInfo: PickedPixel;\n lastPickedInfo: {\n index: number;\n layerId: string | null;\n info: PickingInfo | null;\n };\n mode: string;\n layers: Layer[];\n viewports: Viewport[];\n pixelRatio: number;\n x: number;\n y: number;\n z?: number;\n}): Map {\n const {pickInfo, lastPickedInfo, mode, layers} = opts;\n const {pickedColor, pickedLayer, pickedObjectIndex} = pickInfo;\n\n const affectedLayers = pickedLayer ? [pickedLayer] : [];\n\n if (mode === 'hover') {\n // only invoke onHover events if picked object has changed\n const lastPickedPixelIndex = lastPickedInfo.index;\n const lastPickedLayerId = lastPickedInfo.layerId;\n const pickedLayerId = pickedLayer ? pickedLayer.props.id : null;\n\n // proceed only if picked object changed\n if (pickedLayerId !== lastPickedLayerId || pickedObjectIndex !== lastPickedPixelIndex) {\n if (pickedLayerId !== lastPickedLayerId) {\n // We cannot store a ref to lastPickedLayer in the context because\n // the state of an outdated layer is no longer valid\n // and the props may have changed\n const lastPickedLayer = layers.find(layer => layer.props.id === lastPickedLayerId);\n if (lastPickedLayer) {\n // Let leave event fire before enter event\n affectedLayers.unshift(lastPickedLayer);\n }\n }\n\n // Update layer manager context\n lastPickedInfo.layerId = pickedLayerId;\n lastPickedInfo.index = pickedObjectIndex;\n lastPickedInfo.info = null;\n }\n }\n\n const baseInfo = getEmptyPickingInfo(opts);\n\n // Use a Map to store all picking infos.\n // The following two forEach loops are the result of\n // https://github.com/visgl/deck.gl/issues/443\n // Please be very careful when changing this pattern\n const infos = new Map();\n\n // Make sure infos always contain something even if no layer is affected\n infos.set(null, baseInfo);\n\n affectedLayers.forEach(layer => {\n let info = {...baseInfo};\n\n if (layer === pickedLayer) {\n info.color = pickedColor;\n info.index = pickedObjectIndex;\n info.picked = true;\n }\n\n info = getLayerPickingInfo({layer, info, mode});\n const rootLayer = info.layer as Layer;\n\n if (layer === pickedLayer && mode === 'hover') {\n lastPickedInfo.info = info;\n }\n\n // This guarantees that there will be only one copy of info for\n // one composite layer\n infos.set(rootLayer.id, info);\n\n if (mode === 'hover') {\n rootLayer.updateAutoHighlight(info);\n }\n });\n\n return infos;\n}\n\n/** Walk up the layer composite chain to populate the info object */\nexport function getLayerPickingInfo({\n layer,\n info,\n mode\n}: {\n layer: Layer;\n info: PickingInfo;\n mode: string;\n}): PickingInfo {\n while (layer && info) {\n // For a composite layer, sourceLayer will point to the sublayer\n // where the event originates from.\n // It provides additional context for the composite layer's\n // getPickingInfo() method to populate the info object\n const sourceLayer = info.layer || null;\n info.sourceLayer = sourceLayer;\n info.layer = layer;\n // layer.pickLayer() function requires a non-null ```layer.state```\n // object to function properly. So the layer referenced here\n // must be the \"current\" layer, not an \"out-dated\" / \"invalidated\" layer\n info = layer.getPickingInfo({info, mode, sourceLayer});\n layer = layer.parent as Layer;\n }\n return info;\n}\n\n/** Indentifies which viewport, if any corresponds to x and y\n If multiple viewports contain the target pixel, last viewport drawn is returend\n Returns first viewport if no match */\nfunction getViewportFromCoordinates(\n viewports: Viewport[],\n pixel: {x: number; y: number}\n): Viewport {\n // find the last viewport that contains the pixel\n for (let i = viewports.length - 1; i >= 0; i--) {\n const viewport = viewports[i];\n if (viewport.containsPixel(pixel)) {\n return viewport;\n }\n }\n return viewports[0];\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {\n Framebuffer,\n Texture2D,\n isWebGL2,\n readPixelsToArray,\n cssToDeviceRatio,\n cssToDevicePixels\n} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\nimport PickLayersPass, {PickingColorDecoder} from '../passes/pick-layers-pass';\nimport {getClosestObject, getUniqueObjects, PickedPixel} from './picking/query-object';\nimport {\n processPickInfo,\n getLayerPickingInfo,\n getEmptyPickingInfo,\n PickingInfo\n} from './picking/pick-info';\n\nimport type {Framebuffer as LumaFramebuffer} from '@luma.gl/webgl';\nimport type {FilterContext, Rect} from '../passes/layers-pass';\nimport type Layer from './layer';\nimport type {Effect} from './effect';\nimport type View from '../views/view';\nimport type Viewport from '../viewports/viewport';\n\nexport type PickByPointOptions = {\n x: number;\n y: number;\n radius?: number;\n depth?: number;\n mode?: string;\n unproject3D?: boolean;\n};\n\nexport type PickByRectOptions = {\n x: number;\n y: number;\n width?: number;\n height?: number;\n mode?: string;\n maxObjects?: number | null;\n};\n\ntype PickOperationContext = {\n layers: Layer[];\n views: Record;\n viewports: Viewport[];\n onViewportActive: (viewport: Viewport) => void;\n effects: Effect[];\n};\n\n/** Manages picking in a Deck context */\nexport default class DeckPicker {\n gl: WebGLRenderingContext;\n pickingFBO?: LumaFramebuffer;\n depthFBO?: LumaFramebuffer;\n pickLayersPass: PickLayersPass;\n layerFilter?: (context: FilterContext) => boolean;\n\n /** Identifiers of the previously picked object, for callback tracking and auto highlight */\n lastPickedInfo: {\n index: number;\n layerId: string | null;\n info: PickingInfo | null;\n };\n\n _pickable: boolean = true;\n\n constructor(gl: WebGLRenderingContext) {\n this.gl = gl;\n this.pickLayersPass = new PickLayersPass(gl);\n this.lastPickedInfo = {\n index: -1,\n layerId: null,\n info: null\n };\n }\n\n setProps(props: any): void {\n if ('layerFilter' in props) {\n this.layerFilter = props.layerFilter;\n }\n\n if ('_pickable' in props) {\n this._pickable = props._pickable;\n }\n }\n\n finalize() {\n if (this.pickingFBO) {\n this.pickingFBO.delete();\n }\n if (this.depthFBO) {\n this.depthFBO.color.delete();\n this.depthFBO.delete();\n }\n }\n\n /** Pick the closest info at given coordinate */\n pickObject(opts: PickByPointOptions & PickOperationContext) {\n return this._pickClosestObject(opts);\n }\n\n /** Get all unique infos within a bounding box */\n pickObjects(opts: PickByRectOptions & PickOperationContext) {\n return this._pickVisibleObjects(opts);\n }\n\n // Returns a new picking info object by assuming the last picked object is still picked\n getLastPickedObject({x, y, layers, viewports}, lastPickedInfo = this.lastPickedInfo.info) {\n const lastPickedLayerId = lastPickedInfo && lastPickedInfo.layer && lastPickedInfo.layer.id;\n const lastPickedViewportId =\n lastPickedInfo && lastPickedInfo.viewport && lastPickedInfo.viewport.id;\n const layer = lastPickedLayerId ? layers.find(l => l.id === lastPickedLayerId) : null;\n const viewport =\n (lastPickedViewportId && viewports.find(v => v.id === lastPickedViewportId)) || viewports[0];\n const coordinate = viewport && viewport.unproject([x - viewport.x, y - viewport.y]);\n\n const info = {\n x,\n y,\n viewport,\n coordinate,\n layer\n };\n\n return {...lastPickedInfo, ...info};\n }\n\n // Private\n\n /** Ensures that picking framebuffer exists and matches the canvas size */\n _resizeBuffer() {\n const {gl} = this;\n\n // Create a frame buffer if not already available\n if (!this.pickingFBO) {\n this.pickingFBO = new Framebuffer(gl);\n\n if (Framebuffer.isSupported(gl, {colorBufferFloat: true})) {\n const depthFBO = new Framebuffer(gl);\n depthFBO.attach({\n [GL.COLOR_ATTACHMENT0]: new Texture2D(gl, {\n format: isWebGL2(gl) ? GL.RGBA32F : GL.RGBA,\n type: GL.FLOAT\n })\n });\n this.depthFBO = depthFBO;\n }\n }\n // Resize it to current canvas size (this is a noop if size hasn't changed)\n this.pickingFBO?.resize({width: gl.canvas.width, height: gl.canvas.height});\n this.depthFBO?.resize({width: gl.canvas.width, height: gl.canvas.height});\n }\n\n /** Preliminary filtering of the layers list. Skid picking pass if no layer is pickable. */\n _getPickable(layers: Layer[]): Layer[] | null {\n if (this._pickable === false) {\n return null;\n }\n const pickableLayers = layers.filter(\n layer => this.pickLayersPass.shouldDrawLayer(layer) && !layer.isComposite\n );\n return pickableLayers.length ? pickableLayers : null;\n }\n\n /** Pick the closest object at the given coordinate */\n // eslint-disable-next-line max-statements,complexity\n _pickClosestObject({\n layers,\n views,\n viewports,\n x,\n y,\n radius = 0,\n depth = 1,\n mode = 'query',\n unproject3D,\n onViewportActive,\n effects\n }: PickByPointOptions & PickOperationContext): {\n result: PickingInfo[];\n emptyInfo: PickingInfo;\n } {\n const pickableLayers = this._getPickable(layers);\n const pixelRatio = cssToDeviceRatio(this.gl);\n\n if (!pickableLayers) {\n return {\n result: [],\n emptyInfo: getEmptyPickingInfo({viewports, x, y, pixelRatio})\n };\n }\n\n this._resizeBuffer();\n\n // Convert from canvas top-left to WebGL bottom-left coordinates\n // Top-left coordinates [x, y] to bottom-left coordinates [deviceX, deviceY]\n // And compensate for pixelRatio\n const devicePixelRange = cssToDevicePixels(this.gl, [x, y], true);\n const devicePixel = [\n devicePixelRange.x + Math.floor(devicePixelRange.width / 2),\n devicePixelRange.y + Math.floor(devicePixelRange.height / 2)\n ];\n\n const deviceRadius = Math.round(radius * pixelRatio);\n const {width, height} = this.pickingFBO as LumaFramebuffer;\n const deviceRect = this._getPickingRect({\n deviceX: devicePixel[0],\n deviceY: devicePixel[1],\n deviceRadius,\n deviceWidth: width,\n deviceHeight: height\n });\n\n const cullRect: Rect = {\n x: x - radius,\n y: y - radius,\n width: radius * 2 + 1,\n height: radius * 2 + 1\n };\n\n let infos: Map;\n const result: PickingInfo[] = [];\n const affectedLayers = new Set();\n\n for (let i = 0; i < depth; i++) {\n let pickInfo: PickedPixel;\n\n if (deviceRect) {\n const pickedResult = this._drawAndSample({\n layers: pickableLayers,\n views,\n viewports,\n onViewportActive,\n deviceRect,\n cullRect,\n effects,\n pass: `picking:${mode}`\n });\n\n pickInfo = getClosestObject({\n ...pickedResult,\n deviceX: devicePixel[0],\n deviceY: devicePixel[1],\n deviceRadius,\n deviceRect\n });\n } else {\n pickInfo = {\n pickedColor: null,\n pickedObjectIndex: -1\n };\n }\n\n let z;\n if (pickInfo.pickedLayer && unproject3D && this.depthFBO) {\n const {pickedColors: pickedColors2} = this._drawAndSample(\n {\n layers: [pickInfo.pickedLayer],\n views,\n viewports,\n onViewportActive,\n deviceRect: {\n x: pickInfo.pickedX as number,\n y: pickInfo.pickedY as number,\n width: 1,\n height: 1\n },\n cullRect,\n effects,\n pass: `picking:${mode}:z`\n },\n true\n );\n // picked value is in common space (pixels) from the camera target (viewport.position)\n // convert it to meters from the ground\n if (pickedColors2[3]) {\n z = pickedColors2[0];\n }\n }\n\n // Only exclude if we need to run picking again.\n // We need to run picking again if an object is detected AND\n // we have not exhausted the requested depth.\n if (pickInfo.pickedLayer && i + 1 < depth) {\n affectedLayers.add(pickInfo.pickedLayer);\n pickInfo.pickedLayer.disablePickingIndex(pickInfo.pickedObjectIndex);\n }\n\n // This logic needs to run even if no object is picked.\n infos = processPickInfo({\n pickInfo,\n lastPickedInfo: this.lastPickedInfo,\n mode,\n layers: pickableLayers,\n viewports,\n x,\n y,\n z,\n pixelRatio\n });\n\n for (const info of infos.values()) {\n if (info.layer) {\n result.push(info);\n }\n }\n\n // If no object is picked stop.\n if (!pickInfo.pickedColor) {\n break;\n }\n }\n\n // reset only affected buffers\n for (const layer of affectedLayers) {\n layer.restorePickingColors();\n }\n\n return {result, emptyInfo: infos!.get(null) as PickingInfo};\n }\n\n /** Pick all objects within the given bounding box */\n _pickVisibleObjects({\n layers,\n views,\n viewports,\n x,\n y,\n width = 1,\n height = 1,\n mode = 'query',\n maxObjects = null,\n onViewportActive,\n effects\n }: PickByRectOptions & PickOperationContext): PickingInfo[] {\n const pickableLayers = this._getPickable(layers);\n\n if (!pickableLayers) {\n return [];\n }\n\n this._resizeBuffer();\n // Convert from canvas top-left to WebGL bottom-left coordinates\n // And compensate for pixelRatio\n const pixelRatio = cssToDeviceRatio(this.gl);\n const leftTop = cssToDevicePixels(this.gl, [x, y], true);\n\n // take left and top (y inverted in device pixels) from start location\n const deviceLeft = leftTop.x;\n const deviceTop = leftTop.y + leftTop.height;\n\n // take right and bottom (y inverted in device pixels) from end location\n const rightBottom = cssToDevicePixels(this.gl, [x + width, y + height], true);\n const deviceRight = rightBottom.x + rightBottom.width;\n const deviceBottom = rightBottom.y;\n\n const deviceRect = {\n x: deviceLeft,\n y: deviceBottom,\n // deviceTop and deviceRight represent the first pixel outside the desired rect\n width: deviceRight - deviceLeft,\n height: deviceTop - deviceBottom\n };\n\n const pickedResult = this._drawAndSample({\n layers: pickableLayers,\n views,\n viewports,\n onViewportActive,\n deviceRect,\n cullRect: {x, y, width, height},\n effects,\n pass: `picking:${mode}`\n });\n\n const pickInfos = getUniqueObjects(pickedResult);\n\n // Only return unique infos, identified by info.object\n const uniqueInfos = new Map();\n\n const isMaxObjects = Number.isFinite(maxObjects);\n\n for (let i = 0; i < pickInfos.length; i++) {\n if (isMaxObjects && maxObjects && uniqueInfos.size >= maxObjects) {\n break;\n }\n const pickInfo = pickInfos[i];\n let info: PickingInfo = {\n color: pickInfo.pickedColor,\n layer: null,\n index: pickInfo.pickedObjectIndex,\n picked: true,\n x,\n y,\n pixelRatio\n };\n\n info = getLayerPickingInfo({layer: pickInfo.pickedLayer as Layer, info, mode});\n if (!uniqueInfos.has(info.object)) {\n uniqueInfos.set(info.object, info);\n }\n }\n\n return Array.from(uniqueInfos.values());\n }\n\n /** Renders layers into the picking buffer with picking colors and read the pixels. */\n _drawAndSample(params: {\n deviceRect: Rect;\n pass: string;\n layers: Layer[];\n views: Record;\n viewports: Viewport[];\n onViewportActive: (viewport: Viewport) => void;\n cullRect?: Rect;\n effects: Effect[];\n }): {\n pickedColors: Uint8Array;\n decodePickingColor: PickingColorDecoder;\n };\n\n /** Renders layers into the picking buffer with encoded z values and read the pixels. */\n _drawAndSample(\n params: {\n deviceRect: Rect;\n pass: string;\n layers: Layer[];\n views: Record;\n viewports: Viewport[];\n onViewportActive: (viewport: Viewport) => void;\n cullRect?: Rect;\n effects: Effect[];\n },\n pickZ: true\n ): {\n pickedColors: Float32Array;\n decodePickingColor: null;\n };\n\n _drawAndSample(\n {\n layers,\n views,\n viewports,\n onViewportActive,\n deviceRect,\n cullRect,\n effects,\n pass\n }: {\n deviceRect: Rect;\n pass: string;\n layers: Layer[];\n views: Record;\n viewports: Viewport[];\n onViewportActive: (viewport: Viewport) => void;\n cullRect?: Rect;\n effects: Effect[];\n },\n pickZ: boolean = false\n ): {\n pickedColors: Uint8Array | Float32Array;\n decodePickingColor: PickingColorDecoder | null;\n } {\n const pickingFBO = pickZ ? this.depthFBO : this.pickingFBO;\n const opts = {\n layers,\n layerFilter: this.layerFilter,\n views,\n viewports,\n onViewportActive,\n pickingFBO,\n deviceRect,\n cullRect,\n effects,\n pass,\n pickZ,\n preRenderStats: {}\n };\n\n for (const effect of effects) {\n if (effect.useInPicking) {\n opts.preRenderStats[effect.id] = effect.preRender(this.gl, opts);\n }\n }\n\n const {decodePickingColor} = this.pickLayersPass.render(opts);\n\n // Read from an already rendered picking buffer\n // Returns an Uint8ClampedArray of picked pixels\n const {x, y, width, height} = deviceRect;\n const pickedColors = new (pickZ ? Float32Array : Uint8Array)(width * height * 4);\n readPixelsToArray(pickingFBO, {\n sourceX: x,\n sourceY: y,\n sourceWidth: width,\n sourceHeight: height,\n target: pickedColors\n });\n\n return {pickedColors, decodePickingColor};\n }\n\n // Calculate a picking rect centered on deviceX and deviceY and clipped to device\n // Returns null if pixel is outside of device\n _getPickingRect({\n deviceX,\n deviceY,\n deviceRadius,\n deviceWidth,\n deviceHeight\n }: {\n deviceX: number;\n deviceY: number;\n deviceRadius: number;\n deviceWidth: number;\n deviceHeight: number;\n }): Rect | null {\n // Create a box of size `radius * 2 + 1` centered at [deviceX, deviceY]\n const x = Math.max(0, deviceX - deviceRadius);\n const y = Math.max(0, deviceY - deviceRadius);\n const width = Math.min(deviceWidth, deviceX + deviceRadius + 1) - x;\n const height = Math.min(deviceHeight, deviceY + deviceRadius + 1) - y;\n\n // x, y out of bounds.\n if (width <= 0 || height <= 0) {\n return null;\n }\n\n return {x, y, width, height};\n }\n}\n","// Copyright (c) 2015 - 2019 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* global document */\nconst defaultStyle: Partial = {\n zIndex: '1',\n position: 'absolute',\n pointerEvents: 'none',\n color: '#a0a7b4',\n backgroundColor: '#29323c',\n padding: '10px',\n top: '0',\n left: '0',\n display: 'none'\n};\n\nexport type TooltipContent =\n | null\n | string\n | {\n text?: string;\n html?: string;\n className?: string;\n style?: Partial;\n };\n\nexport default class Tooltip {\n private el: HTMLDivElement | null = null;\n\n isVisible: boolean = false;\n\n constructor(canvas: HTMLCanvasElement) {\n const canvasParent = canvas.parentElement;\n if (canvasParent) {\n this.el = document.createElement('div');\n this.el.className = 'deck-tooltip';\n Object.assign(this.el.style, defaultStyle);\n canvasParent.appendChild(this.el);\n }\n }\n\n setTooltip(displayInfo: TooltipContent, x?: number, y?: number): void {\n const el = this.el;\n if (!el) {\n return;\n }\n\n if (typeof displayInfo === 'string') {\n el.innerText = displayInfo;\n } else if (!displayInfo) {\n this.isVisible = false;\n el.style.display = 'none';\n return;\n } else {\n if (displayInfo.text) {\n el.innerText = displayInfo.text;\n }\n if (displayInfo.html) {\n el.innerHTML = displayInfo.html;\n }\n if (displayInfo.className) {\n el.className = displayInfo.className;\n }\n }\n this.isVisible = true;\n el.style.display = 'block';\n el.style.transform = `translate(${x}px, ${y}px)`;\n\n if (displayInfo && typeof displayInfo === 'object' && 'style' in displayInfo) {\n Object.assign(el.style, displayInfo.style);\n }\n }\n\n remove(): void {\n if (this.el) {\n this.el.remove();\n this.el = null;\n }\n }\n}\n","/**\n * Throws an `Error` with the optional `message` if `condition` is falsy\n * @note Replacement for the external assert method to reduce bundle size\n */\nexport function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(message || 'loader assertion failed.');\n }\n}\n","// Purpose: include this in your module to avoid\n// dependencies on micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\ntype obj = {[key: string]: any};\nconst self_: obj = globals.self || globals.window || globals.global || {};\nconst window_: obj = globals.window || globals.self || globals.global || {};\nconst global_: obj = globals.global || globals.self || globals.window || {};\nconst document_: obj = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\n/** true if running in a browser */\nexport const isBrowser: boolean =\n // @ts-ignore process does not exist on browser\n Boolean(typeof process !== 'object' || String(process) !== '[object process]' || process.browser);\n\n/** true if running in a worker thread */\nexport const isWorker: boolean = typeof importScripts === 'function';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\n/** Major Node version (as a number) */\nexport const nodeVersion: number = (matches && parseFloat(matches[1])) || 0;\n","import {isBrowser} from '@loaders.gl/loader-utils';\nimport type {ImageTypeEnum} from '../../types';\n\n// @ts-ignore TS2339: Property does not exist on type\nconst {_parseImageNode} = globalThis;\n\nconst IMAGE_SUPPORTED = typeof Image !== 'undefined'; // NOTE: \"false\" positives if jsdom is installed\nconst IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== 'undefined';\nconst NODE_IMAGE_SUPPORTED = Boolean(_parseImageNode);\nconst DATA_SUPPORTED = isBrowser ? true : NODE_IMAGE_SUPPORTED;\n\n/**\n * Checks if a loaders.gl image type is supported\n * @param type image type string\n */\nexport function isImageTypeSupported(type: string): boolean {\n switch (type) {\n case 'auto':\n // Should only ever be false in Node.js, if polyfills have not been installed...\n return IMAGE_BITMAP_SUPPORTED || IMAGE_SUPPORTED || DATA_SUPPORTED;\n\n case 'imagebitmap':\n return IMAGE_BITMAP_SUPPORTED;\n case 'image':\n return IMAGE_SUPPORTED;\n case 'data':\n return DATA_SUPPORTED;\n\n default:\n throw new Error(`@loaders.gl/images: image ${type} not supported in this environment`);\n }\n}\n\n/**\n * Returns the \"most performant\" supported image type on this platform\n * @returns image type string\n */\nexport function getDefaultImageType(): ImageTypeEnum {\n if (IMAGE_BITMAP_SUPPORTED) {\n return 'imagebitmap';\n }\n if (IMAGE_SUPPORTED) {\n return 'image';\n }\n if (DATA_SUPPORTED) {\n return 'data';\n }\n\n // This should only happen in Node.js\n throw new Error('Install \\'@loaders.gl/polyfills\\' to parse images under Node.js');\n}\n","import type {ImageType, ImageTypeEnum, ImageDataType} from '../../types';\n\nexport function isImage(image: ImageType): boolean {\n return Boolean(getImageTypeOrNull(image));\n}\n\nexport function deleteImage(image: ImageType): void {\n switch (getImageType(image)) {\n case 'imagebitmap':\n (image as ImageBitmap).close();\n break;\n default:\n // Nothing to do for images and image data objects\n }\n}\n\nexport function getImageType(image: ImageType): ImageTypeEnum {\n const format = getImageTypeOrNull(image);\n if (!format) {\n throw new Error('Not an image');\n }\n return format;\n}\n\nexport function getImageSize(image: ImageType): {width: number; height: number} {\n return getImageData(image);\n}\n\nexport function getImageData(image: ImageType): ImageDataType | ImageData {\n switch (getImageType(image)) {\n case 'data':\n return image as unknown as ImageData;\n\n case 'image':\n case 'imagebitmap':\n // Extract the image data from the image via a canvas\n const canvas = document.createElement('canvas');\n // TODO - reuse the canvas?\n const context = canvas.getContext('2d');\n if (!context) {\n throw new Error('getImageData');\n }\n // @ts-ignore\n canvas.width = image.width;\n // @ts-ignore\n canvas.height = image.height;\n // @ts-ignore\n context.drawImage(image, 0, 0);\n // @ts-ignore\n return context.getImageData(0, 0, image.width, image.height);\n\n default:\n throw new Error('getImageData');\n }\n}\n\n// PRIVATE\n\n// eslint-disable-next-line complexity\nfunction getImageTypeOrNull(image) {\n if (typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {\n return 'imagebitmap';\n }\n if (typeof Image !== 'undefined' && image instanceof Image) {\n return 'image';\n }\n if (image && typeof image === 'object' && image.data && image.width && image.height) {\n return 'data';\n }\n return null;\n}\n","// SVG parsing has limitations, e.g:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=606319\n\nconst SVG_DATA_URL_PATTERN = /^data:image\\/svg\\+xml/;\nconst SVG_URL_PATTERN = /\\.svg((\\?|#).*)?$/;\n\nexport function isSVG(url) {\n return url && (SVG_DATA_URL_PATTERN.test(url) || SVG_URL_PATTERN.test(url));\n}\n\nexport function getBlobOrSVGDataUrl(arrayBuffer: ArrayBuffer, url?: string): Blob | string {\n if (isSVG(url)) {\n // Prepare a properly tagged data URL, and load using normal mechanism\n const textDecoder = new TextDecoder();\n let xmlText = textDecoder.decode(arrayBuffer);\n // TODO Escape in browser to support e.g. Chinese characters\n try {\n if (typeof unescape === 'function' && typeof encodeURIComponent === 'function') {\n xmlText = unescape(encodeURIComponent(xmlText));\n }\n } catch (error) {\n throw new Error((error as Error).message);\n }\n // base64 encoding is safer. utf-8 fails in some browsers\n const src = `data:image/svg+xml;base64,${btoa(xmlText)}`;\n return src;\n }\n return getBlob(arrayBuffer, url);\n}\n\nexport function getBlob(arrayBuffer: ArrayBuffer, url?: string): Blob {\n if (isSVG(url)) {\n // https://bugs.chromium.org/p/chromium/issues/detail?id=606319\n // return new Blob([new Uint8Array(arrayBuffer)], {type: 'image/svg+xml'});\n throw new Error('SVG cannot be parsed directly to imagebitmap');\n }\n // TODO - how to determine mime type? Param? Sniff here?\n return new Blob([new Uint8Array(arrayBuffer)]); // MIME type not needed?\n}\n","import type {ImageLoaderOptions} from '../../image-loader';\nimport {getBlobOrSVGDataUrl} from './svg-utils';\n\n// Parses html image from array buffer\nexport default async function parseToImage(\n arrayBuffer: ArrayBuffer,\n options: ImageLoaderOptions,\n url?: string\n): Promise {\n // Note: image parsing requires conversion to Blob (for createObjectURL).\n // Potentially inefficient for not using `response.blob()` (and for File / Blob inputs)...\n // But presumably not worth adding 'blob' flag to loader objects?\n\n const blobOrDataUrl = getBlobOrSVGDataUrl(arrayBuffer, url);\n const URL = self.URL || self.webkitURL;\n const objectUrl = typeof blobOrDataUrl !== 'string' && URL.createObjectURL(blobOrDataUrl);\n try {\n return await loadToImage(objectUrl || blobOrDataUrl, options);\n } finally {\n if (objectUrl) {\n URL.revokeObjectURL(objectUrl);\n }\n }\n}\n\nexport async function loadToImage(url, options): Promise {\n const image = new Image();\n image.src = url;\n\n // The `image.onload()` callback does not guarantee that the image has been decoded\n // so a main thread \"freeze\" can be incurred when using the image for the first time.\n // `Image.decode()` returns a promise that completes when image is decoded.\n\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/decode\n // Note: When calling `img.decode()`, we do not need to wait for `img.onload()`\n // Note: `HTMLImageElement.decode()` is not available in Edge and IE11\n if (options.image && options.image.decode && image.decode) {\n await image.decode();\n return image;\n }\n\n // Create a promise that tracks onload/onerror callbacks\n return await new Promise((resolve, reject) => {\n try {\n image.onload = () => resolve(image);\n image.onerror = (err) => reject(new Error(`Could not load image ${url}: ${err}`));\n } catch (error) {\n reject(error);\n }\n });\n}\n","import type {ImageLoaderOptions} from '../../image-loader';\nimport {isSVG, getBlob} from './svg-utils';\nimport parseToImage from './parse-to-image';\n\nconst EMPTY_OBJECT = {};\n\nlet imagebitmapOptionsSupported = true;\n\n/**\n * Asynchronously parses an array buffer into an ImageBitmap - this contains the decoded data\n * ImageBitmaps are supported on worker threads, but not supported on Edge, IE11 and Safari\n * https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap#Browser_compatibility\n *\n * TODO - createImageBitmap supports source rect (5 param overload), pass through?\n */\nexport default async function parseToImageBitmap(\n arrayBuffer: ArrayBuffer,\n options: ImageLoaderOptions,\n url?: string\n): Promise {\n let blob;\n\n // Cannot parse SVG directly to ImageBitmap, parse to Image first\n if (isSVG(url)) {\n // Note: this only works on main thread\n const image = await parseToImage(arrayBuffer, options, url);\n blob = image;\n } else {\n // Create blob from the array buffer\n blob = getBlob(arrayBuffer, url);\n }\n\n const imagebitmapOptions = options && options.imagebitmap;\n\n return await safeCreateImageBitmap(blob, imagebitmapOptions);\n}\n\n/**\n * Safely creates an imageBitmap with options\n * *\n * Firefox crashes if imagebitmapOptions is supplied\n * Avoid supplying if not provided or supported, remember if not supported\n */\nasync function safeCreateImageBitmap(\n blob: Blob,\n imagebitmapOptions: ImageBitmapOptions | null = null\n): Promise {\n if (isEmptyObject(imagebitmapOptions) || !imagebitmapOptionsSupported) {\n imagebitmapOptions = null;\n }\n\n if (imagebitmapOptions) {\n try {\n // @ts-ignore Options\n return await createImageBitmap(blob, imagebitmapOptions);\n } catch (error) {\n console.warn(error); // eslint-disable-line\n imagebitmapOptionsSupported = false;\n }\n }\n\n return await createImageBitmap(blob);\n}\n\nfunction isEmptyObject(object) {\n // @ts-ignore\n for (const key in object || EMPTY_OBJECT) {\n return false;\n }\n return true;\n}\n","// loaders.gl, MIT license\n// code adapted from https://github.com/sindresorhus/file-type under MIT license\n\n/**\n * Box is a container format that can contain a variety of media related files,\n * so we want to return information about which type of file is actually contained inside\n */\nexport type BoxFileType = {extension: string; mimeType: string};\n\n/**\n * Tests if a buffer is in ISO base media file format (ISOBMFF) @see https://en.wikipedia.org/wiki/ISO_base_media_file_format\n * (ISOBMFF is a media container standard based on the Apple QuickTime container format)\n */\nexport function getISOBMFFMediaType(buffer: Uint8Array): BoxFileType | null {\n // Almost all ISO base media files start with `ftyp` box. (It's not required to be first, but it's recommended to be.)\n if (!checkString(buffer, 'ftyp', 4)) {\n return null;\n }\n\n // Extra check: test for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character).\n if ((buffer[8] & 0x60) === 0x00) {\n return null;\n }\n\n // `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters.\n return decodeMajorBrand(buffer);\n}\n\n/**\n * brands explained @see https://github.com/strukturag/libheif/issues/83\n * code adapted from @see https://github.com/sindresorhus/file-type/blob/main/core.js#L489-L492\n */\nexport function decodeMajorBrand(buffer: Uint8Array): BoxFileType | null {\n const brandMajor = getUTF8String(buffer, 8, 12).replace('\\0', ' ').trim();\n\n switch (brandMajor) {\n case 'avif':\n case 'avis':\n return {extension: 'avif', mimeType: 'image/avif'};\n default:\n return null;\n }\n // We don't need these now, but they are easy to add\n // case 'mif1':\n // return {extension: 'heic', mimeType: 'image/heif'};\n // case 'msf1':\n // return {extension: 'heic', mimeType: 'image/heif-sequence'};\n // case 'heic':\n // case 'heix':\n // return {extension: 'heic', mimeType: 'image/heic'};\n // case 'hevc':\n // case 'hevx':\n // return {extension: 'heic', mimeType: 'image/heic-sequence'};\n // case 'qt':\n // return {ext: 'mov', mime: 'video/quicktime'};\n // case 'M4V':\n // case 'M4VH':\n // case 'M4VP':\n // return {ext: 'm4v', mime: 'video/x-m4v'};\n // case 'M4P':\n // return {ext: 'm4p', mime: 'video/mp4'};\n // case 'M4B':\n // return {ext: 'm4b', mime: 'audio/mp4'};\n // case 'M4A':\n // return {ext: 'm4a', mime: 'audio/x-m4a'};\n // case 'F4V':\n // return {ext: 'f4v', mime: 'video/mp4'};\n // case 'F4P':\n // return {ext: 'f4p', mime: 'video/mp4'};\n // case 'F4A':\n // return {ext: 'f4a', mime: 'audio/mp4'};\n // case 'F4B':\n // return {ext: 'f4b', mime: 'audio/mp4'};\n // case 'crx':\n // return {ext: 'cr3', mime: 'image/x-canon-cr3'};\n // default:\n // if (brandMajor.startsWith('3g')) {\n // if (brandMajor.startsWith('3g2')) {\n // return {ext: '3g2', mime: 'video/3gpp2'};\n // }\n // return {ext: '3gp', mime: 'video/3gpp'};\n // }\n // return {ext: 'mp4', mime: 'video/mp4'};\n}\n\n/** Interpret a chunk of bytes as a UTF8 string */\nfunction getUTF8String(array: Uint8Array, start: number, end: number): string {\n return String.fromCharCode(...array.slice(start, end));\n}\n\nfunction stringToBytes(string: string): number[] {\n return [...string].map((character) => character.charCodeAt(0));\n}\n\nfunction checkString(buffer: ArrayLike, header: string, offset: number = 0): boolean {\n const headerBytes = stringToBytes(header);\n\n for (let i = 0; i < headerBytes.length; ++i) {\n if (headerBytes[i] !== buffer[i + offset]) {\n return false;\n }\n }\n\n return true;\n}\n","// Attributions\n// * Based on binary-gltf-utils under MIT license: Copyright (c) 2016-17 Karl Cheng\n\n// TODO: make these functions work for Node.js buffers?\n// Quarantine references to Buffer to prevent bundler from adding big polyfills\n// import {bufferToArrayBuffer} from '../node/buffer-to-array-buffer';\n// TODO - this should be handled in @loaders.gl/polyfills\n\nimport {getISOBMFFMediaType} from './parse-isobmff-binary';\n\n/** MIME type, width and height extracted from binary compressed image data */\nexport type BinaryImageMetadata = {\n mimeType: string;\n width: number;\n height: number;\n};\n\nconst BIG_ENDIAN = false;\nconst LITTLE_ENDIAN = true;\n\n/**\n * Extracts `{mimeType, width and height}` from a memory buffer containing a known image format\n * Currently supports `image/png`, `image/jpeg`, `image/bmp` and `image/gif`.\n * @param binaryData: DataView | ArrayBuffer image file memory to parse\n * @returns metadata or null if memory is not a valid image file format layout.\n */\nexport function getBinaryImageMetadata(\n binaryData: DataView | ArrayBuffer\n): BinaryImageMetadata | null {\n const dataView = toDataView(binaryData);\n return (\n getPngMetadata(dataView) ||\n getJpegMetadata(dataView) ||\n getGifMetadata(dataView) ||\n getBmpMetadata(dataView) ||\n getISOBMFFMetadata(dataView)\n );\n}\n\n// ISOBMFF\n\nfunction getISOBMFFMetadata(binaryData: DataView | ArrayBuffer): BinaryImageMetadata | null {\n const buffer = new Uint8Array(binaryData instanceof DataView ? binaryData.buffer : binaryData);\n const mediaType = getISOBMFFMediaType(buffer);\n if (!mediaType) {\n return null;\n }\n return {\n mimeType: mediaType.mimeType,\n // TODO - decode width and height\n width: 0,\n height: 0\n };\n}\n\n// PNG\n\nfunction getPngMetadata(binaryData: DataView | ArrayBuffer): BinaryImageMetadata | null {\n const dataView = toDataView(binaryData);\n // Check file contains the first 4 bytes of the PNG signature.\n const isPng = dataView.byteLength >= 24 && dataView.getUint32(0, BIG_ENDIAN) === 0x89504e47;\n if (!isPng) {\n return null;\n }\n\n // Extract size from a binary PNG file\n return {\n mimeType: 'image/png',\n width: dataView.getUint32(16, BIG_ENDIAN),\n height: dataView.getUint32(20, BIG_ENDIAN)\n };\n}\n\n// GIF\n\n// Extract size from a binary GIF file\n// TODO: GIF is not this simple\nfunction getGifMetadata(binaryData: DataView | ArrayBuffer): BinaryImageMetadata | null {\n const dataView = toDataView(binaryData);\n // Check first 4 bytes of the GIF signature (\"GIF8\").\n const isGif = dataView.byteLength >= 10 && dataView.getUint32(0, BIG_ENDIAN) === 0x47494638;\n if (!isGif) {\n return null;\n }\n\n // GIF is little endian.\n return {\n mimeType: 'image/gif',\n width: dataView.getUint16(6, LITTLE_ENDIAN),\n height: dataView.getUint16(8, LITTLE_ENDIAN)\n };\n}\n\n// BMP\n\n// TODO: BMP is not this simple\nexport function getBmpMetadata(binaryData: DataView | ArrayBuffer): BinaryImageMetadata | null {\n const dataView = toDataView(binaryData);\n // Check magic number is valid (first 2 characters should be \"BM\").\n // The mandatory bitmap file header is 14 bytes long.\n const isBmp =\n dataView.byteLength >= 14 &&\n dataView.getUint16(0, BIG_ENDIAN) === 0x424d &&\n dataView.getUint32(2, LITTLE_ENDIAN) === dataView.byteLength;\n\n if (!isBmp) {\n return null;\n }\n\n // BMP is little endian.\n return {\n mimeType: 'image/bmp',\n width: dataView.getUint32(18, LITTLE_ENDIAN),\n height: dataView.getUint32(22, LITTLE_ENDIAN)\n };\n}\n\n// JPEG\n\n// Extract width and height from a binary JPEG file\nfunction getJpegMetadata(binaryData: DataView | ArrayBuffer): BinaryImageMetadata | null {\n const dataView = toDataView(binaryData);\n // Check file contains the JPEG \"start of image\" (SOI) marker\n // followed by another marker.\n const isJpeg =\n dataView.byteLength >= 3 &&\n dataView.getUint16(0, BIG_ENDIAN) === 0xffd8 &&\n dataView.getUint8(2) === 0xff;\n\n if (!isJpeg) {\n return null;\n }\n\n const {tableMarkers, sofMarkers} = getJpegMarkers();\n\n // Exclude the two byte SOI marker.\n let i = 2;\n while (i + 9 < dataView.byteLength) {\n const marker = dataView.getUint16(i, BIG_ENDIAN);\n\n // The frame that contains the width and height of the JPEG image.\n if (sofMarkers.has(marker)) {\n return {\n mimeType: 'image/jpeg',\n height: dataView.getUint16(i + 5, BIG_ENDIAN), // Number of lines\n width: dataView.getUint16(i + 7, BIG_ENDIAN) // Number of pixels per line\n };\n }\n\n // Miscellaneous tables/data preceding the frame header.\n if (!tableMarkers.has(marker)) {\n return null;\n }\n\n // Length includes size of length parameter but not the two byte header.\n i += 2;\n i += dataView.getUint16(i, BIG_ENDIAN);\n }\n\n return null;\n}\n\nfunction getJpegMarkers() {\n // Tables/misc header markers.\n // DQT, DHT, DAC, DRI, COM, APP_n\n const tableMarkers = new Set([0xffdb, 0xffc4, 0xffcc, 0xffdd, 0xfffe]);\n for (let i = 0xffe0; i < 0xfff0; ++i) {\n tableMarkers.add(i);\n }\n\n // SOF markers and DHP marker.\n // These markers are after tables/misc data.\n const sofMarkers = new Set([\n 0xffc0, 0xffc1, 0xffc2, 0xffc3, 0xffc5, 0xffc6, 0xffc7, 0xffc9, 0xffca, 0xffcb, 0xffcd, 0xffce,\n 0xffcf, 0xffde\n ]);\n\n return {tableMarkers, sofMarkers};\n}\n\n// TODO - move into image module?\nfunction toDataView(data) {\n if (data instanceof DataView) {\n return data;\n }\n if (ArrayBuffer.isView(data)) {\n return new DataView(data.buffer);\n }\n\n // TODO: make these functions work for Node.js buffers?\n // if (bufferToArrayBuffer) {\n // data = bufferToArrayBuffer(data);\n // }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (data instanceof ArrayBuffer) {\n return new DataView(data);\n }\n throw new Error('toDataView');\n}\n","import type {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport parseImage from './lib/parsers/parse-image';\nimport {getBinaryImageMetadata} from './lib/category-api/binary-image-api';\n\nconst EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg', 'avif'];\nconst MIME_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/avif',\n 'image/bmp',\n 'image/vnd.microsoft.icon',\n 'image/svg+xml'\n];\n\nexport type ImageLoaderOptions = LoaderOptions & {\n image?: {\n type?: 'auto' | 'data' | 'imagebitmap' | 'image';\n decode?: boolean;\n };\n imagebitmap?: ImageBitmapOptions;\n};\n\nconst DEFAULT_IMAGE_LOADER_OPTIONS: ImageLoaderOptions = {\n image: {\n type: 'auto',\n decode: true // if format is HTML\n }\n // imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor\n};\n\n/**\n * Loads a platform-specific image type\n * Note: This type can be used as input data to WebGL texture creation\n */\nexport const ImageLoader = {\n id: 'image',\n module: 'images',\n name: 'Images',\n version: VERSION,\n mimeTypes: MIME_TYPES,\n extensions: EXTENSIONS,\n parse: parseImage,\n // TODO: byteOffset, byteLength;\n tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],\n options: DEFAULT_IMAGE_LOADER_OPTIONS\n};\n\nexport const _typecheckImageLoader: LoaderWithParser = ImageLoader;\n","// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n","import type {LoaderContext} from '@loaders.gl/loader-utils';\nimport {assert} from '@loaders.gl/loader-utils';\nimport type {ImageType} from '../../types';\nimport type {ImageLoaderOptions} from '../../image-loader';\nimport {isImageTypeSupported, getDefaultImageType} from '../category-api/image-type';\nimport {getImageData} from '../category-api/parsed-image-api';\nimport parseToImage from './parse-to-image';\nimport parseToImageBitmap from './parse-to-image-bitmap';\nimport parseToNodeImage from './parse-to-node-image';\n\n// Parse to platform defined image type (data on node, ImageBitmap or HTMLImage on browser)\n// eslint-disable-next-line complexity\nexport default async function parseImage(\n arrayBuffer: ArrayBuffer,\n options?: ImageLoaderOptions,\n context?: LoaderContext\n): Promise {\n options = options || {};\n const imageOptions = options.image || {};\n\n // The user can request a specific output format via `options.image.type`\n const imageType = imageOptions.type || 'auto';\n\n const {url} = context || {};\n\n // Note: For options.image.type === `data`, we may still need to load as `image` or `imagebitmap`\n const loadType = getLoadableImageType(imageType);\n\n let image;\n switch (loadType) {\n case 'imagebitmap':\n image = await parseToImageBitmap(arrayBuffer, options, url);\n break;\n case 'image':\n image = await parseToImage(arrayBuffer, options, url);\n break;\n case 'data':\n // Node.js loads imagedata directly\n image = await parseToNodeImage(arrayBuffer, options);\n break;\n default:\n assert(false);\n }\n\n // Browser: if options.image.type === 'data', we can now extract data from the loaded image\n if (imageType === 'data') {\n image = getImageData(image);\n }\n\n return image;\n}\n\n// Get a loadable image type from image type\nfunction getLoadableImageType(type) {\n switch (type) {\n case 'auto':\n case 'data':\n // Browser: For image data we need still need to load using an image format\n // Node: the default image type is `data`.\n return getDefaultImageType();\n default:\n // Throw an error if not supported\n isImageTypeSupported(type);\n return type;\n }\n}\n","import type {ImageLoaderOptions} from '../../image-loader';\nimport type {ImageDataType} from '../../types';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {getBinaryImageMetadata} from '../category-api/binary-image-api';\n\n// Note: These types should be consistent with loaders.gl/polyfills\n\ntype NDArray = {\n shape: number[];\n data: Uint8Array;\n width: number;\n height: number;\n components: number;\n layers: number[];\n};\n\ntype ParseImageNode = (arrayBuffer: ArrayBuffer, mimeType: string) => Promise;\n\n// Use polyfills if installed to parsed image using get-pixels\nexport default async function parseToNodeImage(\n arrayBuffer: ArrayBuffer,\n options: ImageLoaderOptions\n): Promise {\n const {mimeType} = getBinaryImageMetadata(arrayBuffer) || {};\n\n // @ts-ignore\n const _parseImageNode: ParseImageNode = globalThis._parseImageNode;\n assert(_parseImageNode); // '@loaders.gl/polyfills not installed'\n\n // @ts-expect-error TODO should we throw error in this case?\n return await _parseImageNode(arrayBuffer, mimeType);\n}\n","import type {Loader} from '@loaders.gl/loader-utils';\n\nfunction isJSON(text: string): boolean {\n const firstChar = text[0];\n const lastChar = text[text.length - 1];\n return (firstChar === '{' && lastChar === '}') || (firstChar === '[' && lastChar === ']');\n}\n\n// A light weight version instead of @loaders.gl/json (stream processing etc.)\nexport default {\n id: 'JSON',\n name: 'JSON',\n module: '',\n version: '',\n options: {},\n extensions: ['json', 'geojson'],\n mimeTypes: ['application/json', 'application/geo+json'],\n testText: isJSON,\n parseTextSync: JSON.parse\n} as Loader;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {registerLoaders} from '@loaders.gl/core';\nimport {ImageLoader} from '@loaders.gl/images';\n\nimport log from '../utils/log';\nimport {register} from '../debug';\nimport jsonLoader from '../utils/json-loader';\n\ndeclare global {\n const __VERSION__: string;\n}\n\nfunction checkVersion() {\n // Version detection using babel plugin\n // Fallback for tests and SSR since global variable is defined by Webpack.\n const version =\n typeof __VERSION__ !== 'undefined'\n ? __VERSION__\n : globalThis.DECK_VERSION || 'untranspiled source';\n\n // Note: a `deck` object not created by deck.gl may exist in the global scope\n const existingVersion = globalThis.deck && globalThis.deck.VERSION;\n\n if (existingVersion && existingVersion !== version) {\n throw new Error(`deck.gl - multiple versions detected: ${existingVersion} vs ${version}`);\n }\n\n if (!existingVersion) {\n log.log(1, `deck.gl ${version}`)();\n\n globalThis.deck = {\n ...globalThis.deck,\n VERSION: version,\n version,\n log,\n // experimental\n _registerLoggers: register\n };\n\n registerLoaders([\n jsonLoader,\n // @ts-expect-error non-standard Loader format\n [ImageLoader, {imagebitmap: {premultiplyAlpha: 'none'}}]\n ]);\n }\n\n return version;\n}\n\nexport const VERSION = checkVersion();\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// This function is needed in initialization stages,\n// make sure it can be imported in isolation\n\nimport isBrowser from './is-browser';\nimport isElectron from './is-electron';\n\nconst window = globalThis;\n\nexport function isMobile(): boolean {\n return typeof window.orientation !== 'undefined';\n}\n\n// Simple browser detection\n// `mockUserAgent` parameter allows user agent to be overridden for testing\n/* eslint-disable complexity */\nexport default function getBrowser(\n mockUserAgent?: string\n): 'Node' | 'Electron' | 'Chrome' | 'Firefox' | 'Safari' | 'Edge' | 'IE' | 'Unknown' {\n if (!mockUserAgent && !isBrowser()) {\n return 'Node';\n }\n\n if (isElectron(mockUserAgent)) {\n return 'Electron';\n }\n\n const navigator_ = typeof navigator !== 'undefined' ? navigator : {};\n // @ts-expect-error\n const userAgent = mockUserAgent || navigator_.userAgent || '';\n // const appVersion = navigator_.appVersion || '';\n\n // NOTE: Order of tests matter, as many agents list Chrome etc.\n if (userAgent.indexOf('Edge') > -1) {\n return 'Edge';\n }\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n if (isMSIE || isTrident) {\n return 'IE';\n }\n if (window.chrome) {\n return 'Chrome';\n }\n if (window.safari) {\n return 'Safari';\n }\n if (window.mozInnerScreenX) {\n return 'Firefox';\n }\n return 'Unknown';\n}\n","// WebGL2 Query (also handles disjoint timer extensions)\nimport Resource from './resource';\nimport {FEATURES, hasFeatures} from '../features';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\nconst GL_QUERY_RESULT = 0x8866; // Returns a GLuint containing the query result.\nconst GL_QUERY_RESULT_AVAILABLE = 0x8867; // whether query result is available.\n\nconst GL_TIME_ELAPSED_EXT = 0x88bf; // Elapsed time (in nanoseconds).\nconst GL_GPU_DISJOINT_EXT = 0x8fbb; // Whether GPU performed any disjoint operation.\n\nconst GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8c88; // #primitives written to feedback buffers\nconst GL_ANY_SAMPLES_PASSED = 0x8c2f; // Occlusion query (if drawing passed depth test)\nconst GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8d6a; // Occlusion query less accurate/faster version\n\nexport default class Query extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Query';\n }\n // Returns true if Query is supported by the WebGL implementation\n // Can also check whether timestamp queries are available.\n static isSupported(gl, opts = []) {\n const webgl2 = isWebGL2(gl);\n\n // Initial value\n const hasTimerQuery = hasFeatures(gl, FEATURES.TIMER_QUERY);\n let supported = webgl2 || hasTimerQuery;\n\n for (const key of opts) {\n switch (key) {\n case 'queries':\n supported = supported && webgl2;\n break;\n case 'timers':\n supported = supported && hasTimerQuery;\n break;\n default:\n assert(false);\n }\n }\n\n return supported;\n }\n\n // Create a query class\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n this.target = null;\n this._queryPending = false;\n this._pollingPromise = null;\n\n Object.seal(this);\n }\n\n // Shortcut for timer query (dependent on extension in both WebGL1 and 2)\n // Measures GPU time delta between this call and a matching `end` call in the\n // GPU instruction stream.\n beginTimeElapsedQuery() {\n return this.begin(GL_TIME_ELAPSED_EXT);\n }\n\n // Shortcut for occlusion queries\n beginOcclusionQuery({conservative = false} = {}) {\n return this.begin(conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);\n }\n\n // Shortcut for transformFeedbackQuery\n beginTransformFeedbackQuery() {\n return this.begin(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);\n }\n\n // Due to OpenGL API limitations, after calling `begin()` on one Query\n // instance, `end()` must be called on that same instance before\n // calling `begin()` on another query. While there can be multiple\n // outstanding queries representing disjoint `begin()`/`end()` intervals.\n // It is not possible to interleave or overlap `begin` and `end` calls.\n begin(target) {\n // Don't start a new query if one is already active.\n if (this._queryPending) {\n return this;\n }\n\n this.target = target;\n this.gl2.beginQuery(this.target, this.handle);\n\n return this;\n }\n\n // ends the current query\n end() {\n // Can't end a new query if the last one hasn't been resolved.\n if (this._queryPending) {\n return this;\n }\n\n if (this.target) {\n this.gl2.endQuery(this.target);\n this.target = null;\n this._queryPending = true;\n }\n return this;\n }\n\n // Returns true if the query result is available\n isResultAvailable() {\n if (!this._queryPending) {\n return false;\n }\n\n const resultAvailable = this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT_AVAILABLE);\n if (resultAvailable) {\n this._queryPending = false;\n }\n return resultAvailable;\n }\n\n // Timing query is disjoint, i.e. results are invalid\n isTimerDisjoint() {\n return this.gl2.getParameter(GL_GPU_DISJOINT_EXT);\n }\n\n // Returns query result.\n getResult() {\n return this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT);\n }\n\n // Returns the query result, converted to milliseconds to match JavaScript conventions.\n getTimerMilliseconds() {\n return this.getResult() / 1e6;\n }\n\n // Polls the query\n createPoll(limit = Number.POSITIVE_INFINITY) {\n if (this._pollingPromise) {\n return this._pollingPromise;\n }\n\n let counter = 0;\n\n this._pollingPromise = new Promise((resolve, reject) => {\n const poll = () => {\n if (this.isResultAvailable()) {\n resolve(this.getResult());\n this._pollingPromise = null;\n } else if (counter++ > limit) {\n reject('Timed out');\n this._pollingPromise = null;\n } else {\n requestAnimationFrame(poll);\n }\n };\n\n requestAnimationFrame(poll);\n });\n\n return this._pollingPromise;\n }\n\n _createHandle() {\n return Query.isSupported(this.gl) ? this.gl2.createQuery() : null;\n }\n\n _deleteHandle() {\n this.gl2.deleteQuery(this.handle);\n }\n}\n","import {\n isWebGL,\n createGLContext,\n instrumentGLContext,\n resizeGLContext,\n resetParameters\n} from '@luma.gl/gltools';\n\nimport {\n requestAnimationFrame,\n cancelAnimationFrame,\n Query,\n lumaStats,\n // TODO - remove dependency on framebuffer (bundle size impact)\n Framebuffer,\n log,\n assert\n} from '@luma.gl/webgl';\n\nimport {isBrowser} from '@probe.gl/env';\n\nconst isPage = isBrowser() && typeof document !== 'undefined';\n\nlet statIdCounter = 0;\n\nexport default class AnimationLoop {\n /*\n * @param {HTMLCanvasElement} canvas - if provided, width and height will be passed to context\n */\n constructor(props = {}) {\n const {\n onCreateContext = opts => createGLContext(opts),\n onAddHTML = null,\n onInitialize = () => {},\n onRender = () => {},\n onFinalize = () => {},\n onError,\n\n gl = null,\n glOptions = {},\n debug = false,\n\n createFramebuffer = false,\n\n // view parameters\n autoResizeViewport = true,\n autoResizeDrawingBuffer = true,\n stats = lumaStats.get(`animation-loop-${statIdCounter++}`)\n } = props;\n\n let {useDevicePixels = true} = props;\n\n if ('useDevicePixelRatio' in props) {\n log.deprecated('useDevicePixelRatio', 'useDevicePixels')();\n // @ts-ignore\n useDevicePixels = props.useDevicePixelRatio;\n }\n\n this.props = {\n onCreateContext,\n onAddHTML,\n onInitialize,\n onRender,\n onFinalize,\n onError,\n\n gl,\n glOptions,\n debug,\n createFramebuffer\n };\n\n // state\n this.gl = gl;\n this.needsRedraw = null;\n this.timeline = null;\n this.stats = stats;\n this.cpuTime = this.stats.get('CPU Time');\n this.gpuTime = this.stats.get('GPU Time');\n this.frameRate = this.stats.get('Frame Rate');\n\n this._initialized = false;\n this._running = false;\n this._animationFrameId = null;\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._cpuStartTime = 0;\n\n this.setProps({\n autoResizeViewport,\n autoResizeDrawingBuffer,\n useDevicePixels\n });\n\n // Bind methods\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n\n this._pageLoadPromise = null;\n\n this._onMousemove = this._onMousemove.bind(this);\n this._onMouseleave = this._onMouseleave.bind(this);\n }\n\n delete() {\n this.stop();\n this._setDisplay(null);\n }\n\n setNeedsRedraw(reason) {\n assert(typeof reason === 'string');\n this.needsRedraw = this.needsRedraw || reason;\n return this;\n }\n\n setProps(props) {\n if ('autoResizeViewport' in props) {\n this.autoResizeViewport = props.autoResizeViewport;\n }\n if ('autoResizeDrawingBuffer' in props) {\n this.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer;\n }\n if ('useDevicePixels' in props) {\n this.useDevicePixels = props.useDevicePixels;\n }\n return this;\n }\n\n // Starts a render loop if not already running\n // @param {Object} context - contains frame specific info (E.g. tick, width, height, etc)\n start(opts = {}) {\n if (this._running) {\n return this;\n }\n this._running = true;\n // console.debug(`Starting ${this.constructor.name}`);\n // Wait for start promise before rendering frame\n const startPromise = this._getPageLoadPromise()\n .then(() => {\n if (!this._running || this._initialized) {\n return null;\n }\n\n // Create the WebGL context\n this._createWebGLContext(opts);\n this._createFramebuffer();\n this._startEventHandling();\n\n // Initialize the callback data\n this._initializeCallbackData();\n this._updateCallbackData();\n\n // Default viewport setup, in case onInitialize wants to render\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n\n this._gpuTimeQuery = Query.isSupported(this.gl, ['timers']) ? new Query(this.gl) : null;\n\n this._initialized = true;\n\n // Note: onIntialize can return a promise (in case it needs to load resources)\n return this.onInitialize(this.animationProps);\n })\n .then(appContext => {\n if (this._running) {\n this._addCallbackData(appContext || {});\n if (appContext !== false) {\n this._startLoop();\n }\n }\n });\n\n if (this.props.onError) {\n startPromise.catch(this.props.onError);\n }\n\n return this;\n }\n\n // Redraw now\n redraw() {\n if (this.isContextLost()) {\n return this;\n }\n\n this._beginTimers();\n\n this._setupFrame();\n this._updateCallbackData();\n\n this._renderFrame(this.animationProps);\n\n // clear needsRedraw flag\n this._clearNeedsRedraw();\n\n // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit\n // Chrome's offscreen canvas does not require gl.commit\n if (this.offScreen && this.gl.commit) {\n this.gl.commit();\n }\n\n if (this._resolveNextFrame) {\n this._resolveNextFrame(this);\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n }\n\n this._endTimers();\n\n return this;\n }\n\n // Stops a render loop if already running, finalizing\n stop() {\n // console.debug(`Stopping ${this.constructor.name}`);\n if (this._running) {\n this._finalizeCallbackData();\n this._cancelAnimationFrame(this._animationFrameId);\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._animationFrameId = null;\n this._running = false;\n }\n return this;\n }\n\n attachTimeline(timeline) {\n this.timeline = timeline;\n\n return this.timeline;\n }\n\n detachTimeline() {\n this.timeline = null;\n }\n\n waitForRender() {\n this.setNeedsRedraw('waitForRender');\n\n if (!this._nextFramePromise) {\n this._nextFramePromise = new Promise(resolve => {\n this._resolveNextFrame = resolve;\n });\n }\n return this._nextFramePromise;\n }\n\n async toDataURL() {\n this.setNeedsRedraw('toDataURL');\n\n await this.waitForRender();\n\n return this.gl.canvas.toDataURL();\n }\n\n isContextLost() {\n return this.gl.isContextLost();\n }\n\n onCreateContext(...args) {\n return this.props.onCreateContext(...args);\n }\n\n onInitialize(...args) {\n return this.props.onInitialize(...args);\n }\n\n onRender(...args) {\n return this.props.onRender(...args);\n }\n\n onFinalize(...args) {\n return this.props.onFinalize(...args);\n }\n\n // DEPRECATED/REMOVED METHODS\n\n getHTMLControlValue(id, defaultValue = 1) {\n const element = document.getElementById(id);\n // @ts-ignore Not all html elements have value\n return element ? Number(element.value) : defaultValue;\n }\n\n // Update parameters\n setViewParameters() {\n log.removed('AnimationLoop.setViewParameters', 'AnimationLoop.setProps')();\n return this;\n }\n\n // PRIVATE METHODS\n\n _startLoop() {\n const renderFrame = () => {\n if (!this._running) {\n return;\n }\n this.redraw();\n this._animationFrameId = this._requestAnimationFrame(renderFrame);\n };\n\n // cancel any pending renders to ensure only one loop can ever run\n this._cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = this._requestAnimationFrame(renderFrame);\n }\n\n // PRIVATE METHODS\n\n _getPageLoadPromise() {\n if (!this._pageLoadPromise) {\n this._pageLoadPromise = isPage\n ? new Promise((resolve, reject) => {\n if (isPage && document.readyState === 'complete') {\n resolve(document);\n return;\n }\n window.addEventListener('load', () => {\n resolve(document);\n });\n })\n : Promise.resolve({});\n }\n return this._pageLoadPromise;\n }\n\n _setDisplay(display) {\n if (this.display) {\n this.display.delete();\n this.display.animationLoop = null;\n }\n\n // store animation loop on the display\n if (display) {\n display.animationLoop = this;\n }\n\n this.display = display;\n }\n\n _cancelAnimationFrame(animationFrameId) {\n // E.g. VR display has a separate animation frame to sync with headset\n if (this.display && this.display.cancelAnimationFrame) {\n return this.display.cancelAnimationFrame(animationFrameId);\n }\n\n return cancelAnimationFrame(animationFrameId);\n }\n\n _requestAnimationFrame(renderFrameCallback) {\n if (this._running) {\n // E.g. VR display has a separate animation frame to sync with headset\n if (this.display && this.display.requestAnimationFrame) {\n return this.display.requestAnimationFrame(renderFrameCallback);\n }\n\n return requestAnimationFrame(renderFrameCallback);\n }\n return undefined;\n }\n\n // Called on each frame, can be overridden to call onRender multiple times\n // to support e.g. stereoscopic rendering\n _renderFrame(...args) {\n // Allow e.g. VR display to render multiple frames.\n if (this.display) {\n this.display._renderFrame(...args);\n return;\n }\n\n // call callback\n this.onRender(...args);\n // end callback\n }\n\n _clearNeedsRedraw() {\n this.needsRedraw = null;\n }\n\n _setupFrame() {\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n this._resizeFramebuffer();\n }\n\n // Initialize the object that will be passed to app callbacks\n _initializeCallbackData() {\n this.animationProps = {\n gl: this.gl,\n\n stop: this.stop,\n canvas: this.gl.canvas,\n framebuffer: this.framebuffer,\n\n // Initial values\n useDevicePixels: this.useDevicePixels,\n needsRedraw: null,\n\n // Animation props\n startTime: Date.now(),\n engineTime: 0,\n tick: 0,\n tock: 0,\n\n // Timeline time for back compatibility\n time: 0,\n\n // Experimental\n _timeline: this.timeline,\n _loop: this,\n _animationLoop: this,\n _mousePosition: null // Event props\n };\n }\n\n // Update the context object that will be passed to app callbacks\n _updateCallbackData() {\n const {width, height, aspect} = this._getSizeAndAspect();\n if (width !== this.animationProps.width || height !== this.animationProps.height) {\n this.setNeedsRedraw('drawing buffer resized');\n }\n if (aspect !== this.animationProps.aspect) {\n this.setNeedsRedraw('drawing buffer aspect changed');\n }\n\n this.animationProps.width = width;\n this.animationProps.height = height;\n this.animationProps.aspect = aspect;\n\n this.animationProps.needsRedraw = this.needsRedraw;\n\n // Update time properties\n this.animationProps.engineTime = Date.now() - this.animationProps.startTime;\n\n if (this.timeline) {\n this.timeline.update(this.animationProps.engineTime);\n }\n\n this.animationProps.tick = Math.floor((this.animationProps.time / 1000) * 60);\n this.animationProps.tock++;\n\n // For back compatibility\n this.animationProps.time = this.timeline\n ? this.timeline.getTime()\n : this.animationProps.engineTime;\n\n // experimental\n this.animationProps._offScreen = this.offScreen;\n }\n\n _finalizeCallbackData() {\n // call callback\n this.onFinalize(this.animationProps);\n // end callback\n }\n\n // Add application's data to the app context object\n _addCallbackData(appContext) {\n if (typeof appContext === 'object' && appContext !== null) {\n this.animationProps = Object.assign({}, this.animationProps, appContext);\n }\n }\n\n // Either uses supplied or existing context, or calls provided callback to create one\n _createWebGLContext(opts) {\n this.offScreen =\n opts.canvas &&\n typeof OffscreenCanvas !== 'undefined' &&\n opts.canvas instanceof OffscreenCanvas;\n\n // Create the WebGL context if necessary\n opts = Object.assign({}, opts, this.props.glOptions);\n this.gl = this.props.gl ? instrumentGLContext(this.props.gl, opts) : this.onCreateContext(opts);\n\n if (!isWebGL(this.gl)) {\n throw new Error('AnimationLoop.onCreateContext - illegal context returned');\n }\n\n // Reset the WebGL context.\n resetParameters(this.gl);\n\n this._createInfoDiv();\n }\n\n _createInfoDiv() {\n if (this.gl.canvas && this.props.onAddHTML) {\n const wrapperDiv = document.createElement('div');\n document.body.appendChild(wrapperDiv);\n wrapperDiv.style.position = 'relative';\n const div = document.createElement('div');\n div.style.position = 'absolute';\n div.style.left = '10px';\n div.style.bottom = '10px';\n div.style.width = '300px';\n div.style.background = 'white';\n wrapperDiv.appendChild(this.gl.canvas);\n wrapperDiv.appendChild(div);\n const html = this.props.onAddHTML(div);\n if (html) {\n div.innerHTML = html;\n }\n }\n }\n\n _getSizeAndAspect() {\n // https://webglfundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html\n const width = this.gl.drawingBufferWidth;\n const height = this.gl.drawingBufferHeight;\n\n // https://webglfundamentals.org/webgl/lessons/webgl-anti-patterns.html\n let aspect = 1;\n const {canvas} = this.gl;\n\n if (canvas && canvas.clientHeight) {\n aspect = canvas.clientWidth / canvas.clientHeight;\n } else if (width > 0 && height > 0) {\n aspect = width / height;\n }\n\n return {width, height, aspect};\n }\n\n // Default viewport setup\n _resizeViewport() {\n if (this.autoResizeViewport) {\n this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight);\n }\n }\n\n // Resize the render buffer of the canvas to match canvas client size\n // Optionally multiplying with devicePixel ratio\n _resizeCanvasDrawingBuffer() {\n if (this.autoResizeDrawingBuffer) {\n resizeGLContext(this.gl, {useDevicePixels: this.useDevicePixels});\n }\n }\n\n // TBD - deprecated?\n _createFramebuffer() {\n // Setup default framebuffer\n if (this.props.createFramebuffer) {\n this.framebuffer = new Framebuffer(this.gl);\n }\n }\n\n _resizeFramebuffer() {\n if (this.framebuffer) {\n this.framebuffer.resize({\n width: this.gl.drawingBufferWidth,\n height: this.gl.drawingBufferHeight\n });\n }\n }\n\n _beginTimers() {\n this.frameRate.timeEnd();\n this.frameRate.timeStart();\n\n // Check if timer for last frame has completed.\n // GPU timer results are never available in the same\n // frame they are captured.\n if (\n this._gpuTimeQuery &&\n this._gpuTimeQuery.isResultAvailable() &&\n !this._gpuTimeQuery.isTimerDisjoint()\n ) {\n this.stats.get('GPU Time').addTime(this._gpuTimeQuery.getTimerMilliseconds());\n }\n\n if (this._gpuTimeQuery) {\n // GPU time query start\n this._gpuTimeQuery.beginTimeElapsedQuery();\n }\n\n this.cpuTime.timeStart();\n }\n\n _endTimers() {\n this.cpuTime.timeEnd();\n\n if (this._gpuTimeQuery) {\n // GPU time query end. Results will be available on next frame.\n this._gpuTimeQuery.end();\n }\n }\n\n // Event handling\n\n _startEventHandling() {\n const {canvas} = this.gl;\n if (canvas) {\n canvas.addEventListener('mousemove', this._onMousemove);\n canvas.addEventListener('mouseleave', this._onMouseleave);\n }\n }\n\n _onMousemove(e) {\n this.animationProps._mousePosition = [e.offsetX, e.offsetY];\n }\n _onMouseleave(e) {\n this.animationProps._mousePosition = null;\n }\n}\n","// Node.js polyfills for requestAnimationFrame and cancelAnimationFrame\n\nexport function requestAnimationFrame(callback) {\n return typeof window !== 'undefined' && window.requestAnimationFrame\n ? window.requestAnimationFrame(callback)\n : setTimeout(callback, 1000 / 60);\n}\n\nexport function cancelAnimationFrame(timerId) {\n return typeof window !== 'undefined' && window.cancelAnimationFrame\n ? window.cancelAnimationFrame(timerId)\n : clearTimeout(timerId);\n}\n","/**\n * This file contains overrides the default\n * hammer.js functions to add our own utility\n */\n/* eslint-disable */\n\n/* Hammer.js constants */\nconst INPUT_START = 1;\nconst INPUT_MOVE = 2;\nconst INPUT_END = 4;\nconst MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\n/**\n * Helper function that returns true if any element in an array meets given criteria.\n * Because older browsers do not support `Array.prototype.some`\n * @params array {Array}\n * @params predict {Function}\n */\nfunction some(array, predict) {\n for (let i = 0; i < array.length; i++) {\n if (predict(array[i])) {\n return true;\n }\n }\n return false;\n}\n\n/* eslint-disable no-invalid-this */\nexport function enhancePointerEventInput(PointerEventInput) {\n const oldHandler = PointerEventInput.prototype.handler;\n\n // overrides PointerEventInput.handler to accept right mouse button\n PointerEventInput.prototype.handler = function handler(ev) {\n const store = this.store;\n\n // Allow non-left mouse buttons through\n if (ev.button > 0 && ev.type === 'pointerdown') {\n if (!some(store, e => e.pointerId === ev.pointerId)) {\n store.push(ev);\n }\n }\n\n oldHandler.call(this, ev);\n };\n}\n\n// overrides MouseInput.handler to accept right mouse button\nexport function enhanceMouseInput(MouseInput) {\n MouseInput.prototype.handler = function handler(ev) {\n let eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the mouse button down\n if (eventType & INPUT_START && ev.button >= 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which === 0) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: 'mouse',\n srcEvent: ev\n });\n };\n}\n","import * as hammerjs from 'hammerjs';\nimport {enhancePointerEventInput, enhanceMouseInput} from './hammer-overrides';\n\nenhancePointerEventInput(hammerjs.PointerEventInput);\nenhanceMouseInput(hammerjs.MouseInput);\n\nexport const Manager = hammerjs.Manager;\n\nexport default hammerjs;\n","import type {MjolnirEventRaw} from '../types';\n\nexport interface InputOptions {\n enable: boolean;\n events?: string[];\n}\n\nexport default class Input {\n element: HTMLElement;\n options: Options;\n callback: (e: EventType) => void;\n\n constructor(element: HTMLElement, callback: (e: EventType) => void, options: Options) {\n this.element = element;\n this.callback = callback;\n\n this.options = {enable: true, ...options};\n }\n}\n","import Hammer from './utils/hammer';\nimport {RecognizerTuple} from './types';\n\n// This module contains constants that must be conditionally required\n// due to `window`/`document` references downstream.\nexport const RECOGNIZERS: RecognizerTuple[] = Hammer\n ? [\n [Hammer.Pan, {event: 'tripan', pointers: 3, threshold: 0, enable: false}],\n [Hammer.Rotate, {enable: false}],\n [Hammer.Pinch, {enable: false}],\n [Hammer.Swipe, {enable: false}],\n [Hammer.Pan, {threshold: 0, enable: false}],\n [Hammer.Press, {enable: false}],\n [Hammer.Tap, {event: 'doubletap', taps: 2, enable: false}],\n // TODO - rename to 'tap' and 'singletap' in the next major release\n [Hammer.Tap, {event: 'anytap', enable: false}],\n [Hammer.Tap, {enable: false}]\n ]\n : null;\n\n// Recognize the following gestures even if a given recognizer succeeds\nexport const RECOGNIZER_COMPATIBLE_MAP = {\n tripan: ['rotate', 'pinch', 'pan'],\n rotate: ['pinch'],\n pinch: ['pan'],\n pan: ['press', 'doubletap', 'anytap', 'tap'],\n doubletap: ['anytap'],\n anytap: ['tap']\n} as const;\n\n// Recognize the folling gestures only if a given recognizer fails\nexport const RECOGNIZER_FALLBACK_MAP = {\n doubletap: ['tap']\n} as const;\n\n/**\n * Only one set of basic input events will be fired by Hammer.js:\n * either pointer, touch, or mouse, depending on system support.\n * In order to enable an application to be agnostic of system support,\n * alias basic input events into \"classes\" of events: down, move, and up.\n * See `_onBasicInput()` for usage of these aliases.\n */\nexport const BASIC_EVENT_ALIASES = {\n pointerdown: 'pointerdown',\n pointermove: 'pointermove',\n pointerup: 'pointerup',\n touchstart: 'pointerdown',\n touchmove: 'pointermove',\n touchend: 'pointerup',\n mousedown: 'pointerdown',\n mousemove: 'pointermove',\n mouseup: 'pointerup'\n} as const;\n\nexport const INPUT_EVENT_TYPES = {\n KEY_EVENTS: ['keydown', 'keyup'],\n MOUSE_EVENTS: ['mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout', 'mouseleave'],\n WHEEL_EVENTS: [\n // Chrome, Safari\n 'wheel',\n // IE\n 'mousewheel'\n ]\n} as const;\n\n/**\n * \"Gestural\" events are those that have semantic meaning beyond the basic input event,\n * e.g. a click or tap is a sequence of `down` and `up` events with no `move` event in between.\n * Hammer.js handles these with its Recognizer system;\n * this block maps event names to the Recognizers required to detect the events.\n */\nexport const EVENT_RECOGNIZER_MAP = {\n tap: 'tap',\n anytap: 'anytap',\n doubletap: 'doubletap',\n press: 'press',\n pinch: 'pinch',\n pinchin: 'pinch',\n pinchout: 'pinch',\n pinchstart: 'pinch',\n pinchmove: 'pinch',\n pinchend: 'pinch',\n pinchcancel: 'pinch',\n rotate: 'rotate',\n rotatestart: 'rotate',\n rotatemove: 'rotate',\n rotateend: 'rotate',\n rotatecancel: 'rotate',\n tripan: 'tripan',\n tripanstart: 'tripan',\n tripanmove: 'tripan',\n tripanup: 'tripan',\n tripandown: 'tripan',\n tripanleft: 'tripan',\n tripanright: 'tripan',\n tripanend: 'tripan',\n tripancancel: 'tripan',\n pan: 'pan',\n panstart: 'pan',\n panmove: 'pan',\n panup: 'pan',\n pandown: 'pan',\n panleft: 'pan',\n panright: 'pan',\n panend: 'pan',\n pancancel: 'pan',\n swipe: 'swipe',\n swipeleft: 'swipe',\n swiperight: 'swipe',\n swipeup: 'swipe',\n swipedown: 'swipe'\n} as const;\n\n/**\n * Map gestural events typically provided by browsers\n * that are not reported in 'hammer.input' events\n * to corresponding Hammer.js gestures.\n */\nexport const GESTURE_EVENT_ALIASES = {\n click: 'tap',\n anyclick: 'anytap',\n dblclick: 'doubletap',\n mousedown: 'pointerdown',\n mousemove: 'pointermove',\n mouseup: 'pointerup',\n mouseover: 'pointerover',\n mouseout: 'pointerout',\n mouseleave: 'pointerleave'\n} as const;\n","// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global'\n\n/* global window, global, document, navigator */\nexport const userAgent =\n typeof navigator !== 'undefined' && navigator.userAgent ? navigator.userAgent.toLowerCase() : '';\n\nconst window_ = typeof window !== 'undefined' ? window : global;\nconst global_ = typeof global !== 'undefined' ? global : window;\nconst document_ = typeof document !== 'undefined' ? document : {};\n\nexport {window_ as window, global_ as global, document_ as document};\n\n/*\n * Detect whether passive option is supported by the current browser.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n #Safely_detecting_option_support\n */\nlet passiveSupported = false;\n\n/* eslint-disable accessor-pairs, no-empty */\ntry {\n const options = {\n // This function will be called when the browser\n // attempts to access the passive property.\n get passive() {\n passiveSupported = true;\n return true;\n }\n };\n\n window_.addEventListener('test', null, options);\n window_.removeEventListener('test', null);\n} catch (err) {\n passiveSupported = false;\n}\n\nexport {passiveSupported};\n","import type {MjolnirWheelEventRaw} from '../types';\nimport Input, {InputOptions} from './input';\n\nimport {INPUT_EVENT_TYPES} from '../constants';\nimport {window, userAgent, passiveSupported} from '../utils/globals';\n\nconst firefox = userAgent.indexOf('firefox') !== -1;\n\nconst {WHEEL_EVENTS} = INPUT_EVENT_TYPES;\nconst EVENT_TYPE = 'wheel';\n\n// Constants for normalizing input delta\nconst WHEEL_DELTA_MAGIC_SCALER = 4.000244140625;\nconst WHEEL_DELTA_PER_LINE = 40;\n// Slow down zoom if shift key is held for more precise zooming\nconst SHIFT_MULTIPLIER = 0.25;\n\nexport default class WheelInput extends Input {\n events: string[];\n\n constructor(\n element: HTMLElement,\n callback: (event: MjolnirWheelEventRaw) => void,\n options: InputOptions\n ) {\n super(element, callback, options);\n\n this.events = (this.options.events || []).concat(WHEEL_EVENTS);\n\n this.events.forEach(event =>\n element.addEventListener(event, this.handleEvent, passiveSupported ? {passive: false} : false)\n );\n }\n\n destroy() {\n this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType: string, enabled: boolean) {\n if (eventType === EVENT_TYPE) {\n this.options.enable = enabled;\n }\n }\n\n /* eslint-disable complexity, max-statements */\n handleEvent = (event: WheelEvent) => {\n if (!this.options.enable) {\n return;\n }\n\n let value = event.deltaY;\n if (window.WheelEvent) {\n // Firefox doubles the values on retina screens...\n if (firefox && event.deltaMode === window.WheelEvent.DOM_DELTA_PIXEL) {\n value /= window.devicePixelRatio;\n }\n if (event.deltaMode === window.WheelEvent.DOM_DELTA_LINE) {\n value *= WHEEL_DELTA_PER_LINE;\n }\n }\n\n if (value !== 0 && value % WHEEL_DELTA_MAGIC_SCALER === 0) {\n // This one is definitely a mouse wheel event.\n // Normalize this value to match trackpad.\n value = Math.floor(value / WHEEL_DELTA_MAGIC_SCALER);\n }\n\n if (event.shiftKey && value) {\n value = value * SHIFT_MULTIPLIER;\n }\n\n this.callback({\n type: EVENT_TYPE,\n center: {\n x: event.clientX,\n y: event.clientY\n },\n delta: -value,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target as HTMLElement\n });\n };\n}\n","import type {MjolnirPointerEventRaw} from '../types';\nimport Input, {InputOptions} from './input';\nimport {INPUT_EVENT_TYPES} from '../constants';\n\nconst {MOUSE_EVENTS} = INPUT_EVENT_TYPES;\nconst MOVE_EVENT_TYPE = 'pointermove';\nconst OVER_EVENT_TYPE = 'pointerover';\nconst OUT_EVENT_TYPE = 'pointerout';\nconst ENTER_EVENT_TYPE = 'pointerenter';\nconst LEAVE_EVENT_TYPE = 'pointerleave';\n\n/**\n * Hammer.js swallows 'move' events (for pointer/touch/mouse)\n * when the pointer is not down. This class sets up a handler\n * specifically for these events to work around this limitation.\n * Note that this could be extended to more intelligently handle\n * move events across input types, e.g. storing multiple simultaneous\n * pointer/touch events, calculating speed/direction, etc.\n */\nexport default class MoveInput extends Input {\n pressed: boolean;\n enableMoveEvent: boolean;\n enableEnterEvent: boolean;\n enableLeaveEvent: boolean;\n enableOutEvent: boolean;\n enableOverEvent: boolean;\n\n events: string[];\n\n constructor(\n element: HTMLElement,\n callback: (event: MjolnirPointerEventRaw) => void,\n options: InputOptions\n ) {\n super(element, callback, options);\n\n this.pressed = false;\n const {enable} = this.options;\n\n this.enableMoveEvent = enable;\n this.enableLeaveEvent = enable;\n this.enableEnterEvent = enable;\n this.enableOutEvent = enable;\n this.enableOverEvent = enable;\n\n this.events = (this.options.events || []).concat(MOUSE_EVENTS);\n\n this.events.forEach(event => element.addEventListener(event, this.handleEvent));\n }\n\n destroy() {\n this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType: string, enabled: boolean) {\n if (eventType === MOVE_EVENT_TYPE) {\n this.enableMoveEvent = enabled;\n }\n if (eventType === OVER_EVENT_TYPE) {\n this.enableOverEvent = enabled;\n }\n if (eventType === OUT_EVENT_TYPE) {\n this.enableOutEvent = enabled;\n }\n if (eventType === ENTER_EVENT_TYPE) {\n this.enableEnterEvent = enabled;\n }\n if (eventType === LEAVE_EVENT_TYPE) {\n this.enableLeaveEvent = enabled;\n }\n }\n\n handleEvent = (event: PointerEvent) => {\n this.handleOverEvent(event);\n this.handleOutEvent(event);\n this.handleEnterEvent(event);\n this.handleLeaveEvent(event);\n this.handleMoveEvent(event);\n };\n\n handleOverEvent(event: PointerEvent) {\n if (this.enableOverEvent) {\n if (event.type === 'mouseover') {\n this._emit(OVER_EVENT_TYPE, event);\n }\n }\n }\n\n handleOutEvent(event: PointerEvent) {\n if (this.enableOutEvent) {\n if (event.type === 'mouseout') {\n this._emit(OUT_EVENT_TYPE, event);\n }\n }\n }\n\n handleEnterEvent(event: PointerEvent) {\n if (this.enableEnterEvent) {\n if (event.type === 'mouseenter') {\n this._emit(ENTER_EVENT_TYPE, event);\n }\n }\n }\n\n handleLeaveEvent(event: PointerEvent) {\n if (this.enableLeaveEvent) {\n if (event.type === 'mouseleave') {\n this._emit(LEAVE_EVENT_TYPE, event);\n }\n }\n }\n\n handleMoveEvent(event: PointerEvent) {\n if (this.enableMoveEvent) {\n switch (event.type) {\n case 'mousedown':\n if (event.button >= 0) {\n // Button is down\n this.pressed = true;\n }\n break;\n case 'mousemove':\n // Move events use `which` to track the button being pressed\n if (event.which === 0) {\n // Button is not down\n this.pressed = false;\n }\n if (!this.pressed) {\n // Drag events are emitted by hammer already\n // we just need to emit the move event on hover\n this._emit(MOVE_EVENT_TYPE, event);\n }\n break;\n case 'mouseup':\n this.pressed = false;\n break;\n default:\n }\n }\n }\n\n _emit(\n type: 'pointermove' | 'pointerover' | 'pointerout' | 'pointerenter' | 'pointerleave',\n event: PointerEvent\n ) {\n this.callback({\n type,\n center: {\n x: event.clientX,\n y: event.clientY\n },\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target as HTMLElement\n });\n }\n}\n","import type {MjolnirKeyEventRaw} from '../types';\nimport Input, {InputOptions} from './input';\n\nimport {INPUT_EVENT_TYPES} from '../constants';\n\nconst {KEY_EVENTS} = INPUT_EVENT_TYPES;\nconst DOWN_EVENT_TYPE = 'keydown';\nconst UP_EVENT_TYPE = 'keyup';\n\ntype KeyInputOptions = InputOptions & {\n events?: string[];\n tabIndex?: number;\n};\n\nexport default class KeyInput extends Input {\n enableDownEvent: boolean;\n enableUpEvent: boolean;\n\n events: string[];\n\n constructor(\n element: HTMLElement,\n callback: (event: MjolnirKeyEventRaw) => void,\n options: KeyInputOptions\n ) {\n super(element, callback, options);\n\n this.enableDownEvent = this.options.enable;\n this.enableUpEvent = this.options.enable;\n\n this.events = (this.options.events || []).concat(KEY_EVENTS);\n\n element.tabIndex = this.options.tabIndex || 0;\n element.style.outline = 'none';\n this.events.forEach(event => element.addEventListener(event, this.handleEvent));\n }\n\n destroy() {\n this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType: string, enabled: boolean) {\n if (eventType === DOWN_EVENT_TYPE) {\n this.enableDownEvent = enabled;\n }\n if (eventType === UP_EVENT_TYPE) {\n this.enableUpEvent = enabled;\n }\n }\n\n handleEvent = (event: KeyboardEvent) => {\n // Ignore if focused on text input\n const targetElement = (event.target || event.srcElement) as HTMLElement;\n if (\n (targetElement.tagName === 'INPUT' && (targetElement as HTMLInputElement).type === 'text') ||\n targetElement.tagName === 'TEXTAREA'\n ) {\n return;\n }\n\n if (this.enableDownEvent && event.type === 'keydown') {\n this.callback({\n type: DOWN_EVENT_TYPE,\n srcEvent: event,\n key: event.key,\n target: event.target as HTMLElement\n });\n }\n\n if (this.enableUpEvent && event.type === 'keyup') {\n this.callback({\n type: UP_EVENT_TYPE,\n srcEvent: event,\n key: event.key,\n target: event.target as HTMLElement\n });\n }\n };\n}\n","import type {MjolnirPointerEventRaw} from '../types';\nimport Input, {InputOptions} from './input';\n\nconst EVENT_TYPE = 'contextmenu';\n\nexport default class ContextmenuInput extends Input {\n constructor(\n element: HTMLElement,\n callback: (event: MjolnirPointerEventRaw) => void,\n options: InputOptions\n ) {\n super(element, callback, options);\n\n element.addEventListener('contextmenu', this.handleEvent);\n }\n\n destroy() {\n this.element.removeEventListener('contextmenu', this.handleEvent);\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType: string, enabled: boolean) {\n if (eventType === EVENT_TYPE) {\n this.options.enable = enabled;\n }\n }\n\n handleEvent = (event: MouseEvent) => {\n if (!this.options.enable) {\n return;\n }\n\n this.callback({\n type: EVENT_TYPE,\n center: {\n x: event.clientX,\n y: event.clientY\n },\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target as HTMLElement\n });\n };\n}\n","import type {MjolnirEventRaw, HammerInput, Point} from '../types';\n\n/* Constants */\nconst DOWN_EVENT = 1;\nconst MOVE_EVENT = 2;\nconst UP_EVENT = 4;\nconst MOUSE_EVENTS = {\n pointerdown: DOWN_EVENT,\n pointermove: MOVE_EVENT,\n pointerup: UP_EVENT,\n mousedown: DOWN_EVENT,\n mousemove: MOVE_EVENT,\n mouseup: UP_EVENT\n};\n\n// MouseEvent.which https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\nconst MOUSE_EVENT_WHICH_LEFT = 1;\nconst MOUSE_EVENT_WHICH_MIDDLE = 2;\nconst MOUSE_EVENT_WHICH_RIGHT = 3;\n// MouseEvent.button https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\nconst MOUSE_EVENT_BUTTON_LEFT = 0;\nconst MOUSE_EVENT_BUTTON_MIDDLE = 1;\nconst MOUSE_EVENT_BUTTON_RIGHT = 2;\n// MouseEvent.buttons https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\nconst MOUSE_EVENT_BUTTONS_LEFT_MASK = 1;\nconst MOUSE_EVENT_BUTTONS_RIGHT_MASK = 2;\nconst MOUSE_EVENT_BUTTONS_MIDDLE_MASK = 4;\n\n/**\n * Extract the involved mouse button\n */\nexport function whichButtons(event: MjolnirEventRaw): {\n leftButton: boolean;\n middleButton: boolean;\n rightButton: boolean;\n} {\n const eventType = MOUSE_EVENTS[event.srcEvent.type];\n if (!eventType) {\n // Not a mouse evet\n return null;\n }\n\n const {buttons, button, which} = event.srcEvent as PointerEvent;\n let leftButton = false;\n let middleButton = false;\n let rightButton = false;\n\n if (\n // button is up, need to find out which one was pressed before\n eventType === UP_EVENT ||\n // moving but does not support `buttons` API\n (eventType === MOVE_EVENT && !Number.isFinite(buttons))\n ) {\n leftButton = which === MOUSE_EVENT_WHICH_LEFT;\n middleButton = which === MOUSE_EVENT_WHICH_MIDDLE;\n rightButton = which === MOUSE_EVENT_WHICH_RIGHT;\n } else if (eventType === MOVE_EVENT) {\n leftButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_LEFT_MASK);\n middleButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_MIDDLE_MASK);\n rightButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_RIGHT_MASK);\n } else if (eventType === DOWN_EVENT) {\n leftButton = button === MOUSE_EVENT_BUTTON_LEFT;\n middleButton = button === MOUSE_EVENT_BUTTON_MIDDLE;\n rightButton = button === MOUSE_EVENT_BUTTON_RIGHT;\n }\n\n return {leftButton, middleButton, rightButton};\n}\n\n/**\n * Calculate event position relative to the root element\n */\nexport function getOffsetPosition(\n event: MjolnirEventRaw,\n rootElement: HTMLElement\n): {\n center: Point;\n offsetCenter: Point;\n} {\n const center = (event as HammerInput).center;\n\n // `center` is a hammer.js event property\n if (!center) {\n // Not a gestural event\n return null;\n }\n\n const rect = rootElement.getBoundingClientRect();\n\n // Fix scale for map affected by a CSS transform.\n // See https://stackoverflow.com/a/26893663/3528533\n const scaleX = rect.width / rootElement.offsetWidth || 1;\n const scaleY = rect.height / rootElement.offsetHeight || 1;\n\n // Calculate center relative to the root element\n const offsetCenter = {\n x: (center.x - rect.left - rootElement.clientLeft) / scaleX,\n y: (center.y - rect.top - rootElement.clientTop) / scaleY\n };\n\n return {center, offsetCenter};\n}\n","import type EventManager from '../event-manager';\nimport {whichButtons, getOffsetPosition} from './event-utils';\nimport type {MjolnirEventRaw, MjolnirEventWrapper, MjolnirEvent} from '../types';\n\nexport type HandlerOptions = {\n srcElement?: 'root' | HTMLElement;\n priority?: number;\n};\n\ntype EventHandler = {\n type: string;\n handler: (event: MjolnirEvent) => void;\n once?: boolean;\n passive?: boolean;\n} & HandlerOptions;\n\nconst DEFAULT_OPTIONS: HandlerOptions = {\n srcElement: 'root',\n priority: 0\n};\n\nexport default class EventRegistrar {\n eventManager: EventManager;\n recognizerName: string;\n handlers: EventHandler[];\n handlersByElement: Map<'root' | HTMLElement, EventHandler[]>;\n _active: boolean;\n\n constructor(eventManager: EventManager) {\n this.eventManager = eventManager;\n this.handlers = [];\n // Element -> handler map\n this.handlersByElement = new Map();\n\n this._active = false;\n }\n\n // Returns true if there are no non-passive handlers\n isEmpty(): boolean {\n return !this._active;\n }\n\n add(\n type: string,\n handler: (event: MjolnirEvent) => void,\n options: HTMLElement | HandlerOptions,\n once: boolean = false,\n passive: boolean = false\n ) {\n const {handlers, handlersByElement} = this;\n let opts: HandlerOptions = DEFAULT_OPTIONS;\n\n if (typeof options === 'string' || (options && (options as HTMLElement).addEventListener)) {\n // is DOM element, backward compatibility\n // @ts-ignore\n opts = {...DEFAULT_OPTIONS, srcElement: options};\n } else if (options) {\n opts = {...DEFAULT_OPTIONS, ...options};\n }\n\n let entries = handlersByElement.get(opts.srcElement);\n if (!entries) {\n entries = [];\n handlersByElement.set(opts.srcElement, entries);\n }\n const entry: EventHandler = {\n type,\n handler,\n srcElement: opts.srcElement,\n priority: opts.priority\n };\n if (once) {\n entry.once = true;\n }\n if (passive) {\n entry.passive = true;\n }\n handlers.push(entry);\n this._active = this._active || !entry.passive;\n\n // Sort handlers by descending priority\n // Handlers with the same priority are excuted in the order of registration\n let insertPosition = entries.length - 1;\n while (insertPosition >= 0) {\n if (entries[insertPosition].priority >= entry.priority) {\n break;\n }\n insertPosition--;\n }\n entries.splice(insertPosition + 1, 0, entry);\n }\n\n remove(type: string, handler: (event: MjolnirEvent) => void) {\n const {handlers, handlersByElement} = this;\n\n for (let i = handlers.length - 1; i >= 0; i--) {\n const entry = handlers[i];\n\n if (entry.type === type && entry.handler === handler) {\n handlers.splice(i, 1);\n const entries = handlersByElement.get(entry.srcElement);\n entries.splice(entries.indexOf(entry), 1);\n if (entries.length === 0) {\n handlersByElement.delete(entry.srcElement);\n }\n }\n }\n this._active = handlers.some(entry => !entry.passive);\n }\n\n /**\n * Handles hammerjs event\n */\n handleEvent = (event: MjolnirEventRaw) => {\n if (this.isEmpty()) {\n return;\n }\n\n const mjolnirEvent = this._normalizeEvent(event);\n let target = event.srcEvent.target as HTMLElement;\n\n while (target && target !== mjolnirEvent.rootElement) {\n this._emit(mjolnirEvent, target);\n if (mjolnirEvent.handled) {\n return;\n }\n target = target.parentNode as HTMLElement;\n }\n this._emit(mjolnirEvent, 'root');\n };\n\n /**\n * Invoke handlers on a particular element\n */\n _emit(\n event: MjolnirEventWrapper,\n srcElement: 'root' | HTMLElement\n ) {\n const entries = this.handlersByElement.get(srcElement);\n\n if (entries) {\n let immediatePropagationStopped = false;\n\n // Prevents the current event from bubbling up\n const stopPropagation = () => {\n event.handled = true;\n };\n // Prevent any remaining listeners from being called\n const stopImmediatePropagation = () => {\n event.handled = true;\n immediatePropagationStopped = true;\n };\n const entriesToRemove: EventHandler[] = [];\n\n for (let i = 0; i < entries.length; i++) {\n const {type, handler, once} = entries[i];\n handler({\n ...event,\n // @ts-ignore\n type,\n stopPropagation,\n stopImmediatePropagation\n });\n if (once) {\n entriesToRemove.push(entries[i]);\n }\n if (immediatePropagationStopped) {\n break;\n }\n }\n\n for (let i = 0; i < entriesToRemove.length; i++) {\n const {type, handler} = entriesToRemove[i];\n this.remove(type, handler);\n }\n }\n }\n\n /**\n * Normalizes hammerjs and custom events to have predictable fields.\n */\n _normalizeEvent(event: T): MjolnirEventWrapper {\n const rootElement = this.eventManager.getElement();\n\n return {\n ...event,\n ...whichButtons(event),\n ...getOffsetPosition(event, rootElement),\n preventDefault: () => {\n event.srcEvent.preventDefault();\n },\n stopImmediatePropagation: null,\n stopPropagation: null,\n handled: false,\n rootElement\n };\n }\n}\n","import {Manager} from './utils/hammer';\nimport type {\n HammerManager,\n HammerManagerConstructor,\n MjolnirEventRaw,\n MjolnirEvent,\n RecognizerOptions,\n RecognizerTuple,\n MjolnirEventHandlers\n} from './types';\n\nimport WheelInput from './inputs/wheel-input';\nimport MoveInput from './inputs/move-input';\nimport KeyInput from './inputs/key-input';\nimport ContextmenuInput from './inputs/contextmenu-input';\n\nimport EventRegistrar, {HandlerOptions} from './utils/event-registrar';\n\nimport {\n BASIC_EVENT_ALIASES,\n EVENT_RECOGNIZER_MAP,\n GESTURE_EVENT_ALIASES,\n RECOGNIZERS,\n RECOGNIZER_COMPATIBLE_MAP,\n RECOGNIZER_FALLBACK_MAP\n} from './constants';\n\nexport type EventManagerOptions = {\n events?: MjolnirEventHandlers;\n recognizers?: RecognizerTuple[];\n recognizerOptions?: {[type: string]: RecognizerOptions};\n Manager?: HammerManagerConstructor;\n touchAction?: string;\n tabIndex?: number;\n};\n\nconst DEFAULT_OPTIONS: EventManagerOptions = {\n // event handlers\n events: null,\n // custom recognizers\n recognizers: null,\n recognizerOptions: {},\n // Manager class\n Manager,\n // allow browser default touch action\n // https://github.com/uber/react-map-gl/issues/506\n touchAction: 'none',\n tabIndex: 0\n};\n\n// Unified API for subscribing to events about both\n// basic input events (e.g. 'mousemove', 'touchstart', 'wheel')\n// and gestural input (e.g. 'click', 'tap', 'panstart').\n// Delegates gesture related event registration and handling to Hammer.js.\nexport default class EventManager {\n private manager: HammerManager;\n private element: HTMLElement;\n private options: EventManagerOptions;\n private events: Map;\n\n // Custom handlers\n private wheelInput: WheelInput;\n private moveInput: MoveInput;\n private contextmenuInput: ContextmenuInput;\n private keyInput: KeyInput;\n\n constructor(element: HTMLElement = null, options: EventManagerOptions) {\n this.options = {...DEFAULT_OPTIONS, ...options};\n this.events = new Map();\n\n this.setElement(element);\n\n // Register all passed events.\n const {events} = this.options;\n if (events) {\n this.on(events);\n }\n }\n\n getElement(): HTMLElement {\n return this.element;\n }\n\n setElement(element: HTMLElement): void {\n if (this.element) {\n // unregister all events\n this.destroy();\n }\n this.element = element;\n if (!element) {\n return;\n }\n\n const {options} = this;\n const ManagerClass = options.Manager;\n\n this.manager = new ManagerClass(element, {\n touchAction: options.touchAction,\n recognizers: options.recognizers || RECOGNIZERS\n }).on('hammer.input', this._onBasicInput);\n\n if (!options.recognizers) {\n // Set default recognize withs\n // http://hammerjs.github.io/recognize-with/\n Object.keys(RECOGNIZER_COMPATIBLE_MAP).forEach(name => {\n const recognizer = this.manager.get(name);\n if (recognizer) {\n RECOGNIZER_COMPATIBLE_MAP[name].forEach(otherName => {\n recognizer.recognizeWith(otherName);\n });\n }\n });\n }\n\n // Set recognizer options\n for (const recognizerName in options.recognizerOptions) {\n const recognizer = this.manager.get(recognizerName);\n if (recognizer) {\n const recognizerOption = options.recognizerOptions[recognizerName];\n // `enable` is managed by the event registrations\n delete recognizerOption.enable;\n recognizer.set(recognizerOption);\n }\n }\n\n // Handle events not handled by Hammer.js:\n // - mouse wheel\n // - pointer/touch/mouse move\n this.wheelInput = new WheelInput(element, this._onOtherEvent, {\n enable: false\n });\n this.moveInput = new MoveInput(element, this._onOtherEvent, {\n enable: false\n });\n this.keyInput = new KeyInput(element, this._onOtherEvent, {\n enable: false,\n tabIndex: options.tabIndex\n });\n this.contextmenuInput = new ContextmenuInput(element, this._onOtherEvent, {\n enable: false\n });\n\n // Register all existing events\n for (const [eventAlias, eventRegistrar] of this.events) {\n if (!eventRegistrar.isEmpty()) {\n // Enable recognizer for this event.\n this._toggleRecognizer(eventRegistrar.recognizerName, true);\n this.manager.on(eventAlias, eventRegistrar.handleEvent);\n }\n }\n }\n\n // Tear down internal event management implementations.\n destroy(): void {\n if (this.element) {\n // wheelInput etc. are created in setElement() and therefore\n // cannot exist if there is no element\n this.wheelInput.destroy();\n this.moveInput.destroy();\n this.keyInput.destroy();\n this.contextmenuInput.destroy();\n this.manager.destroy();\n\n this.wheelInput = null;\n this.moveInput = null;\n this.keyInput = null;\n this.contextmenuInput = null;\n this.manager = null;\n this.element = null;\n }\n }\n\n /** Register multiple event handlers */\n on(events: MjolnirEventHandlers, opts?: HandlerOptions): void;\n on(\n event: EventT['type'],\n handler: (event: EventT) => void,\n opts?: HandlerOptions\n ): void;\n\n /** Register an event handler function to be called on `event` */\n on(event, handler, opts?: any) {\n this._addEventHandler(event, handler, opts, false);\n }\n\n /** Register an event handler function to be called on `event`, then remove it */\n once(events: MjolnirEventHandlers, opts?: HandlerOptions): void;\n once(\n event: EventT['type'],\n handler: (event: EventT) => void,\n opts?: HandlerOptions\n ): void;\n\n once(event: any, handler: any, opts?: any) {\n this._addEventHandler(event, handler, opts, true);\n }\n\n /** Register an event handler function to be called on `event`\n * This handler does not ask the event to be recognized at all times.\n * Instead, it only \"intercepts\" the event if some other handler is getting it.\n */\n watch(events: MjolnirEventHandlers, opts?: HandlerOptions): void;\n watch(\n event: EventT['type'],\n handler: (event: EventT) => void,\n opts?: HandlerOptions\n ): void;\n\n watch(event: any, handler: any, opts?: any) {\n this._addEventHandler(event, handler, opts, false, true);\n }\n\n /**\n * Deregister a previously-registered event handler.\n */\n off(events: MjolnirEventHandlers): void;\n off(event: EventT['type'], handler: (event: EventT) => void): void;\n\n off(event: any, handler?: any) {\n this._removeEventHandler(event, handler);\n }\n\n /*\n * Enable/disable recognizer for the given event\n */\n private _toggleRecognizer(name: string, enabled: boolean): void {\n const {manager} = this;\n if (!manager) {\n return;\n }\n const recognizer = manager.get(name);\n // @ts-ignore\n if (recognizer && recognizer.options.enable !== enabled) {\n recognizer.set({enable: enabled});\n\n const fallbackRecognizers: string[] = RECOGNIZER_FALLBACK_MAP[name];\n if (fallbackRecognizers && !this.options.recognizers) {\n // Set default require failures\n // http://hammerjs.github.io/require-failure/\n fallbackRecognizers.forEach(otherName => {\n const otherRecognizer = manager.get(otherName);\n if (enabled) {\n // Wait for this recognizer to fail\n otherRecognizer.requireFailure(name);\n /**\n * This seems to be a bug in hammerjs:\n * requireFailure() adds both ways\n * dropRequireFailure() only drops one way\n * https://github.com/hammerjs/hammer.js/blob/master/src/recognizerjs/\n recognizer-constructor.js#L136\n */\n recognizer.dropRequireFailure(otherName);\n } else {\n // Do not wait for this recognizer to fail\n otherRecognizer.dropRequireFailure(name);\n }\n });\n }\n }\n this.wheelInput.enableEventType(name, enabled);\n this.moveInput.enableEventType(name, enabled);\n this.keyInput.enableEventType(name, enabled);\n this.contextmenuInput.enableEventType(name, enabled);\n }\n\n /**\n * Process the event registration for a single event + handler.\n */\n private _addEventHandler(\n event: string | MjolnirEventHandlers,\n handler: (event: MjolnirEvent) => void,\n opts?: HandlerOptions,\n once?: boolean,\n passive?: boolean\n ) {\n if (typeof event !== 'string') {\n // @ts-ignore\n opts = handler;\n // If `event` is a map, call `on()` for each entry.\n for (const eventName in event) {\n this._addEventHandler(eventName, event[eventName], opts, once, passive);\n }\n return;\n }\n\n const {manager, events} = this;\n // Alias to a recognized gesture as necessary.\n const eventAlias: string = GESTURE_EVENT_ALIASES[event] || event;\n\n let eventRegistrar = events.get(eventAlias);\n if (!eventRegistrar) {\n eventRegistrar = new EventRegistrar(this);\n events.set(eventAlias, eventRegistrar);\n // Enable recognizer for this event.\n eventRegistrar.recognizerName = EVENT_RECOGNIZER_MAP[eventAlias] || eventAlias;\n // Listen to the event\n if (manager) {\n manager.on(eventAlias, eventRegistrar.handleEvent);\n }\n }\n eventRegistrar.add(event, handler, opts, once, passive);\n if (!eventRegistrar.isEmpty()) {\n this._toggleRecognizer(eventRegistrar.recognizerName, true);\n }\n }\n\n /**\n * Process the event deregistration for a single event + handler.\n */\n private _removeEventHandler(\n event: string | MjolnirEventHandlers,\n handler?: (event: MjolnirEvent) => void\n ) {\n if (typeof event !== 'string') {\n // If `event` is a map, call `off()` for each entry.\n for (const eventName in event) {\n this._removeEventHandler(eventName, event[eventName]);\n }\n return;\n }\n\n const {events} = this;\n // Alias to a recognized gesture as necessary.\n const eventAlias = GESTURE_EVENT_ALIASES[event] || event;\n\n const eventRegistrar = events.get(eventAlias);\n\n if (!eventRegistrar) {\n return;\n }\n\n eventRegistrar.remove(event, handler);\n\n if (eventRegistrar.isEmpty()) {\n const {recognizerName} = eventRegistrar;\n // Disable recognizer if no more handlers are attached to its events\n let isRecognizerUsed = false;\n for (const eh of events.values()) {\n if (eh.recognizerName === recognizerName && !eh.isEmpty()) {\n isRecognizerUsed = true;\n break;\n }\n }\n if (!isRecognizerUsed) {\n this._toggleRecognizer(recognizerName, false);\n }\n }\n }\n\n /**\n * Handle basic events using the 'hammer.input' Hammer.js API:\n * Before running Recognizers, Hammer emits a 'hammer.input' event\n * with the basic event info. This function emits all basic events\n * aliased to the \"class\" of event received.\n * See constants.BASIC_EVENT_CLASSES basic event class definitions.\n */\n private _onBasicInput = (event: MjolnirEventRaw) => {\n const {srcEvent} = event;\n const alias = BASIC_EVENT_ALIASES[srcEvent.type];\n if (alias) {\n // fire all events aliased to srcEvent.type\n this.manager.emit(alias, event);\n }\n };\n\n /**\n * Handle events not supported by Hammer.js,\n * and pipe back out through same (Hammer) channel used by other events.\n */\n private _onOtherEvent = (event: MjolnirEventRaw) => {\n // console.log('onotherevent', event.type, event)\n this.manager.emit(event.type, event);\n };\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport LayerManager from './layer-manager';\nimport ViewManager from './view-manager';\nimport MapView from '../views/map-view';\nimport EffectManager from './effect-manager';\nimport DeckRenderer from './deck-renderer';\nimport DeckPicker from './deck-picker';\nimport Tooltip from './tooltip';\nimport log from '../utils/log';\nimport {deepEqual} from '../utils/deep-equal';\nimport typedArrayManager from '../utils/typed-array-manager';\nimport {VERSION} from './init';\n\nimport {getBrowser} from '@probe.gl/env';\nimport GL from '@luma.gl/constants';\nimport {\n AnimationLoop,\n createGLContext,\n instrumentGLContext,\n setParameters,\n Timeline,\n lumaStats\n} from '@luma.gl/core';\nimport {Stats} from '@probe.gl/stats';\nimport {EventManager} from 'mjolnir.js';\n\nimport assert from '../utils/assert';\nimport {EVENTS} from './constants';\n\nimport type {Effect} from './effect';\nimport type {FilterContext} from '../passes/layers-pass';\nimport type Layer from './layer';\nimport type View from '../views/view';\nimport type Viewport from '../viewports/viewport';\nimport type {RecognizerOptions, MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {Framebuffer} from '@luma.gl/core';\nimport type {TypedArrayManagerOptions} from '../utils/typed-array-manager';\nimport type {ViewStateChangeParameters, InteractionState} from '../controllers/controller';\nimport type {PickingInfo} from './picking/pick-info';\nimport type {PickByPointOptions, PickByRectOptions} from './deck-picker';\nimport type {LayersList} from './layer-manager';\nimport type {TooltipContent} from './tooltip';\n\n/* global document */\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\nconst getCursor = ({isDragging}) => (isDragging ? 'grabbing' : 'grab');\n\nexport type DeckMetrics = {\n fps: number;\n setPropsTime: number;\n updateAttributesTime: number;\n framesRedrawn: number;\n pickTime: number;\n pickCount: number;\n gpuTime: number;\n gpuTimePerFrame: number;\n cpuTime: number;\n cpuTimePerFrame: number;\n bufferMemory: number;\n textureMemory: number;\n renderbufferMemory: number;\n gpuMemory: number;\n};\n\ntype CursorState = {\n /** Whether the cursor is over a pickable object */\n isHovering: boolean;\n /** Whether the cursor is down */\n isDragging: boolean;\n};\n\nexport type DeckProps = {\n /** Id of this Deck instance */\n id?: string;\n /** Width of the canvas, a number in pixels or a valid CSS string.\n * @default `'100%'`\n */\n width?: string | number | null;\n /** Height of the canvas, a number in pixels or a valid CSS string.\n * @default `'100%'`\n */\n height?: string | number | null;\n /** Additional CSS styles for the canvas. */\n style?: Partial | null;\n\n /** Controls the resolution of drawing buffer used for rendering.\n * @default `true` (use browser devicePixelRatio)\n */\n useDevicePixels?: boolean | number;\n /** Extra pixels around the pointer to include while picking.\n * @default `0`\n */\n pickingRadius?: number;\n\n /** WebGL parameters to be set before each frame is rendered.\n * @see https://github.com/visgl/luma.gl/blob/8.5-release/modules/gltools/docs/api-reference/parameter-setting.md#parameters\n */\n parameters?: any;\n /** If supplied, will be called before a layer is drawn to determine whether it should be rendered. */\n layerFilter?: ((context: FilterContext) => boolean) | null;\n\n /** The container to append the auto-created canvas to.\n * @default `document.body`\n */\n parent?: HTMLDivElement | null;\n /** The canvas to render into.\n * Can be either a HTMLCanvasElement or the element id.\n * Will be auto-created if not supplied.\n */\n canvas?: HTMLCanvasElement | string | null;\n /** WebGL context. Will be auto-created if not supplied. */\n gl?: WebGLRenderingContext | null;\n /** Additional options used when creating the WebGL context. */\n glOptions?: WebGLContextAttributes;\n\n /**\n * The array of Layer instances to be rendered.\n * Nested arrays are accepted, as well as falsy values (`null`, `false`, `undefined`)\n */\n layers?: LayersList;\n /** The array of effects to be rendered. A lighting effect will be added if an empty array is supplied. */\n effects?: Effect[];\n /** A single View instance, or an array of `View` instances.\n * @default `new MapView()`\n */\n views?: View | View[] | null;\n /** Options for viewport interactivity, e.g. pan, rotate and zoom with mouse, touch and keyboard.\n * This is a shorthand for defining interaction with the `views` prop if you are using the default view (i.e. a single `MapView`)\n */\n controller?: View['props']['controller'];\n /**\n * An object that describes the view state for each view in the `views` prop.\n * Use if the camera state should be managed external to the `Deck` instance.\n */\n viewState?: any;\n /**\n * If provided, the `Deck` instance will track camera state changes automatically,\n * with `initialViewState` as its initial settings.\n */\n initialViewState?: any;\n\n /** Allow browser default touch actions.\n * @default `'none'`\n */\n touchAction?: string;\n /** Set Hammer.js recognizer options for gesture recognition. See documentation for details. */\n eventRecognizerOptions?: {\n [type: string]: RecognizerOptions;\n };\n\n /** (Experimental) Render to a custom frame buffer other than to screen. */\n _framebuffer?: Framebuffer | null;\n /** (Experimental) Forces deck.gl to redraw layers every animation frame. */\n _animate?: boolean;\n /** (Experimental) If set to `false`, force disables all picking features, disregarding the `pickable` prop set in any layer. */\n _pickable?: boolean;\n /** (Experimental) Fine-tune attribute memory usage. See documentation for details. */\n _typedArrayManagerProps?: TypedArrayManagerOptions;\n\n /** Called once the WebGL context has been initiated. */\n onWebGLInitialized?: (gl: WebGLRenderingContext) => void;\n /** Called when the canvas resizes. */\n onResize?: (dimensions: {width: number; height: number}) => void;\n /** Called when the user has interacted with the deck.gl canvas, e.g. using mouse, touch or keyboard. */\n onViewStateChange?: (params: ViewStateChangeParameters & {viewId: string}) => any;\n /** Called when the user has interacted with the deck.gl canvas, e.g. using mouse, touch or keyboard. */\n onInteractionStateChange?: (state: InteractionState) => void;\n /** Called just before the canvas rerenders. */\n onBeforeRender?: (context: {gl: WebGLRenderingContext}) => void;\n /** Called right after the canvas rerenders. */\n onAfterRender?: (context: {gl: WebGLRenderingContext}) => void;\n /** Called once after gl context and all Deck components are created. */\n onLoad?: () => void;\n /** Called if deck.gl encounters an error.\n * If this callback is set to `null`, errors are silently ignored.\n * @default `console.error`\n */\n onError?: ((error: Error, layer?: Layer) => void) | null;\n /** Called when the pointer moves over the canvas. */\n onHover?: ((info: PickingInfo, event: MjolnirPointerEvent) => void) | null;\n /** Called when clicking on the canvas. */\n onClick?: ((info: PickingInfo, event: MjolnirGestureEvent) => void) | null;\n /** Called when the user starts dragging on the canvas. */\n onDragStart?: ((info: PickingInfo, event: MjolnirGestureEvent) => void) | null;\n /** Called when dragging the canvas. */\n onDrag?: ((info: PickingInfo, event: MjolnirGestureEvent) => void) | null;\n /** Called when the user releases from dragging the canvas. */\n onDragEnd?: ((info: PickingInfo, event: MjolnirGestureEvent) => void) | null;\n\n /** (Experimental) Replace the default redraw procedure */\n _customRender?: ((reason: string) => void) | null;\n /** (Experimental) Called once every second with performance metrics. */\n _onMetrics?: ((metrics: DeckMetrics) => void) | null;\n\n /** A custom callback to retrieve the cursor type. */\n getCursor?: (state: CursorState) => string;\n /** Callback that takes a hovered-over point and renders a tooltip. */\n getTooltip?: ((info: PickingInfo) => TooltipContent) | null;\n\n /** (Debug) Flag to enable WebGL debug mode. Requires importing `@luma.gl/debug`. */\n debug?: boolean;\n /** (Debug) Render the picking buffer to screen. */\n drawPickingColors?: boolean;\n};\n\nconst defaultProps = {\n id: '',\n width: '100%',\n height: '100%',\n style: null,\n viewState: null,\n initialViewState: null,\n pickingRadius: 0,\n layerFilter: null,\n glOptions: {},\n parameters: {},\n parent: null,\n gl: null,\n canvas: null,\n layers: [],\n effects: [],\n views: null,\n controller: null, // Rely on external controller, e.g. react-map-gl\n useDevicePixels: true,\n touchAction: 'none',\n eventRecognizerOptions: {},\n _framebuffer: null,\n _animate: false,\n _pickable: true,\n _typedArrayManagerProps: {},\n _customRender: null,\n\n onWebGLInitialized: noop,\n onResize: noop,\n onViewStateChange: noop,\n onInteractionStateChange: noop,\n onBeforeRender: noop,\n onAfterRender: noop,\n onLoad: noop,\n onError: (error: Error) => log.error(error.message)(),\n onHover: null,\n onClick: null,\n onDragStart: null,\n onDrag: null,\n onDragEnd: null,\n _onMetrics: null,\n\n getCursor,\n getTooltip: null,\n\n debug: false,\n drawPickingColors: false\n};\n\n/* eslint-disable max-statements */\nexport default class Deck {\n static defaultProps = defaultProps;\n // This is used to defeat tree shaking of init.js\n // https://github.com/visgl/deck.gl/issues/3213\n static VERSION = VERSION;\n\n readonly props: Required;\n readonly width: number = 0;\n readonly height: number = 0;\n // Allows attaching arbitrary data to the instance\n readonly userData: Record = {};\n\n protected canvas: HTMLCanvasElement | null = null;\n protected viewManager: ViewManager | null = null;\n protected layerManager: LayerManager | null = null;\n protected effectManager: EffectManager | null = null;\n protected deckRenderer: DeckRenderer | null = null;\n protected deckPicker: DeckPicker | null = null;\n protected eventManager: EventManager | null = null;\n protected tooltip: Tooltip | null = null;\n protected metrics: DeckMetrics;\n protected animationLoop: AnimationLoop;\n protected stats: Stats;\n\n /** Internal view state if no callback is supplied */\n protected viewState: any;\n protected cursorState: CursorState;\n\n private _needsRedraw: false | string;\n private _pickRequest: {\n mode: string;\n event: MjolnirPointerEvent | null;\n x: number;\n y: number;\n radius: number;\n };\n /**\n * Pick and store the object under the pointer on `pointerdown`.\n * This object is reused for subsequent `onClick` and `onDrag*` callbacks.\n */\n private _lastPointerDownInfo: PickingInfo | null = null;\n private _metricsCounter: number;\n\n constructor(props: DeckProps) {\n this.props = {...defaultProps, ...props};\n props = this.props;\n\n this._needsRedraw = 'Initial render';\n this._pickRequest = {\n mode: 'hover',\n x: -1,\n y: -1,\n radius: 0,\n event: null\n };\n\n this.cursorState = {\n isHovering: false,\n isDragging: false\n };\n\n if (props.viewState && props.initialViewState) {\n log.warn(\n 'View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.'\n )();\n }\n if (getBrowser() === 'IE') {\n log.warn('IE 11 is not supported')();\n }\n this.viewState = props.initialViewState;\n\n if (!props.gl) {\n // Note: LayerManager creation deferred until gl context available\n if (typeof document !== 'undefined') {\n this.canvas = this._createCanvas(props);\n }\n }\n this.animationLoop = this._createAnimationLoop(props);\n\n this.stats = new Stats({id: 'deck.gl'});\n this.metrics = {\n fps: 0,\n setPropsTime: 0,\n updateAttributesTime: 0,\n framesRedrawn: 0,\n pickTime: 0,\n pickCount: 0,\n gpuTime: 0,\n gpuTimePerFrame: 0,\n cpuTime: 0,\n cpuTimePerFrame: 0,\n bufferMemory: 0,\n textureMemory: 0,\n renderbufferMemory: 0,\n gpuMemory: 0\n };\n this._metricsCounter = 0;\n\n this.setProps(props);\n\n // UNSAFE/experimental prop: only set at initialization to avoid performance hit\n if (props._typedArrayManagerProps) {\n typedArrayManager.setOptions(props._typedArrayManagerProps);\n }\n\n this.animationLoop.start();\n }\n\n /** Stop rendering and dispose all resources */\n finalize() {\n this.animationLoop?.stop();\n this.animationLoop = null;\n this._lastPointerDownInfo = null;\n\n this.layerManager?.finalize();\n this.layerManager = null;\n\n this.viewManager?.finalize();\n this.viewManager = null;\n\n this.effectManager?.finalize();\n this.effectManager = null;\n\n this.deckRenderer?.finalize();\n this.deckRenderer = null;\n\n this.deckPicker?.finalize();\n this.deckPicker = null;\n\n this.eventManager?.destroy();\n this.eventManager = null;\n\n this.tooltip?.remove();\n this.tooltip = null;\n\n if (!this.props.canvas && !this.props.gl && this.canvas) {\n // remove internally created canvas\n this.canvas.parentElement?.removeChild(this.canvas);\n this.canvas = null;\n }\n }\n\n /** Partially update props */\n setProps(props: DeckProps): void {\n this.stats.get('setProps Time').timeStart();\n\n if ('onLayerHover' in props) {\n log.removed('onLayerHover', 'onHover')();\n }\n if ('onLayerClick' in props) {\n log.removed('onLayerClick', 'onClick')();\n }\n if (\n props.initialViewState &&\n // depth = 3 when comparing viewStates: viewId.position.0\n !deepEqual(this.props.initialViewState, props.initialViewState, 3)\n ) {\n // Overwrite internal view state\n this.viewState = props.initialViewState;\n }\n\n // Merge with existing props\n Object.assign(this.props, props);\n\n // Update CSS size of canvas\n this._setCanvasSize(this.props);\n\n // We need to overwrite CSS style width and height with actual, numeric values\n const resolvedProps: Required & {\n width: number;\n height: number;\n views: View[];\n viewState: Record;\n } = Object.create(this.props);\n Object.assign(resolvedProps, {\n views: this._getViews(),\n width: this.width,\n height: this.height,\n viewState: this._getViewState()\n });\n\n // Update the animation loop\n this.animationLoop.setProps(resolvedProps);\n\n // If initialized, update sub manager props\n if (this.layerManager) {\n this.viewManager!.setProps(resolvedProps);\n // Make sure that any new layer gets initialized with the current viewport\n this.layerManager.activateViewport(this.getViewports()[0]);\n this.layerManager.setProps(resolvedProps);\n this.effectManager!.setProps(resolvedProps);\n this.deckRenderer!.setProps(resolvedProps);\n this.deckPicker!.setProps(resolvedProps);\n }\n\n this.stats.get('setProps Time').timeEnd();\n }\n\n // Public API\n\n /**\n * Check if a redraw is needed\n * @returns `false` or a string summarizing the redraw reason\n */\n needsRedraw(\n opts: {\n /** Reset the redraw flag afterwards. Default `true` */\n clearRedrawFlags: boolean;\n } = {clearRedrawFlags: false}\n ): false | string {\n if (!this.layerManager) {\n // Not initialized or already finalized\n return false;\n }\n if (this.props._animate) {\n return 'Deck._animate';\n }\n\n let redraw: false | string = this._needsRedraw;\n\n if (opts.clearRedrawFlags) {\n this._needsRedraw = false;\n }\n\n const viewManagerNeedsRedraw = this.viewManager!.needsRedraw(opts);\n const layerManagerNeedsRedraw = this.layerManager.needsRedraw(opts);\n const effectManagerNeedsRedraw = this.effectManager!.needsRedraw(opts);\n const deckRendererNeedsRedraw = this.deckRenderer!.needsRedraw(opts);\n\n redraw =\n redraw ||\n viewManagerNeedsRedraw ||\n layerManagerNeedsRedraw ||\n effectManagerNeedsRedraw ||\n deckRendererNeedsRedraw;\n return redraw;\n }\n\n /**\n * Redraw the GL context\n * @param reason If not provided, only redraw if deemed necessary. Otherwise redraw regardless of internal states.\n * @returns\n */\n redraw(reason?: string): void {\n if (!this.layerManager) {\n // Not yet initialized\n return;\n }\n // Check if we need to redraw\n let redrawReason = this.needsRedraw({clearRedrawFlags: true});\n // User-supplied should take precedent, however the redraw flags get cleared regardless\n redrawReason = reason || redrawReason;\n\n if (!redrawReason) {\n return;\n }\n\n this.stats.get('Redraw Count').incrementCount();\n if (this.props._customRender) {\n this.props._customRender(redrawReason);\n } else {\n this._drawLayers(redrawReason);\n }\n }\n\n /** Flag indicating that the Deck instance has initialized its resources and it's safe to call public methods. */\n get isInitialized(): boolean {\n return this.viewManager !== null;\n }\n\n /** Get a list of views that are currently rendered */\n getViews(): View[] {\n assert(this.viewManager);\n return this.viewManager.views;\n }\n\n /** Get a list of viewports that are currently rendered.\n * @param rect If provided, only returns viewports within the given bounding box.\n */\n getViewports(rect?: {x: number; y: number; width?: number; height?: number}): Viewport[] {\n assert(this.viewManager);\n return this.viewManager.getViewports(rect);\n }\n\n /** Query the object rendered on top at a given point */\n pickObject(opts: {\n /** x position in pixels */\n x: number;\n /** y position in pixels */\n y: number;\n /** Radius of tolerance in pixels. Default `0`. */\n radius?: number;\n /** A list of layer ids to query from. If not specified, then all pickable and visible layers are queried. */\n layerIds?: string[];\n /** If `true`, `info.coordinate` will be a 3D point by unprojecting the `x, y` screen coordinates onto the picked geometry. Default `false`. */\n unproject3D?: boolean;\n }): PickingInfo | null {\n const infos = this._pick('pickObject', 'pickObject Time', opts).result;\n return infos.length ? infos[0] : null;\n }\n\n /* Query all rendered objects at a given point */\n pickMultipleObjects(opts: {\n /** x position in pixels */\n x: number;\n /** y position in pixels */\n y: number;\n /** Radius of tolerance in pixels. Default `0`. */\n radius?: number;\n /** Specifies the max number of objects to return. Default `10`. */\n depth?: number;\n /** A list of layer ids to query from. If not specified, then all pickable and visible layers are queried. */\n layerIds?: string[];\n /** If `true`, `info.coordinate` will be a 3D point by unprojecting the `x, y` screen coordinates onto the picked geometry. Default `false`. */\n unproject3D?: boolean;\n }): PickingInfo[] {\n opts.depth = opts.depth || 10;\n return this._pick('pickObject', 'pickMultipleObjects Time', opts).result;\n }\n\n /* Query all objects rendered on top within a bounding box */\n pickObjects(opts: {\n /** Left of the bounding box in pixels */\n x: number;\n /** Top of the bounding box in pixels */\n y: number;\n /** Width of the bounding box in pixels. Default `1` */\n width?: number;\n /** Height of the bounding box in pixels. Default `1` */\n height?: number;\n /** A list of layer ids to query from. If not specified, then all pickable and visible layers are queried. */\n layerIds?: string[];\n /** If specified, limits the number of objects that can be returned. */\n maxObjects?: number | null;\n }): PickingInfo[] {\n return this._pick('pickObjects', 'pickObjects Time', opts);\n }\n\n /** Experimental\n * Add a global resource for sharing among layers\n */\n _addResources(\n resources: {\n [id: string]: any;\n },\n forceUpdate = false\n ) {\n for (const id in resources) {\n this.layerManager!.resourceManager.add({resourceId: id, data: resources[id], forceUpdate});\n }\n }\n\n /** Experimental\n * Remove a global resource\n */\n _removeResources(resourceIds: string[]) {\n for (const id of resourceIds) {\n this.layerManager!.resourceManager.remove(id);\n }\n }\n\n /** Experimental\n * Register a default effect. Effects will be sorted by order, those with a low order will be rendered first\n */\n _addDefaultEffect(effect: Effect) {\n this.effectManager!.addDefaultEffect(effect);\n }\n\n // Private Methods\n\n private _pick(\n method: 'pickObject',\n statKey: string,\n opts: PickByPointOptions & {layerIds?: string[]}\n ): {\n result: PickingInfo[];\n emptyInfo: PickingInfo;\n };\n private _pick(\n method: 'pickObjects',\n statKey: string,\n opts: PickByRectOptions & {layerIds?: string[]}\n ): PickingInfo[];\n\n private _pick(\n method: 'pickObject' | 'pickObjects',\n statKey: string,\n opts: (PickByPointOptions | PickByRectOptions) & {layerIds?: string[]}\n ) {\n assert(this.deckPicker);\n\n const {stats} = this;\n\n stats.get('Pick Count').incrementCount();\n stats.get(statKey).timeStart();\n\n const infos = this.deckPicker[method]({\n // layerManager, viewManager and effectManager are always defined if deckPicker is\n layers: this.layerManager!.getLayers(opts),\n views: this.viewManager!.getViews(),\n viewports: this.getViewports(opts),\n onViewportActive: this.layerManager!.activateViewport,\n effects: this.effectManager!.getEffects(),\n ...opts\n });\n\n stats.get(statKey).timeEnd();\n\n return infos;\n }\n\n /** Resolve props.canvas to element */\n private _createCanvas(props: DeckProps): HTMLCanvasElement {\n let canvas = props.canvas;\n\n // TODO EventManager should accept element id\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas) as HTMLCanvasElement;\n assert(canvas);\n }\n\n if (!canvas) {\n canvas = document.createElement('canvas');\n canvas.id = props.id || 'deckgl-overlay';\n const parent = props.parent || document.body;\n parent.appendChild(canvas);\n }\n\n Object.assign(canvas.style, props.style);\n\n return canvas;\n }\n\n /** Updates canvas width and/or height, if provided as props */\n private _setCanvasSize(props: Required): void {\n if (!this.canvas) {\n return;\n }\n\n const {width, height} = props;\n // Set size ONLY if props are being provided, otherwise let canvas be layouted freely\n if (width || width === 0) {\n const cssWidth = Number.isFinite(width) ? `${width}px` : (width as string);\n this.canvas.style.width = cssWidth;\n }\n if (height || height === 0) {\n const cssHeight = Number.isFinite(height) ? `${height}px` : (height as string);\n // Note: position==='absolute' required for height 100% to work\n this.canvas.style.position = props.style?.position || 'absolute';\n this.canvas.style.height = cssHeight;\n }\n }\n\n /** If canvas size has changed, reads out the new size and update */\n private _updateCanvasSize(): void {\n const {canvas} = this;\n if (!canvas) {\n return;\n }\n // Fallback to width/height when clientWidth/clientHeight are undefined (OffscreenCanvas).\n const newWidth = canvas.clientWidth ?? canvas.width;\n const newHeight = canvas.clientHeight ?? canvas.height;\n if (newWidth !== this.width || newHeight !== this.height) {\n // @ts-expect-error private assign to read-only property\n this.width = newWidth;\n // @ts-expect-error private assign to read-only property\n this.height = newHeight;\n this.viewManager?.setProps({width: newWidth, height: newHeight});\n // Make sure that any new layer gets initialized with the current viewport\n this.layerManager?.activateViewport(this.getViewports()[0]);\n this.props.onResize({width: newWidth, height: newHeight});\n }\n }\n\n private _createAnimationLoop(props: DeckProps): AnimationLoop {\n const {\n width,\n height,\n gl,\n glOptions,\n debug,\n onError,\n onBeforeRender,\n onAfterRender,\n useDevicePixels\n } = props;\n\n return new AnimationLoop({\n width,\n height,\n useDevicePixels,\n autoResizeDrawingBuffer: !gl, // do not auto resize external context\n autoResizeViewport: false,\n gl,\n onCreateContext: opts =>\n createGLContext({\n ...glOptions,\n ...opts,\n canvas: this.canvas,\n debug,\n onContextLost: () => this._onContextLost()\n }),\n onInitialize: context => this._setGLContext(context.gl),\n onRender: this._onRenderFrame.bind(this),\n onBeforeRender,\n onAfterRender,\n onError\n });\n }\n\n // Get the most relevant view state: props.viewState, if supplied, shadows internal viewState\n // TODO: For backwards compatibility ensure numeric width and height is added to the viewState\n private _getViewState(): Record {\n return this.props.viewState || this.viewState;\n }\n\n // Get the view descriptor list\n private _getViews(): View[] {\n // Default to a full screen map view port\n let views = this.props.views || [new MapView({id: 'default-view'})];\n views = Array.isArray(views) ? views : [views];\n if (views.length && this.props.controller) {\n // Backward compatibility: support controller prop\n views[0].props.controller = this.props.controller;\n }\n return views;\n }\n\n private _onContextLost() {\n const {onError} = this.props;\n if (this.animationLoop && onError) {\n onError(new Error('WebGL context is lost'));\n }\n }\n\n // The `pointermove` event may fire multiple times in between two animation frames,\n // it's a waste of time to run picking without rerender. Instead we save the last pick\n // request and only do it once on the next animation frame.\n /** Internal use only: event handler for pointerdown */\n _onPointerMove = (event: MjolnirPointerEvent) => {\n const {_pickRequest} = this;\n if (event.type === 'pointerleave') {\n _pickRequest.x = -1;\n _pickRequest.y = -1;\n _pickRequest.radius = 0;\n } else if (event.leftButton || event.rightButton) {\n // Do not trigger onHover callbacks if mouse button is down.\n return;\n } else {\n const pos = event.offsetCenter;\n // Do not trigger callbacks when click/hover position is invalid. Doing so will cause a\n // assertion error when attempting to unproject the position.\n if (!pos) {\n return;\n }\n _pickRequest.x = pos.x;\n _pickRequest.y = pos.y;\n _pickRequest.radius = this.props.pickingRadius;\n }\n\n if (this.layerManager) {\n this.layerManager.context.mousePosition = {x: _pickRequest.x, y: _pickRequest.y};\n }\n\n _pickRequest.event = event;\n };\n\n /** Actually run picking */\n private _pickAndCallback() {\n const {_pickRequest} = this;\n\n if (_pickRequest.event) {\n // Perform picking\n const {result, emptyInfo} = this._pick('pickObject', 'pickObject Time', _pickRequest);\n this.cursorState.isHovering = result.length > 0;\n\n // There are 4 possible scenarios:\n // result is [outInfo, pickedInfo] (moved from one pickable layer to another)\n // result is [outInfo] (moved outside of a pickable layer)\n // result is [pickedInfo] (moved into or over a pickable layer)\n // result is [] (nothing is or was picked)\n //\n // `layer.props.onHover` should be called on all affected layers (out/over)\n // `deck.props.onHover` should be called with the picked info if any, or empty info otherwise\n // `deck.props.getTooltip` should be called with the picked info if any, or empty info otherwise\n\n // Execute callbacks\n let pickedInfo = emptyInfo;\n let handled = false;\n for (const info of result) {\n pickedInfo = info;\n handled = info.layer?.onHover(info, _pickRequest.event) || handled;\n }\n if (!handled && this.props.onHover) {\n this.props.onHover(pickedInfo, _pickRequest.event);\n }\n\n // Update tooltip\n if (this.props.getTooltip && this.tooltip) {\n const displayInfo = this.props.getTooltip(pickedInfo);\n this.tooltip.setTooltip(displayInfo, pickedInfo.x, pickedInfo.y);\n }\n\n // Clear pending pickRequest\n _pickRequest.event = null;\n }\n }\n\n private _updateCursor(): void {\n const container = this.props.parent || this.canvas;\n if (container) {\n container.style.cursor = this.props.getCursor(this.cursorState);\n }\n }\n\n private _setGLContext(gl: WebGLRenderingContext) {\n if (this.layerManager) {\n return;\n }\n\n // if external context...\n if (!this.canvas) {\n this.canvas = gl.canvas;\n instrumentGLContext(gl, {enable: true, copyState: true});\n }\n\n this.tooltip = new Tooltip(this.canvas);\n\n setParameters(gl, {\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthTest: true,\n depthFunc: GL.LEQUAL\n });\n\n this.props.onWebGLInitialized(gl);\n\n // timeline for transitions\n const timeline = new Timeline();\n timeline.play();\n this.animationLoop.attachTimeline(timeline);\n\n this.eventManager = new EventManager(this.props.parent || gl.canvas, {\n touchAction: this.props.touchAction,\n recognizerOptions: this.props.eventRecognizerOptions,\n events: {\n pointerdown: this._onPointerDown,\n pointermove: this._onPointerMove,\n pointerleave: this._onPointerMove\n }\n });\n for (const eventType in EVENTS) {\n this.eventManager.on(eventType as keyof typeof EVENTS, this._onEvent);\n }\n\n this.viewManager = new ViewManager({\n timeline,\n eventManager: this.eventManager,\n onViewStateChange: this._onViewStateChange.bind(this),\n onInteractionStateChange: this._onInteractionStateChange.bind(this),\n views: this._getViews(),\n viewState: this._getViewState(),\n width: this.width,\n height: this.height\n });\n\n // viewManager must be initialized before layerManager\n // layerManager depends on viewport created by viewManager.\n const viewport = this.viewManager.getViewports()[0];\n\n // Note: avoid React setState due GL animation loop / setState timing issue\n this.layerManager = new LayerManager(gl, {\n deck: this,\n stats: this.stats,\n viewport,\n timeline\n });\n\n this.effectManager = new EffectManager();\n\n this.deckRenderer = new DeckRenderer(gl);\n\n this.deckPicker = new DeckPicker(gl);\n\n this.setProps(this.props);\n\n this._updateCanvasSize();\n this.props.onLoad();\n }\n\n /** Internal only: default render function (redraw all layers and views) */\n _drawLayers(\n redrawReason: string,\n renderOptions?: {\n target?: Framebuffer;\n layerFilter?: (context: FilterContext) => boolean;\n layers?: Layer[];\n viewports?: Viewport[];\n views?: {[viewId: string]: View};\n pass?: string;\n effects?: Effect[];\n clearStack?: boolean;\n clearCanvas?: boolean;\n }\n ) {\n const {gl} = this.layerManager!.context;\n\n setParameters(gl, this.props.parameters);\n\n this.props.onBeforeRender({gl});\n\n this.deckRenderer!.renderLayers({\n target: this.props._framebuffer,\n layers: this.layerManager!.getLayers(),\n viewports: this.viewManager!.getViewports(),\n onViewportActive: this.layerManager!.activateViewport,\n views: this.viewManager!.getViews(),\n pass: 'screen',\n effects: this.effectManager!.getEffects(),\n ...renderOptions\n });\n\n this.props.onAfterRender({gl});\n }\n\n // Callbacks\n\n private _onRenderFrame(animationProps: any) {\n this._getFrameStats();\n\n // Log perf stats every second\n if (this._metricsCounter++ % 60 === 0) {\n this._getMetrics();\n this.stats.reset();\n log.table(4, this.metrics)();\n\n // Experimental: report metrics\n if (this.props._onMetrics) {\n this.props._onMetrics(this.metrics);\n }\n }\n\n this._updateCanvasSize();\n\n this._updateCursor();\n\n // If view state has changed, clear tooltip\n if (this.tooltip!.isVisible && this.viewManager!.needsRedraw()) {\n this.tooltip!.setTooltip(null);\n }\n\n // Update layers if needed (e.g. some async prop has loaded)\n // Note: This can trigger a redraw\n this.layerManager!.updateLayers();\n\n // Perform picking request if any\n this._pickAndCallback();\n\n // Redraw if necessary\n this.redraw();\n\n // Update viewport transition if needed\n // Note: this can trigger `onViewStateChange`, and affect layers\n // We want to defer these changes to the next frame\n if (this.viewManager) {\n this.viewManager.updateViewStates();\n }\n }\n\n // Callbacks\n\n private _onViewStateChange(params: ViewStateChangeParameters & {viewId: string}) {\n // Let app know that view state is changing, and give it a chance to change it\n const viewState = this.props.onViewStateChange(params) || params.viewState;\n\n // If initialViewState was set on creation, auto track position\n if (this.viewState) {\n this.viewState = {...this.viewState, [params.viewId]: viewState};\n if (!this.props.viewState) {\n // Apply internal view state\n if (this.viewManager) {\n this.viewManager.setProps({viewState: this.viewState});\n }\n }\n }\n }\n\n private _onInteractionStateChange(interactionState: InteractionState) {\n this.cursorState.isDragging = interactionState.isDragging || false;\n this.props.onInteractionStateChange(interactionState);\n }\n\n /** Internal use only: event handler for click & drag */\n _onEvent = (event: MjolnirGestureEvent) => {\n const eventOptions = EVENTS[event.type];\n const pos = event.offsetCenter;\n\n if (!eventOptions || !pos || !this.layerManager) {\n return;\n }\n\n // Reuse last picked object\n const layers = this.layerManager.getLayers();\n const info = this.deckPicker!.getLastPickedObject(\n {\n x: pos.x,\n y: pos.y,\n layers,\n viewports: this.getViewports(pos)\n },\n this._lastPointerDownInfo\n );\n\n const {layer} = info;\n const layerHandler =\n layer && (layer[eventOptions.handler] || layer.props[eventOptions.handler]);\n const rootHandler = this.props[eventOptions.handler];\n let handled = false;\n\n if (layerHandler) {\n handled = layerHandler.call(layer, info, event);\n }\n if (!handled && rootHandler) {\n rootHandler(info, event);\n }\n };\n\n /** Internal use only: evnet handler for pointerdown */\n _onPointerDown = (event: MjolnirPointerEvent) => {\n const pos = event.offsetCenter;\n const pickedInfo = this._pick('pickObject', 'pickObject Time', {\n x: pos.x,\n y: pos.y,\n radius: this.props.pickingRadius\n });\n this._lastPointerDownInfo = pickedInfo.result[0] || pickedInfo.emptyInfo;\n };\n\n private _getFrameStats(): void {\n const {stats} = this;\n stats.get('frameRate').timeEnd();\n stats.get('frameRate').timeStart();\n\n // Get individual stats from luma.gl so reset works\n const animationLoopStats = this.animationLoop.stats;\n stats.get('GPU Time').addTime(animationLoopStats.get('GPU Time').lastTiming);\n stats.get('CPU Time').addTime(animationLoopStats.get('CPU Time').lastTiming);\n }\n\n private _getMetrics(): void {\n const {metrics, stats} = this;\n metrics.fps = stats.get('frameRate').getHz();\n metrics.setPropsTime = stats.get('setProps Time').time;\n metrics.updateAttributesTime = stats.get('Update Attributes').time;\n metrics.framesRedrawn = stats.get('Redraw Count').count;\n metrics.pickTime =\n stats.get('pickObject Time').time +\n stats.get('pickMultipleObjects Time').time +\n stats.get('pickObjects Time').time;\n metrics.pickCount = stats.get('Pick Count').count;\n\n // Luma stats\n metrics.gpuTime = stats.get('GPU Time').time;\n metrics.cpuTime = stats.get('CPU Time').time;\n metrics.gpuTimePerFrame = stats.get('GPU Time').getAverageTime();\n metrics.cpuTimePerFrame = stats.get('CPU Time').getAverageTime();\n\n const memoryStats = lumaStats.get('Memory Usage');\n metrics.bufferMemory = memoryStats.get('Buffer Memory').count;\n metrics.textureMemory = memoryStats.get('Texture Memory').count;\n metrics.renderbufferMemory = memoryStats.get('Renderbuffer Memory').count;\n metrics.gpuMemory = memoryStats.get('GPU Memory').count;\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport Vector from './base/vector';\nimport {config, isArray} from '../lib/common';\nimport {checkNumber} from '../lib/validators';\nimport * as vec2 from 'gl-matrix/vec2';\n/* eslint-disable camelcase */\nimport {vec2_transformMat4AsVector} from '../lib/gl-matrix-extras';\nimport {NumericArray} from '@math.gl/types';\n\n/**\n * Two-element vector class.\n * Subclass of Array\n */\nexport default class Vector2 extends Vector {\n // Creates a new, empty vec2\n constructor(x: number | Readonly = 0, y: number = 0) {\n // PERF NOTE: initialize elements as double precision numbers\n super(2); // -0, -0);\n if (isArray(x) && arguments.length === 1) {\n this.copy(x as Readonly);\n } else {\n if (config.debug) {\n checkNumber(x);\n checkNumber(y);\n }\n this[0] = x as number;\n this[1] = y;\n }\n }\n\n set(x: number, y: number): this {\n this[0] = x;\n this[1] = y;\n return this.check();\n }\n\n copy(array: Readonly): this {\n this[0] = array[0];\n this[1] = array[1];\n return this.check();\n }\n\n fromObject(object: {x: number; y: number}): this {\n if (config.debug) {\n checkNumber(object.x);\n checkNumber(object.y);\n }\n this[0] = object.x;\n this[1] = object.y;\n return this.check();\n }\n\n toObject(object: {x?: number; y?: number}): {x: number; y: number} {\n object.x = this[0];\n object.y = this[1];\n return object as {x: number; y: number};\n }\n\n // Getters/setters\n\n get ELEMENTS(): number {\n return 2;\n }\n\n /**\n * Returns angle from x axis\n * @returns\n */\n horizontalAngle(): number {\n return Math.atan2(this.y, this.x);\n }\n\n /**\n * Returns angle from y axis\n * @returns\n */\n verticalAngle(): number {\n return Math.atan2(this.x, this.y);\n }\n\n // Transforms\n\n /**\n * Transforms as point\n * @param matrix4\n * @returns\n */\n transform(matrix4: Readonly): this {\n return this.transformAsPoint(matrix4);\n }\n\n /**\n * transforms as point (4th component is implicitly 1)\n * @param matrix4\n * @returns\n */\n transformAsPoint(matrix4: Readonly): this {\n vec2.transformMat4(this, this, matrix4);\n return this.check();\n }\n\n /**\n * transforms as vector (4th component is implicitly 0, ignores translation. slightly faster)\n * @param matrix4\n * @returns\n */\n transformAsVector(matrix4: Readonly): this {\n vec2_transformMat4AsVector(this, this, matrix4);\n return this.check();\n }\n\n transformByMatrix3(matrix3: Readonly): this {\n vec2.transformMat3(this, this, matrix3);\n return this.check();\n }\n\n transformByMatrix2x3(matrix2x3: Readonly): this {\n vec2.transformMat2d(this, this, matrix2x3);\n return this.check();\n }\n\n transformByMatrix2(matrix2: Readonly): this {\n vec2.transformMat2(this, this, matrix2);\n return this.check();\n }\n}\n","/* global google, document */\nimport {Deck} from '@deck.gl/core';\nimport {Matrix4, Vector2} from '@math.gl/core';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\n\n// https://en.wikipedia.org/wiki/Web_Mercator_projection#Formulas\nconst MAX_LATITUDE = 85.05113;\n\ntype UserData = {\n _googleMap: google.maps.Map;\n _eventListeners: Record;\n};\n\n/**\n * Get a new deck instance\n * @param map (google.maps.Map) - The parent Map instance\n * @param overlay (google.maps.OverlayView) - A maps Overlay instance\n * @param [deck] (Deck) - a previously created instances\n */\nexport function createDeckInstance(\n map: google.maps.Map,\n overlay: google.maps.OverlayView | google.maps.WebGLOverlayView,\n deck: Deck | null | undefined,\n props\n): Deck {\n if (deck) {\n if (deck.userData._googleMap === map) {\n return deck;\n }\n // deck instance was created for a different map\n destroyDeckInstance(deck);\n }\n\n const eventListeners = {\n click: null,\n rightclick: null,\n dblclick: null,\n mousemove: null,\n mouseout: null\n };\n\n const newDeck = new Deck({\n ...props,\n useDevicePixels: props.interleaved ? true : props.useDevicePixels,\n style: props.interleaved ? null : {pointerEvents: 'none'},\n parent: getContainer(overlay, props.style),\n initialViewState: {\n longitude: 0,\n latitude: 0,\n zoom: 1\n },\n controller: false\n });\n\n // Register event listeners\n for (const eventType in eventListeners) {\n eventListeners[eventType] = map.addListener(eventType, evt =>\n handleMouseEvent(newDeck, eventType, evt)\n );\n }\n\n // Attach userData directly to Deck instance\n (newDeck.userData as UserData)._googleMap = map;\n (newDeck.userData as UserData)._eventListeners = eventListeners;\n\n return newDeck;\n}\n\n// Create a container that will host the deck canvas and tooltip\nfunction getContainer(\n overlay: google.maps.OverlayView | google.maps.WebGLOverlayView,\n style?: Partial\n): HTMLElement {\n const container = document.createElement('div');\n container.style.position = 'absolute';\n Object.assign(container.style, style);\n\n // The DOM structure has a different structure depending on whether\n // the Google map is rendered as vector or raster\n if ('getPanes' in overlay) {\n overlay.getPanes()?.overlayLayer.appendChild(container);\n } else {\n overlay.getMap()?.getDiv().appendChild(container);\n }\n return container;\n}\n\n/**\n * Safely remove a deck instance\n * @param deck (Deck) - a previously created instances\n */\nexport function destroyDeckInstance(deck: Deck) {\n const {_eventListeners: eventListeners} = deck.userData;\n\n // Unregister event listeners\n for (const eventType in eventListeners) {\n // Check that event listener was set before trying to remove.\n if (eventListeners[eventType]) {\n eventListeners[eventType].remove();\n }\n }\n\n deck.finalize();\n}\n\n/* eslint-disable max-statements */\n/**\n * Get the current view state\n * @param map (google.maps.Map) - The parent Map instance\n * @param overlay (google.maps.OverlayView) - A maps Overlay instance\n */\n// eslint-disable-next-line complexity\nexport function getViewPropsFromOverlay(map: google.maps.Map, overlay: google.maps.OverlayView) {\n const {width, height} = getMapSize(map);\n\n // Canvas position relative to draggable map's container depends on\n // overlayView's projection, not the map's. Have to use the center of the\n // map for this, not the top left, for the same reason as above.\n const projection = overlay.getProjection();\n\n const bounds = map.getBounds();\n if (!bounds) {\n return {width, height, left: 0, top: 0};\n }\n\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n const topRight = projection.fromLatLngToDivPixel(ne);\n const bottomLeft = projection.fromLatLngToDivPixel(sw);\n\n // google maps places overlays in a container anchored at the map center.\n // the container CSS is manipulated during dragging.\n // We need to update left/top of the deck canvas to match the base map.\n const centerLngLat = pixelToLngLat(projection, width / 2, height / 2);\n const centerH = new google.maps.LatLng(0, centerLngLat[0]);\n const centerContainerPx = projection.fromLatLngToContainerPixel(centerH);\n const centerDivPx = projection.fromLatLngToDivPixel(centerH);\n\n if (!topRight || !bottomLeft || !centerDivPx || !centerContainerPx) {\n return {width, height, left: 0, top: 0};\n }\n const leftOffset = Math.round(centerDivPx.x - centerContainerPx.x);\n let topOffset = centerDivPx.y - centerContainerPx.y;\n\n const topLngLat = pixelToLngLat(projection, width / 2, 0);\n const bottomLngLat = pixelToLngLat(projection, width / 2, height);\n\n // Compute fractional center.\n let latitude = centerLngLat[1];\n const longitude = centerLngLat[0];\n\n // Adjust vertical offset - limit latitude\n if (Math.abs(latitude) > MAX_LATITUDE) {\n latitude = latitude > 0 ? MAX_LATITUDE : -MAX_LATITUDE;\n const center = new google.maps.LatLng(latitude, longitude);\n const centerPx = projection.fromLatLngToContainerPixel(center);\n // @ts-ignore (TS2531) Object is possibly 'null'\n topOffset += centerPx.y - height / 2;\n }\n topOffset = Math.round(topOffset);\n\n // Compute fractional bearing\n const delta = new Vector2(topLngLat).sub(bottomLngLat);\n let bearing = (180 * delta.verticalAngle()) / Math.PI;\n if (bearing < 0) bearing += 360;\n\n // Maps sometimes returns undefined instead of 0\n const heading = map.getHeading() || 0;\n\n let zoom = (map.getZoom() as number) - 1;\n\n let scale;\n\n if (bearing === 0) {\n // At full world view (always unrotated) simply compare height, as diagonal\n // is incorrect due to multiple world copies\n scale = height ? (bottomLeft.y - topRight.y) / height : 1;\n } else if (bearing === heading) {\n // Fractional zoom calculation only correct when bearing is not animating\n const viewDiagonal = new Vector2([topRight.x, topRight.y])\n .sub([bottomLeft.x, bottomLeft.y])\n .len();\n const mapDiagonal = new Vector2([width, -height]).len();\n scale = mapDiagonal ? viewDiagonal / mapDiagonal : 1;\n }\n\n // When resizing aggressively, occasionally ne and sw are the same points\n // See https://github.com/visgl/deck.gl/issues/4218\n zoom += Math.log2(scale || 1);\n\n return {\n width,\n height,\n left: leftOffset,\n top: topOffset,\n zoom,\n bearing,\n pitch: map.getTilt(),\n latitude,\n longitude\n };\n}\n\n/* eslint-enable max-statements */\n\n/**\n * Get the current view state\n * @param map (google.maps.Map) - The parent Map instance\n * @param transformer (google.maps.CoordinateTransformer) - A CoordinateTransformer instance\n */\nexport function getViewPropsFromCoordinateTransformer(\n map: google.maps.Map,\n transformer: google.maps.CoordinateTransformer\n) {\n const {width, height} = getMapSize(map);\n const {center, heading: bearing, tilt: pitch, zoom} = transformer.getCameraParams();\n\n // Match Google projection matrix\n const fovy = 25;\n const aspect = height ? width / height : 1;\n\n // Match depth range (crucial for correct z-sorting)\n const near = 0.75;\n const far = 300000000000000;\n // const far = Infinity;\n\n const projectionMatrix = new Matrix4().perspective({\n fovy: (fovy * Math.PI) / 180,\n aspect,\n near,\n far\n });\n const focalDistance = 0.5 * projectionMatrix[5];\n\n return {\n width,\n height,\n viewState: {\n altitude: focalDistance,\n bearing,\n latitude: center.lat(),\n longitude: center.lng(),\n pitch,\n projectionMatrix,\n repeat: true,\n zoom: zoom - 1\n }\n };\n}\n\nfunction getMapSize(map: google.maps.Map): {width: number; height: number} {\n // The map fills the container div unless it's in fullscreen mode\n // at which point the first child of the container is promoted\n const container = map.getDiv().firstChild as HTMLElement | null;\n return {\n // @ts-ignore (TS2531) Object is possibly 'null'\n width: container.offsetWidth,\n // @ts-ignore (TS2531) Object is possibly 'null'\n height: container.offsetHeight\n };\n}\n\nfunction pixelToLngLat(\n projection: google.maps.MapCanvasProjection,\n x: number,\n y: number\n): [longitude: number, latitude: number] {\n const point = new google.maps.Point(x, y);\n const latLng = projection.fromContainerPixelToLatLng(point);\n // @ts-ignore (TS2531) Object is possibly 'null'\n return [latLng.lng(), latLng.lat()];\n}\n\nfunction getEventPixel(event, deck: Deck): {x: number; y: number} {\n if (event.pixel) {\n return event.pixel;\n }\n // event.pixel may not exist when clicking on a POI\n // https://developers.google.com/maps/documentation/javascript/reference/map#MouseEvent\n const point = deck.getViewports()[0].project([event.latLng.lng(), event.latLng.lat()]);\n return {\n x: point[0],\n y: point[1]\n };\n}\n\n// Triggers picking on a mouse event\nfunction handleMouseEvent(deck: Deck, type: string, event) {\n const mockEvent: Record = {\n type,\n offsetCenter: getEventPixel(event, deck),\n srcEvent: event\n };\n\n switch (type) {\n case 'click':\n case 'rightclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 1;\n // Hack: because we do not listen to pointer down, perform picking now\n deck._onPointerDown(mockEvent as MjolnirPointerEvent);\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n}\n","/* global google */\nimport {getParameters, setParameters, withParameters} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\nimport {\n createDeckInstance,\n destroyDeckInstance,\n getViewPropsFromOverlay,\n getViewPropsFromCoordinateTransformer\n} from './utils';\nimport {Deck} from '@deck.gl/core';\n\nimport type {DeckProps} from '@deck.gl/core';\n\nconst HIDE_ALL_LAYERS = () => false;\nconst GL_STATE = {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n blendEquation: GL.FUNC_ADD\n};\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\nconst defaultProps = {\n interleaved: true\n};\n\nexport type GoogleMapsOverlayProps = DeckProps & {\n interleaved?: boolean;\n};\n\nexport default class GoogleMapsOverlay {\n private props: GoogleMapsOverlayProps = {};\n private _map: google.maps.Map | null = null;\n private _deck: Deck | null = null;\n private _overlay: google.maps.WebGLOverlayView | google.maps.OverlayView | null = null;\n\n constructor(props: GoogleMapsOverlayProps) {\n this.setProps({...defaultProps, ...props});\n }\n\n /* Public API */\n\n /** Add/remove the overlay from a map. */\n setMap(map: google.maps.Map | null): void {\n if (map === this._map) {\n return;\n }\n if (this._map) {\n this._overlay?.setMap(null);\n this._map = null;\n }\n if (map) {\n this._map = map;\n const {UNINITIALIZED} = google.maps.RenderingType;\n const renderingType = map.getRenderingType();\n if (renderingType !== UNINITIALIZED) {\n this._createOverlay(map);\n } else {\n map.addListener('renderingtype_changed', () => {\n this._createOverlay(map);\n });\n }\n }\n }\n\n /**\n * Update (partial) props.\n */\n setProps(props: Partial): void {\n Object.assign(this.props, props);\n if (this._deck) {\n if (props.style) {\n // @ts-ignore accessing protected member\n const parentStyle = this._deck.canvas.parentElement.style;\n Object.assign(parentStyle, props.style);\n props.style = null;\n }\n this._deck.setProps(props);\n }\n }\n\n /** Equivalent of `deck.pickObject`. */\n pickObject(params) {\n return this._deck && this._deck.pickObject(params);\n }\n\n /** Equivalent of `deck.pickObjects`. */\n pickMultipleObjects(params) {\n return this._deck && this._deck.pickMultipleObjects(params);\n }\n\n /** Equivalent of `deck.pickMultipleObjects`. */\n pickObjects(params) {\n return this._deck && this._deck.pickObjects(params);\n }\n\n /** Remove the overlay and release all underlying resources. */\n finalize() {\n this.setMap(null);\n if (this._deck) {\n destroyDeckInstance(this._deck);\n this._deck = null;\n }\n }\n\n /* Private API */\n _createOverlay(map: google.maps.Map) {\n const {interleaved} = this.props;\n const {VECTOR, UNINITIALIZED} = google.maps.RenderingType;\n const renderingType = map.getRenderingType();\n if (renderingType === UNINITIALIZED) {\n return;\n }\n\n const isVectorMap = renderingType === VECTOR && google.maps.WebGLOverlayView;\n const OverlayView = isVectorMap ? google.maps.WebGLOverlayView : google.maps.OverlayView;\n const overlay = new OverlayView();\n\n if (overlay instanceof google.maps.WebGLOverlayView) {\n if (interleaved) {\n overlay.onAdd = noop;\n overlay.onContextRestored = this._onContextRestored.bind(this);\n overlay.onDraw = this._onDrawVectorInterleaved.bind(this);\n } else {\n overlay.onAdd = this._onAdd.bind(this);\n overlay.onContextRestored = noop;\n overlay.onDraw = this._onDrawVectorOverlay.bind(this);\n }\n overlay.onContextLost = this._onContextLost.bind(this);\n } else {\n overlay.onAdd = this._onAdd.bind(this);\n overlay.draw = this._onDrawRaster.bind(this);\n }\n overlay.onRemove = this._onRemove.bind(this);\n\n this._overlay = overlay;\n this._overlay.setMap(map);\n }\n\n _onAdd() {\n // @ts-ignore (TS2345) map is defined at this stage\n this._deck = createDeckInstance(this._map, this._overlay, this._deck, this.props);\n }\n\n _onContextRestored({gl}) {\n if (!this._map || !this._overlay) {\n return;\n }\n const _customRender = () => {\n if (this._overlay) {\n (this._overlay as google.maps.WebGLOverlayView).requestRedraw();\n }\n };\n const deck = createDeckInstance(this._map, this._overlay, this._deck, {\n gl,\n _customRender,\n ...this.props\n });\n this._deck = deck;\n\n // By default, animationLoop._renderFrame invokes\n // animationLoop.onRender. We override this to wrap\n // in withParameters so we don't modify the GL state\n // @ts-ignore accessing protected member\n const {animationLoop} = deck;\n animationLoop._renderFrame = () => {\n const ab = gl.getParameter(gl.ARRAY_BUFFER_BINDING);\n withParameters(gl, {}, () => {\n animationLoop.onRender();\n });\n gl.bindBuffer(gl.ARRAY_BUFFER, ab);\n };\n }\n\n _onContextLost() {\n // TODO this isn't working\n if (this._deck) {\n destroyDeckInstance(this._deck);\n this._deck = null;\n }\n }\n\n _onRemove() {\n this._deck?.setProps({layerFilter: HIDE_ALL_LAYERS});\n }\n\n _onDrawRaster() {\n if (!this._deck || !this._map) {\n return;\n }\n const deck = this._deck;\n\n const {width, height, left, top, ...rest} = getViewPropsFromOverlay(\n this._map,\n this._overlay as google.maps.OverlayView\n );\n\n // @ts-ignore accessing protected member\n const parentStyle = deck.canvas.parentElement.style;\n parentStyle.left = `${left}px`;\n parentStyle.top = `${top}px`;\n\n const altitude = 10000;\n deck.setProps({\n width,\n height,\n viewState: {altitude, repeat: true, ...rest}\n });\n // Deck is initialized\n deck.redraw();\n }\n\n // Vector code path\n _onDrawVectorInterleaved({gl, transformer}) {\n if (!this._deck || !this._map) {\n return;\n }\n\n const deck = this._deck;\n\n deck.setProps({\n ...getViewPropsFromCoordinateTransformer(this._map, transformer),\n\n // Using external gl context - do not set css size\n width: null,\n height: null\n });\n\n if (deck.isInitialized) {\n // As an optimization, some renders are to an separate framebuffer\n // which we need to pass onto deck\n const _framebuffer = getParameters(gl, GL.FRAMEBUFFER_BINDING);\n deck.setProps({_framebuffer});\n\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n\n // Workaround for bug in Google maps where viewport state is wrong\n // TODO remove once fixed\n setParameters(gl, {\n viewport: [0, 0, gl.canvas.width, gl.canvas.height],\n scissor: [0, 0, gl.canvas.width, gl.canvas.height],\n stencilFunc: [gl.ALWAYS, 0, 255, gl.ALWAYS, 0, 255]\n });\n\n withParameters(gl, GL_STATE, () => {\n deck._drawLayers('google-vector', {\n clearCanvas: false\n });\n });\n }\n }\n\n _onDrawVectorOverlay({transformer}) {\n if (!this._deck || !this._map) {\n return;\n }\n\n const deck = this._deck;\n\n deck.setProps({\n ...getViewPropsFromCoordinateTransformer(this._map, transformer)\n });\n deck.redraw();\n }\n}\n","/* eslint-disable complexity */\nimport type DataColumn from './data-column';\nimport type {BufferAccessor, ShaderAttributeOptions} from './data-column';\nimport type {Buffer} from '@luma.gl/webgl';\nimport type {NumericArray} from '../../types/types';\n\nexport interface IShaderAttribute {\n value: NumericArray | null;\n getValue(): [Buffer, BufferAccessor] | NumericArray | null;\n}\n\n/* This class creates a luma.gl-compatible \"view\" on top of a DataColumn instance */\nexport default class ShaderAttribute implements IShaderAttribute {\n opts: ShaderAttributeOptions;\n source: DataColumn;\n\n constructor(dataColumn: DataColumn, opts: ShaderAttributeOptions) {\n // Options that cannot be changed later\n this.opts = opts;\n this.source = dataColumn;\n }\n\n get value(): NumericArray | null {\n return this.source.value;\n }\n\n getValue(): [Buffer, BufferAccessor] | NumericArray | null {\n const buffer = this.source.getBuffer();\n const accessor = this.getAccessor();\n if (buffer) {\n return [buffer, accessor];\n }\n\n const {value} = this.source;\n const {size} = accessor;\n let constantValue = value;\n\n if (value && value.length !== size) {\n constantValue = new Float32Array(size);\n // initiate offset values\n const index = accessor.elementOffset || 0; // element offset\n for (let i = 0; i < size; ++i) {\n constantValue[i] = value[index + i];\n }\n }\n\n return constantValue;\n }\n\n getAccessor() {\n return {\n // source data accessor\n ...this.source.getAccessor(),\n // shader attribute overrides\n ...this.opts\n };\n }\n}\n","/* eslint-disable complexity */\nimport GL from '@luma.gl/constants';\nimport {hasFeature, FEATURES, Buffer} from '@luma.gl/core';\nimport ShaderAttribute, {IShaderAttribute} from './shader-attribute';\nimport {glArrayFromType} from './gl-utils';\nimport typedArrayManager from '../../utils/typed-array-manager';\nimport {toDoublePrecisionArray} from '../../utils/math-utils';\nimport log from '../../utils/log';\n\nimport type {Buffer as LumaBuffer} from '@luma.gl/webgl';\nimport type {TypedArray, NumericArray, TypedArrayConstructor} from '../../types/types';\n\nexport type BufferAccessor = {\n /** A WebGL data type, see [vertexAttribPointer](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/vertexAttribPointer#parameters). */\n type?: number;\n /** The number of elements per vertex attribute. */\n size?: number;\n /** 1 if instanced. */\n divisor?: number;\n /** Offset of the first vertex attribute into the buffer, in bytes. */\n offset?: number;\n /** The offset between the beginning of consecutive vertex attributes, in bytes. */\n stride?: number;\n /** Whether data values should be normalized. Note that all color attributes in deck.gl layers are normalized by default. */\n normalized?: boolean;\n integer?: boolean;\n};\n\nexport type ShaderAttributeOptions = Partial & {\n offset: number;\n stride: number;\n vertexOffset?: number;\n elementOffset?: number;\n};\n\nfunction getStride(accessor: DataColumnSettings): number {\n return accessor.stride || accessor.size * accessor.bytesPerElement;\n}\n\nfunction resolveShaderAttribute(\n baseAccessor: DataColumnSettings,\n shaderAttributeOptions: Partial\n): ShaderAttributeOptions {\n if (shaderAttributeOptions.offset) {\n log.removed('shaderAttribute.offset', 'vertexOffset, elementOffset')();\n }\n\n // All shader attributes share the parent's stride\n const stride = getStride(baseAccessor);\n // `vertexOffset` is used to access the neighboring vertex's value\n // e.g. `nextPositions` in polygon\n const vertexOffset =\n shaderAttributeOptions.vertexOffset !== undefined\n ? shaderAttributeOptions.vertexOffset\n : baseAccessor.vertexOffset || 0;\n // `elementOffset` is defined when shader attribute's size is smaller than the parent's\n // e.g. `translations` in transform matrix\n const elementOffset = shaderAttributeOptions.elementOffset || 0;\n const offset =\n // offsets defined by the attribute\n vertexOffset * stride +\n elementOffset * baseAccessor.bytesPerElement +\n // offsets defined by external buffers if any\n (baseAccessor.offset || 0);\n\n return {\n ...shaderAttributeOptions,\n offset,\n stride\n };\n}\n\nfunction resolveDoublePrecisionShaderAttributes(\n baseAccessor: DataColumnSettings,\n shaderAttributeOptions: Partial\n): {\n high: ShaderAttributeOptions;\n low: ShaderAttributeOptions;\n} {\n const resolvedOptions = resolveShaderAttribute(baseAccessor, shaderAttributeOptions);\n\n return {\n high: resolvedOptions,\n low: {\n ...resolvedOptions,\n offset: resolvedOptions.offset + baseAccessor.size * 4\n }\n };\n}\n\nexport type DataColumnOptions = Options &\n BufferAccessor & {\n id?: string;\n vertexOffset?: number;\n fp64?: boolean;\n logicalType?: number;\n isIndexed?: boolean;\n defaultValue?: number | number[];\n };\n\ntype DataColumnSettings = DataColumnOptions & {\n type: number;\n size: number;\n logicalType?: number;\n bytesPerElement: number;\n defaultValue: number[];\n defaultType: TypedArrayConstructor;\n};\n\ntype DataColumnInternalState = State & {\n externalBuffer: LumaBuffer | null;\n bufferAccessor: DataColumnSettings;\n allocatedValue: TypedArray | null;\n numInstances: number;\n bounds: [number[], number[]] | null;\n constant: boolean;\n};\n\nexport default class DataColumn implements IShaderAttribute {\n gl: WebGLRenderingContext;\n id: string;\n size: number;\n settings: DataColumnSettings;\n value: NumericArray | null;\n doublePrecision: boolean;\n\n protected _buffer: LumaBuffer | null;\n protected state: DataColumnInternalState;\n\n /* eslint-disable max-statements */\n constructor(gl: WebGLRenderingContext, opts: DataColumnOptions, state: State) {\n this.gl = gl;\n this.id = opts.id || '';\n this.size = opts.size || 1;\n\n const logicalType = opts.logicalType || opts.type;\n const doublePrecision = logicalType === GL.DOUBLE;\n\n let {defaultValue} = opts;\n defaultValue = Number.isFinite(defaultValue)\n ? [defaultValue]\n : defaultValue || new Array(this.size).fill(0);\n\n let bufferType: number;\n if (doublePrecision) {\n bufferType = GL.FLOAT;\n } else if (!logicalType && opts.isIndexed) {\n bufferType =\n gl && hasFeature(gl, FEATURES.ELEMENT_INDEX_UINT32) ? GL.UNSIGNED_INT : GL.UNSIGNED_SHORT;\n } else {\n bufferType = logicalType || GL.FLOAT;\n }\n\n // This is the attribute type defined by the layer\n // If an external buffer is provided, this.type may be overwritten\n // But we always want to use defaultType for allocation\n let defaultType = glArrayFromType(logicalType || bufferType || GL.FLOAT);\n this.doublePrecision = doublePrecision;\n\n // `fp64: false` tells a double-precision attribute to allocate Float32Arrays\n // by default when using auto-packing. This is more efficient in use cases where\n // high precision is unnecessary, but the `64Low` attribute is still required\n // by the shader.\n if (doublePrecision && opts.fp64 === false) {\n defaultType = Float32Array;\n }\n\n this.value = null;\n this.settings = {\n ...opts,\n defaultType,\n defaultValue: defaultValue as number[],\n logicalType,\n type: bufferType,\n size: this.size,\n bytesPerElement: defaultType.BYTES_PER_ELEMENT\n };\n this.state = {\n ...state,\n externalBuffer: null,\n bufferAccessor: this.settings,\n allocatedValue: null,\n numInstances: 0,\n bounds: null,\n constant: false\n };\n this._buffer = null;\n }\n /* eslint-enable max-statements */\n\n get isConstant(): boolean {\n return this.state.constant;\n }\n\n get buffer(): LumaBuffer {\n if (!this._buffer) {\n const {isIndexed, type} = this.settings;\n this._buffer = new Buffer(this.gl, {\n id: this.id,\n target: isIndexed ? GL.ELEMENT_ARRAY_BUFFER : GL.ARRAY_BUFFER,\n accessor: {type}\n }) as LumaBuffer;\n }\n return this._buffer;\n }\n\n get byteOffset(): number {\n const accessor = this.getAccessor();\n if (accessor.vertexOffset) {\n return accessor.vertexOffset * getStride(accessor);\n }\n return 0;\n }\n\n get numInstances(): number {\n return this.state.numInstances;\n }\n\n set numInstances(n: number) {\n this.state.numInstances = n;\n }\n\n delete(): void {\n if (this._buffer) {\n this._buffer.delete();\n this._buffer = null;\n }\n typedArrayManager.release(this.state.allocatedValue);\n }\n\n getShaderAttributes(\n id: string,\n options: Partial | null\n ): Record {\n if (this.doublePrecision) {\n const shaderAttributes = {};\n const isBuffer64Bit = this.value instanceof Float64Array;\n\n const doubleShaderAttributeDefs = resolveDoublePrecisionShaderAttributes(\n this.getAccessor(),\n options || {}\n );\n\n shaderAttributes[id] = new ShaderAttribute(this, doubleShaderAttributeDefs.high);\n shaderAttributes[`${id}64Low`] = isBuffer64Bit\n ? new ShaderAttribute(this, doubleShaderAttributeDefs.low)\n : new Float32Array(this.size); // use constant for low part if buffer is 32-bit\n return shaderAttributes;\n }\n if (options) {\n const shaderAttributeDef = resolveShaderAttribute(this.getAccessor(), options);\n return {[id]: new ShaderAttribute(this, shaderAttributeDef)};\n }\n return {[id]: this};\n }\n\n getBuffer(): LumaBuffer | null {\n if (this.state.constant) {\n return null;\n }\n return this.state.externalBuffer || this._buffer;\n }\n\n getValue(): [LumaBuffer, BufferAccessor] | NumericArray | null {\n if (this.state.constant) {\n return this.value;\n }\n return [this.getBuffer() as LumaBuffer, this.getAccessor() as BufferAccessor];\n }\n\n getAccessor(): DataColumnSettings {\n return this.state.bufferAccessor;\n }\n\n // Returns [min: Array(size), max: Array(size)]\n /* eslint-disable max-depth */\n getBounds(): [number[], number[]] | null {\n if (this.state.bounds) {\n return this.state.bounds;\n }\n let result: [number[], number[]] | null = null;\n if (this.state.constant && this.value) {\n const min = Array.from(this.value);\n result = [min, min];\n } else {\n const {value, numInstances, size} = this;\n const len = numInstances * size;\n if (value && len && value.length >= len) {\n const min = new Array(size).fill(Infinity);\n const max = new Array(size).fill(-Infinity);\n for (let i = 0; i < len; ) {\n for (let j = 0; j < size; j++) {\n const v = value[i++];\n if (v < min[j]) min[j] = v;\n if (v > max[j]) max[j] = v;\n }\n }\n result = [min, max];\n }\n }\n this.state.bounds = result;\n return result;\n }\n\n // returns true if success\n // eslint-disable-next-line max-statements\n setData(\n data:\n | TypedArray\n | LumaBuffer\n | ({\n constant?: boolean;\n value?: NumericArray;\n buffer?: LumaBuffer;\n } & Partial)\n ): boolean {\n const {state} = this;\n\n let opts: {\n constant?: boolean;\n value?: NumericArray;\n buffer?: LumaBuffer;\n } & Partial;\n if (ArrayBuffer.isView(data)) {\n opts = {value: data};\n } else if (data instanceof Buffer) {\n opts = {buffer: data as LumaBuffer};\n } else {\n opts = data;\n }\n\n const accessor: DataColumnSettings = {...this.settings, ...opts};\n state.bufferAccessor = accessor;\n state.bounds = null; // clear cached bounds\n\n if (opts.constant) {\n // set constant\n let value = opts.value as NumericArray;\n value = this._normalizeValue(value, [], 0);\n if (this.settings.normalized) {\n value = this.normalizeConstant(value);\n }\n const hasChanged = !state.constant || !this._areValuesEqual(value, this.value);\n\n if (!hasChanged) {\n return false;\n }\n state.externalBuffer = null;\n state.constant = true;\n this.value = value;\n } else if (opts.buffer) {\n const buffer = opts.buffer;\n state.externalBuffer = buffer;\n state.constant = false;\n this.value = opts.value || null;\n const isBuffer64Bit = opts.value instanceof Float64Array;\n\n // Copy the type of the buffer into the accessor\n // @ts-ignore\n accessor.type = opts.type || buffer.accessor.type;\n // @ts-ignore\n accessor.bytesPerElement = buffer.accessor.BYTES_PER_ELEMENT * (isBuffer64Bit ? 2 : 1);\n accessor.stride = getStride(accessor);\n } else if (opts.value) {\n this._checkExternalBuffer(opts);\n\n let value = opts.value as TypedArray;\n state.externalBuffer = null;\n state.constant = false;\n this.value = value;\n\n accessor.bytesPerElement = value.BYTES_PER_ELEMENT;\n accessor.stride = getStride(accessor);\n\n const {buffer, byteOffset} = this;\n\n if (this.doublePrecision && value instanceof Float64Array) {\n value = toDoublePrecisionArray(value, accessor);\n }\n\n // A small over allocation is used as safety margin\n // Shader attributes may try to access this buffer with bigger offsets\n const requiredBufferSize = value.byteLength + byteOffset + accessor.stride * 2;\n if (buffer.byteLength < requiredBufferSize) {\n buffer.reallocate(requiredBufferSize);\n }\n // Hack: force Buffer to infer data type\n buffer.setAccessor(null);\n buffer.subData({data: value, offset: byteOffset});\n // @ts-ignore\n accessor.type = opts.type || buffer.accessor.type;\n }\n\n return true;\n }\n\n updateSubBuffer(\n opts: {\n startOffset?: number;\n endOffset?: number;\n } = {}\n ): void {\n this.state.bounds = null; // clear cached bounds\n\n const value = this.value as TypedArray;\n const {startOffset = 0, endOffset} = opts;\n this.buffer.subData({\n data:\n this.doublePrecision && value instanceof Float64Array\n ? toDoublePrecisionArray(value, {\n size: this.size,\n startIndex: startOffset,\n endIndex: endOffset\n })\n : value.subarray(startOffset, endOffset),\n offset: startOffset * value.BYTES_PER_ELEMENT + this.byteOffset\n });\n }\n\n allocate(numInstances: number, copy: boolean = false): boolean {\n const {state} = this;\n const oldValue = state.allocatedValue;\n\n // Allocate at least one element to ensure a valid buffer\n const value = typedArrayManager.allocate(oldValue, numInstances + 1, {\n size: this.size,\n type: this.settings.defaultType,\n copy\n });\n\n this.value = value;\n\n const {buffer, byteOffset} = this;\n\n if (buffer.byteLength < value.byteLength + byteOffset) {\n buffer.reallocate(value.byteLength + byteOffset);\n\n if (copy && oldValue) {\n // Upload the full existing attribute value to the GPU, so that updateBuffer\n // can choose to only update a partial range.\n // TODO - copy old buffer to new buffer on the GPU\n buffer.subData({\n data:\n oldValue instanceof Float64Array ? toDoublePrecisionArray(oldValue, this) : oldValue,\n offset: byteOffset\n });\n }\n }\n\n state.allocatedValue = value;\n state.constant = false;\n state.externalBuffer = null;\n state.bufferAccessor = this.settings;\n return true;\n }\n\n // PRIVATE HELPER METHODS\n protected _checkExternalBuffer(opts: {value?: NumericArray; normalized?: boolean}): void {\n const {value} = opts;\n if (!ArrayBuffer.isView(value)) {\n throw new Error(`Attribute ${this.id} value is not TypedArray`);\n }\n const ArrayType = this.settings.defaultType;\n\n let illegalArrayType = false;\n if (this.doublePrecision) {\n // not 32bit or 64bit\n illegalArrayType = value.BYTES_PER_ELEMENT < 4;\n }\n if (illegalArrayType) {\n throw new Error(`Attribute ${this.id} does not support ${value.constructor.name}`);\n }\n if (!(value instanceof ArrayType) && this.settings.normalized && !('normalized' in opts)) {\n log.warn(`Attribute ${this.id} is normalized`)();\n }\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/vertexAttribPointer\n normalizeConstant(value: NumericArray): NumericArray {\n switch (this.settings.type) {\n case GL.BYTE:\n // normalize [-128, 127] to [-1, 1]\n return new Float32Array(value).map(x => ((x + 128) / 255) * 2 - 1);\n\n case GL.SHORT:\n // normalize [-32768, 32767] to [-1, 1]\n return new Float32Array(value).map(x => ((x + 32768) / 65535) * 2 - 1);\n\n case GL.UNSIGNED_BYTE:\n // normalize [0, 255] to [0, 1]\n return new Float32Array(value).map(x => x / 255);\n\n case GL.UNSIGNED_SHORT:\n // normalize [0, 65535] to [0, 1]\n return new Float32Array(value).map(x => x / 65535);\n\n default:\n // No normalization for gl.FLOAT and gl.HALF_FLOAT\n return value;\n }\n }\n\n /* check user supplied values and apply fallback */\n protected _normalizeValue(value: any, out: NumericArray, start: number): NumericArray {\n const {defaultValue, size} = this.settings;\n\n if (Number.isFinite(value)) {\n out[start] = value;\n return out;\n }\n if (!value) {\n let i = size;\n while (--i >= 0) {\n out[start + i] = defaultValue[i];\n }\n return out;\n }\n\n // Important - switch cases are 5x more performant than a for loop!\n /* eslint-disable no-fallthrough, default-case */\n switch (size) {\n case 4:\n out[start + 3] = Number.isFinite(value[3]) ? value[3] : defaultValue[3];\n case 3:\n out[start + 2] = Number.isFinite(value[2]) ? value[2] : defaultValue[2];\n case 2:\n out[start + 1] = Number.isFinite(value[1]) ? value[1] : defaultValue[1];\n case 1:\n out[start + 0] = Number.isFinite(value[0]) ? value[0] : defaultValue[0];\n break;\n\n default:\n // In the rare case where the attribute size > 4, do it the slow way\n // This is used for e.g. transform matrices\n let i = size;\n while (--i >= 0) {\n out[start + i] = Number.isFinite(value[i]) ? value[i] : defaultValue[i];\n }\n }\n\n return out;\n }\n\n protected _areValuesEqual(value1: any, value2: any): boolean {\n if (!value1 || !value2) {\n return false;\n }\n const {size} = this;\n for (let i = 0; i < size; i++) {\n if (value1[i] !== value2[i]) {\n return false;\n }\n }\n return true;\n }\n}\n","import GL from '@luma.gl/constants';\nimport type {TypedArrayConstructor} from '../../types/types';\n\n/* eslint-disable complexity */\nexport function glArrayFromType(glType: number): TypedArrayConstructor {\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.DOUBLE:\n return Float64Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return Uint8ClampedArray;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Unknown GL type');\n }\n}\n/* eslint-enable complexity */\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport type {NumericArray} from '../types/types';\nimport type {AccessorFunction} from '../types/layer-props';\n\nconst EMPTY_ARRAY = [];\nconst placeholderArray = [];\n\n/*\n * Create an Iterable\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols\n * and a \"context\" tracker from the given data\n */\nexport function createIterable(\n data,\n startRow = 0,\n endRow = Infinity\n): {\n iterable: Iterable;\n objectInfo: {\n index: number;\n data: any;\n target: any[];\n };\n} {\n let iterable: Iterable = EMPTY_ARRAY;\n\n const objectInfo = {\n index: -1,\n data,\n // visitor can optionally utilize this to avoid constructing a new array for every object\n target: []\n };\n\n if (!data) {\n iterable = EMPTY_ARRAY;\n } else if (typeof data[Symbol.iterator] === 'function') {\n // data is already an iterable\n iterable = data;\n } else if (data.length > 0) {\n placeholderArray.length = data.length;\n iterable = placeholderArray;\n }\n\n if (startRow > 0 || Number.isFinite(endRow)) {\n iterable = (Array.isArray(iterable) ? iterable : Array.from(iterable)).slice(startRow, endRow);\n objectInfo.index = startRow - 1;\n }\n\n return {iterable, objectInfo};\n}\n\n/*\n * Returns true if data is an async iterable object\n */\nexport function isAsyncIterable(data): boolean {\n return data && data[Symbol.asyncIterator];\n}\n\n/*\n * Create an accessor function from a flat buffer that yields the value at each object index\n */\nexport function getAccessorFromBuffer(\n typedArray,\n options: {\n size: number;\n stride?: number;\n offset?: number;\n startIndices?: NumericArray;\n nested?: boolean;\n }\n): AccessorFunction {\n const {size, stride, offset, startIndices, nested} = options;\n const bytesPerElement = typedArray.BYTES_PER_ELEMENT;\n const elementStride = stride ? stride / bytesPerElement : size;\n const elementOffset = offset ? offset / bytesPerElement : 0;\n const vertexCount = Math.floor((typedArray.length - elementOffset) / elementStride);\n\n return (_, {index, target}) => {\n if (!startIndices) {\n const sourceIndex = index * elementStride + elementOffset;\n for (let j = 0; j < size; j++) {\n target[j] = typedArray[sourceIndex + j];\n }\n return target;\n }\n const startIndex = startIndices[index];\n const endIndex = startIndices[index + 1] || vertexCount;\n let result;\n\n if (nested) {\n result = new Array(endIndex - startIndex);\n for (let i = startIndex; i < endIndex; i++) {\n const sourceIndex = i * elementStride + elementOffset;\n target = new Array(size);\n for (let j = 0; j < size; j++) {\n target[j] = typedArray[sourceIndex + j];\n }\n result[i - startIndex] = target;\n }\n } else if (elementStride === size) {\n result = typedArray.subarray(\n startIndex * size + elementOffset,\n endIndex * size + elementOffset\n );\n } else {\n result = new typedArray.constructor((endIndex - startIndex) * size);\n let targetIndex = 0;\n for (let i = startIndex; i < endIndex; i++) {\n const sourceIndex = i * elementStride + elementOffset;\n for (let j = 0; j < size; j++) {\n result[targetIndex++] = typedArray[sourceIndex + j];\n }\n }\n }\n\n return result;\n };\n}\n","/*\n * range (Array)\n * + start (Number) - the start index (incl.)\n * + end (Number) - the end index (excl.)\n * rangeList (Array) - array of sorted, combined ranges\n */\nexport const EMPTY = [];\nexport const FULL = [[0, Infinity]];\n\n// Insert a range into a range collection\nexport function add(rangeList, range) {\n // Noop if range collection already covers all\n if (rangeList === FULL) {\n return rangeList;\n }\n\n // Validate the input range\n if (range[0] < 0) {\n range[0] = 0;\n }\n if (range[0] >= range[1]) {\n return rangeList;\n }\n\n // TODO - split off to tree-shakable Range class\n const newRangeList: number[] = [];\n const len = rangeList.length;\n let insertPosition = 0;\n\n for (let i = 0; i < len; i++) {\n const range0 = rangeList[i];\n\n if (range0[1] < range[0]) {\n // the current range is to the left of the new range\n newRangeList.push(range0);\n insertPosition = i + 1;\n } else if (range0[0] > range[1]) {\n // the current range is to the right of the new range\n newRangeList.push(range0);\n } else {\n range = [Math.min(range0[0], range[0]), Math.max(range0[1], range[1])];\n }\n }\n newRangeList.splice(insertPosition, 0, range);\n return newRangeList;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/*\n * Helper function for padArray\n */\nfunction padArrayChunk(options: {\n source;\n target;\n start?: number;\n end?: number;\n size: number;\n getData;\n}): void {\n const {source, target, start = 0, size, getData} = options;\n const end = options.end || target.length;\n\n const sourceLength = source.length;\n const targetLength = end - start;\n\n if (sourceLength > targetLength) {\n target.set(source.subarray(0, targetLength), start);\n return;\n }\n\n target.set(source, start);\n\n if (!getData) {\n return;\n }\n\n // source is not large enough to fill target space, call `getData` to get filler data\n let i = sourceLength;\n while (i < targetLength) {\n const datum = getData(i, source);\n for (let j = 0; j < size; j++) {\n target[start + i] = datum[j] || 0;\n i++;\n }\n }\n}\n\n/*\n * The padArray function stretches a source array to the size of a target array.\n The arrays can have internal structures (like the attributes of PathLayer and\n SolidPolygonLayer), defined by the optional sourceStartIndices and targetStartIndices parameters.\n If the target array is larger, the getData callback is used to fill in the blanks.\n * @params {TypedArray} source - original data\n * @params {TypedArray} target - output data\n * @params {Number} size - length per datum\n * @params {Function} getData - callback to get new data when source is short\n * @params {Array} [sourceStartIndices] - subdivision of the original data in [object0StartIndex, object1StartIndex, ...]\n * @params {Array} [targetStartIndices] - subdivision of the output data in [object0StartIndex, object1StartIndex, ...]\n */\nexport function padArray({source, target, size, getData, sourceStartIndices, targetStartIndices}) {\n if (!Array.isArray(targetStartIndices)) {\n // Flat arrays\n padArrayChunk({\n source,\n target,\n size,\n getData\n });\n return target;\n }\n\n // Arrays have internal structure\n let sourceIndex = 0;\n let targetIndex = 0;\n const getChunkData = getData && ((i, chunk) => getData(i + targetIndex, chunk));\n\n const n = Math.min(sourceStartIndices.length, targetStartIndices.length);\n\n for (let i = 1; i < n; i++) {\n const nextSourceIndex = sourceStartIndices[i] * size;\n const nextTargetIndex = targetStartIndices[i] * size;\n\n padArrayChunk({\n source: source.subarray(sourceIndex, nextSourceIndex),\n target,\n start: targetIndex,\n end: nextTargetIndex,\n size,\n getData: getChunkData\n });\n\n sourceIndex = nextSourceIndex;\n targetIndex = nextTargetIndex;\n }\n\n if (targetIndex < target.length) {\n padArrayChunk({\n source: [],\n target,\n start: targetIndex,\n size,\n getData: getChunkData\n });\n }\n\n return target;\n}\n","import {padArray} from '../../utils/array-utils';\nimport {NumericArray} from '../../types/types';\nimport Attribute from './attribute';\nimport type {BufferAccessor} from './data-column';\nimport type {Buffer} from '@luma.gl/webgl';\n\nexport interface TransitionSettings {\n type: string;\n /** Callback to get the value that the entering vertices are transitioning from. */\n enter?: (toValue: NumericArray, chunk?: NumericArray) => NumericArray;\n /** Callback when the transition is started */\n onStart?: () => void;\n /** Callback when the transition is done */\n onEnd?: () => void;\n /** Callback when the transition is interrupted */\n onInterrupt?: () => void;\n}\n\nexport type InterpolationTransitionSettings = TransitionSettings & {\n type?: 'interpolation';\n /** Duration of the transition animation, in milliseconds */\n duration: number;\n /** Easing function that maps a value from [0, 1] to [0, 1], see [http://easings.net/](http://easings.net/) */\n easing?: (t: number) => number;\n};\n\nexport type SpringTransitionSettings = TransitionSettings & {\n type: 'spring';\n /** \"Tension\" factor for the spring */\n stiffness: number;\n /** \"Friction\" factor that counteracts the spring's acceleration */\n damping: number;\n};\n\nconst DEFAULT_TRANSITION_SETTINGS = {\n interpolation: {\n duration: 0,\n easing: t => t\n },\n spring: {\n stiffness: 0.05,\n damping: 0.5\n }\n};\n\nexport function normalizeTransitionSettings(\n userSettings: number | InterpolationTransitionSettings | SpringTransitionSettings,\n layerSettings?: boolean | Partial\n): TransitionSettings | null {\n if (!userSettings) {\n return null;\n }\n if (Number.isFinite(userSettings)) {\n userSettings = {type: 'interpolation', duration: userSettings as number};\n }\n const type = (userSettings as TransitionSettings).type || 'interpolation';\n return {\n ...DEFAULT_TRANSITION_SETTINGS[type],\n ...(layerSettings as TransitionSettings),\n ...(userSettings as TransitionSettings),\n type\n };\n}\n\n// NOTE: NOT COPYING OVER OFFSET OR STRIDE HERE BECAUSE:\n// (1) WE DON'T SUPPORT INTERLEAVED BUFFERS FOR TRANSITIONS\n// (2) BUFFERS WITH OFFSETS ALWAYS CONTAIN VALUES OF THE SAME SIZE\n// (3) THE OPERATIONS IN THE SHADER ARE PER-COMPONENT (addition and scaling)\nexport function getSourceBufferAttribute(\n gl: WebGLRenderingContext,\n attribute: Attribute\n): [Buffer, BufferAccessor] | NumericArray {\n // The Attribute we pass to Transform as a sourceBuffer must have {divisor: 0}\n // so we create a copy of the attribute (with divisor=0) to use when running\n // transform feedback\n const buffer = attribute.getBuffer();\n if (buffer) {\n return [\n buffer,\n {\n divisor: 0,\n size: attribute.size,\n normalized: attribute.settings.normalized\n } as BufferAccessor\n ];\n }\n // constant\n // don't pass normalized here because the `value` from a normalized attribute is\n // already normalized\n return attribute.value as NumericArray;\n}\n\nexport function getAttributeTypeFromSize(size: number): string {\n switch (size) {\n case 1:\n return 'float';\n case 2:\n return 'vec2';\n case 3:\n return 'vec3';\n case 4:\n return 'vec4';\n default:\n throw new Error(`No defined attribute type for size \"${size}\"`);\n }\n}\n\nexport function cycleBuffers(buffers: Buffer[]): void {\n buffers.push(buffers.shift() as Buffer);\n}\n\nexport function getAttributeBufferLength(attribute: Attribute, numInstances: number): number {\n const {doublePrecision, settings, value, size} = attribute;\n const multiplier = doublePrecision && value instanceof Float64Array ? 2 : 1;\n return (settings.noAlloc ? (value as NumericArray).length : numInstances * size) * multiplier;\n}\n\n// This helper is used when transitioning attributes from a set of values in one buffer layout\n// to a set of values in a different buffer layout. (Buffer layouts are used when attribute values\n// within a buffer should be grouped for drawElements, like the Polygon layer.) For example, a\n// buffer layout of [3, 4] might have data [A1, A2, A3, B1, B2, B3, B4]. If it needs to transition\n// to a buffer layout of [4, 2], it should produce a buffer, using the transition setting's `enter`\n// function, that looks like this: [A1, A2, A3, A4 (user `enter` fn), B1, B2, 0]. Note: the final\n// 0 in this buffer is because we never shrink buffers, only grow them, for performance reasons.\nexport function padBuffer({\n buffer,\n numInstances,\n attribute,\n fromLength,\n fromStartIndices,\n getData = x => x\n}: {\n buffer: Buffer;\n numInstances: number;\n attribute: Attribute;\n fromLength: number;\n fromStartIndices?: NumericArray | null;\n getData?: (toValue: NumericArray, chunk?: NumericArray) => NumericArray;\n}): void {\n // TODO: move the precisionMultiplier logic to the attribute when retrieving\n // its `size` and `elementOffset`?\n const precisionMultiplier =\n attribute.doublePrecision && attribute.value instanceof Float64Array ? 2 : 1;\n const size = attribute.size * precisionMultiplier;\n const byteOffset = attribute.byteOffset;\n const toStartIndices = attribute.startIndices;\n const hasStartIndices = fromStartIndices && toStartIndices;\n const toLength = getAttributeBufferLength(attribute, numInstances);\n const isConstant = attribute.isConstant;\n\n // check if buffer needs to be padded\n if (!hasStartIndices && fromLength >= toLength) {\n return;\n }\n\n const toData = isConstant\n ? attribute.value\n : (attribute.getBuffer() as Buffer).getData({srcByteOffset: byteOffset});\n if (attribute.settings.normalized && !isConstant) {\n const getter = getData;\n getData = (value, chunk) => attribute.normalizeConstant(getter(value, chunk));\n }\n\n const getMissingData = isConstant\n ? (i, chunk) => getData(toData, chunk)\n : (i, chunk) => getData(toData.subarray(i, i + size), chunk);\n\n const source = buffer.getData({length: fromLength});\n const data = new Float32Array(toLength);\n padArray({\n source,\n target: data,\n sourceStartIndices: fromStartIndices,\n targetStartIndices: toStartIndices,\n size,\n getData: getMissingData\n });\n\n // TODO: support offset in buffer.setData?\n if (buffer.byteLength < data.byteLength + byteOffset) {\n buffer.reallocate(data.byteLength + byteOffset);\n }\n buffer.subData({data, offset: byteOffset});\n}\n","/* eslint-disable complexity */\nimport DataColumn, {DataColumnOptions, ShaderAttributeOptions, BufferAccessor} from './data-column';\nimport {IShaderAttribute} from './shader-attribute';\nimport assert from '../../utils/assert';\nimport {createIterable, getAccessorFromBuffer} from '../../utils/iterable-utils';\nimport {fillArray} from '../../utils/flatten';\nimport * as range from '../../utils/range';\nimport {normalizeTransitionSettings, TransitionSettings} from './attribute-transition-utils';\nimport type {Buffer} from '@luma.gl/webgl';\n\nimport type {NumericArray, TypedArray} from '../../types/types';\n\nexport type Accessor = (\n object: DataType,\n context: {\n data: any;\n index: number;\n target: number[];\n }\n) => ReturnType;\n\nexport type Updater = (\n attribute: Attribute,\n {\n data,\n startRow,\n endRow,\n props,\n numInstances\n }: {\n data: any;\n startRow: number;\n endRow: number;\n props: any;\n numInstances: number;\n }\n) => void;\n\nexport type AttributeOptions = DataColumnOptions<{\n transition?: boolean | Partial;\n noAlloc?: boolean;\n update?: Updater;\n accessor?: Accessor | string | string[];\n transform?: (value: any) => any;\n shaderAttributes?: Record>;\n}>;\n\nexport type BinaryAttribute = Partial & {value?: TypedArray; buffer?: Buffer};\n\ntype AttributeInternalState = {\n startIndices: NumericArray | null;\n /** Legacy: external binary supplied via attribute name */\n lastExternalBuffer: TypedArray | Buffer | BinaryAttribute | null;\n /** External binary supplied via accessor name */\n binaryValue: TypedArray | Buffer | BinaryAttribute | null;\n binaryAccessor: Accessor | null;\n needsUpdate: string | boolean;\n needsRedraw: string | boolean;\n updateRanges: number[][];\n};\n\nexport default class Attribute extends DataColumn {\n /** Legacy approach to set attribute value - read `isConstant` instead for attribute state */\n constant: boolean = false;\n\n constructor(gl: WebGLRenderingContext, opts: AttributeOptions) {\n super(gl, opts, {\n startIndices: null,\n lastExternalBuffer: null,\n binaryValue: null,\n binaryAccessor: null,\n needsUpdate: true,\n needsRedraw: false,\n updateRanges: range.FULL\n });\n\n // eslint-disable-next-line\n this.settings.update = opts.update || (opts.accessor ? this._autoUpdater : undefined);\n\n Object.seal(this.settings);\n Object.seal(this.state);\n\n // Check all fields and generate helpful error messages\n this._validateAttributeUpdaters();\n }\n\n get startIndices(): NumericArray | null {\n return this.state.startIndices;\n }\n\n set startIndices(layout: NumericArray | null) {\n this.state.startIndices = layout;\n }\n\n needsUpdate(): string | boolean {\n return this.state.needsUpdate;\n }\n\n needsRedraw({clearChangedFlags = false}: {clearChangedFlags?: boolean} = {}): string | boolean {\n const needsRedraw = this.state.needsRedraw;\n this.state.needsRedraw = needsRedraw && !clearChangedFlags;\n return needsRedraw;\n }\n\n getUpdateTriggers(): string[] {\n const {accessor} = this.settings;\n\n // Backards compatibility: allow attribute name to be used as update trigger key\n return [this.id].concat((typeof accessor !== 'function' && accessor) || []);\n }\n\n supportsTransition(): boolean {\n return Boolean(this.settings.transition);\n }\n\n // Resolve transition settings object if transition is enabled, otherwise `null`\n getTransitionSetting(opts: Record): TransitionSettings | null {\n if (!opts || !this.supportsTransition()) {\n return null;\n }\n const {accessor} = this.settings;\n // TODO: have the layer resolve these transition settings itself?\n const layerSettings = this.settings.transition;\n // these are the transition settings passed in by the user\n const userSettings = Array.isArray(accessor)\n ? // @ts-ignore\n opts[accessor.find(a => opts[a])]\n : // @ts-ignore\n opts[accessor];\n\n // Shorthand: use duration instead of parameter object\n return normalizeTransitionSettings(userSettings, layerSettings);\n }\n\n setNeedsUpdate(reason: string = this.id, dataRange?: {startRow?: number; endRow?: number}): void {\n this.state.needsUpdate = this.state.needsUpdate || reason;\n this.setNeedsRedraw(reason);\n if (dataRange) {\n const {startRow = 0, endRow = Infinity} = dataRange;\n this.state.updateRanges = range.add(this.state.updateRanges, [startRow, endRow]);\n } else {\n this.state.updateRanges = range.FULL;\n }\n }\n\n clearNeedsUpdate(): void {\n this.state.needsUpdate = false;\n this.state.updateRanges = range.EMPTY;\n }\n\n setNeedsRedraw(reason: string = this.id): void {\n this.state.needsRedraw = this.state.needsRedraw || reason;\n }\n\n allocate(numInstances: number): boolean {\n const {state, settings} = this;\n\n if (settings.noAlloc) {\n // Data is provided through a Buffer object.\n return false;\n }\n\n if (settings.update) {\n super.allocate(numInstances, state.updateRanges !== range.FULL);\n return true;\n }\n\n return false;\n }\n\n updateBuffer({\n numInstances,\n data,\n props,\n context\n }: {\n numInstances: number;\n data: any;\n props: any;\n context: any;\n }): boolean {\n if (!this.needsUpdate()) {\n return false;\n }\n\n const {\n state: {updateRanges},\n settings: {update, noAlloc}\n } = this;\n\n let updated = true;\n if (update) {\n // Custom updater - typically for non-instanced layers\n for (const [startRow, endRow] of updateRanges) {\n update.call(context, this, {data, startRow, endRow, props, numInstances});\n }\n if (!this.value) {\n // no value was assigned during update\n } else if (\n this.constant ||\n this.buffer.byteLength < (this.value as TypedArray).byteLength + this.byteOffset\n ) {\n this.setData({\n value: this.value,\n constant: this.constant\n });\n // Setting attribute.constant in updater is a legacy approach that interferes with allocation in the next cycle\n // Respect it here but reset after use\n this.constant = false;\n } else {\n for (const [startRow, endRow] of updateRanges) {\n const startOffset = Number.isFinite(startRow) ? this.getVertexOffset(startRow) : 0;\n const endOffset = Number.isFinite(endRow)\n ? this.getVertexOffset(endRow)\n : noAlloc || !Number.isFinite(numInstances)\n ? this.value.length\n : numInstances * this.size;\n\n super.updateSubBuffer({startOffset, endOffset});\n }\n }\n this._checkAttributeArray();\n } else {\n updated = false;\n }\n\n this.clearNeedsUpdate();\n this.setNeedsRedraw();\n\n return updated;\n }\n\n // Use generic value\n // Returns true if successful\n setConstantValue(value?: NumericArray): boolean {\n if (value === undefined || typeof value === 'function') {\n return false;\n }\n\n const hasChanged = this.setData({constant: true, value});\n\n if (hasChanged) {\n this.setNeedsRedraw();\n }\n this.clearNeedsUpdate();\n return true;\n }\n\n // Use external buffer\n // Returns true if successful\n // eslint-disable-next-line max-statements\n setExternalBuffer(buffer?: TypedArray | Buffer | BinaryAttribute): boolean {\n const {state} = this;\n\n if (!buffer) {\n state.lastExternalBuffer = null;\n return false;\n }\n\n this.clearNeedsUpdate();\n\n if (state.lastExternalBuffer === buffer) {\n return true;\n }\n state.lastExternalBuffer = buffer;\n this.setNeedsRedraw();\n this.setData(buffer);\n return true;\n }\n\n // Binary value is a typed array packed from mapping the source data with the accessor\n // If the returned value from the accessor is the same as the attribute value, set it directly\n // Otherwise use the auto updater for transform/normalization\n setBinaryValue(\n buffer?: TypedArray | Buffer | BinaryAttribute,\n startIndices: NumericArray | null = null\n ): boolean {\n const {state, settings} = this;\n\n if (!buffer) {\n state.binaryValue = null;\n state.binaryAccessor = null;\n return false;\n }\n\n if (settings.noAlloc) {\n // Let the layer handle this\n return false;\n }\n\n if (state.binaryValue === buffer) {\n this.clearNeedsUpdate();\n return true;\n }\n state.binaryValue = buffer;\n this.setNeedsRedraw();\n\n const needsUpdate = settings.transform || startIndices !== this.startIndices;\n\n if (needsUpdate) {\n if (ArrayBuffer.isView(buffer)) {\n buffer = {value: buffer};\n }\n const binaryValue = buffer as BinaryAttribute;\n assert(ArrayBuffer.isView(binaryValue.value), `invalid ${settings.accessor}`);\n const needsNormalize = Boolean(binaryValue.size) && binaryValue.size !== this.size;\n\n state.binaryAccessor = getAccessorFromBuffer(binaryValue.value, {\n size: binaryValue.size || this.size,\n stride: binaryValue.stride,\n offset: binaryValue.offset,\n startIndices: startIndices as NumericArray,\n nested: needsNormalize\n });\n // Fall through to auto updater\n return false;\n }\n\n this.clearNeedsUpdate();\n this.setData(buffer);\n return true;\n }\n\n getVertexOffset(row: number): number {\n const {startIndices} = this;\n const vertexIndex = startIndices\n ? row < startIndices.length\n ? startIndices[row]\n : this.numInstances\n : row;\n return vertexIndex * this.size;\n }\n\n getShaderAttributes(): Record {\n const shaderAttributeDefs = this.settings.shaderAttributes || {[this.id]: null};\n const shaderAttributes: Record = {};\n\n for (const shaderAttributeName in shaderAttributeDefs) {\n Object.assign(\n shaderAttributes,\n super.getShaderAttributes(shaderAttributeName, shaderAttributeDefs[shaderAttributeName])\n );\n }\n\n return shaderAttributes;\n }\n\n /* eslint-disable max-depth, max-statements */\n private _autoUpdater(\n attribute: Attribute,\n {\n data,\n startRow,\n endRow,\n props,\n numInstances\n }: {\n data: any;\n startRow: number;\n endRow: number;\n props: any;\n numInstances: number;\n }\n ): void {\n if (attribute.constant) {\n return;\n }\n const {settings, state, value, size, startIndices} = attribute;\n\n const {accessor, transform} = settings;\n const accessorFunc: Accessor =\n state.binaryAccessor ||\n // @ts-ignore\n (typeof accessor === 'function' ? accessor : props[accessor]);\n\n assert(typeof accessorFunc === 'function', `accessor \"${accessor}\" is not a function`);\n\n let i = attribute.getVertexOffset(startRow);\n const {iterable, objectInfo} = createIterable(data, startRow, endRow);\n for (const object of iterable) {\n objectInfo.index++;\n\n let objectValue = accessorFunc(object, objectInfo);\n if (transform) {\n // transform callbacks could be bound to a particular layer instance.\n // always point `this` to the current layer.\n objectValue = transform.call(this, objectValue);\n }\n\n if (startIndices) {\n const numVertices =\n (objectInfo.index < startIndices.length - 1\n ? startIndices[objectInfo.index + 1]\n : numInstances) - startIndices[objectInfo.index];\n if (objectValue && Array.isArray(objectValue[0])) {\n let startIndex = i;\n for (const item of objectValue) {\n attribute._normalizeValue(item, value as TypedArray, startIndex);\n startIndex += size;\n }\n } else if (objectValue && objectValue.length > size) {\n (value as TypedArray).set(objectValue, i);\n } else {\n attribute._normalizeValue(objectValue, objectInfo.target, 0);\n fillArray({\n target: value,\n source: objectInfo.target,\n start: i,\n count: numVertices\n });\n }\n i += numVertices * size;\n } else {\n attribute._normalizeValue(objectValue, value as TypedArray, i);\n i += size;\n }\n }\n }\n /* eslint-enable max-depth, max-statements */\n\n // Validate deck.gl level fields\n private _validateAttributeUpdaters() {\n const {settings} = this;\n\n // Check that 'update' is a valid function\n const hasUpdater = settings.noAlloc || typeof settings.update === 'function';\n if (!hasUpdater) {\n throw new Error(`Attribute ${this.id} missing update or accessor`);\n }\n }\n\n // check that the first few elements of the attribute are reasonable\n /* eslint-disable no-fallthrough */\n private _checkAttributeArray() {\n const {value} = this;\n const limit = Math.min(4, this.size);\n if (value && value.length >= limit) {\n let valid = true;\n switch (limit) {\n case 4:\n valid = valid && Number.isFinite(value[3]);\n case 3:\n valid = valid && Number.isFinite(value[2]);\n case 2:\n valid = valid && Number.isFinite(value[1]);\n case 1:\n valid = valid && Number.isFinite(value[0]);\n break;\n default:\n valid = false;\n }\n\n if (!valid) {\n throw new Error(`Illegal attribute generated for ${this.id}`);\n }\n }\n }\n /* eslint-enable no-fallthrough */\n}\n","import {assert} from '../utils';\nconst FS100 = `void main() {gl_FragColor = vec4(0);}`;\nconst FS_GLES = `\\\nout vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`;\nconst FS300 = `#version 300 es\\n${FS_GLES}`;\n\n// Prase given glsl line and return qualifier details or null\nexport function getQualifierDetails(line, qualifiers) {\n qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n const words = line.replace(/^\\s+/, '').split(/\\s+/);\n // TODO add support for precession qualifiers (highp, mediump and lowp)\n const [qualifier, type, definition] = words;\n if (!qualifiers.includes(qualifier) || !type || !definition) {\n return null;\n }\n const name = definition.split(';')[0];\n return {qualifier, type, name};\n}\n\n// Given the shader version, input and output variable names,\n// builds and return a pass through fragment shader.\nexport function getPassthroughFS(options = {}) {\n const {version = 100, input, inputType, output} = options;\n if (!input) {\n if (version === 300) {\n // Fast-path for WebGL 2.0\n return FS300;\n } else if (version > 300) {\n // Use the supplied version for OpenGL/ES 3.2+\n return `#version ${version}\\n${FS_GLES}`;\n }\n // Fast-path for WebGL 1.0\n return FS100;\n }\n const outputValue = convertToVec4(input, inputType);\n if (version >= 300) {\n // If version is 300, assume WebGL 2.0\n return `\\\n#version ${version} ${version === 300 ? 'es' : ''}\nin ${inputType} ${input};\nout vec4 ${output};\nvoid main() {\n ${output} = ${outputValue};\n}`;\n }\n // WebGL 1.0\n return `\\\nvarying ${inputType} ${input};\nvoid main() {\n gl_FragColor = ${outputValue};\n}`;\n}\n\n// convert glsl type to suffix\nexport function typeToChannelSuffix(type) {\n switch (type) {\n case 'float':\n return 'x';\n case 'vec2':\n return 'xy';\n case 'vec3':\n return 'xyz';\n case 'vec4':\n return 'xyzw';\n default:\n assert(false);\n return null;\n }\n}\n\n// convert glsl type to channel count\nexport function typeToChannelCount(type) {\n switch (type) {\n case 'float':\n return 1;\n case 'vec2':\n return 2;\n case 'vec3':\n return 3;\n case 'vec4':\n return 4;\n default:\n assert(false);\n return null;\n }\n}\n\n// Returns glsl instruction for converting to vec4\nexport function convertToVec4(variable, type) {\n switch (type) {\n case 'float':\n return `vec4(${variable}, 0.0, 0.0, 1.0)`;\n case 'vec2':\n return `vec4(${variable}, 0.0, 1.0)`;\n case 'vec3':\n return `vec4(${variable}, 1.0)`;\n case 'vec4':\n return variable;\n default:\n assert(false);\n return null;\n }\n}\n","import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, log} from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {isObjectEmpty} from '../utils/utils';\n\n// NOTE: The `bindOnUse` flag is a major workaround:\n// See https://github.com/KhronosGroup/WebGL/issues/2346\n\nexport default class TransformFeedback extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'TransformFeedback';\n }\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n assertWebGL2Context(gl);\n super(gl, props);\n\n this.initialize(props);\n this.stubRemovedMethods('TransformFeedback', 'v6.0', ['pause', 'resume']);\n Object.seal(this);\n }\n\n initialize(props = {}) {\n this.buffers = {};\n this.unused = {};\n this.configuration = null;\n this.bindOnUse = true;\n\n // Unbind any currently bound buffers\n if (!isObjectEmpty(this.buffers)) {\n this.bind(() => this._unbindBuffers());\n }\n\n this.setProps(props);\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n if ('buffers' in props) {\n this.setBuffers(props.buffers);\n }\n }\n\n setBuffers(buffers = {}) {\n this.bind(() => {\n for (const bufferName in buffers) {\n this.setBuffer(bufferName, buffers[bufferName]);\n }\n });\n return this;\n }\n\n setBuffer(locationOrName, bufferOrParams) {\n const location = this._getVaryingIndex(locationOrName);\n const {buffer, byteSize, byteOffset} = this._getBufferParams(bufferOrParams);\n\n if (location < 0) {\n this.unused[locationOrName] = buffer;\n log.warn(`${this.id} unused varying buffer ${locationOrName}`)();\n return this;\n }\n\n this.buffers[location] = bufferOrParams;\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n if (!this.bindOnUse) {\n this._bindBuffer(location, buffer, byteOffset, byteSize);\n }\n\n return this;\n }\n\n begin(primitiveMode = GL.POINTS) {\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n this._bindBuffers();\n // @ts-ignore\n this.gl.beginTransformFeedback(primitiveMode);\n return this;\n }\n\n end() {\n // @ts-ignore\n this.gl.endTransformFeedback();\n this._unbindBuffers();\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);\n return this;\n }\n\n // PRIVATE METHODS\n\n _getBufferParams(bufferOrParams) {\n let byteOffset;\n let byteSize;\n let buffer;\n if (bufferOrParams instanceof Buffer === false) {\n buffer = bufferOrParams.buffer;\n byteSize = bufferOrParams.byteSize;\n byteOffset = bufferOrParams.byteOffset;\n } else {\n buffer = bufferOrParams;\n }\n // to use bindBufferRange, either offset or size must be specified, use default value for the other.\n if (byteOffset !== undefined || byteSize !== undefined) {\n byteOffset = byteOffset || 0;\n byteSize = byteSize || buffer.byteLength - byteOffset;\n }\n return {buffer, byteOffset, byteSize};\n }\n\n _getVaryingInfo(locationOrName) {\n return this.configuration && this.configuration.getVaryingInfo(locationOrName);\n }\n\n _getVaryingIndex(locationOrName) {\n if (this.configuration) {\n return this.configuration.getVaryingInfo(locationOrName).location;\n }\n const location = Number(locationOrName);\n return Number.isFinite(location) ? location : -1;\n }\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n _bindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n const {buffer, byteSize, byteOffset} = this._getBufferParams(this.buffers[bufferIndex]);\n this._bindBuffer(bufferIndex, buffer, byteOffset, byteSize);\n }\n }\n }\n\n _unbindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n this._bindBuffer(bufferIndex, null);\n }\n }\n }\n\n _bindBuffer(index, buffer, byteOffset = 0, byteSize) {\n const handle = buffer && buffer.handle;\n if (!handle || byteSize === undefined) {\n // @ts-ignore\n this.gl.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle);\n } else {\n // @ts-ignore\n this.gl.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteSize);\n }\n return this;\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n // @ts-ignore\n return this.gl.createTransformFeedback();\n }\n\n _deleteHandle() {\n // @ts-ignore\n this.gl.deleteTransformFeedback(this.handle);\n }\n\n _bindHandle(handle) {\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n }\n}\n","import {isWebGL2} from '@luma.gl/gltools';\nimport {Buffer, TransformFeedback} from '@luma.gl/webgl';\nimport {assert} from '@luma.gl/webgl';\n\nexport default class BufferTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.currentIndex = 0;\n this.feedbackMap = {};\n this.varyings = null; // varyings array\n this.bindings = []; // each element is an object : {sourceBuffers, feedbackBuffers, transformFeedback}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n setupResources(opts) {\n for (const binding of this.bindings) {\n this._setupTransformFeedback(binding, opts);\n }\n }\n\n updateModelProps(props = {}) {\n const {varyings} = this;\n if (varyings.length > 0) {\n props = Object.assign({}, props, {varyings});\n }\n return props;\n }\n\n getDrawOptions(opts = {}) {\n const binding = this.bindings[this.currentIndex];\n const {sourceBuffers, transformFeedback} = binding;\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n\n return {attributes, transformFeedback};\n }\n\n swap() {\n if (this.feedbackMap) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupBuffers(opts);\n }\n\n // returns current feedbackBuffer of given name\n getBuffer(varyingName) {\n const {feedbackBuffers} = this.bindings[this.currentIndex];\n const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n if (!bufferOrParams) {\n return null;\n }\n return bufferOrParams instanceof Buffer ? bufferOrParams : bufferOrParams.buffer;\n }\n\n getData(options = {}) {\n const {varyingName} = options;\n const buffer = this.getBuffer(varyingName);\n if (buffer) {\n return buffer.getData();\n }\n return null;\n }\n\n // Delete owned resources.\n delete() {\n for (const name in this.resources) {\n this.resources[name].delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n this._setupBuffers(props);\n this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n if (this.varyings.length > 0) {\n // if writting to buffers make sure it is WebGL2\n assert(isWebGL2(this.gl));\n }\n }\n\n // auto create feedback buffers if requested\n _getFeedbackBuffers(props) {\n const {sourceBuffers = {}} = props;\n const feedbackBuffers = {};\n if (this.bindings[this.currentIndex]) {\n // this gurantees a partial feedback buffer set doesn't update\n // previously set buffers during auto creation mode.\n Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n }\n if (this.feedbackMap) {\n // feedbackMap is defined as sourceBuffer as key and feedbackBuffer name as object\n for (const sourceName in this.feedbackMap) {\n const feedbackName = this.feedbackMap[sourceName];\n if (sourceName in sourceBuffers) {\n feedbackBuffers[feedbackName] = sourceName;\n }\n }\n }\n Object.assign(feedbackBuffers, props.feedbackBuffers);\n for (const bufferName in feedbackBuffers) {\n const bufferOrRef = feedbackBuffers[bufferName];\n if (typeof bufferOrRef === 'string') {\n // Create new buffer with same layout and settings as source buffer\n const sourceBuffer = sourceBuffers[bufferOrRef];\n const {byteLength, usage, accessor} = sourceBuffer;\n feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n byteLength,\n usage,\n accessor\n });\n }\n }\n\n return feedbackBuffers;\n }\n\n _setupBuffers(props = {}) {\n const {sourceBuffers = null} = props;\n Object.assign(this.feedbackMap, props.feedbackMap);\n const feedbackBuffers = this._getFeedbackBuffers(props);\n this._updateBindings({sourceBuffers, feedbackBuffers});\n }\n\n _setupTransformFeedback(binding, {model}) {\n const {program} = model;\n binding.transformFeedback = new TransformFeedback(this.gl, {\n program,\n buffers: binding.feedbackBuffers\n });\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this.feedbackMap) {\n const {sourceBuffers, feedbackBuffers} = this._swapBuffers(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceBuffers,\n feedbackBuffers\n });\n }\n }\n\n _updateBinding(binding, opts) {\n if (!binding) {\n return {\n sourceBuffers: Object.assign({}, opts.sourceBuffers),\n feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n };\n }\n Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n if (binding.transformFeedback) {\n binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n }\n return binding;\n }\n\n _swapBuffers(opts) {\n if (!this.feedbackMap) {\n return null;\n }\n const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n for (const srcName in this.feedbackMap) {\n const dstName = this.feedbackMap[srcName];\n sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n\n // make sure the new destination buffer is a Buffer object\n assert(feedbackBuffers[dstName] instanceof Buffer);\n }\n return {sourceBuffers, feedbackBuffers};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewBuffer(name, opts) {\n const buffer = new Buffer(this.gl, opts);\n if (this.resources[name]) {\n this.resources[name].delete();\n }\n this.resources[name] = buffer;\n return buffer;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n}\n","// returns GLSL shader version of given shader string\nexport default function getShaderVersion(source) {\n let version = 100;\n const words = source.match(/[^\\s]+/g);\n if (words.length >= 2 && words[0] === '#version') {\n const v = parseInt(words[1], 10);\n if (Number.isFinite(v)) {\n version = v;\n }\n }\n return version;\n}\n","/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst vs = `\\\nattribute float transform_elementID;\n\n// returns half of pixel size, used to move the pixel position to center of the pixel.\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\n// returns current elements pixel indeces [x, y],\n// where x ranges in [0 to texSize-1] and y ranges in [0 to texSize-1]\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n // Add safe offset (half of pixel height) before doing floor\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\n\n// returns current elementID's texture co-ordianate\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\n\n// returns current elementID's position\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n // Change from [0 1] range to [-1 1]\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\n\n// returns current elementID's pixel value\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n`;\n\n/** @type {ShaderModule} */\nexport const transform = {\n name: 'transform',\n vs,\n fs: null\n};\n","import {assert} from '@luma.gl/webgl';\nimport {combineInjects, getQualifierDetails, typeToChannelSuffix} from '@luma.gl/shadertools';\n\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\n\n// Scan provided vertex shader\n// for each texture attribute, inject sampler instructions and build uniforms for sampler\n// for texture target, get varying type and inject position instruction\nexport function updateForTextures({vs, sourceTextureMap, targetTextureVarying, targetTexture}) {\n const texAttributeNames = Object.keys(sourceTextureMap);\n let sourceCount = texAttributeNames.length;\n let targetTextureType = null;\n const samplerTextureMap = {};\n let updatedVs = vs;\n let finalInject = {};\n\n if (sourceCount > 0 || targetTextureVarying) {\n const vsLines = updatedVs.split('\\n');\n const updateVsLines = vsLines.slice();\n vsLines.forEach((line, index, lines) => {\n // TODO add early exit\n if (sourceCount > 0) {\n const updated = processAttributeDefinition(line, sourceTextureMap);\n if (updated) {\n const {updatedLine, inject} = updated;\n updateVsLines[index] = updatedLine;\n // sampleInstructions.push(sampleInstruction);\n finalInject = combineInjects([finalInject, inject]);\n Object.assign(samplerTextureMap, updated.samplerTextureMap);\n sourceCount--;\n }\n }\n if (targetTextureVarying && !targetTextureType) {\n targetTextureType = getVaryingType(line, targetTextureVarying);\n }\n });\n\n if (targetTextureVarying) {\n assert(targetTexture);\n const sizeName = `${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`;\n\n const uniformDeclaration = `uniform vec2 ${sizeName};\\n`;\n const posInstructions = `\\\n vec2 ${VS_POS_VARIABLE} = transform_getPos(${sizeName});\n gl_Position = vec4(${VS_POS_VARIABLE}, 0, 1.);\\n`;\n const inject = {\n 'vs:#decl': uniformDeclaration,\n 'vs:#main-start': posInstructions\n };\n finalInject = combineInjects([finalInject, inject]);\n }\n updatedVs = updateVsLines.join('\\n');\n }\n return {\n // updated vertex shader (commented texture attribute definition)\n vs: updatedVs,\n // type (float, vec2, vec3 of vec4) target texture varying\n targetTextureType,\n // required vertex and fragment shader injects\n inject: finalInject,\n // map of sampler name to texture name, can be used to set attributes\n // usefull when swapping textures, as source and destination texture change when swap is called.\n samplerTextureMap\n };\n}\n\n// builds and returns an object contaning size uniform for each texture\nexport function getSizeUniforms({sourceTextureMap, targetTextureVarying, targetTexture}) {\n const uniforms = {};\n let width;\n let height;\n if (targetTextureVarying) {\n ({width, height} = targetTexture);\n uniforms[`${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`] = [width, height];\n }\n for (const textureName in sourceTextureMap) {\n ({width, height} = sourceTextureMap[textureName]);\n uniforms[`${SIZE_UNIFORM_PREFIX}${textureName}`] = [width, height];\n }\n return uniforms;\n}\n\n// Checks if provided line is defining an attribute, if so returns details otherwise null\nfunction getAttributeDefinition(line) {\n return getQualifierDetails(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclerations(textureName) {\n const samplerName = `${SAMPLER_UNIFORM_PREFIX}${textureName}`;\n const sizeName = `${SIZE_UNIFORM_PREFIX}${textureName}`;\n const uniformDeclerations = `\\\n uniform sampler2D ${samplerName};\n uniform vec2 ${sizeName};`;\n return {samplerName, sizeName, uniformDeclerations};\n}\n\n// Return size (float, vec2 etc) of a given varying, null if doens't exist.\nexport function getVaryingType(line, varying) {\n const qualaiferDetails = getQualifierDetails(line, ['varying', 'out']);\n if (!qualaiferDetails) {\n return null;\n }\n return qualaiferDetails.name === varying ? qualaiferDetails.type : null;\n}\n\n// build required definitions, sample instructions for each texture attribute\nexport function processAttributeDefinition(line, textureMap) {\n const samplerTextureMap = {};\n const attributeData = getAttributeDefinition(line);\n if (!attributeData) {\n return null;\n }\n const {type, name} = attributeData;\n if (name && textureMap[name]) {\n // eslint-disable-next-line no-useless-escape\n const updatedLine = `\\// ${line} => Replaced by Transform with a sampler`;\n const {samplerName, sizeName, uniformDeclerations} = getSamplerDeclerations(name);\n\n const channels = typeToChannelSuffix(type);\n const sampleInstruction = ` ${type} ${name} = transform_getInput(${samplerName}, ${sizeName}).${channels};\\n`;\n\n samplerTextureMap[samplerName] = name;\n const inject = {\n 'vs:#decl': uniformDeclerations,\n 'vs:#main-start': sampleInstruction\n };\n\n // samplerNameMap\n return {\n // update vertex shader line.\n updatedLine,\n // inject object with sampler instructions.\n inject,\n // sampler name to texture name map\n samplerTextureMap\n };\n }\n return null;\n}\n","/** @typedef {import('./transform').TransformProps} TransformProps */\nimport GL from '@luma.gl/constants';\n\nimport {\n cloneTextureFrom,\n readPixelsToArray,\n getShaderVersion,\n Buffer,\n Texture2D,\n Framebuffer\n} from '@luma.gl/webgl';\n\nimport {\n _transform as transformModule,\n getPassthroughFS,\n typeToChannelCount,\n combineInjects\n} from '@luma.gl/shadertools';\n\nimport {updateForTextures, getSizeUniforms} from './transform-shader-utils';\n\n// TODO: move these constants to transform-shader-utils\n// Texture parameters needed so sample can precisely pick pixel for given element id.\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\n\nexport default class TextureTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.id = this.currentIndex = 0;\n this._swapTexture = null;\n this.targetTextureVarying = null;\n this.targetTextureType = null;\n this.samplerTextureMap = null;\n this.bindings = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n updateModelProps(props = {}) {\n const updatedModelProps = this._processVertexShader(props);\n return Object.assign({}, props, updatedModelProps);\n }\n\n getDrawOptions(opts = {}) {\n const {sourceBuffers, sourceTextures, framebuffer, targetTexture} = this.bindings[\n this.currentIndex\n ];\n\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n const uniforms = Object.assign({}, opts.uniforms);\n const parameters = Object.assign({}, opts.parameters);\n let discard = opts.discard;\n\n if (this.hasSourceTextures || this.hasTargetTexture) {\n attributes.transform_elementID = this.elementIDBuffer;\n\n for (const sampler in this.samplerTextureMap) {\n const textureName = this.samplerTextureMap[sampler];\n uniforms[sampler] = sourceTextures[textureName];\n }\n this._setSourceTextureParameters();\n // get texture size uniforms\n const sizeUniforms = getSizeUniforms({\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n Object.assign(uniforms, sizeUniforms);\n }\n\n if (this.hasTargetTexture) {\n discard = false;\n parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n }\n\n return {attributes, framebuffer, uniforms, discard, parameters};\n }\n\n swap() {\n if (this._swapTexture) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupTextures(opts);\n }\n\n // returns current target texture\n getTargetTexture() {\n const {targetTexture} = this.bindings[this.currentIndex];\n return targetTexture;\n }\n\n getData({packed = false} = {}) {\n const {framebuffer} = this.bindings[this.currentIndex];\n const pixels = readPixelsToArray(framebuffer);\n\n if (!packed) {\n return pixels;\n }\n\n // readPixels returns 4 elements for each pixel, pack the elements when requested\n const ArrayType = pixels.constructor;\n const channelCount = typeToChannelCount(this.targetTextureType);\n // @ts-ignore\n const packedPixels = new ArrayType((pixels.length * channelCount) / 4);\n let packCount = 0;\n for (let i = 0; i < pixels.length; i += 4) {\n for (let j = 0; j < channelCount; j++) {\n packedPixels[packCount++] = pixels[i + j];\n }\n }\n return packedPixels;\n }\n\n // returns current framebuffer object that is being used.\n getFramebuffer() {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n\n // Delete owned resources.\n delete() {\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n if (this.elementIDBuffer) {\n this.elementIDBuffer.delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {_targetTextureVarying, _swapTexture} = props;\n this._swapTexture = _swapTexture;\n this.targetTextureVarying = _targetTextureVarying;\n this.hasTargetTexture = _targetTextureVarying;\n this._setupTextures(props);\n }\n\n // auto create target texture if requested\n _createTargetTexture(props) {\n const {sourceTextures, textureOrReference} = props;\n if (textureOrReference instanceof Texture2D) {\n return textureOrReference;\n }\n // 'targetTexture' is a reference souce texture.\n const refTexture = sourceTextures[textureOrReference];\n if (!refTexture) {\n return null;\n }\n\n // save reference texture name, when corresponding source texture is updated\n // we also update target texture.\n this._targetRefTexName = textureOrReference;\n\n return this._createNewTexture(refTexture);\n }\n\n /** @param {TransformProps} props */\n _setupTextures(props = {}) {\n const {sourceBuffers, _sourceTextures = {}, _targetTexture} = props;\n const targetTexture = this._createTargetTexture({\n sourceTextures: _sourceTextures,\n textureOrReference: _targetTexture\n });\n this.hasSourceTextures =\n this.hasSourceTextures || (_sourceTextures && Object.keys(_sourceTextures).length > 0);\n this._updateBindings({sourceBuffers, sourceTextures: _sourceTextures, targetTexture});\n if ('elementCount' in props) {\n this._updateElementIDBuffer(props.elementCount);\n }\n }\n\n _updateElementIDBuffer(elementCount) {\n if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n return;\n }\n // NOTE: using float so this will work with GLSL 1.0 shaders.\n const elementIds = new Float32Array(elementCount);\n elementIds.forEach((_, index, array) => {\n array[index] = index;\n });\n if (!this.elementIDBuffer) {\n this.elementIDBuffer = new Buffer(this.gl, {\n data: elementIds,\n accessor: {size: 1}\n });\n } else {\n this.elementIDBuffer.setData({data: elementIds});\n }\n this.elementCount = elementCount;\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this._swapTexture) {\n const {sourceTextures, targetTexture} = this._swapTextures(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceTextures,\n targetTexture\n });\n }\n }\n\n _updateBinding(binding, opts) {\n const {sourceBuffers, sourceTextures, targetTexture} = opts;\n if (!binding) {\n binding = {\n sourceBuffers: {},\n sourceTextures: {},\n targetTexture: null\n };\n }\n Object.assign(binding.sourceTextures, sourceTextures);\n Object.assign(binding.sourceBuffers, sourceBuffers);\n if (targetTexture) {\n binding.targetTexture = targetTexture;\n\n const {width, height} = targetTexture;\n const {framebuffer} = binding;\n if (framebuffer) {\n // First update texture without re-sizing attachments\n framebuffer.update({\n attachments: {[GL.COLOR_ATTACHMENT0]: targetTexture},\n resizeAttachments: false\n });\n // Resize to new taget texture size\n framebuffer.resize({width, height});\n } else {\n binding.framebuffer = new Framebuffer(this.gl, {\n id: `transform-framebuffer`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: targetTexture\n }\n });\n }\n }\n return binding;\n }\n\n // set texture filtering parameters on source textures.\n _setSourceTextureParameters() {\n const index = this.currentIndex;\n const {sourceTextures} = this.bindings[index];\n for (const name in sourceTextures) {\n sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n }\n }\n\n _swapTextures(opts) {\n if (!this._swapTexture) {\n return null;\n }\n const sourceTextures = Object.assign({}, opts.sourceTextures);\n sourceTextures[this._swapTexture] = opts.targetTexture;\n\n const targetTexture = opts.sourceTextures[this._swapTexture];\n\n return {sourceTextures, targetTexture};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewTexture(refTexture) {\n const texture = cloneTextureFrom(refTexture, {\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n },\n pixelStore: {\n [GL.UNPACK_FLIP_Y_WEBGL]: false\n }\n });\n\n // thre can only be one target texture\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n this.ownTexture = texture;\n\n return texture;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n\n // build and return shader releated parameters\n _processVertexShader(props = {}) {\n const {sourceTextures, targetTexture} = this.bindings[this.currentIndex];\n // @ts-ignore TODO - uniforms is not present\n const {vs, uniforms, targetTextureType, inject, samplerTextureMap} = updateForTextures({\n vs: props.vs,\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n const combinedInject = combineInjects([props.inject || {}, inject]);\n this.targetTextureType = targetTextureType;\n this.samplerTextureMap = samplerTextureMap;\n const fs =\n props._fs ||\n getPassthroughFS({\n version: getShaderVersion(vs),\n input: this.targetTextureVarying,\n inputType: targetTextureType,\n output: FS_OUTPUT_VARIABLE\n });\n const modules =\n this.hasSourceTextures || this.targetTextureVarying\n ? [transformModule].concat(props.modules || [])\n : props.modules;\n return {vs, fs, modules, uniforms, inject: combinedInject};\n }\n}\n","let arrayBuffer = null;\n\nexport function getScratchArrayBuffer(byteLength) {\n if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {\n arrayBuffer = new ArrayBuffer(byteLength);\n }\n return arrayBuffer;\n}\n\nexport function getScratchArray(Type, length) {\n const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);\n return new Type(scratchArrayBuffer, 0, length); // arrayBuffer, byteOffset, length (in elements)\n}\n\n// Uses copyWithin to significantly speed up typed array value filling\nexport function fillArray({target, source, start = 0, count = 1}) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n // If we have copied less than half, copy everything we got\n // else copy remaining in one operation\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n\n/*\n\n// Creates a new Uint8Array based on two different ArrayBuffers\n// @private\n// @param {ArrayBuffers} buffer1 The first buffer.\n// @param {ArrayBuffers} buffer2 The second buffer.\n// @return {ArrayBuffers} The new ArrayBuffer created out of the two.\n//\nexport function copyArrayBuffer(\n targetBuffer, sourceBuffer, byteOffset, byteLength = sourceBuffer.byteLength\n) {\n const targetArray = new Uint8Array(targetBuffer, byteOffset, byteLength);\n const sourceArray = new Uint8Array(sourceBuffer);\n targetArray.set(sourceArray);\n return targetBuffer;\n}\n\n*/\n","import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {getScratchArray, fillArray} from '../utils/array-utils-flat';\nimport {assert} from '../utils/assert';\nimport {getBrowser} from '@probe.gl/env';\n\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\n\nexport default class VertexArrayObject extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'VertexArrayObject';\n }\n static isSupported(gl, options = {}) {\n // Attribute 0 can not be disable on most desktop OpenGL based browsers\n // and on iOS Safari browser.\n if (options.constantAttributeZero) {\n return isWebGL2(gl) || getBrowser() === 'Chrome';\n }\n\n // Whether additional objects can be created\n return true;\n }\n\n // Returns the global (null) vertex array object. Exists even when no extension available\n // TODO(Tarek): VAOs are now polyfilled. Deprecate this in 9.0\n static getDefaultArray(gl) {\n gl.luma = gl.luma || {};\n if (!gl.luma.defaultVertexArray) {\n gl.luma.defaultVertexArray = new VertexArrayObject(gl, {handle: null, isDefaultArray: true});\n }\n return gl.luma.defaultVertexArray;\n }\n\n static getMaxAttributes(gl) {\n // TODO - should be cached per context\n // @ts-ignore\n VertexArrayObject.MAX_ATTRIBUTES =\n // @ts-ignore\n VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n // @ts-ignore\n return VertexArrayObject.MAX_ATTRIBUTES;\n }\n\n // Note: Constants are stored globally on the WebGL context, not the VAO\n // So they need to be updated before every render\n // TODO - use known type (in configuration or passed in) to allow non-typed arrays?\n // TODO - remember/cache values to avoid setting them unnecessarily?\n static setConstant(gl, location, array) {\n switch (array.constructor) {\n case Float32Array:\n VertexArrayObject._setConstantFloatArray(gl, location, array);\n break;\n case Int32Array:\n VertexArrayObject._setConstantIntArray(gl, location, array);\n break;\n case Uint32Array:\n VertexArrayObject._setConstantUintArray(gl, location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // Create a VertexArray\n constructor(gl, opts = {}) {\n // Use program's id if program but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n super(gl, Object.assign({}, opts, {id}));\n\n this.buffer = null;\n this.bufferValue = null;\n this.isDefaultArray = opts.isDefaultArray || false;\n\n /** @type {WebGL2RenderingContext} */\n this.gl2 = gl;\n\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n delete() {\n super.delete();\n if (this.buffer) {\n this.buffer.delete();\n }\n return this;\n }\n\n get MAX_ATTRIBUTES() {\n return VertexArrayObject.getMaxAttributes(this.gl);\n }\n\n initialize(props = {}) {\n return this.setProps(props);\n }\n\n setProps(props) {\n // TODO: decide which props should be supported\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, opts = {}) {\n assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);\n\n // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...\n this.bind(() => {\n this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);\n });\n\n return this;\n }\n\n // Set a location in vertex attributes array to a bufferk, enables the location, sets divisor\n setBuffer(location, buffer, accessor) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, accessor);\n }\n\n const {size, type, stride, offset, normalized, integer, divisor} = accessor;\n\n const {gl, gl2} = this;\n location = Number(location);\n\n this.bind(() => {\n // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);\n\n // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n if (integer) {\n assert(isWebGL2(gl));\n gl2.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n // Attaches ARRAY_BUFFER with specified buffer format to location\n gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n gl.enableVertexAttribArray(location);\n gl2.vertexAttribDivisor(location, divisor || 0);\n\n // NOTE We don't unbind buffer here, typically another buffer will be bound just after\n });\n\n return this;\n }\n\n // Enabling an attribute location makes it reference the currently bound buffer\n // Disabling an attribute location makes it reference the global constant value\n // TODO - handle single values for size 1 attributes?\n // TODO - convert classic arrays based on known type?\n enable(location, enable = true) {\n // Attribute 0 cannot be disabled in most desktop OpenGL based browsers\n const disablingAttributeZero =\n !enable &&\n location === 0 &&\n !VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true});\n\n if (!disablingAttributeZero) {\n location = Number(location);\n this.bind(\n () =>\n enable\n ? this.gl.enableVertexAttribArray(location)\n : this.gl.disableVertexAttribArray(location)\n );\n }\n return this;\n }\n\n // Provide a means to create a buffer that is equivalent to a constant.\n // NOTE: Desktop OpenGL cannot disable attribute 0.\n // https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-\n // this-has-significant-performance-penalt\n getConstantBuffer(elementCount, value) {\n // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)\n\n const constantValue = this._normalizeConstantArrayValue(value);\n\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n\n let updateNeeded = !this.buffer;\n\n this.buffer = this.buffer || new Buffer(this.gl, byteLength);\n updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n\n // Reallocate and update contents if needed\n updateNeeded =\n updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n\n if (updateNeeded) {\n // Create a typed array that is big enough, and fill it with the required data\n const typedArray = getScratchArray(value.constructor, length);\n fillArray({target: typedArray, source: constantValue, start: 0, count: length});\n this.buffer.subData(typedArray);\n this.bufferValue = value;\n }\n\n return this.buffer;\n }\n\n // PRIVATE\n\n // TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)\n // TODO - handle single values for size 1 attributes?\n _normalizeConstantArrayValue(arrayValue) {\n if (Array.isArray(arrayValue)) {\n return new Float32Array(arrayValue);\n }\n return arrayValue;\n }\n\n _compareConstantArrayValues(v1, v2) {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n return false;\n }\n for (let i = 0; i < v1.length; ++i) {\n if (v1[i] !== v2[i]) {\n return false;\n }\n }\n return true;\n }\n\n static _setConstantFloatArray(gl, location, array) {\n switch (array.length) {\n case 1:\n gl.vertexAttrib1fv(location, array);\n break;\n case 2:\n gl.vertexAttrib2fv(location, array);\n break;\n case 3:\n gl.vertexAttrib3fv(location, array);\n break;\n case 4:\n gl.vertexAttrib4fv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantIntArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1iv(location, array);\n break;\n case 2:\n gl.vertexAttribI2iv(location, array);\n break;\n case 3:\n gl.vertexAttribI3iv(location, array);\n break;\n case 4:\n gl.vertexAttribI4iv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantUintArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1uiv(location, array);\n break;\n case 2:\n gl.vertexAttribI2uiv(location, array);\n break;\n case 3:\n gl.vertexAttribI3uiv(location, array);\n break;\n case 4:\n gl.vertexAttribI4uiv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // RESOURCE IMPLEMENTATION\n\n _createHandle() {\n /** @type {WebGL2RenderingContext} */\n // @ts-ignore\n const gl2 = this.gl;\n return gl2.createVertexArray();\n }\n\n _deleteHandle(handle) {\n this.gl2.deleteVertexArray(handle);\n // @ts-ignore\n return [this.elements];\n // return [this.elements, ...this.buffers];\n }\n\n _bindHandle(handle) {\n this.gl2.bindVertexArray(handle);\n }\n\n // Generic getter for information about a vertex attribute at a given position\n _getParameter(pname, {location}) {\n assert(Number.isFinite(location));\n return this.bind(() => {\n switch (pname) {\n case GL.VERTEX_ATTRIB_ARRAY_POINTER:\n return this.gl.getVertexAttribOffset(location, pname);\n default:\n return this.gl.getVertexAttrib(location, pname);\n }\n });\n }\n}\n","import GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport Accessor from './accessor';\nimport Buffer from './buffer';\nimport VertexArrayObject from './vertex-array-object';\nimport {assert} from '../utils/assert';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_ATTRIBUTE_TYPE =\n 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\n\n// This is done to support mat type attributes.\n// See section \"Notes about setting mat type attributes\"\n// in vertex-array.md\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\n\nconst DEPRECATIONS_V6 = [\n 'setBuffers',\n 'setGeneric',\n 'clearBindings',\n 'setLocations',\n 'setGenericValues',\n 'setDivisor',\n 'enable',\n 'disable'\n];\n\nexport default class VertexArray {\n constructor(gl, opts = {}) {\n // Use program's id if program is supplied but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n // super(gl, Object.assign({}, opts, {id}));\n\n this.id = id;\n this.gl = gl;\n this.configuration = null;\n\n // Extracted information\n this.elements = null;\n this.elementsAccessor = null;\n this.values = null;\n this.accessors = null;\n this.unused = null;\n this.drawParams = null;\n this.buffer = null; // For attribute 0 on desktops, and created when unbinding buffers\n\n this.attributes = {};\n\n this.vertexArrayObject = new VertexArrayObject(gl);\n\n // Issue errors when using removed methods\n stubRemovedMethods(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);\n\n this.initialize(opts);\n Object.seal(this);\n }\n\n delete() {\n if (this.buffer) {\n this.buffer.delete();\n }\n\n this.vertexArrayObject.delete();\n }\n\n initialize(props = {}) {\n this.reset();\n this.configuration = null;\n this.bindOnUse = false;\n return this.setProps(props);\n }\n\n // Resets all attributes (to default valued constants)\n reset() {\n // this.vertexArrayObject.reset();\n\n this.elements = null;\n this.elementsAccessor = null;\n const {MAX_ATTRIBUTES} = this.vertexArrayObject;\n this.values = new Array(MAX_ATTRIBUTES).fill(null);\n this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n this.unused = {};\n\n // Auto detects draw params\n this.drawParams = null;\n\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('elements' in props) {\n this.setElementBuffer(props.elements);\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n return this;\n }\n\n // Automatically called if buffers changed through VertexArray API\n clearDrawParams() {\n this.drawParams = null;\n }\n\n getDrawParams() {\n // Auto deduced draw parameters\n this.drawParams = this.drawParams || this._updateDrawParams();\n\n return this.drawParams;\n }\n\n // Set (bind) an array or map of vertex array buffers, either in numbered or named locations.\n // For names that are not present in `location`, the supplied buffers will be ignored.\n // if a single buffer of type GL.ELEMENT_ARRAY_BUFFER is present, it will be set as elements\n // Signatures:\n // {attributeName: buffer}\n // {attributeName: [buffer, accessor]}\n // {attributeName: (typed) array} => constant\n setAttributes(attributes) {\n Object.assign(this.attributes, attributes);\n this.vertexArrayObject.bind(() => {\n for (const locationOrName in attributes) {\n const value = attributes[locationOrName];\n this._setAttribute(locationOrName, value);\n }\n // Make sure we don't leave any bindings\n this.gl.bindBuffer(GL.ARRAY_BUFFER, null);\n });\n\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, accessor = {}) {\n this.elements = elementBuffer; // Save value for debugging\n this.elementsAccessor = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n\n return this;\n }\n\n // Set a location in vertex attributes array to a buffer\n setBuffer(locationOrName, buffer, appAccessor = {}) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, appAccessor);\n }\n\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n buffer,\n buffer.accessor,\n appAccessor\n );\n\n if (location >= 0) {\n this.values[location] = buffer;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setBuffer(location, buffer, accessor);\n }\n\n return this;\n }\n\n // Set attribute to constant value (small typed array corresponding to one vertex' worth of data)\n setConstant(locationOrName, arrayValue, appAccessor = {}) {\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n arrayValue,\n // Ensure that size isn't taken from program for multi-column\n // attributes\n Object.assign({size: arrayValue.length}, appAccessor)\n );\n\n if (location >= 0) {\n arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);\n\n this.values[location] = arrayValue;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n\n // NOTE: We set the actual constant value later on bind. We can't set the value now since\n // constants are global and affect all other VertexArrays that have disabled attributes\n // in the same location.\n // We do disable the attribute which makes it use the global constant value at that location\n this.vertexArrayObject.enable(location, false);\n }\n\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, unbind temporarily to avoid conflicting with TransformFeedback\n unbindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.vertexArrayObject.setElementBuffer(null);\n }\n\n // Chrome does not like buffers that are bound to several binding points,\n // so we need to offer and unbind facility\n // WebGL offers disabling, but no clear way to set a VertexArray buffer to `null`\n // So we just bind all the attributes to the dummy \"attribute zero\" buffer\n this.buffer = this.buffer || new Buffer(this.gl, {accessor: {size: 4}});\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);\n }\n }\n });\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, rebind rebind after temporary unbind\n bindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.setElementBuffer(this.elements);\n }\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n const buffer = this.values[location];\n if (buffer instanceof Buffer) {\n this.setBuffer(location, buffer);\n }\n }\n });\n return this;\n }\n\n // Bind for use\n // When a vertex array is about to be used, we must:\n // - Set constant attributes (since these are stored on the context and reset on bind)\n // - Check if we need to initialize the buffer\n bindForDraw(vertexCount, instanceCount, func) {\n let value;\n\n this.vertexArrayObject.bind(() => {\n // Make sure that any constant attributes are updated (stored on the context, not the VAO)\n // Also handles attribute 0\n this._setConstantAttributes(vertexCount, instanceCount);\n\n value = func();\n });\n\n return value;\n }\n\n // PRIVATE\n\n // Resolve locations and accessors\n _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n const INVALID_RESULT = {\n location: -1,\n accessor: null\n };\n\n const {location, name} = this._getAttributeIndex(locationOrName);\n if (!Number.isFinite(location) || location < 0) {\n this.unused[locationOrName] = value;\n log.once(3, () => `unused value ${locationOrName} in ${this.id}`)();\n return INVALID_RESULT;\n }\n\n const accessInfo = this._getAttributeInfo(name || location);\n\n // Attribute location wasn't directly found.\n // Likely due to multi-location attributes (e.g. matrix)\n if (!accessInfo) {\n return INVALID_RESULT;\n }\n\n // Resolve the partial accessors into a final accessor\n const currentAccessor = this.accessors[location] || {};\n const accessor = Accessor.resolve(\n accessInfo.accessor,\n currentAccessor,\n valueAccessor,\n appAccessor\n );\n\n const {size, type} = accessor;\n assert(Number.isFinite(size) && Number.isFinite(type));\n\n return {location, accessor};\n }\n\n _getAttributeInfo(attributeName) {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n\n _getAttributeIndex(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return {location};\n }\n\n const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n const name = multiLocation ? multiLocation[1] : locationOrName;\n const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n if (this.configuration) {\n return {\n location: this.configuration.getAttributeLocation(name) + locationOffset,\n name\n };\n }\n\n return {location: -1};\n }\n\n _setAttribute(locationOrName, value) {\n if (value instanceof Buffer) {\n // Signature: {attributeName: Buffer}\n this.setBuffer(locationOrName, value);\n } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {\n // Signature: {attributeName: [buffer, accessor]}\n const buffer = value[0];\n const accessor = value[1];\n this.setBuffer(locationOrName, buffer, accessor);\n } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n // Signature: {attributeName: constant}, constant == short (typed) array\n const constant = value;\n this.setConstant(locationOrName, constant);\n } else if (value.buffer instanceof Buffer) {\n // luma.gl v7: Support accessor objects with 'buffer' field\n // for interleaved data\n // Signature: {attributeName: {...accessor, buffer}}\n const accessor = value;\n this.setBuffer(locationOrName, accessor.buffer, accessor);\n } else {\n throw new Error(ERR_ATTRIBUTE_TYPE);\n }\n }\n\n // Updates all constant attribute values (constants are used when vertex attributes are disabled).\n // This needs to be done repeatedly since in contrast to buffer bindings,\n // constants are stored on the WebGL context, not the VAO\n _setConstantAttributes(vertexCount, instanceCount) {\n // TODO - use accessor to determine what length to use\n const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n let constant = this.values[0];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttributeZero(constant, elementCount);\n }\n\n for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n constant = this.values[location];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttribute(location, constant);\n }\n }\n }\n\n _setConstantAttributeZero(constant, elementCount) {\n if (VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true})) {\n this._setConstantAttribute(0, constant);\n return;\n }\n\n // Get a dummy buffer populated with repeated constants\n const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n\n // Set the buffer on location 0\n this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n }\n\n _setConstantAttribute(location, constant) {\n VertexArrayObject.setConstant(this.gl, location, constant);\n }\n\n // Walks the buffers and updates draw parameters\n _updateDrawParams() {\n const drawParams = {\n isIndexed: false,\n isInstanced: false,\n indexCount: Infinity,\n vertexCount: Infinity,\n instanceCount: Infinity\n };\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n this._updateDrawParamsForLocation(drawParams, location);\n }\n\n if (this.elements) {\n // indexing is autodetected - buffer with target GL.ELEMENT_ARRAY_BUFFER\n // index type is saved for drawElement calls\n drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n drawParams.isIndexed = true;\n drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n drawParams.indexOffset = this.elementsAccessor.offset || 0;\n }\n\n // Post-calculation checks\n if (drawParams.indexCount === Infinity) {\n drawParams.indexCount = 0;\n }\n if (drawParams.vertexCount === Infinity) {\n drawParams.vertexCount = 0;\n }\n if (drawParams.instanceCount === Infinity) {\n drawParams.instanceCount = 0;\n }\n\n return drawParams;\n }\n\n _updateDrawParamsForLocation(drawParams, location) {\n const value = this.values[location];\n const accessor = this.accessors[location];\n\n if (!value) {\n return;\n }\n\n // Check if instanced (whether buffer or constant)\n const {divisor} = accessor;\n const isInstanced = divisor > 0;\n drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n if (value instanceof Buffer) {\n const buffer = value;\n\n if (isInstanced) {\n // instance attribute\n const instanceCount = buffer.getVertexCount(accessor);\n drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n } else {\n // normal attribute\n const vertexCount = buffer.getVertexCount(accessor);\n drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n }\n }\n }\n\n // DEPRECATED in v6.x - but not warnings not properly implemented\n\n setElements(elementBuffer = null, accessor = {}) {\n log.deprecated('setElements', 'setElementBuffer')();\n return this.setElementBuffer(elementBuffer, accessor);\n }\n}\n","// TODO / DEPRECATED - delete when confident that probe.gl logging implements all opts\n/* eslint-disable no-console */\nfunction formatArrayValue(v, opts) {\n const {maxElts = 16, size = 1} = opts;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], opts);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\nexport function formatValue(v, opts = {}) {\n const EPSILON = 1e-16;\n const {isInteger = false} = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n return v.toFixed(0);\n }\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n","import Buffer from '../classes/buffer';\nimport {getKey} from '../webgl-utils/constants-to-keys';\nimport {getCompositeGLType} from '../webgl-utils/attribute-utils';\nimport {formatValue} from '../utils/format-value';\n\n// Creates object suitable as input for console.table\nexport function getDebugTableForVertexArray({vertexArray, header = 'Attributes'}) {\n if (!vertexArray.configuration) {\n return {};\n }\n\n const table = {}; // {[header]: {}};\n\n // Add index (elements) if available\n if (vertexArray.elements) {\n // const elements = Object.assign({size: 1}, vertexArray.elements);\n table.ELEMENT_ARRAY_BUFFER = getDebugTableRow(vertexArray, vertexArray.elements, null, header);\n }\n\n // Add used attributes\n const attributes = vertexArray.values;\n\n for (const attributeLocation in attributes) {\n const info = vertexArray._getAttributeInfo(attributeLocation);\n if (info) {\n let rowHeader = `${attributeLocation}: ${info.name}`;\n const accessor = vertexArray.accessors[info.location];\n if (accessor) {\n rowHeader = `${attributeLocation}: ${getGLSLDeclaration(info.name, accessor)}`;\n }\n table[rowHeader] = getDebugTableRow(\n vertexArray,\n attributes[attributeLocation],\n accessor,\n header\n );\n }\n }\n\n return table;\n}\n\n/* eslint-disable max-statements */\nfunction getDebugTableRow(vertexArray, attribute, accessor, header) {\n const {gl} = vertexArray;\n\n if (!attribute) {\n return {\n [header]: 'null',\n 'Format ': 'N/A'\n };\n }\n\n let type = 'NOT PROVIDED';\n let size = 1;\n let verts = 0;\n let bytes = 0;\n\n let isInteger;\n let marker;\n let value;\n\n if (accessor) {\n type = accessor.type;\n size = accessor.size;\n\n // Generate a type name by dropping Array from Float32Array etc.\n type = String(type).replace('Array', '');\n\n // Look for 'nt' to detect integer types, e.g. Int32Array, Uint32Array\n isInteger = type.indexOf('nt') !== -1;\n }\n\n if (attribute instanceof Buffer) {\n const buffer = attribute;\n\n const {data, changed} = buffer.getDebugData();\n marker = changed ? '*' : '';\n\n value = data;\n // @ts-ignore\n bytes = buffer.byteLength;\n // @ts-ignore\n verts = bytes / data.BYTES_PER_ELEMENT / size;\n\n let format;\n\n if (accessor) {\n const instanced = accessor.divisor > 0;\n format = `${instanced ? 'I ' : 'P '} ${verts} (x${size}=${bytes} bytes ${getKey(gl, type)})`;\n } else {\n // element buffer\n isInteger = true;\n format = `${bytes} bytes`;\n }\n\n return {\n [header]: `${marker}${formatValue(value, {size, isInteger})}`,\n 'Format ': format\n };\n }\n\n // CONSTANT VALUE\n value = attribute;\n size = attribute.length;\n // Generate a type name by dropping Array from Float32Array etc.\n type = String(attribute.constructor.name).replace('Array', '');\n // Look for 'nt' to detect integer types, e.g. Int32Array, Uint32Array\n isInteger = type.indexOf('nt') !== -1;\n\n return {\n [header]: `${formatValue(value, {size, isInteger})} (constant)`,\n 'Format ': `${size}x${type} (constant)`\n };\n}\n/* eslint-ensable max-statements */\n\nfunction getGLSLDeclaration(name, accessor) {\n const {type, size} = accessor;\n const typeAndName = getCompositeGLType(type, size);\n return typeAndName ? `${name} (${typeAndName.name})` : name;\n}\n","import {assert} from '../utils/assert';\nimport {formatValue} from '../utils/format-value';\n\n// Prepares a table suitable for console.table\n/* eslint-disable max-statements, complexity */\nexport function getDebugTableForUniforms({\n header = 'Uniforms',\n program,\n uniforms,\n undefinedOnly = false\n}) {\n assert(program);\n\n const SHADER_MODULE_UNIFORM_REGEXP = '.*_.*';\n const PROJECT_MODULE_UNIFORM_REGEXP = '.*Matrix'; // TODO - Use explicit list\n\n const uniformLocations = program._uniformSetters;\n const table = {}; // {[header]: {}};\n\n // Add program's provided uniforms (in alphabetical order)\n const uniformNames = Object.keys(uniformLocations).sort();\n\n let count = 0;\n\n // First add non-underscored uniforms (assumed not coming from shader modules)\n for (const uniformName of uniformNames) {\n if (\n !uniformName.match(SHADER_MODULE_UNIFORM_REGEXP) &&\n !uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)\n ) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n // add underscored uniforms (assumed from shader modules)\n for (const uniformName of uniformNames) {\n if (uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n for (const uniformName of uniformNames) {\n if (!table[uniformName]) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n // Create a table of unused uniforms\n let unusedCount = 0;\n const unusedTable = {};\n if (!undefinedOnly) {\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n if (!table[uniformName]) {\n unusedCount++;\n unusedTable[uniformName] = {\n Type: `NOT USED: ${uniform}`,\n [header]: formatValue(uniform)\n };\n }\n }\n }\n\n return {table, count, unusedTable, unusedCount};\n}\n\n// Helper\nfunction addUniformToTable({table, header, uniforms, uniformName, undefinedOnly}) {\n const value = uniforms[uniformName];\n const isDefined = isUniformDefined(value);\n if (!undefinedOnly || !isDefined) {\n table[uniformName] = {\n // Add program's unprovided uniforms\n [header]: isDefined ? formatValue(value) : 'N/A',\n 'Uniform Type': isDefined ? value : 'NOT PROVIDED'\n };\n return true;\n }\n return false;\n}\n\nfunction isUniformDefined(value) {\n return value !== undefined && value !== null;\n}\n","import {getCompositeGLType} from '../webgl-utils/attribute-utils';\n\nexport function getDebugTableForProgramConfiguration(config) {\n const table = {};\n\n const header = `Accessors for ${config.id}`;\n\n for (const attributeInfo of config.attributeInfos) {\n if (attributeInfo) {\n const glslDeclaration = getGLSLDeclaration(attributeInfo);\n table[`in ${glslDeclaration}`] = {[header]: JSON.stringify(attributeInfo.accessor)};\n }\n }\n\n for (const varyingInfo of config.varyingInfos) {\n if (varyingInfo) {\n const glslDeclaration = getGLSLDeclaration(varyingInfo);\n table[`out ${glslDeclaration}`] = {[header]: JSON.stringify(varyingInfo.accessor)};\n }\n }\n\n return table;\n}\n\nfunction getGLSLDeclaration(attributeInfo) {\n const {type, size} = attributeInfo.accessor;\n const typeAndName = getCompositeGLType(type, size);\n if (typeAndName) {\n return `${typeAndName.name} ${attributeInfo.name}`;\n }\n return attributeInfo.name;\n}\n","import GL from '@luma.gl/constants';\nimport {Buffer, assert} from '@luma.gl/webgl';\n\n// Support for mapping new geometries with glTF attribute names to \"classic\" luma.gl shader names\nconst GLTF_TO_LUMA_ATTRIBUTE_MAP = {\n POSITION: 'positions',\n NORMAL: 'normals',\n COLOR_0: 'colors',\n TEXCOORD_0: 'texCoords',\n TEXCOORD_1: 'texCoords1',\n TEXCOORD_2: 'texCoords2'\n};\n\nexport function getBuffersFromGeometry(gl, geometry, options) {\n const buffers = {};\n let indices = geometry.indices;\n\n for (const name in geometry.attributes) {\n const attribute = geometry.attributes[name];\n const remappedName = mapAttributeName(name, options);\n\n if (name === 'indices') {\n indices = attribute;\n } else if (attribute.constant) {\n buffers[remappedName] = attribute.value;\n } else {\n const typedArray = attribute.value;\n // Create accessor by copying the attribute and removing `value``\n const accessor = {...attribute};\n delete accessor.value;\n buffers[remappedName] = [new Buffer(gl, typedArray), accessor];\n\n inferAttributeAccessor(name, accessor);\n }\n }\n\n if (indices) {\n const data = indices.value || indices;\n assert(\n data instanceof Uint16Array || data instanceof Uint32Array,\n 'attribute array for \"indices\" must be of integer type'\n );\n const accessor = {\n size: 1,\n isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed\n };\n buffers.indices = [\n new Buffer(gl, {\n data,\n target: GL.ELEMENT_ARRAY_BUFFER\n }),\n accessor\n ];\n }\n\n return buffers;\n}\n\nfunction mapAttributeName(name, options) {\n const {attributeMap = GLTF_TO_LUMA_ATTRIBUTE_MAP} = options || {};\n return (attributeMap && attributeMap[name]) || name;\n}\n\n// Check for well known attribute names\n// eslint-disable-next-line complexity\nexport function inferAttributeAccessor(attributeName, attribute) {\n let category;\n switch (attributeName) {\n case 'texCoords':\n case 'texCoord1':\n case 'texCoord2':\n case 'texCoord3':\n category = 'uvs';\n break;\n case 'vertices':\n case 'positions':\n case 'normals':\n case 'pickingColors':\n category = 'vectors';\n break;\n default:\n }\n\n // Check for categorys\n switch (category) {\n case 'vectors':\n attribute.size = attribute.size || 3;\n break;\n case 'uvs':\n attribute.size = attribute.size || 2;\n break;\n default:\n }\n\n assert(Number.isFinite(attribute.size), `attribute ${attributeName} needs size`);\n}\n","/* eslint-disable complexity */\n\nimport GL from '@luma.gl/constants';\nimport {isWebGL} from '@luma.gl/gltools';\nimport ProgramManager from './program-manager';\nimport {\n Program,\n VertexArray,\n clear,\n TransformFeedback,\n Buffer,\n log,\n isObjectEmpty,\n uid,\n assert\n} from '@luma.gl/webgl';\nimport {\n getDebugTableForUniforms,\n getDebugTableForVertexArray,\n getDebugTableForProgramConfiguration\n} from '@luma.gl/webgl';\nimport {getBuffersFromGeometry} from './model-utils';\n\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\n\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\nconst DRAW_PARAMS = {};\n\nexport default class Model {\n constructor(gl, props = {}) {\n // Deduce a helpful id\n const {id = uid('model')} = props;\n assert(isWebGL(gl));\n this.id = id;\n this.gl = gl;\n this.id = props.id || uid('Model');\n this.lastLogTime = 0; // TODO - move to probe.gl\n this.animated = false;\n this.initialize(props);\n }\n\n initialize(props) {\n this.props = {};\n\n this.programManager = props.programManager || ProgramManager.getDefaultProgramManager(this.gl);\n this._programManagerState = -1;\n this._managedProgram = false;\n\n const {\n program = null,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this.program = null;\n this.vertexArray = null;\n this._programDirty = true;\n\n // Initialize state\n this.userData = {};\n this.needsRedraw = true;\n\n // Attributes and buffers\n // Model manages auto Buffer creation from typed arrays\n this._attributes = {}; // All attributes\n this.attributes = {}; // User defined attributes\n\n // Model manages uniform animation\n this.uniforms = {};\n\n // picking options\n this.pickable = true;\n\n this._checkProgram();\n\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms(props.moduleSettings) // Get unforms for supplied parameters\n )\n );\n\n this.drawMode = props.drawMode !== undefined ? props.drawMode : GL.TRIANGLES;\n this.vertexCount = props.vertexCount || 0;\n\n // Track buffers created by setGeometry\n this.geometryBuffers = {};\n\n // geometry might have set drawMode and vertexCount\n this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n this._setModelProps(props);\n\n // TODO - just to unbreak deck.gl 7.0-beta, remove as soon as updated\n this.geometry = {};\n\n // assert(program || program instanceof Program);\n assert(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n }\n\n setProps(props) {\n this._setModelProps(props);\n }\n\n delete() {\n // delete all attributes created by this model\n // TODO - should buffer deletes be handled by vertex array?\n for (const key in this._attributes) {\n if (this._attributes[key] !== this.attributes[key]) {\n this._attributes[key].delete();\n }\n }\n\n if (this._managedProgram) {\n this.programManager.release(this.program);\n this._managedProgram = false;\n }\n\n this.vertexArray.delete();\n\n this._deleteGeometryBuffers();\n }\n\n // GETTERS\n\n getDrawMode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n getInstanceCount() {\n return this.instanceCount;\n }\n\n getAttributes() {\n return this.attributes;\n }\n\n getProgram() {\n return this.program;\n }\n\n setProgram(props) {\n const {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this._programDirty = true;\n }\n\n getUniforms() {\n return this.uniforms;\n }\n\n // SETTERS\n\n setDrawMode(drawMode) {\n this.drawMode = drawMode;\n return this;\n }\n\n setVertexCount(vertexCount) {\n assert(Number.isFinite(vertexCount));\n this.vertexCount = vertexCount;\n return this;\n }\n\n setInstanceCount(instanceCount) {\n assert(Number.isFinite(instanceCount));\n this.instanceCount = instanceCount;\n return this;\n }\n\n setGeometry(geometry) {\n this.drawMode = geometry.drawMode;\n this.vertexCount = geometry.getVertexCount();\n\n this._deleteGeometryBuffers();\n\n this.geometryBuffers = getBuffersFromGeometry(this.gl, geometry);\n this.vertexArray.setAttributes(this.geometryBuffers);\n return this;\n }\n\n setAttributes(attributes = {}) {\n // Avoid setting needsRedraw if no attributes\n if (isObjectEmpty(attributes)) {\n return this;\n }\n\n const normalizedAttributes = {};\n for (const name in attributes) {\n const attribute = attributes[name];\n // The `getValue` call provides support for deck.gl `Attribute` class\n // TODO - remove once deck refactoring completes\n normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n }\n\n this.vertexArray.setAttributes(normalizedAttributes);\n return this;\n }\n\n // TODO - should actually set the uniforms\n setUniforms(uniforms = {}) {\n Object.assign(this.uniforms, uniforms);\n\n return this;\n }\n\n getModuleUniforms(opts) {\n this._checkProgram();\n\n const getUniforms = this.programManager.getUniforms(this.program);\n\n if (getUniforms) {\n return getUniforms(opts);\n }\n\n return {};\n }\n\n updateModuleSettings(opts) {\n const uniforms = this.getModuleUniforms(opts || {});\n return this.setUniforms(uniforms);\n }\n\n // DRAW CALLS\n\n clear(opts) {\n clear(this.program.gl, opts);\n return this;\n }\n\n draw(opts = {}) {\n // Lazy update program and vertex array\n this._checkProgram();\n\n const {\n moduleSettings = null,\n framebuffer,\n uniforms = {},\n attributes = {},\n transformFeedback = this.transformFeedback,\n parameters = {},\n vertexArray = this.vertexArray\n } = opts;\n\n // Update model with any just provided attributes, settings or uniforms\n this.setAttributes(attributes);\n this.updateModuleSettings(moduleSettings);\n this.setUniforms(uniforms);\n\n let logPriority;\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n logPriority = this._logDrawCallStart(LOG_DRAW_PRIORITY);\n }\n\n const drawParams = this.vertexArray.getDrawParams();\n const {\n isIndexed = drawParams.isIndexed,\n indexType = drawParams.indexType,\n indexOffset = drawParams.indexOffset,\n vertexArrayInstanced = drawParams.isInstanced\n } = this.props;\n\n if (vertexArrayInstanced && !this.isInstanced) {\n log.warn('Found instanced attributes on non-instanced model', this.id)();\n }\n\n const {isInstanced, instanceCount} = this;\n\n const {onBeforeRender = NOOP, onAfterRender = NOOP} = this.props;\n\n onBeforeRender();\n\n this.program.setUniforms(this.uniforms);\n\n const didDraw = this.program.draw(\n Object.assign(DRAW_PARAMS, opts, {\n logPriority,\n uniforms: null, // Already set (may contain \"function values\" not understood by Program)\n framebuffer,\n parameters,\n drawMode: this.getDrawMode(),\n vertexCount: this.getVertexCount(),\n vertexArray,\n transformFeedback,\n isIndexed,\n indexType,\n isInstanced,\n instanceCount,\n offset: isIndexed ? indexOffset : 0\n })\n );\n\n onAfterRender();\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n }\n\n return didDraw;\n }\n\n // Draw call for transform feedback\n transform(opts = {}) {\n const {discard = true, feedbackBuffers, unbindModels = []} = opts;\n\n let {parameters} = opts;\n\n if (feedbackBuffers) {\n this._setFeedbackBuffers(feedbackBuffers);\n }\n\n if (discard) {\n parameters = Object.assign({}, parameters, {[GL.RASTERIZER_DISCARD]: discard});\n }\n\n unbindModels.forEach(model => model.vertexArray.unbindBuffers());\n try {\n this.draw(Object.assign({}, opts, {parameters}));\n } finally {\n unbindModels.forEach(model => model.vertexArray.bindBuffers());\n }\n\n return this;\n }\n\n // DEPRECATED METHODS\n\n render(uniforms = {}) {\n log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n return this.setUniforms(uniforms).draw();\n }\n\n // PRIVATE METHODS\n\n _setModelProps(props) {\n Object.assign(this.props, props);\n\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n\n if ('pickable' in props) {\n this.pickable = props.pickable;\n }\n\n if ('instanceCount' in props) {\n this.instanceCount = props.instanceCount;\n }\n if ('geometry' in props) {\n this.setGeometry(props.geometry);\n }\n\n // webgl settings\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('_feedbackBuffers' in props) {\n this._setFeedbackBuffers(props._feedbackBuffers);\n }\n }\n\n _checkProgram() {\n const needsUpdate =\n this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n if (!needsUpdate) {\n return;\n }\n\n let {program} = this.programProps;\n\n if (program) {\n this._managedProgram = false;\n } else {\n const {\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = this.programProps;\n program = this.programManager.get({\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n });\n if (this.program && this._managedProgram) {\n this.programManager.release(this.program);\n }\n this._programManagerState = this.programManager.stateHash;\n this._managedProgram = true;\n }\n\n assert(program instanceof Program, 'Model needs a program');\n\n this._programDirty = false;\n\n if (program === this.program) {\n return;\n }\n\n this.program = program;\n\n if (this.vertexArray) {\n // @ts-ignore TODO\n this.vertexArray.setProps({program: this.program, attributes: this.vertexArray.attributes});\n } else {\n this.vertexArray = new VertexArray(this.gl, {program: this.program});\n }\n\n // Make sure we have some reasonable default uniforms in place\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms() // Get all default uniforms,\n )\n );\n }\n\n _deleteGeometryBuffers() {\n for (const name in this.geometryBuffers) {\n // Buffer is raw value (for indices) or first element of [buffer, accessor] pair\n const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n if (buffer instanceof Buffer) {\n buffer.delete();\n }\n }\n }\n\n // Updates (evaluates) all function valued uniforms based on a new set of animationProps\n // experimental\n _setAnimationProps(animationProps) {\n if (this.animated) {\n assert(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n // const animatedUniforms = this._evaluateAnimateUniforms(animationProps);\n // Object.assign(this.uniforms, animatedUniforms);\n }\n }\n\n // Transform Feedback\n\n _setFeedbackBuffers(feedbackBuffers = {}) {\n // Avoid setting needsRedraw if no feedbackBuffers\n if (isObjectEmpty(feedbackBuffers)) {\n return this;\n }\n\n const {gl} = this.program;\n this.transformFeedback =\n this.transformFeedback ||\n new TransformFeedback(gl, {\n program: this.program\n });\n\n this.transformFeedback.setBuffers(feedbackBuffers);\n return this;\n }\n\n _logDrawCallStart(logLevel) {\n const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n if (Date.now() - this.lastLogTime < logDrawTimeout) {\n return undefined;\n }\n\n this.lastLogTime = Date.now();\n\n log.group(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`, {collapsed: log.level <= 2})();\n\n return logLevel;\n }\n\n _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n // HACK: logLevel === undefined means logDrawCallStart didn't run\n if (logLevel === undefined) {\n return;\n }\n\n const attributeTable = getDebugTableForVertexArray({\n vertexArray,\n header: `${this.id} attributes`,\n // @ts-ignore\n attributes: this._attributes\n });\n\n const {table: uniformTable, unusedTable, unusedCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms)\n });\n\n // log missing uniforms\n const {table: missingTable, count: missingCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms),\n undefinedOnly: true\n });\n\n if (missingCount > 0) {\n log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n // log.table(logLevel, missingTable)();\n }\n if (unusedCount > 0) {\n log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n // log.log(logLevel, 'Unused uniforms ', unusedTable)();\n }\n\n const configTable = getDebugTableForProgramConfiguration(this.vertexArray.configuration);\n\n log.table(logLevel, attributeTable)();\n\n log.table(logLevel, uniformTable)();\n\n log.table(logLevel + 1, configTable)();\n\n if (framebuffer) {\n framebuffer.log({logLevel: LOG_DRAW_PRIORITY, message: `Rendered to ${framebuffer.id}`});\n }\n\n log.groupEnd(LOG_DRAW_PRIORITY)();\n }\n}\n","import GL from '@luma.gl/constants';\nimport {getPassthroughFS} from '@luma.gl/shadertools';\nimport BufferTransform from './buffer-transform';\nimport TextureTransform from './texture-transform';\n\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert, isObjectEmpty, getShaderVersion} from '@luma.gl/webgl';\nimport Model from '../lib/model';\n\n// takes source and target buffers/textures and setsup the pipeline\nexport default class Transform {\n static isSupported(gl) {\n // TODO : differentiate writting to buffer vs not\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n this.gl = gl;\n this.model = null;\n this.elementCount = 0;\n this.bufferTransform = null;\n this.textureTransform = null;\n this.elementIDBuffer = null;\n this._initialize(props);\n Object.seal(this);\n }\n\n // Delete owned resources.\n delete() {\n const {model, bufferTransform, textureTransform} = this;\n if (model) {\n model.delete();\n }\n if (bufferTransform) {\n bufferTransform.delete();\n }\n if (textureTransform) {\n textureTransform.delete();\n }\n }\n\n // Run one transform loop.\n run(opts = {}) {\n const {clearRenderTarget = true} = opts;\n\n const updatedOpts = this._updateDrawOptions(opts);\n\n if (clearRenderTarget && updatedOpts.framebuffer) {\n updatedOpts.framebuffer.clear({color: true});\n }\n\n this.model.transform(updatedOpts);\n }\n\n // swap resources if a map is provided\n swap() {\n let swapped = false;\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n swapped = swapped || resourceTransform.swap();\n }\n assert(swapped, 'Nothing to swap');\n }\n\n // Return Buffer object for given varying name.\n getBuffer(varyingName = null) {\n return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n }\n\n // Return data either from Buffer or from Texture\n getData(opts = {}) {\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n // @ts-ignore\n const data = resourceTransform.getData(opts);\n if (data) {\n return data;\n }\n }\n return null;\n }\n\n // Return framebuffer object if rendering to textures\n getFramebuffer() {\n return this.textureTransform && this.textureTransform.getFramebuffer();\n }\n\n // Update some or all buffer/texture bindings.\n update(opts = {}) {\n if ('elementCount' in opts) {\n // @ts-ignore TODO\n this.model.setVertexCount(opts.elementCount);\n }\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n resourceTransform.update(opts);\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {gl} = this;\n this._buildResourceTransforms(gl, props);\n\n props = this._updateModelProps(props);\n this.model = new Model(\n gl,\n Object.assign({}, props, {\n fs: props.fs || getPassthroughFS({version: getShaderVersion(props.vs)}),\n id: props.id || 'transform-model',\n drawMode: props.drawMode || GL.POINTS,\n vertexCount: props.elementCount\n })\n );\n\n /* eslint-disable no-unused-expressions */\n this.bufferTransform && this.bufferTransform.setupResources({model: this.model});\n /* eslint-enable no-unused-expressions */\n }\n\n _updateModelProps(props) {\n let updatedProps = Object.assign({}, props);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedProps = resourceTransform.updateModelProps(updatedProps);\n }\n return updatedProps;\n }\n\n _buildResourceTransforms(gl, props) {\n if (canCreateBufferTransform(props)) {\n this.bufferTransform = new BufferTransform(gl, props);\n }\n if (canCreateTextureTransform(props)) {\n this.textureTransform = new TextureTransform(gl, props);\n }\n assert(\n this.bufferTransform || this.textureTransform,\n 'must provide source/feedback buffers or source/target textures'\n );\n }\n\n _updateDrawOptions(opts) {\n let updatedOpts = Object.assign({}, opts);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n }\n return updatedOpts;\n }\n}\n\n// Helper Methods\n\nfunction canCreateBufferTransform(props) {\n if (\n !isObjectEmpty(props.feedbackBuffers) ||\n !isObjectEmpty(props.feedbackMap) ||\n (props.varyings && props.varyings.length > 0)\n ) {\n return true;\n }\n return false;\n}\n\nfunction canCreateTextureTransform(props) {\n if (\n !isObjectEmpty(props._sourceTextures) ||\n props._targetTexture ||\n props._targetTextureVarying\n ) {\n return true;\n }\n\n return false;\n}\n","import GL from '@luma.gl/constants';\nimport {Buffer, Transform} from '@luma.gl/core';\nimport Attribute from '../lib/attribute/attribute';\nimport {\n padBuffer,\n getAttributeTypeFromSize,\n getSourceBufferAttribute,\n getAttributeBufferLength,\n cycleBuffers,\n InterpolationTransitionSettings\n} from '../lib/attribute/attribute-transition-utils';\nimport Transition from './transition';\n\nimport type {Timeline, Transform as LumaTransform} from '@luma.gl/engine';\nimport type {Buffer as LumaBuffer} from '@luma.gl/webgl';\nimport type {NumericArray} from '../types/types';\nimport type GPUTransition from './gpu-transition';\n\nexport default class GPUInterpolationTransition implements GPUTransition {\n gl: WebGLRenderingContext;\n type = 'interpolation';\n attributeInTransition: Attribute;\n\n private settings?: InterpolationTransitionSettings;\n private attribute: Attribute;\n private transition: Transition;\n private currentStartIndices: NumericArray | null;\n private currentLength: number;\n private transform: LumaTransform;\n private buffers: LumaBuffer[];\n\n constructor({\n gl,\n attribute,\n timeline\n }: {\n gl: WebGLRenderingContext;\n attribute: Attribute;\n timeline: Timeline;\n }) {\n this.gl = gl;\n this.transition = new Transition(timeline);\n this.attribute = attribute;\n // this is the attribute we return during the transition - note: if it is a constant\n // attribute, it will be converted and returned as a regular attribute\n // `attribute.userData` is the original options passed when constructing the attribute.\n // This ensures that we set the proper `doublePrecision` flag and shader attributes.\n this.attributeInTransition = new Attribute(gl, attribute.settings);\n this.currentStartIndices = attribute.startIndices;\n // storing currentLength because this.buffer may be larger than the actual length we want to use\n // this is because we only reallocate buffers when they grow, not when they shrink,\n // due to performance costs\n this.currentLength = 0;\n this.transform = getTransform(gl, attribute);\n const bufferOpts = {\n byteLength: 0,\n usage: GL.DYNAMIC_COPY\n };\n this.buffers = [\n new Buffer(gl, bufferOpts), // from\n new Buffer(gl, bufferOpts) // current\n ];\n }\n\n get inProgress(): boolean {\n return this.transition.inProgress;\n }\n\n // this is called when an attribute's values have changed and\n // we need to start animating towards the new values\n // this also correctly resizes / pads the transform's buffers\n // in case the attribute's buffer has changed in length or in\n // startIndices\n start(transitionSettings: InterpolationTransitionSettings, numInstances: number): void {\n if (transitionSettings.duration <= 0) {\n this.transition.cancel();\n return;\n }\n this.settings = transitionSettings;\n\n const {gl, buffers, attribute} = this;\n // Alternate between two buffers when new transitions start.\n // Last destination buffer is used as an attribute (from state),\n // And the other buffer is now the current buffer.\n cycleBuffers(buffers);\n\n const padBufferOpts = {\n numInstances,\n attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n\n for (const buffer of buffers) {\n padBuffer({buffer, ...padBufferOpts});\n }\n\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = getAttributeBufferLength(attribute, numInstances);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n // Hack: Float64Array is required for double-precision attributes\n // to generate correct shader attributes\n value: attribute.value as NumericArray\n });\n\n this.transition.start(transitionSettings);\n\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aFrom: buffers[0],\n aTo: getSourceBufferAttribute(gl, attribute)\n },\n feedbackBuffers: {\n vCurrent: buffers[1]\n }\n });\n }\n\n update(): boolean {\n const updated = this.transition.update();\n if (updated) {\n const {duration, easing} = this.settings as InterpolationTransitionSettings;\n const {time} = this.transition;\n let t = time / duration;\n if (easing) {\n t = easing(t);\n }\n this.transform.run({\n uniforms: {time: t}\n });\n }\n return updated;\n }\n\n cancel(): void {\n this.transition.cancel();\n this.transform.delete();\n for (const buffer of this.buffers) {\n buffer.delete();\n }\n this.buffers.length = 0;\n }\n}\n\nconst vs = `\n#define SHADER_NAME interpolation-transition-vertex-shader\n\nuniform float time;\nattribute ATTRIBUTE_TYPE aFrom;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vCurrent;\n\nvoid main(void) {\n vCurrent = mix(aFrom, aTo, time);\n gl_Position = vec4(0.0);\n}\n`;\n\nfunction getTransform(gl: WebGLRenderingContext, attribute: Attribute): LumaTransform {\n const attributeType = getAttributeTypeFromSize(attribute.size);\n return new Transform(gl, {\n vs,\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: ['vCurrent']\n });\n}\n","import {Transform} from '@luma.gl/core';\nimport GPUInterpolationTransition from '../../transitions/gpu-interpolation-transition';\nimport GPUSpringTransition from '../../transitions/gpu-spring-transition';\nimport log from '../../utils/log';\n\nimport type {TransitionSettings} from './attribute-transition-utils';\nimport type Attribute from './attribute';\nimport type {Timeline} from '@luma.gl/engine';\nimport type GPUTransition from '../../transitions/gpu-transition';\nimport type {ConstructorOf} from '../../types/types';\n\nconst TRANSITION_TYPES: Record> = {\n interpolation: GPUInterpolationTransition,\n spring: GPUSpringTransition\n};\n\nexport default class AttributeTransitionManager {\n id: string;\n isSupported: boolean;\n\n private gl: WebGLRenderingContext;\n private timeline?: Timeline;\n\n private transitions: {[id: string]: GPUTransition};\n private needsRedraw: boolean;\n private numInstances: number;\n\n constructor(\n gl: WebGLRenderingContext,\n {\n id,\n timeline\n }: {\n id: string;\n timeline?: Timeline;\n }\n ) {\n this.id = id;\n this.gl = gl;\n this.timeline = timeline;\n\n this.transitions = {};\n this.needsRedraw = false;\n this.numInstances = 1;\n\n this.isSupported = Transform.isSupported(gl);\n }\n\n finalize(): void {\n for (const attributeName in this.transitions) {\n this._removeTransition(attributeName);\n }\n }\n\n /* Public methods */\n\n // Called when attribute manager updates\n // Check the latest attributes for updates.\n update({\n attributes,\n transitions,\n numInstances\n }: {\n attributes: {[id: string]: Attribute};\n transitions: any;\n numInstances: number;\n }): void {\n // Transform class will crash if elementCount is 0\n this.numInstances = numInstances || 1;\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const settings = attribute.getTransitionSetting(transitions);\n\n // this attribute might not support transitions?\n if (!settings) continue; // eslint-disable-line no-continue\n this._updateAttribute(attributeName, attribute, settings);\n }\n\n for (const attributeName in this.transitions) {\n const attribute = attributes[attributeName];\n if (!attribute || !attribute.getTransitionSetting(transitions)) {\n // Animated attribute has been removed\n this._removeTransition(attributeName);\n }\n }\n }\n\n // Returns `true` if attribute is transition-enabled\n hasAttribute(attributeName: string): boolean {\n const transition = this.transitions[attributeName];\n return transition && transition.inProgress;\n }\n\n // Get all the animated attributes\n getAttributes(): {[id: string]: Attribute} {\n const animatedAttributes = {};\n\n for (const attributeName in this.transitions) {\n const transition = this.transitions[attributeName];\n if (transition.inProgress) {\n animatedAttributes[attributeName] = transition.attributeInTransition;\n }\n }\n\n return animatedAttributes;\n }\n\n /* eslint-disable max-statements */\n // Called every render cycle, run transform feedback\n // Returns `true` if anything changes\n run(): boolean {\n if (!this.isSupported || this.numInstances === 0) {\n return false;\n }\n\n for (const attributeName in this.transitions) {\n const updated = this.transitions[attributeName].update();\n if (updated) {\n this.needsRedraw = true;\n }\n }\n\n const needsRedraw = this.needsRedraw;\n this.needsRedraw = false;\n return needsRedraw;\n }\n /* eslint-enable max-statements */\n\n /* Private methods */\n private _removeTransition(attributeName: string): void {\n this.transitions[attributeName].cancel();\n delete this.transitions[attributeName];\n }\n\n // Check an attributes for updates\n // Returns a transition object if a new transition is triggered.\n private _updateAttribute(\n attributeName: string,\n attribute: Attribute,\n settings: TransitionSettings\n ): void {\n const transition = this.transitions[attributeName];\n // an attribute can change transition type when it updates\n // let's remove the transition when that happens so we can create the new transition type\n // TODO: when switching transition types, make sure to carry over the attribute's\n // previous buffers, currentLength, startIndices, etc, to be used as the starting point\n // for the next transition\n let isNew = !transition || transition.type !== settings.type;\n if (isNew) {\n if (!this.isSupported) {\n log.warn(\n `WebGL2 not supported by this browser. Transition for ${attributeName} is disabled.`\n )();\n return;\n }\n\n if (transition) {\n this._removeTransition(attributeName);\n }\n\n const TransitionType = TRANSITION_TYPES[settings.type];\n if (TransitionType) {\n this.transitions[attributeName] = new TransitionType({\n attribute,\n timeline: this.timeline,\n gl: this.gl\n });\n } else {\n log.error(`unsupported transition type '${settings.type}'`)();\n isNew = false;\n }\n }\n\n if (isNew || attribute.needsRedraw()) {\n this.needsRedraw = true;\n this.transitions[attributeName].start(settings, this.numInstances);\n }\n }\n}\n","/* eslint-disable complexity, max-statements, max-params */\nimport GL from '@luma.gl/constants';\nimport {Buffer, Transform, Framebuffer, Texture2D, readPixelsToArray} from '@luma.gl/core';\nimport {\n padBuffer,\n getAttributeTypeFromSize,\n getSourceBufferAttribute,\n getAttributeBufferLength,\n cycleBuffers,\n SpringTransitionSettings\n} from '../lib/attribute/attribute-transition-utils';\nimport Attribute from '../lib/attribute/attribute';\nimport Transition from './transition';\n\nimport type {Timeline, Transform as LumaTransform} from '@luma.gl/engine';\nimport type {\n Buffer as LumaBuffer,\n Framebuffer as LumaFramebuffer,\n Texture2D as LumaTexture2D\n} from '@luma.gl/webgl';\nimport type {NumericArray} from '../types/types';\nimport type GPUTransition from './gpu-transition';\n\nexport default class GPUSpringTransition implements GPUTransition {\n gl: WebGLRenderingContext;\n type = 'spring';\n attributeInTransition: Attribute;\n\n private settings?: SpringTransitionSettings;\n private attribute: Attribute;\n private transition: Transition;\n private currentStartIndices: NumericArray | null;\n private currentLength: number;\n private texture: LumaTexture2D;\n private framebuffer: LumaFramebuffer;\n private transform: LumaTransform;\n private buffers: LumaBuffer[];\n\n constructor({\n gl,\n attribute,\n timeline\n }: {\n gl: WebGLRenderingContext;\n attribute: Attribute;\n timeline: Timeline;\n }) {\n this.gl = gl;\n this.type = 'spring';\n this.transition = new Transition(timeline);\n this.attribute = attribute;\n // this is the attribute we return during the transition - note: if it is a constant\n // attribute, it will be converted and returned as a regular attribute\n // `attribute.userData` is the original options passed when constructing the attribute.\n // This ensures that we set the proper `doublePrecision` flag and shader attributes.\n this.attributeInTransition = new Attribute(gl, {...attribute.settings, normalized: false});\n this.currentStartIndices = attribute.startIndices;\n // storing currentLength because this.buffer may be larger than the actual length we want to use\n // this is because we only reallocate buffers when they grow, not when they shrink,\n // due to performance costs\n this.currentLength = 0;\n this.texture = getTexture(gl);\n this.framebuffer = getFramebuffer(gl, this.texture);\n this.transform = getTransform(gl, attribute, this.framebuffer);\n const bufferOpts = {\n byteLength: 0,\n usage: GL.DYNAMIC_COPY\n };\n this.buffers = [\n new Buffer(gl, bufferOpts), // previous\n new Buffer(gl, bufferOpts), // current\n new Buffer(gl, bufferOpts) // next\n ];\n }\n\n get inProgress(): boolean {\n return this.transition.inProgress;\n }\n\n // this is called when an attribute's values have changed and\n // we need to start animating towards the new values\n // this also correctly resizes / pads the transform's buffers\n // in case the attribute's buffer has changed in length or in\n // startIndices\n start(transitionSettings: SpringTransitionSettings, numInstances: number): void {\n const {gl, buffers, attribute} = this;\n const padBufferOpts = {\n numInstances,\n attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n\n for (const buffer of buffers) {\n padBuffer({buffer, ...padBufferOpts});\n }\n\n this.settings = transitionSettings;\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = getAttributeBufferLength(attribute, numInstances);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n // Hack: Float64Array is required for double-precision attributes\n // to generate correct shader attributes\n value: attribute.value as NumericArray\n });\n\n // when an attribute changes values, a new transition is started. These\n // are properties that we have to store on this.transition but can change\n // when new transitions are started, so we have to keep them up-to-date.\n // this.transition.start() takes the latest settings and updates them.\n this.transition.start({...transitionSettings, duration: Infinity});\n\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aTo: getSourceBufferAttribute(gl, attribute)\n }\n });\n }\n\n update() {\n const {buffers, transform, framebuffer, transition} = this;\n const updated = transition.update();\n if (!updated) {\n return false;\n }\n const settings = this.settings as SpringTransitionSettings;\n\n transform.update({\n sourceBuffers: {\n aPrev: buffers[0],\n aCur: buffers[1]\n },\n feedbackBuffers: {\n vNext: buffers[2]\n }\n });\n transform.run({\n framebuffer,\n discard: false,\n clearRenderTarget: true,\n uniforms: {\n stiffness: settings.stiffness,\n damping: settings.damping\n },\n parameters: {\n depthTest: false,\n blend: true,\n viewport: [0, 0, 1, 1],\n blendFunc: [GL.ONE, GL.ONE],\n blendEquation: [GL.MAX, GL.MAX]\n }\n });\n\n cycleBuffers(buffers);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n // Hack: Float64Array is required for double-precision attributes\n // to generate correct shader attributes\n value: this.attribute.value as NumericArray\n });\n\n const isTransitioning = readPixelsToArray(framebuffer)[0] > 0;\n\n if (!isTransitioning) {\n transition.end();\n }\n\n return true;\n }\n\n cancel() {\n this.transition.cancel();\n this.transform.delete();\n for (const buffer of this.buffers) {\n buffer.delete();\n }\n this.buffers.length = 0;\n this.texture.delete();\n this.framebuffer.delete();\n }\n}\n\nfunction getTransform(\n gl: WebGLRenderingContext,\n attribute: Attribute,\n framebuffer: LumaFramebuffer\n): LumaTransform {\n const attributeType = getAttributeTypeFromSize(attribute.size);\n return new Transform(gl, {\n framebuffer,\n vs: `\n#define SHADER_NAME spring-transition-vertex-shader\n\n#define EPSILON 0.00001\n\nuniform float stiffness;\nuniform float damping;\nattribute ATTRIBUTE_TYPE aPrev;\nattribute ATTRIBUTE_TYPE aCur;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vNext;\nvarying float vIsTransitioningFlag;\n\nATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {\n ATTRIBUTE_TYPE velocity = cur - prev;\n ATTRIBUTE_TYPE delta = dest - cur;\n ATTRIBUTE_TYPE spring = delta * stiffness;\n ATTRIBUTE_TYPE damper = velocity * -1.0 * damping;\n return spring + damper + velocity + cur;\n}\n\nvoid main(void) {\n bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;\n vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;\n\n vNext = getNextValue(aCur, aPrev, aTo);\n gl_Position = vec4(0, 0, 0, 1);\n gl_PointSize = 100.0;\n}\n`,\n fs: `\n#define SHADER_NAME spring-transition-is-transitioning-fragment-shader\n\nvarying float vIsTransitioningFlag;\n\nvoid main(void) {\n if (vIsTransitioningFlag == 0.0) {\n discard;\n }\n gl_FragColor = vec4(1.0);\n}`,\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: ['vNext']\n });\n}\n\nfunction getTexture(gl: WebGLRenderingContext): LumaTexture2D {\n return new Texture2D(gl, {\n data: new Uint8Array(4),\n format: GL.RGBA,\n type: GL.UNSIGNED_BYTE,\n border: 0,\n mipmaps: false,\n dataFormat: GL.RGBA,\n width: 1,\n height: 1\n });\n}\n\nfunction getFramebuffer(gl: WebGLRenderingContext, texture: LumaTexture2D): LumaFramebuffer {\n return new Framebuffer(gl, {\n id: 'spring-transition-is-transitioning-framebuffer',\n width: 1,\n height: 1,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: texture\n }\n });\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable guard-for-in */\nimport Attribute, {AttributeOptions} from './attribute';\nimport {IShaderAttribute} from './shader-attribute';\nimport log from '../../utils/log';\nimport memoize from '../../utils/memoize';\nimport {mergeBounds} from '../../utils/math-utils';\nimport debug from '../../debug';\nimport {NumericArray} from '../../types/types';\n\nimport AttributeTransitionManager from './attribute-transition-manager';\n\nimport type {Stats} from '@probe.gl/stats';\nimport type {Timeline} from '@luma.gl/engine';\n\nconst TRACE_INVALIDATE = 'attributeManager.invalidate';\nconst TRACE_UPDATE_START = 'attributeManager.updateStart';\nconst TRACE_UPDATE_END = 'attributeManager.updateEnd';\nconst TRACE_ATTRIBUTE_UPDATE_START = 'attribute.updateStart';\nconst TRACE_ATTRIBUTE_ALLOCATE = 'attribute.allocate';\nconst TRACE_ATTRIBUTE_UPDATE_END = 'attribute.updateEnd';\n\nexport default class AttributeManager {\n /**\n * @classdesc\n * Automated attribute generation and management. Suitable when a set of\n * vertex shader attributes are generated by iteration over a data array,\n * and updates to these attributes are needed either when the data itself\n * changes, or when other data relevant to the calculations change.\n *\n * - First the application registers descriptions of its dynamic vertex\n * attributes using AttributeManager.add().\n * - Then, when any change that affects attributes is detected by the\n * application, the app will call AttributeManager.invalidate().\n * - Finally before it renders, it calls AttributeManager.update() to\n * ensure that attributes are automatically rebuilt if anything has been\n * invalidated.\n *\n * The application provided update functions describe how attributes\n * should be updated from a data array and are expected to traverse\n * that data array (or iterable) and fill in the attribute's typed array.\n *\n * Note that the attribute manager intentionally does not do advanced\n * change detection, but instead makes it easy to build such detection\n * by offering the ability to \"invalidate\" each attribute separately.\n */\n id: string;\n gl: WebGLRenderingContext;\n attributes: Record;\n updateTriggers: {[name: string]: string[]};\n needsRedraw: string | boolean;\n userData: any;\n\n private stats?: Stats;\n private attributeTransitionManager: AttributeTransitionManager;\n private mergeBoundsMemoized: any = memoize(mergeBounds);\n\n constructor(\n gl: WebGLRenderingContext,\n {\n id = 'attribute-manager',\n stats,\n timeline\n }: {\n id?: string;\n stats?: Stats;\n timeline?: Timeline;\n } = {}\n ) {\n this.id = id;\n this.gl = gl;\n\n this.attributes = {};\n\n this.updateTriggers = {};\n this.needsRedraw = true;\n\n this.userData = {};\n this.stats = stats;\n\n this.attributeTransitionManager = new AttributeTransitionManager(gl, {\n id: `${id}-transitions`,\n timeline\n });\n\n // For debugging sanity, prevent uninitialized members\n Object.seal(this);\n }\n\n finalize() {\n for (const attributeName in this.attributes) {\n this.attributes[attributeName].delete();\n }\n this.attributeTransitionManager.finalize();\n }\n\n // Returns the redraw flag, optionally clearing it.\n // Redraw flag will be set if any attributes attributes changed since\n // flag was last cleared.\n //\n // @param {String} [clearRedrawFlags=false] - whether to clear the flag\n // @return {false|String} - reason a redraw is needed.\n getNeedsRedraw(opts: {clearRedrawFlags?: boolean} = {clearRedrawFlags: false}): string | false {\n const redraw = this.needsRedraw;\n this.needsRedraw = this.needsRedraw && !opts.clearRedrawFlags;\n return redraw && this.id;\n }\n\n // Sets the redraw flag.\n // @param {Boolean} redraw=true\n setNeedsRedraw() {\n this.needsRedraw = true;\n }\n\n // Adds attributes\n add(attributes: {[id: string]: AttributeOptions}) {\n this._add(attributes);\n }\n\n // Adds attributes\n addInstanced(attributes: {[id: string]: AttributeOptions}) {\n this._add(attributes, {instanced: 1});\n }\n\n /**\n * Removes attributes\n * Takes an array of attribute names and delete them from\n * the attribute map if they exists\n *\n * @example\n * attributeManager.remove(['position']);\n *\n * @param {Object} attributeNameArray - attribute name array (see above)\n */\n remove(attributeNameArray: string[]) {\n for (const name of attributeNameArray) {\n if (this.attributes[name] !== undefined) {\n this.attributes[name].delete();\n delete this.attributes[name];\n }\n }\n }\n\n // Marks an attribute for update\n invalidate(triggerName: string, dataRange?: {startRow?: number; endRow?: number}) {\n const invalidatedAttributes = this._invalidateTrigger(triggerName, dataRange);\n // For performance tuning\n debug(TRACE_INVALIDATE, this, triggerName, invalidatedAttributes);\n }\n\n invalidateAll(dataRange?: {startRow?: number; endRow?: number}) {\n for (const attributeName in this.attributes) {\n this.attributes[attributeName].setNeedsUpdate(attributeName, dataRange);\n }\n // For performance tuning\n debug(TRACE_INVALIDATE, this, 'all');\n }\n\n // Ensure all attribute buffers are updated from props or data.\n // eslint-disable-next-line complexity\n update({\n data,\n numInstances,\n startIndices = null,\n transitions,\n props = {},\n buffers = {},\n context = {}\n }: {\n data: any;\n numInstances: number;\n startIndices?: NumericArray | null;\n transitions: any;\n props: any;\n buffers: any;\n context: any;\n }) {\n // keep track of whether some attributes are updated\n let updated = false;\n\n debug(TRACE_UPDATE_START, this);\n if (this.stats) {\n this.stats.get('Update Attributes').timeStart();\n }\n\n for (const attributeName in this.attributes) {\n const attribute = this.attributes[attributeName];\n const accessorName = attribute.settings.accessor;\n attribute.startIndices = startIndices;\n attribute.numInstances = numInstances;\n\n if (props[attributeName]) {\n log.removed(`props.${attributeName}`, `data.attributes.${attributeName}`)();\n }\n\n if (attribute.setExternalBuffer(buffers[attributeName])) {\n // Step 1: try update attribute directly from external buffers\n } else if (\n attribute.setBinaryValue(\n typeof accessorName === 'string' ? buffers[accessorName] : undefined,\n data.startIndices\n )\n ) {\n // Step 2: try set packed value from external typed array\n } else if (\n typeof accessorName === 'string' &&\n !buffers[accessorName] &&\n attribute.setConstantValue(props[accessorName])\n ) {\n // Step 3: try set constant value from props\n // Note: if buffers[accessorName] is supplied, ignore props[accessorName]\n // This may happen when setBinaryValue falls through to use the auto updater\n } else if (attribute.needsUpdate()) {\n // Step 4: update via updater callback\n updated = true;\n this._updateAttribute({\n attribute,\n numInstances,\n data,\n props,\n context\n });\n }\n\n this.needsRedraw = this.needsRedraw || attribute.needsRedraw();\n }\n\n if (updated) {\n // Only initiate alloc/update (and logging) if actually needed\n debug(TRACE_UPDATE_END, this, numInstances);\n }\n\n if (this.stats) {\n this.stats.get('Update Attributes').timeEnd();\n }\n\n this.attributeTransitionManager.update({\n attributes: this.attributes,\n numInstances,\n transitions\n });\n }\n\n // Update attribute transition to the current timestamp\n // Returns `true` if any transition is in progress\n updateTransition() {\n const {attributeTransitionManager} = this;\n const transitionUpdated = attributeTransitionManager.run();\n this.needsRedraw = this.needsRedraw || transitionUpdated;\n return transitionUpdated;\n }\n\n /**\n * Returns all attribute descriptors\n * Note: Format matches luma.gl Model/Program.setAttributes()\n * @return {Object} attributes - descriptors\n */\n getAttributes(): {[id: string]: Attribute} {\n return this.attributes;\n }\n\n /**\n * Computes the spatial bounds of a given set of attributes\n */\n getBounds(attributeNames: string[]) {\n const bounds = attributeNames.map(attributeName => this.attributes[attributeName]?.getBounds());\n return this.mergeBoundsMemoized(bounds);\n }\n\n /**\n * Returns changed attribute descriptors\n * This indicates which WebGLBuffers need to be updated\n * @return {Object} attributes - descriptors\n */\n getChangedAttributes(opts: {clearChangedFlags?: boolean} = {clearChangedFlags: false}): {\n [id: string]: Attribute;\n } {\n const {attributes, attributeTransitionManager} = this;\n\n const changedAttributes = {...attributeTransitionManager.getAttributes()};\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n if (attribute.needsRedraw(opts) && !attributeTransitionManager.hasAttribute(attributeName)) {\n changedAttributes[attributeName] = attribute;\n }\n }\n\n return changedAttributes;\n }\n\n // Returns shader attributes\n getShaderAttributes(\n attributes?: {[id: string]: Attribute},\n excludeAttributes: Record = {}\n ): {[id: string]: IShaderAttribute} {\n if (!attributes) {\n attributes = this.getAttributes();\n }\n const shaderAttributes = {};\n for (const attributeName in attributes) {\n if (!excludeAttributes[attributeName]) {\n Object.assign(shaderAttributes, attributes[attributeName].getShaderAttributes());\n }\n }\n return shaderAttributes;\n }\n\n // PRIVATE METHODS\n\n // Used to register an attribute\n private _add(attributes: {[id: string]: AttributeOptions}, extraProps: any = {}) {\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n\n // Initialize the attribute descriptor, with WebGL and metadata fields\n this.attributes[attributeName] = this._createAttribute(attributeName, attribute, extraProps);\n }\n\n this._mapUpdateTriggersToAttributes();\n }\n /* eslint-enable max-statements */\n\n private _createAttribute(name: string, attribute: AttributeOptions, extraProps: any) {\n // For expected default values see:\n // https://github.com/visgl/luma.gl/blob/1affe21352e289eeaccee2a876865138858a765c/modules/webgl/src/classes/accessor.js#L5-L13\n // and https://deck.gl/docs/api-reference/core/attribute-manager#add\n const props: AttributeOptions = {\n ...attribute,\n id: name,\n size: (attribute.isIndexed && 1) || attribute.size || 1,\n divisor: extraProps.instanced ? 1 : attribute.divisor || 0\n };\n\n return new Attribute(this.gl, props);\n }\n\n // build updateTrigger name to attribute name mapping\n private _mapUpdateTriggersToAttributes() {\n const triggers: {[name: string]: string[]} = {};\n\n for (const attributeName in this.attributes) {\n const attribute = this.attributes[attributeName];\n attribute.getUpdateTriggers().forEach(triggerName => {\n if (!triggers[triggerName]) {\n triggers[triggerName] = [];\n }\n triggers[triggerName].push(attributeName);\n });\n }\n\n this.updateTriggers = triggers;\n }\n\n private _invalidateTrigger(\n triggerName: string,\n dataRange?: {startRow?: number; endRow?: number}\n ): string[] {\n const {attributes, updateTriggers} = this;\n const invalidatedAttributes = updateTriggers[triggerName];\n\n if (invalidatedAttributes) {\n invalidatedAttributes.forEach(name => {\n const attribute = attributes[name];\n if (attribute) {\n attribute.setNeedsUpdate(attribute.id, dataRange);\n }\n });\n }\n return invalidatedAttributes;\n }\n\n private _updateAttribute(opts: {\n attribute: Attribute;\n numInstances: number;\n data: any;\n props: any;\n context: any;\n }) {\n const {attribute, numInstances} = opts;\n debug(TRACE_ATTRIBUTE_UPDATE_START, attribute);\n\n if (attribute.constant) {\n // The attribute is flagged as constant outside of an update cycle\n // Skip allocation and updater call\n attribute.setConstantValue(attribute.value as NumericArray);\n return;\n }\n\n if (attribute.allocate(numInstances)) {\n debug(TRACE_ATTRIBUTE_ALLOCATE, attribute, numInstances);\n }\n\n // Calls update on any buffers that need update\n const updated = attribute.updateBuffer(opts);\n if (updated) {\n this.needsRedraw = true;\n debug(TRACE_ATTRIBUTE_UPDATE_END, attribute, numInstances);\n }\n }\n}\n","import Transition from './transition';\n\nconst EPSILON = 1e-5;\n\n/*\n * Calculate the next value in the spring transition\n * @param prev {Number} - previous value\n * @param cur {Number} - current value\n * @param dest {Number} - destination value\n * @param damping {Number}\n * @param stiffness {Number}\n */\nfunction updateSpringElement(prev, cur, dest, damping, stiffness) {\n const velocity = cur - prev;\n const delta = dest - cur;\n const spring = delta * stiffness;\n const damper = -velocity * damping;\n return spring + damper + velocity + cur;\n}\n\n/*\n * Calculate the next value in the spring transition\n * @param prev {Number|Array} - previous value\n * @param cur {Number|Array} - current value\n * @param dest {Number|Array} - destination value\n * @param damping {Number}\n * @param stiffness {Number}\n */\nfunction updateSpring(prev, cur, dest, damping, stiffness) {\n if (Array.isArray(dest)) {\n const next = [];\n for (let i = 0; i < dest.length; i++) {\n next[i] = updateSpringElement(prev[i], cur[i], dest[i], damping, stiffness);\n }\n return next;\n }\n return updateSpringElement(prev, cur, dest, damping, stiffness);\n}\n\n/*\n * Calculate the distance between two numbers or two vectors\n */\nfunction distance(value1, value2) {\n if (Array.isArray(value1)) {\n let distanceSquare = 0;\n for (let i = 0; i < value1.length; i++) {\n const d = value1[i] - value2[i];\n distanceSquare += d * d;\n }\n return Math.sqrt(distanceSquare);\n }\n return Math.abs(value1 - value2);\n}\n\nexport default class CPUSpringTransition extends Transition {\n get value() {\n return this._currValue;\n }\n\n _onUpdate() {\n // TODO - use timeline\n // const {time} = this;\n\n const {fromValue, toValue, damping, stiffness} = this.settings;\n const {_prevValue = fromValue, _currValue = fromValue} = this;\n let nextValue = updateSpring(_prevValue, _currValue, toValue, damping, stiffness);\n const delta = distance(nextValue, toValue);\n const velocity = distance(nextValue, _currValue);\n\n if (delta < EPSILON && velocity < EPSILON) {\n nextValue = toValue;\n this.end();\n }\n\n this._prevValue = _currValue;\n this._currValue = nextValue;\n }\n}\n","import {normalizeTransitionSettings} from './attribute/attribute-transition-utils';\nimport CPUInterpolationTransition from '../transitions/cpu-interpolation-transition';\nimport CPUSpringTransition from '../transitions/cpu-spring-transition';\nimport log from '../utils/log';\n\nconst TRANSITION_TYPES = {\n interpolation: CPUInterpolationTransition,\n spring: CPUSpringTransition\n};\n\nexport default class UniformTransitionManager {\n constructor(timeline) {\n this.transitions = new Map();\n this.timeline = timeline;\n }\n\n get active() {\n return this.transitions.size > 0;\n }\n\n add(key, fromValue, toValue, settings) {\n const {transitions} = this;\n if (transitions.has(key)) {\n const transition = transitions.get(key);\n // value may not be available if `update()` has not been called. Fallback to `fromValue`\n const {value = transition.settings.fromValue} = transition;\n // start from interrupted position\n fromValue = value;\n this.remove(key);\n }\n\n settings = normalizeTransitionSettings(settings);\n if (!settings) {\n return;\n }\n\n const TransitionType = TRANSITION_TYPES[settings.type];\n if (!TransitionType) {\n log.error(`unsupported transition type '${settings.type}'`)();\n return;\n }\n const transition = new TransitionType(this.timeline);\n transition.start({\n ...settings,\n fromValue,\n toValue\n });\n transitions.set(key, transition);\n }\n\n remove(key) {\n const {transitions} = this;\n if (transitions.has(key)) {\n transitions.get(key).cancel();\n transitions.delete(key);\n }\n }\n\n update() {\n const propsInTransition = {};\n\n for (const [key, transition] of this.transitions) {\n transition.update();\n propsInTransition[key] = transition.value;\n if (!transition.inProgress) {\n // transition ended\n this.remove(key);\n }\n }\n\n return propsInTransition;\n }\n\n clear() {\n for (const key of this.transitions.keys()) {\n this.remove(key);\n }\n }\n}\n","import {lerp} from '@math.gl/core';\nimport Transition from './transition';\n\nexport default class CPUInterpolationTransition extends Transition {\n get value() {\n return this._value;\n }\n\n _onUpdate() {\n const {\n time,\n settings: {fromValue, toValue, duration, easing}\n } = this;\n const t = easing(time / duration);\n this._value = lerp(fromValue, toValue, t);\n }\n}\n","import {PROP_TYPES_SYMBOL} from './constants';\n\nexport function validateProps(props) {\n const propTypes = props[PROP_TYPES_SYMBOL];\n\n for (const propName in propTypes) {\n const propType = propTypes[propName];\n const {validate} = propType;\n if (validate && !validate(props[propName], propType)) {\n throw new Error(`Invalid prop ${propName}: ${props[propName]}`);\n }\n }\n}\n\n// Returns an object with \"change flags\", either false or strings indicating reason for change\nexport function diffProps(\n props,\n oldProps\n): {\n dataChanged: string | false | {startRow: number; endRow?: number}[];\n propsChanged: string | false;\n updateTriggersChanged: Record | false;\n extensionsChanged: boolean;\n transitionsChanged: Record | false;\n} {\n // First check if any props have changed (ignore props that will be examined separately)\n const propsChangedReason = compareProps({\n newProps: props,\n oldProps,\n propTypes: props[PROP_TYPES_SYMBOL],\n ignoreProps: {data: null, updateTriggers: null, extensions: null, transitions: null}\n });\n\n // Now check if any data related props have changed\n const dataChangedReason = diffDataProps(props, oldProps);\n\n // Check update triggers to determine if any attributes need regeneration\n // Note - if data has changed, all attributes will need regeneration, so skip this step\n let updateTriggersChangedReason: false | string | Record = false;\n if (!dataChangedReason) {\n updateTriggersChangedReason = diffUpdateTriggers(props, oldProps);\n }\n\n return {\n dataChanged: dataChangedReason,\n propsChanged: propsChangedReason,\n updateTriggersChanged: updateTriggersChangedReason,\n extensionsChanged: diffExtensions(props, oldProps),\n transitionsChanged: diffTransitions(props, oldProps)\n };\n}\n\nfunction diffTransitions(props, oldProps): false | Record {\n if (!props.transitions) {\n return false;\n }\n const result: Record = {};\n const propTypes = props[PROP_TYPES_SYMBOL];\n let changed = false;\n\n for (const key in props.transitions) {\n const propType = propTypes[key];\n const type = propType && propType.type;\n const isTransitionable = type === 'number' || type === 'color' || type === 'array';\n if (isTransitionable && comparePropValues(props[key], oldProps[key], propType)) {\n result[key] = true;\n changed = true;\n }\n }\n return changed ? result : false;\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * @param {Object} opt.oldProps - object with old key/value pairs\n * @param {Object} opt.newProps - object with new key/value pairs\n * @param {Object} opt.ignoreProps={} - object, keys that should not be compared\n * @returns {null|String} - null when values of all keys are strictly equal.\n * if unequal, returns a string explaining what changed.\n */\n/* eslint-disable max-statements, max-depth, complexity */\n/*\n * Note: for better performance, this function assumes that both oldProps and newProps\n inherit the same prototype (defaultProps). That is, if neither object contains own\n property , assume `oldProps.` and `newProps.` are equal.\n */\nexport function compareProps({\n newProps,\n oldProps,\n ignoreProps = {},\n propTypes = {},\n triggerName = 'props'\n}): string | false {\n // shallow equality => deep equality\n if (oldProps === newProps) {\n return false;\n }\n\n // TODO - do we need these checks? Should never happen...\n if (typeof newProps !== 'object' || newProps === null) {\n return `${triggerName} changed shallowly`;\n }\n\n if (typeof oldProps !== 'object' || oldProps === null) {\n return `${triggerName} changed shallowly`;\n }\n\n // Compare explicitly defined new props against old/default values\n for (const key of Object.keys(newProps)) {\n if (!(key in ignoreProps)) {\n if (!(key in oldProps)) {\n return `${triggerName}.${key} added`;\n }\n const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n if (changed) {\n return `${triggerName}.${key} ${changed}`;\n }\n }\n }\n\n // Test if any old props have been dropped\n for (const key of Object.keys(oldProps)) {\n if (!(key in ignoreProps)) {\n if (!(key in newProps)) {\n return `${triggerName}.${key} dropped`;\n }\n if (!Object.hasOwnProperty.call(newProps, key)) {\n // Compare dropped old prop against default value\n const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n if (changed) {\n return `${triggerName}.${key} ${changed}`;\n }\n }\n }\n }\n\n return false;\n}\n/* eslint-enable max-statements, max-depth, complexity */\n\n// HELPERS\nfunction comparePropValues(newProp, oldProp, propType) {\n // If prop type has an equal function, invoke it\n let equal = propType && propType.equal;\n if (equal && !equal(newProp, oldProp, propType)) {\n return 'changed deeply';\n }\n\n if (!equal) {\n // If object has an equals function, invoke it\n equal = newProp && oldProp && newProp.equals;\n if (equal && !equal.call(newProp, oldProp)) {\n return 'changed deeply';\n }\n }\n\n if (!equal && oldProp !== newProp) {\n return 'changed shallowly';\n }\n\n return null;\n}\n\n// The comparison of the data prop requires special handling\n// the dataComparator should be used if supplied\nfunction diffDataProps(props, oldProps): string | false | {startRow: number; endRow?: number}[] {\n if (oldProps === null) {\n return 'oldProps is null, initial diff';\n }\n\n let dataChanged: string | false | {startRow: number; endRow?: number}[] = false;\n // Support optional app defined comparison of data\n const {dataComparator, _dataDiff} = props;\n if (dataComparator) {\n if (!dataComparator(props.data, oldProps.data)) {\n dataChanged = 'Data comparator detected a change';\n }\n // Otherwise, do a shallow equal on props\n } else if (props.data !== oldProps.data) {\n dataChanged = 'A new data container was supplied';\n }\n if (dataChanged && _dataDiff) {\n dataChanged = _dataDiff(props.data, oldProps.data) || dataChanged;\n }\n\n return dataChanged;\n}\n\n// Checks if any update triggers have changed\n// also calls callback to invalidate attributes accordingly.\nfunction diffUpdateTriggers(props, oldProps): Record | false {\n if (oldProps === null) {\n return {all: true};\n }\n\n // If the 'all' updateTrigger fires, ignore testing others\n if ('all' in props.updateTriggers) {\n const diffReason = diffUpdateTrigger(props, oldProps, 'all');\n if (diffReason) {\n return {all: true};\n }\n }\n\n const reason: Record = {};\n let changed = false;\n // If the 'all' updateTrigger didn't fire, need to check all others\n for (const triggerName in props.updateTriggers) {\n if (triggerName !== 'all') {\n const diffReason = diffUpdateTrigger(props, oldProps, triggerName);\n if (diffReason) {\n reason[triggerName] = true;\n changed = true;\n }\n }\n }\n\n return changed ? reason : false;\n}\n\n// Returns true if any extensions have changed\nfunction diffExtensions(props, oldProps): boolean {\n if (oldProps === null) {\n return true;\n }\n\n const oldExtensions = oldProps.extensions;\n const {extensions} = props;\n\n if (extensions === oldExtensions) {\n return false;\n }\n if (!oldExtensions || !extensions) {\n return true;\n }\n if (extensions.length !== oldExtensions.length) {\n return true;\n }\n for (let i = 0; i < extensions.length; i++) {\n if (!extensions[i].equals(oldExtensions[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction diffUpdateTrigger(props, oldProps, triggerName) {\n let newTriggers = props.updateTriggers[triggerName];\n newTriggers = newTriggers === undefined || newTriggers === null ? {} : newTriggers;\n let oldTriggers = oldProps.updateTriggers[triggerName];\n oldTriggers = oldTriggers === undefined || oldTriggers === null ? {} : oldTriggers;\n const diffReason = compareProps({\n oldProps: oldTriggers,\n newProps: newTriggers,\n triggerName\n });\n return diffReason;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nconst ERR_NOT_OBJECT = 'count(): argument not an object';\nconst ERR_NOT_CONTAINER = 'count(): argument not a container';\n\n/**\n * Deduces numer of elements in a JavaScript container.\n * - Auto-deduction for ES6 containers that define a count() method\n * - Auto-deduction for ES6 containers that define a size member\n * - Auto-deduction for Classic Arrays via the built-in length attribute\n * - Also handles objects, although note that this an O(N) operation\n */\nexport function count(container: any): number {\n if (!isObject(container)) {\n throw new Error(ERR_NOT_OBJECT);\n }\n\n // Check if ES6 collection \"count\" function is available\n if (typeof container.count === 'function') {\n return container.count();\n }\n\n // Check if ES6 collection \"size\" attribute is set\n if (Number.isFinite(container.size)) {\n return container.size;\n }\n\n // Check if array length attribute is set\n // Note: checking this last since some ES6 collections (Immutable.js)\n // emit profuse warnings when trying to access `length` attribute\n if (Number.isFinite(container.length)) {\n return container.length;\n }\n\n // Note that getting the count of an object is O(N)\n if (isPlainObject(container)) {\n return Object.keys(container).length;\n }\n\n throw new Error(ERR_NOT_CONTAINER);\n}\n\n/**\n * Checks if argument is a plain object (not a class or array etc)\n * @param {*} value - JavaScript value to be tested\n * @return {Boolean} - true if argument is a plain JavaScript object\n */\nfunction isPlainObject(value) {\n return value !== null && typeof value === 'object' && value.constructor === Object;\n}\n\n/**\n * Checks if argument is an indexable object (not a primitive value, nor null)\n * @param {*} value - JavaScript value to be tested\n * @return {Boolean} - true if argument is a JavaScript object\n */\nfunction isObject(value) {\n return value !== null && typeof value === 'object';\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Merge two luma.gl shader descriptors\nexport function mergeShaders(target, source) {\n if (!source) {\n return target;\n }\n const result = {...target, ...source};\n\n if ('defines' in source) {\n result.defines = {...target.defines, ...source.defines};\n }\n if ('modules' in source) {\n result.modules = (target.modules || []).concat(source.modules);\n\n // Hack: prject32 and project64 cannot co-exist\n if (source.modules.some(module => module.name === 'project64')) {\n const index = result.modules.findIndex(module => module.name === 'project32');\n if (index >= 0) {\n result.modules.splice(index, 1);\n }\n }\n }\n if ('inject' in source) {\n if (!target.inject) {\n result.inject = source.inject;\n } else {\n const mergedInjection = {...target.inject};\n for (const key in source.inject) {\n mergedInjection[key] = (mergedInjection[key] || '') + source.inject[key];\n }\n result.inject = mergedInjection;\n }\n }\n return result;\n}\n","/**\n * Projection utils\n * TODO: move to Viewport class?\n */\nimport {COORDINATE_SYSTEM} from '../../lib/constants';\nimport {getOffsetOrigin} from './viewport-uniforms';\nimport WebMercatorViewport from '../../viewports/web-mercator-viewport';\n\nimport * as vec4 from 'gl-matrix/vec4';\nimport * as vec3 from 'gl-matrix/vec3';\nimport {addMetersToLngLat} from '@math.gl/web-mercator';\n\nimport type {CoordinateSystem} from '../../lib/constants';\nimport type Viewport from '../../viewports/viewport';\nimport type {NumericArray} from '../../types/types';\n\nconst DEFAULT_COORDINATE_ORIGIN = [0, 0, 0];\n\n// In project.glsl, offset modes calculate z differently from LNG_LAT mode.\n// offset modes apply the y adjustment (unitsPerMeter2) when projecting z\n// LNG_LAT mode only use the linear scale.\nfunction lngLatZToWorldPosition(\n lngLatZ: [number, number, number],\n viewport: Viewport,\n offsetMode: boolean = false\n): [number, number, number] {\n const p = viewport.projectPosition(lngLatZ);\n\n // TODO - avoid using instanceof\n if (offsetMode && viewport instanceof WebMercatorViewport) {\n const [longitude, latitude, z = 0] = lngLatZ;\n const distanceScales = viewport.getDistanceScales([longitude, latitude]);\n p[2] = z * distanceScales.unitsPerMeter[2];\n }\n return p;\n}\n\nfunction normalizeParameters(opts: {\n viewport: Viewport;\n coordinateSystem: CoordinateSystem;\n coordinateOrigin: [number, number, number];\n modelMatrix?: NumericArray | null;\n fromCoordinateSystem?: CoordinateSystem;\n fromCoordinateOrigin?: [number, number, number];\n}): {\n viewport: Viewport;\n coordinateSystem: CoordinateSystem;\n coordinateOrigin: [number, number, number];\n modelMatrix?: NumericArray | null;\n fromCoordinateSystem: CoordinateSystem;\n fromCoordinateOrigin: [number, number, number];\n} {\n const {viewport, modelMatrix, coordinateOrigin} = opts;\n let {coordinateSystem, fromCoordinateSystem, fromCoordinateOrigin} = opts;\n\n if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = viewport.isGeospatial\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN;\n }\n\n if (fromCoordinateSystem === undefined) {\n fromCoordinateSystem = coordinateSystem;\n }\n if (fromCoordinateOrigin === undefined) {\n fromCoordinateOrigin = coordinateOrigin;\n }\n\n return {\n viewport,\n coordinateSystem,\n coordinateOrigin,\n modelMatrix,\n fromCoordinateSystem,\n fromCoordinateOrigin\n };\n}\n\n/** Get the common space position from world coordinates in the given coordinate system */\nexport function getWorldPosition(\n position: number[],\n {\n viewport,\n modelMatrix,\n coordinateSystem,\n coordinateOrigin,\n offsetMode\n }: {\n viewport: Viewport;\n modelMatrix?: NumericArray | null;\n coordinateSystem: CoordinateSystem;\n coordinateOrigin: [number, number, number];\n offsetMode?: boolean;\n }\n): [number, number, number] {\n let [x, y, z = 0] = position;\n\n if (modelMatrix) {\n [x, y, z] = vec4.transformMat4([], [x, y, z, 1.0], modelMatrix);\n }\n\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.LNGLAT:\n return lngLatZToWorldPosition([x, y, z], viewport, offsetMode);\n\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n return lngLatZToWorldPosition(\n [x + coordinateOrigin[0], y + coordinateOrigin[1], z + (coordinateOrigin[2] || 0)],\n viewport,\n offsetMode\n );\n\n case COORDINATE_SYSTEM.METER_OFFSETS:\n return lngLatZToWorldPosition(\n addMetersToLngLat(coordinateOrigin, [x, y, z]) as [number, number, number],\n viewport,\n offsetMode\n );\n\n case COORDINATE_SYSTEM.CARTESIAN:\n default:\n return viewport.isGeospatial\n ? [x + coordinateOrigin[0], y + coordinateOrigin[1], z + coordinateOrigin[2]]\n : viewport.projectPosition([x, y, z]);\n }\n}\n\n/**\n * Equivalent to project_position in project.glsl\n * projects a user supplied position to world position directly with or without\n * a reference coordinate system\n */\nexport function projectPosition(\n position: number[],\n params: {\n /** The current viewport */\n viewport: Viewport;\n /** The reference coordinate system used to align world position */\n coordinateSystem: CoordinateSystem;\n /** The reference coordinate origin used to align world position */\n coordinateOrigin: [number, number, number];\n /** The model matrix of the supplied position */\n modelMatrix?: NumericArray | null;\n /** The coordinate system that the supplied position is in. Default to the same as `coordinateSystem`. */\n fromCoordinateSystem?: CoordinateSystem;\n /** The coordinate origin that the supplied position is in. Default to the same as `coordinateOrigin`. */\n fromCoordinateOrigin?: [number, number, number];\n /** Whether to apply offset mode automatically as does the project shader module.\n * Offset mode places the origin of the common space at the given viewport's center. It is used in some use cases\n * to improve precision in the vertex shader due to the fp32 float limitation.\n * Use `autoOffset:false` if the returned position should not be dependent on the current viewport.\n * Default `true` */\n autoOffset?: boolean;\n }\n): [number, number, number] {\n const {\n viewport,\n coordinateSystem,\n coordinateOrigin,\n modelMatrix,\n fromCoordinateSystem,\n fromCoordinateOrigin\n } = normalizeParameters(params);\n const {autoOffset = true} = params;\n\n const {\n geospatialOrigin = DEFAULT_COORDINATE_ORIGIN,\n shaderCoordinateOrigin = DEFAULT_COORDINATE_ORIGIN,\n offsetMode = false\n } = autoOffset ? getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin) : {};\n\n const worldPosition = getWorldPosition(position, {\n viewport,\n modelMatrix,\n coordinateSystem: fromCoordinateSystem,\n coordinateOrigin: fromCoordinateOrigin,\n offsetMode\n });\n\n if (offsetMode) {\n const positionCommonSpace = viewport.projectPosition(\n geospatialOrigin || shaderCoordinateOrigin\n );\n vec3.sub(worldPosition, worldPosition, positionCommonSpace);\n }\n\n return worldPosition;\n}\n","import {Texture2D} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\n\nconst DEFAULT_TEXTURE_PARAMETERS: Record = {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR_MIPMAP_LINEAR,\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\n\n// Track the textures that are created by us. They need to be released when they are no longer used.\nconst internalTextures: Record = {};\n\nexport function createTexture(\n owner: string,\n gl: WebGLRenderingContext,\n image: any,\n parameters: Record\n): Texture2D | null {\n // image could be one of:\n // - Texture2D\n // - Browser object: Image, ImageData, ImageData, HTMLCanvasElement, HTMLVideoElement, ImageBitmap\n // - Plain object: {width: , height: , data: }\n if (image instanceof Texture2D) {\n return image;\n } else if (image.constructor && image.constructor.name !== 'Object') {\n // Browser object\n image = {data: image};\n }\n\n let specialTextureParameters: Record | null = null;\n if (image.compressed) {\n specialTextureParameters = {\n [GL.TEXTURE_MIN_FILTER]: image.data.length > 1 ? GL.LINEAR_MIPMAP_NEAREST : GL.LINEAR\n };\n }\n\n const texture = new Texture2D(gl, {\n ...image,\n parameters: {\n ...DEFAULT_TEXTURE_PARAMETERS,\n ...specialTextureParameters,\n ...parameters\n }\n });\n // Track this texture\n internalTextures[texture.id] = owner;\n return texture;\n}\n\nexport function destroyTexture(owner: string, texture: Texture2D) {\n if (!texture || !(texture instanceof Texture2D)) {\n return;\n }\n // Only delete the texture if requested by the same layer that created it\n if (internalTextures[texture.id] === owner) {\n texture.delete();\n delete internalTextures[texture.id];\n }\n}\n","import {createTexture, destroyTexture} from '../utils/texture';\nimport {deepEqual} from '../utils/deep-equal';\n\nimport type Component from './component';\nimport type {Color, Texture} from '../types/layer-props';\nimport type Layer from '../lib/layer';\n\ntype BasePropType = {\n value: ValueT;\n async?: boolean;\n validate?: (value: any, propType: PropType) => boolean;\n equal?: (value1: ValueT, value2: ValueT, propType: PropType) => boolean;\n};\n\n/**\n * Normalized prop type definition\n */\nexport type PropType = BasePropType & {\n type: string;\n name: string;\n transform?: (value: any, propType: PropType, component: Component) => any;\n release?: (value: any, propType: PropType, component: Component) => void;\n};\n\ntype DefaultProp =\n | T\n | DeprecatedProp\n | BooleanPropType\n | NumberPropType\n | ColorPropType\n | ImagePropType\n | DataPropType\n | ArrayPropType\n | ObjectPropType\n | AccessorPropType\n | FunctionPropType;\n\nexport type DefaultProps = {\n [propName in keyof PropsT]?: DefaultProp[propName]>;\n};\n\ntype BooleanPropType = BasePropType & {\n type: 'boolean';\n};\ntype NumberPropType = BasePropType & {\n type: 'number';\n min?: number;\n max?: number;\n};\ntype ColorPropType = BasePropType & {\n type: 'color';\n optional?: boolean;\n};\ntype ArrayPropType = BasePropType & {\n type: 'array';\n optional?: boolean;\n /** Ignore change in the prop value.\n * @default false\n */\n ignore?: boolean;\n /** Deep-compare two prop values. Only used if `ignore: false`.\n * When a number is supplied, used as the depth of deep-comparison. 0 is equivalent to shallow comparison, -1 is infinite depth\n * When a boolean is supplied, `true` is equivalent to `1` (shallow compare all child fields)\n * @default false\n */\n compare?: boolean | number;\n};\ntype AccessorPropType = BasePropType & {\n type: 'accessor';\n};\ntype FunctionPropType = BasePropType & {\n type: 'function';\n optional?: boolean;\n /** @deprecated use `ignore` instead */\n compare?: boolean;\n /** Ignore change in the prop value.\n * @default true\n */\n ignore?: boolean;\n};\ntype DataPropType = BasePropType & {\n type: 'data';\n};\ntype ImagePropType = BasePropType & {\n type: 'image';\n parameters?: Record;\n};\ntype ObjectPropType = BasePropType & {\n type: 'object';\n optional?: boolean;\n /** Ignore change in the prop value.\n * @default false\n */\n ignore?: boolean;\n /** Deep-compare two prop values. Only used if `ignore: false`.\n * When a number is supplied, used as the depth of deep-comparison. 0 is equivalent to shallow comparison, -1 is infinite depth\n * When a boolean is supplied, `true` is equivalent to `1` (shallow compare all child fields)\n * @default false\n */\n compare?: boolean | number;\n};\ntype DeprecatedProp = {\n deprecatedFor?: string | string[];\n};\ntype PropTypeDef =\n | DeprecatedProp\n | boolean\n | BooleanPropType\n | number\n | NumberPropType\n | string\n | DataPropType\n | number[]\n | ColorPropType\n | ArrayPropType\n | AccessorPropType\n | FunctionPropType\n | ImagePropType\n | ObjectPropType\n | null;\n\nconst TYPE_DEFINITIONS = {\n boolean: {\n validate(value, propType: BooleanPropType) {\n return true;\n },\n equal(value1, value2, propType: BooleanPropType) {\n return Boolean(value1) === Boolean(value2);\n }\n },\n number: {\n validate(value, propType: NumberPropType) {\n return (\n Number.isFinite(value) &&\n (!('max' in propType) || value <= propType.max!) &&\n (!('min' in propType) || value >= propType.min!)\n );\n }\n },\n color: {\n validate(value, propType: ColorPropType) {\n return (\n (propType.optional && !value) ||\n (isArray(value) && (value.length === 3 || value.length === 4))\n );\n },\n equal(value1, value2, propType: ColorPropType) {\n return deepEqual(value1, value2, 1);\n }\n },\n accessor: {\n validate(value, propType: AccessorPropType) {\n const valueType = getTypeOf(value);\n return valueType === 'function' || valueType === getTypeOf(propType.value);\n },\n equal(value1, value2, propType: AccessorPropType) {\n if (typeof value2 === 'function') {\n return true;\n }\n return deepEqual(value1, value2, 1);\n }\n },\n array: {\n validate(value, propType: ArrayPropType) {\n return (propType.optional && !value) || isArray(value);\n },\n equal(value1, value2, propType: ArrayPropType) {\n const {compare} = propType;\n const depth = Number.isInteger(compare as unknown) ? (compare as number) : compare ? 1 : 0;\n return compare ? deepEqual(value1, value2, depth) : value1 === value2;\n }\n },\n object: {\n equal(value1, value2, propType: ObjectPropType) {\n if (propType.ignore) {\n return true;\n }\n const {compare} = propType;\n const depth = Number.isInteger(compare as unknown) ? (compare as number) : compare ? 1 : 0;\n return compare ? deepEqual(value1, value2, depth) : value1 === value2;\n }\n },\n function: {\n validate(value, propType: FunctionPropType) {\n return (propType.optional && !value) || typeof value === 'function';\n },\n equal(value1, value2, propType: FunctionPropType) {\n // Backward compatibility - {compare: true} and {ignore: false} are equivalent\n const shouldIgnore = !propType.compare && propType.ignore !== false;\n return shouldIgnore || value1 === value2;\n }\n },\n data: {\n transform: (value, propType: DataPropType, component) => {\n const {dataTransform} = component.props;\n return dataTransform && value ? dataTransform(value) : value;\n }\n },\n image: {\n transform: (value, propType: ImagePropType, component) => {\n const context = (component as Layer).context;\n if (!context || !context.gl) {\n return null;\n }\n return createTexture(component.id, context.gl, value, {\n ...propType.parameters,\n ...component.props.textureParameters\n });\n },\n release: (value, propType: ImagePropType, component) => {\n destroyTexture(component.id, value);\n }\n }\n} as const;\n\nexport function parsePropTypes(propDefs: Record): {\n propTypes: Record;\n defaultProps: Record;\n deprecatedProps: Record;\n} {\n const propTypes = {};\n const defaultProps = {};\n const deprecatedProps = {};\n\n for (const [propName, propDef] of Object.entries(propDefs)) {\n const deprecated = (propDef as DeprecatedProp)?.deprecatedFor;\n if (deprecated) {\n deprecatedProps[propName] = Array.isArray(deprecated) ? deprecated : [deprecated];\n } else {\n const propType = parsePropType(propName, propDef);\n propTypes[propName] = propType;\n defaultProps[propName] = propType.value;\n }\n }\n return {propTypes, defaultProps, deprecatedProps};\n}\n\n// Parses one property definition entry. Either contains:\n// * a valid prop type object ({type, ...})\n// * or just a default value, in which case type and name inference is used\nfunction parsePropType(name: string, propDef: PropTypeDef): PropType {\n switch (getTypeOf(propDef)) {\n case 'object':\n return normalizePropDefinition(name, propDef);\n\n case 'array':\n return normalizePropDefinition(name, {type: 'array', value: propDef, compare: false});\n\n case 'boolean':\n return normalizePropDefinition(name, {type: 'boolean', value: propDef});\n\n case 'number':\n return normalizePropDefinition(name, {type: 'number', value: propDef});\n\n case 'function':\n // return guessFunctionType(name, propDef);\n return normalizePropDefinition(name, {type: 'function', value: propDef, compare: true});\n\n default:\n return {name, type: 'unknown', value: propDef};\n }\n}\n\nfunction normalizePropDefinition(name, propDef): PropType {\n if (!('type' in propDef)) {\n if (!('value' in propDef)) {\n // If no type and value this object is likely the value\n return {name, type: 'object', value: propDef};\n }\n return {name, type: getTypeOf(propDef.value), ...propDef};\n }\n return {name, ...TYPE_DEFINITIONS[propDef.type], ...propDef};\n}\n\nfunction isArray(value: any): boolean {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n}\n\n// improved version of javascript typeof that can distinguish arrays and null values\nfunction getTypeOf(value: any): string {\n if (isArray(value)) {\n return 'array';\n }\n if (value === null) {\n return 'null';\n }\n return typeof value;\n}\n","import log from '../utils/log';\nimport {isAsyncIterable} from '../utils/iterable-utils';\nimport {parsePropTypes} from './prop-types';\nimport {\n COMPONENT_SYMBOL,\n PROP_TYPES_SYMBOL,\n DEPRECATED_PROPS_SYMBOL,\n ASYNC_ORIGINAL_SYMBOL,\n ASYNC_RESOLVED_SYMBOL,\n ASYNC_DEFAULTS_SYMBOL\n} from './constants';\nimport {StatefulComponentProps} from './component';\nimport type Component from './component';\n\n// Create a property object\nexport function createProps(\n component: Component,\n propObjects: Partial[]\n): StatefulComponentProps {\n // Resolve extension value\n let extensions: any[] | undefined;\n for (let i = propObjects.length - 1; i >= 0; i--) {\n const props = propObjects[i];\n if ('extensions' in props) {\n // @ts-expect-error TS(2339) extensions not defined\n extensions = props.extensions;\n }\n }\n\n // Create a new prop object with empty default props object\n const propsPrototype = getPropsPrototype(component.constructor, extensions);\n // The true default props object will be found later\n const propsInstance = Object.create(propsPrototype);\n\n // Props need a back pointer to the owning component\n propsInstance[COMPONENT_SYMBOL] = component;\n // The supplied (original) values for those async props that are set to url strings or Promises.\n // In this case, the actual (i.e. resolved) values are looked up from component.internalState\n propsInstance[ASYNC_ORIGINAL_SYMBOL] = {};\n // Note: the actual (resolved) values for props that are NOT set to urls or Promises.\n // in this case the values are served directly from this map\n propsInstance[ASYNC_RESOLVED_SYMBOL] = {};\n\n // \"Copy\" all sync props\n for (let i = 0; i < propObjects.length; ++i) {\n const props = propObjects[i];\n // Do not use Object.assign here to avoid Symbols in props overwriting our private fields\n // This might happen if one of the arguments is another props instance\n for (const key in props) {\n propsInstance[key] = props[key];\n }\n }\n\n // Props must be immutable\n Object.freeze(propsInstance);\n\n return propsInstance;\n}\n\nconst MergedDefaultPropsCacheKey = '_mergedDefaultProps';\n\n// Return precalculated defaultProps and propType objects if available\n// build them if needed\nfunction getPropsPrototype(componentClass, extensions?: any[]) {\n // A string that uniquely identifies the extensions involved\n let cacheKey = MergedDefaultPropsCacheKey;\n if (extensions) {\n for (const extension of extensions) {\n const ExtensionClass = extension.constructor;\n if (ExtensionClass) {\n cacheKey += `:${ExtensionClass.extensionName || ExtensionClass.name}`;\n }\n }\n }\n\n const defaultProps = getOwnProperty(componentClass, cacheKey);\n if (!defaultProps) {\n return (componentClass[cacheKey] = createPropsPrototypeAndTypes(\n componentClass,\n extensions || []\n ));\n }\n return defaultProps;\n}\n\n// Build defaultProps and propType objects by walking component prototype chain\nfunction createPropsPrototypeAndTypes(\n componentClass,\n extensions: any[]\n): Record | null {\n const parent = componentClass.prototype;\n if (!parent) {\n return null;\n }\n\n const parentClass = Object.getPrototypeOf(componentClass);\n const parentDefaultProps = getPropsPrototype(parentClass);\n\n // Parse propTypes from Component.defaultProps\n const componentDefaultProps = getOwnProperty(componentClass, 'defaultProps') || {};\n const componentPropDefs = parsePropTypes(componentDefaultProps);\n\n // Merged default props object. Order: parent, self, extensions\n const defaultProps: any = Object.assign(\n Object.create(null),\n parentDefaultProps,\n componentPropDefs.defaultProps\n );\n // Merged prop type definitions. Order: parent, self, extensions\n const propTypes = Object.assign(\n Object.create(null),\n parentDefaultProps?.[PROP_TYPES_SYMBOL],\n componentPropDefs.propTypes\n );\n // Merged deprecation list. Order: parent, self, extensions\n const deprecatedProps = Object.assign(\n Object.create(null),\n parentDefaultProps?.[DEPRECATED_PROPS_SYMBOL],\n componentPropDefs.deprecatedProps\n );\n\n for (const extension of extensions) {\n const extensionDefaultProps = getPropsPrototype(extension.constructor);\n if (extensionDefaultProps) {\n Object.assign(defaultProps, extensionDefaultProps);\n Object.assign(propTypes, extensionDefaultProps[PROP_TYPES_SYMBOL]);\n Object.assign(deprecatedProps, extensionDefaultProps[DEPRECATED_PROPS_SYMBOL]);\n }\n }\n\n // Create any necessary property descriptors and create the default prop object\n // Assign merged default props\n createPropsPrototype(defaultProps, componentClass);\n\n // Add getters/setters for async props\n addAsyncPropsToPropPrototype(defaultProps, propTypes);\n\n // Add setters for deprecated props\n addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps);\n\n // Store the precalculated props\n defaultProps[PROP_TYPES_SYMBOL] = propTypes;\n defaultProps[DEPRECATED_PROPS_SYMBOL] = deprecatedProps;\n\n // Backwards compatibility\n // TODO: remove access of hidden property from the rest of the code base\n if (extensions.length === 0 && !hasOwnProperty(componentClass, '_propTypes')) {\n componentClass._propTypes = propTypes;\n }\n return defaultProps;\n}\n\n// Builds a pre-merged default props object that component props can inherit from\nfunction createPropsPrototype(defaultProps, componentClass) {\n // Avoid freezing `id` prop\n const id = getComponentName(componentClass);\n\n Object.defineProperties(defaultProps, {\n // `id` is treated specially because layer might need to override it\n id: {\n writable: true,\n value: id\n }\n });\n}\n\nfunction addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps) {\n for (const propName in deprecatedProps) {\n /* eslint-disable accessor-pairs */\n Object.defineProperty(defaultProps, propName, {\n enumerable: false,\n set(newValue) {\n const nameStr = `${this.id}: ${propName}`;\n\n for (const newPropName of deprecatedProps[propName]) {\n if (!hasOwnProperty(this, newPropName)) {\n this[newPropName] = newValue;\n }\n }\n\n log.deprecated(nameStr, deprecatedProps[propName].join('/'))();\n }\n });\n /* eslint-enable accessor-pairs */\n }\n}\n\n// Create descriptors for overridable props\nfunction addAsyncPropsToPropPrototype(defaultProps, propTypes) {\n const defaultValues = {};\n\n const descriptors = {};\n\n // Move async props into shadow values\n for (const propName in propTypes) {\n const propType = propTypes[propName];\n const {name, value} = propType;\n\n // Note: async is ES7 keyword, can't destructure\n if (propType.async) {\n defaultValues[name] = value;\n descriptors[name] = getDescriptorForAsyncProp(name);\n }\n }\n\n // Default \"resolved\" values for async props, returned if value not yet resolved/set.\n defaultProps[ASYNC_DEFAULTS_SYMBOL] = defaultValues;\n // Shadowed object, just to make sure \"early indexing\" into the instance does not fail\n defaultProps[ASYNC_ORIGINAL_SYMBOL] = {};\n\n Object.defineProperties(defaultProps, descriptors);\n}\n\n// Helper: Configures getter and setter for one async prop\nfunction getDescriptorForAsyncProp(name) {\n return {\n enumerable: true,\n // Save the provided value for async props in a special map\n set(newValue) {\n if (\n typeof newValue === 'string' ||\n newValue instanceof Promise ||\n isAsyncIterable(newValue)\n ) {\n this[ASYNC_ORIGINAL_SYMBOL][name] = newValue;\n } else {\n this[ASYNC_RESOLVED_SYMBOL][name] = newValue;\n }\n },\n // Only the component's state knows the true value of async prop\n get() {\n if (this[ASYNC_RESOLVED_SYMBOL]) {\n // Prop value isn't async, so just return it\n if (name in this[ASYNC_RESOLVED_SYMBOL]) {\n const value = this[ASYNC_RESOLVED_SYMBOL][name];\n\n return value || this[ASYNC_DEFAULTS_SYMBOL][name];\n }\n\n if (name in this[ASYNC_ORIGINAL_SYMBOL]) {\n // It's an async prop value: look into component state\n const state = this[COMPONENT_SYMBOL] && this[COMPONENT_SYMBOL].internalState;\n if (state && state.hasAsyncProp(name)) {\n return state.getAsyncProp(name) || this[ASYNC_DEFAULTS_SYMBOL][name];\n }\n }\n }\n\n // the prop is not supplied, or\n // component not yet initialized/matched, return the component's default value for the prop\n return this[ASYNC_DEFAULTS_SYMBOL][name];\n }\n };\n}\n\n// HELPER METHODS\n\nfunction hasOwnProperty(object, prop) {\n return Object.prototype.hasOwnProperty.call(object, prop);\n}\n\n// Constructors have their super class constructors as prototypes\nfunction getOwnProperty(object, prop) {\n return hasOwnProperty(object, prop) && object[prop];\n}\n\nfunction getComponentName(componentClass) {\n const componentName = componentClass.componentName;\n if (!componentName) {\n log.warn(`${componentClass.name}.componentName not specified`)();\n }\n return componentName || componentClass.name;\n}\n","import {\n COMPONENT_SYMBOL,\n PROP_TYPES_SYMBOL,\n ASYNC_ORIGINAL_SYMBOL,\n ASYNC_RESOLVED_SYMBOL,\n ASYNC_DEFAULTS_SYMBOL\n} from './constants';\nimport {PropType} from './prop-types';\nimport {createProps} from './create-props';\n\nlet counter = 0;\n\nexport type StatefulComponentProps = PropsT & {\n id: string;\n [COMPONENT_SYMBOL]: Component;\n [PROP_TYPES_SYMBOL]: Record;\n [ASYNC_DEFAULTS_SYMBOL]: Partial;\n [ASYNC_ORIGINAL_SYMBOL]: Partial;\n [ASYNC_RESOLVED_SYMBOL]: Partial;\n};\n\nexport default class Component {\n static componentName: string = 'Component';\n static defaultProps: Readonly<{}> = {};\n\n id: string;\n props: StatefulComponentProps;\n count: number;\n\n constructor(...propObjects: Partial[]) {\n // Merge supplied props with default props and freeze them.\n /* eslint-disable prefer-spread */\n this.props = createProps(this, propObjects);\n /* eslint-enable prefer-spread */\n\n this.id = this.props.id; // The layer's id, used for matching with layers from last render cycle\n this.count = counter++; // Keep track of how many layer instances you are generating\n }\n\n // clone this layer with modified props\n clone(newProps: Partial) {\n const {props} = this;\n\n // Async props cannot be copied with Object.assign, copy them separately\n const asyncProps: Partial = {};\n\n // See async props definition in create-props.js\n for (const key in props[ASYNC_DEFAULTS_SYMBOL]) {\n if (key in props[ASYNC_RESOLVED_SYMBOL]) {\n asyncProps[key] = props[ASYNC_RESOLVED_SYMBOL][key];\n } else if (key in props[ASYNC_ORIGINAL_SYMBOL]) {\n asyncProps[key] = props[ASYNC_ORIGINAL_SYMBOL][key];\n }\n }\n\n // Some custom layer implementation may not support multiple arguments in the constructor\n // @ts-ignore\n return new this.constructor({...props, ...asyncProps, ...newProps});\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {isAsyncIterable} from '../utils/iterable-utils';\nimport {\n COMPONENT_SYMBOL,\n PROP_TYPES_SYMBOL,\n ASYNC_ORIGINAL_SYMBOL,\n ASYNC_RESOLVED_SYMBOL,\n ASYNC_DEFAULTS_SYMBOL\n} from './constants';\nimport type Component from './component';\nimport {PropType} from './prop-types';\n\nconst EMPTY_PROPS = Object.freeze({});\n\n/** Internal state of an async prop */\ntype AsyncPropState = {\n /** The prop type definition from component.defaultProps, if exists */\n type: PropType | null;\n /** Supplied prop value (can be url/promise, not visible to the component) */\n lastValue: any;\n /** Resolved prop value (valid data, can be \"shown\" to the component) */\n resolvedValue: any;\n /** How many loads have been issued */\n pendingLoadCount: number;\n /** Latest resolved load, (earlier loads will be ignored) */\n resolvedLoadCount: number;\n};\n\nexport default class ComponentState {\n /** The component that this state instance belongs to. `null` if this state has been finalized. */\n component: ComponentT | null;\n onAsyncPropUpdated: (propName: string, value: any) => void;\n\n private asyncProps: Partial>;\n private oldProps: ComponentT['props'] | null;\n private oldAsyncProps: ComponentT['props'] | null;\n\n constructor(component: ComponentT) {\n this.component = component;\n this.asyncProps = {}; // Prop values that the layer sees\n this.onAsyncPropUpdated = () => {};\n this.oldProps = null; // Last props before update\n this.oldAsyncProps = null; // Last props before update, with async values copied.\n }\n\n finalize() {\n for (const propName in this.asyncProps) {\n const asyncProp = this.asyncProps[propName];\n if (asyncProp && asyncProp.type && asyncProp.type.release) {\n // Release any resources created by transforms\n asyncProp.type.release(\n asyncProp.resolvedValue,\n asyncProp.type,\n this.component as Component\n );\n }\n }\n this.asyncProps = {};\n this.component = null;\n this.resetOldProps();\n }\n\n /* Layer-facing props API */\n\n getOldProps(): ComponentT['props'] | typeof EMPTY_PROPS {\n return this.oldAsyncProps || this.oldProps || EMPTY_PROPS;\n }\n\n resetOldProps() {\n this.oldAsyncProps = null;\n this.oldProps = this.component ? this.component.props : null;\n }\n\n // Checks if a prop is overridden\n hasAsyncProp(propName: string): boolean {\n return propName in this.asyncProps;\n }\n\n // Returns value of an overriden prop\n getAsyncProp(propName: string): any {\n const asyncProp = this.asyncProps[propName];\n return asyncProp && asyncProp.resolvedValue;\n }\n\n isAsyncPropLoading(propName?: string): boolean {\n if (propName) {\n const asyncProp = this.asyncProps[propName];\n return Boolean(\n asyncProp &&\n asyncProp.pendingLoadCount > 0 &&\n asyncProp.pendingLoadCount !== asyncProp.resolvedLoadCount\n );\n }\n for (const key in this.asyncProps) {\n if (this.isAsyncPropLoading(key)) {\n return true;\n }\n }\n return false;\n }\n\n // Without changing the original prop value, swap out the data resolution under the hood\n reloadAsyncProp(propName: string, value: any) {\n this._watchPromise(propName, Promise.resolve(value));\n }\n\n // Updates all async/overridden props (when new props come in)\n // Checks if urls have changed, starts loading, or removes override\n setAsyncProps(props: ComponentT['props']) {\n this.component = (props[COMPONENT_SYMBOL] as ComponentT) || this.component;\n\n // NOTE: prop param and default values are only support for testing\n const resolvedValues = props[ASYNC_RESOLVED_SYMBOL] || {};\n const originalValues = props[ASYNC_ORIGINAL_SYMBOL] || props;\n const defaultValues = props[ASYNC_DEFAULTS_SYMBOL] || {};\n\n // TODO - use async props from the layer's prop types\n for (const propName in resolvedValues) {\n const value = resolvedValues[propName];\n this._createAsyncPropData(propName, defaultValues[propName]);\n this._updateAsyncProp(propName, value);\n // Use transformed value\n resolvedValues[propName] = this.getAsyncProp(propName);\n }\n\n for (const propName in originalValues) {\n const value = originalValues[propName];\n // Makes sure a record exists for this prop\n this._createAsyncPropData(propName, defaultValues[propName]);\n this._updateAsyncProp(propName, value);\n }\n }\n\n /* Placeholder methods for subclassing */\n\n protected _fetch(propName: string, url: string): any {\n return null;\n }\n\n protected _onResolve(propName: string, value: any) {} // eslint-disable-line @typescript-eslint/no-empty-function\n\n protected _onError(propName: string, error: Error) {} // eslint-disable-line @typescript-eslint/no-empty-function\n\n // Intercept strings (URLs) and Promises and activates loading and prop rewriting\n private _updateAsyncProp(propName: string, value: any) {\n if (!this._didAsyncInputValueChange(propName, value)) {\n return;\n }\n\n // interpret value string as url and start a new load tracked by a promise\n if (typeof value === 'string') {\n value = this._fetch(propName, value);\n }\n\n // interprets promise and track the \"loading\"\n if (value instanceof Promise) {\n this._watchPromise(propName, value);\n return;\n }\n\n if (isAsyncIterable(value)) {\n this._resolveAsyncIterable(propName, value); // eslint-disable-line @typescript-eslint/no-floating-promises\n return;\n }\n\n // else, normal, non-async value. Just store value for now\n this._setPropValue(propName, value);\n }\n\n // Whenever async props are changing, we need to make a copy of oldProps\n // otherwise the prop rewriting will affect the value both in props and oldProps.\n // While the copy is relatively expensive, this only happens on load completion.\n private _freezeAsyncOldProps() {\n if (!this.oldAsyncProps && this.oldProps) {\n // 1. inherit all synchronous props from oldProps\n // 2. reconfigure the async prop descriptors to fixed values\n this.oldAsyncProps = Object.create(this.oldProps);\n for (const propName in this.asyncProps) {\n Object.defineProperty(this.oldAsyncProps, propName, {\n enumerable: true,\n value: this.oldProps[propName]\n });\n }\n }\n }\n\n // Checks if an input value actually changed (to avoid reloading/rewatching promises/urls)\n private _didAsyncInputValueChange(propName: string, value: any): boolean {\n // @ts-ignore\n const asyncProp: AsyncPropState = this.asyncProps[propName];\n if (value === asyncProp.resolvedValue || value === asyncProp.lastValue) {\n return false;\n }\n asyncProp.lastValue = value;\n return true;\n }\n\n // Set normal, non-async value\n private _setPropValue(propName: string, value: any) {\n // Save the current value before overwriting so that diffProps can access both\n this._freezeAsyncOldProps();\n\n const asyncProp = this.asyncProps[propName];\n if (asyncProp) {\n value = this._postProcessValue(asyncProp, value);\n asyncProp.resolvedValue = value;\n asyncProp.pendingLoadCount++;\n asyncProp.resolvedLoadCount = asyncProp.pendingLoadCount;\n }\n }\n\n // Set a just resolved async value, calling onAsyncPropUpdates if value changes asynchronously\n private _setAsyncPropValue(propName: string, value: any, loadCount: number) {\n // Only update if loadCount is larger or equal to resolvedLoadCount\n // otherwise a more recent load has already completed\n const asyncProp = this.asyncProps[propName];\n if (asyncProp && loadCount >= asyncProp.resolvedLoadCount && value !== undefined) {\n // Save the current value before overwriting so that diffProps can access both\n this._freezeAsyncOldProps();\n\n asyncProp.resolvedValue = value;\n asyncProp.resolvedLoadCount = loadCount;\n\n // Call callback to inform listener\n this.onAsyncPropUpdated(propName, value);\n }\n }\n\n // Tracks a promise, sets the prop when loaded, handles load count\n private _watchPromise(propName: string, promise: Promise) {\n const asyncProp = this.asyncProps[propName];\n if (asyncProp) {\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n promise\n .then(data => {\n if (!this.component) {\n // This component state has been finalized\n return;\n }\n data = this._postProcessValue(asyncProp, data);\n this._setAsyncPropValue(propName, data, loadCount);\n this._onResolve(propName, data);\n })\n .catch(error => {\n this._onError(propName, error);\n });\n }\n }\n\n private async _resolveAsyncIterable(\n propName: string,\n iterable: AsyncIterable\n ): Promise {\n if (propName !== 'data') {\n // we only support data as async iterable\n this._setPropValue(propName, iterable);\n return;\n }\n\n const asyncProp = this.asyncProps[propName];\n if (!asyncProp) {\n return;\n }\n\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n let data: any[] = [];\n let count = 0;\n\n for await (const chunk of iterable) {\n if (!this.component) {\n // This component state has been finalized\n return;\n }\n\n // @ts-expect-error (2339) dataTransform is not decared in base component props\n const {dataTransform} = this.component.props;\n if (dataTransform) {\n data = dataTransform(chunk, data) as any[];\n } else {\n data = data.concat(chunk);\n }\n\n // Used by the default _dataDiff function\n Object.defineProperty(data, '__diff', {\n enumerable: false,\n value: [{startRow: count, endRow: data.length}]\n });\n\n count = data.length;\n this._setAsyncPropValue(propName, data, loadCount);\n }\n\n this._onResolve(propName, data);\n }\n\n // Give the app a chance to post process the loaded data\n private _postProcessValue(asyncProp: AsyncPropState, value: any) {\n const propType = asyncProp.type;\n if (propType && this.component) {\n if (propType.release) {\n propType.release(asyncProp.resolvedValue, propType, this.component);\n }\n if (propType.transform) {\n return propType.transform(value, propType, this.component);\n }\n }\n return value;\n }\n\n // Creating an asyncProp record if needed\n private _createAsyncPropData(propName: string, defaultValue: any) {\n const asyncProp = this.asyncProps[propName];\n if (!asyncProp) {\n const propTypes = this.component && this.component.props[PROP_TYPES_SYMBOL];\n // assert(defaultValue !== undefined);\n this.asyncProps[propName] = {\n type: propTypes && propTypes[propName],\n lastValue: null,\n resolvedValue: defaultValue,\n pendingLoadCount: 0,\n resolvedLoadCount: 0\n };\n }\n }\n}\n","import ComponentState from '../lifecycle/component-state';\n\nimport type Layer from './layer';\nimport type AttributeManager from './attribute/attribute-manager';\nimport type Viewport from '../viewports/viewport';\nimport type UniformTransitionManager from './uniform-transition-manager';\n\nexport type ChangeFlags = {\n // Primary changeFlags, can be strings stating reason for change\n dataChanged: string | false | {startRow: number; endRow?: number}[];\n propsChanged: string | false;\n updateTriggersChanged: Record | false;\n extensionsChanged: boolean;\n viewportChanged: boolean;\n stateChanged: boolean;\n\n // Derived changeFlags\n propsOrDataChanged: boolean;\n somethingChanged: boolean;\n};\n\nexport default class LayerState extends ComponentState {\n attributeManager: AttributeManager | null;\n needsRedraw: boolean;\n needsUpdate: boolean;\n /**\n * Sublayers rendered in a previous cycle\n */\n subLayers: Layer[] | null;\n /**\n * If the layer is using the shared instancedPickingColors buffer\n */\n usesPickingColorCache: boolean;\n /**\n * If the layer has picking buffer (pickingColors or instancePickingColors)\n */\n hasPickingBuffer?: boolean;\n /**\n * Dirty flags of the layer's props and state\n */\n changeFlags!: ChangeFlags;\n\n /** The last viewport rendered by this layer */\n viewport?: Viewport;\n\n uniformTransitions!: UniformTransitionManager;\n /** Populated during uniform transition to replace user-supplied values */\n propsInTransition?: LayerT['props'];\n\n constructor({\n attributeManager,\n layer\n }: {\n attributeManager: AttributeManager | null;\n layer: LayerT;\n }) {\n super(layer);\n this.attributeManager = attributeManager;\n this.needsRedraw = true;\n this.needsUpdate = true;\n this.subLayers = null;\n this.usesPickingColorCache = false;\n }\n\n get layer(): LayerT | null {\n return this.component;\n }\n\n /* Override base Component methods with Layer-specific handling */\n\n protected _fetch(propName, url: string) {\n const layer = this.layer;\n const fetch = layer?.props.fetch;\n if (fetch) {\n return fetch(url, {propName, layer});\n }\n return super._fetch(propName, url);\n }\n\n protected _onResolve(propName: string, value: any) {\n const layer = this.layer;\n if (layer) {\n const onDataLoad = layer.props.onDataLoad;\n if (propName === 'data' && onDataLoad) {\n onDataLoad(value, {propName, layer});\n }\n }\n }\n\n protected _onError(propName: string, error: Error) {\n const layer = this.layer;\n if (layer) {\n layer.raiseError(error, `loading ${propName} of ${this.layer}`);\n }\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable react/no-direct-mutation-state */\nimport {COORDINATE_SYSTEM} from './constants';\nimport AttributeManager from './attribute/attribute-manager';\nimport UniformTransitionManager from './uniform-transition-manager';\nimport {diffProps, validateProps} from '../lifecycle/props';\nimport {LIFECYCLE, Lifecycle} from '../lifecycle/constants';\nimport {count} from '../utils/count';\nimport log from '../utils/log';\nimport debug from '../debug';\nimport GL from '@luma.gl/constants';\nimport {withParameters, setParameters} from '@luma.gl/core';\nimport assert from '../utils/assert';\nimport memoize from '../utils/memoize';\nimport {mergeShaders} from '../utils/shader';\nimport {projectPosition, getWorldPosition} from '../shaderlib/project/project-functions';\nimport typedArrayManager from '../utils/typed-array-manager';\n\nimport Component from '../lifecycle/component';\nimport LayerState, {ChangeFlags} from './layer-state';\n\nimport {worldToPixels} from '@math.gl/web-mercator';\n\nimport {load} from '@loaders.gl/core';\n\nimport type {Loader} from '@loaders.gl/loader-utils';\nimport type {CoordinateSystem} from './constants';\nimport type Attribute from './attribute/attribute';\nimport type {Model} from '@luma.gl/engine';\nimport type {PickingInfo, GetPickingInfoParams} from './picking/pick-info';\nimport type Viewport from '../viewports/viewport';\nimport type {NumericArray} from '../types/types';\nimport type {DefaultProps} from '../lifecycle/prop-types';\nimport type {LayerData, LayerProps} from '../types/layer-props';\nimport type {LayerContext} from './layer-manager';\nimport type {BinaryAttribute} from './attribute/attribute';\n\nconst TRACE_CHANGE_FLAG = 'layer.changeFlag';\nconst TRACE_INITIALIZE = 'layer.initialize';\nconst TRACE_UPDATE = 'layer.update';\nconst TRACE_FINALIZE = 'layer.finalize';\nconst TRACE_MATCHED = 'layer.matched';\n\nconst MAX_PICKING_COLOR_CACHE_SIZE = 2 ** 24 - 1;\n\nconst EMPTY_ARRAY = Object.freeze([]);\n\n// Only compare the same two viewports once\nconst areViewportsEqual = memoize(\n ({oldViewport, viewport}: {oldViewport: Viewport; viewport: Viewport}): boolean => {\n return oldViewport.equals(viewport);\n }\n);\n\nlet pickingColorCache = new Uint8ClampedArray(0);\n\nconst defaultProps: DefaultProps = {\n // data: Special handling for null, see below\n data: {type: 'data', value: EMPTY_ARRAY, async: true},\n dataComparator: {type: 'function', value: null, optional: true},\n _dataDiff: {\n type: 'function',\n // @ts-ignore __diff is not defined on data\n value: data => data && data.__diff,\n optional: true\n },\n dataTransform: {type: 'function', value: null, optional: true},\n onDataLoad: {type: 'function', value: null, optional: true},\n onError: {type: 'function', value: null, optional: true},\n fetch: {\n type: 'function',\n value: (\n url: string,\n {\n propName,\n layer,\n loaders,\n loadOptions,\n signal\n }: {\n propName: string;\n layer: LayerT;\n loaders?: Loader[];\n loadOptions?: any;\n signal?: AbortSignal;\n }\n ) => {\n const {resourceManager} = layer.context;\n loadOptions = loadOptions || layer.getLoadOptions();\n loaders = loaders || layer.props.loaders;\n if (signal) {\n loadOptions = {\n ...loadOptions,\n fetch: {\n ...loadOptions?.fetch,\n signal\n }\n };\n }\n\n let inResourceManager = resourceManager.contains(url);\n\n if (!inResourceManager && !loadOptions) {\n // If there is no layer-specific load options, then attempt to cache this resource in the data manager\n resourceManager.add({resourceId: url, data: load(url, loaders), persistent: false});\n inResourceManager = true;\n }\n if (inResourceManager) {\n return resourceManager.subscribe({\n resourceId: url,\n onChange: data => layer.internalState?.reloadAsyncProp(propName, data),\n consumerId: layer.id,\n requestId: propName\n });\n }\n\n return load(url, loaders, loadOptions);\n }\n },\n updateTriggers: {}, // Update triggers: a core change detection mechanism in deck.gl\n\n visible: true,\n pickable: false,\n opacity: {type: 'number', min: 0, max: 1, value: 1},\n operation: 'draw',\n\n onHover: {type: 'function', value: null, optional: true},\n onClick: {type: 'function', value: null, optional: true},\n onDragStart: {type: 'function', value: null, optional: true},\n onDrag: {type: 'function', value: null, optional: true},\n onDragEnd: {type: 'function', value: null, optional: true},\n\n coordinateSystem: COORDINATE_SYSTEM.DEFAULT,\n coordinateOrigin: {type: 'array', value: [0, 0, 0], compare: true},\n modelMatrix: {type: 'array', value: null, compare: true, optional: true},\n wrapLongitude: false,\n positionFormat: 'XYZ',\n colorFormat: 'RGBA',\n\n parameters: {type: 'object', value: {}, optional: true, compare: 2},\n loadOptions: {type: 'object', value: null, optional: true, ignore: true},\n transitions: null,\n extensions: [],\n loaders: {type: 'array', value: [], optional: true, ignore: true},\n\n // Offset depth based on layer index to avoid z-fighting.\n // Negative values pull layer towards the camera\n // https://www.opengl.org/archives/resources/faq/technical/polygonoffset.htm\n getPolygonOffset: {\n type: 'function',\n value: ({layerIndex}) => [0, -layerIndex * 100]\n },\n\n // Selection/Highlighting\n highlightedObjectIndex: null,\n autoHighlight: false,\n highlightColor: {type: 'accessor', value: [0, 0, 128, 128]}\n};\n\nexport type UpdateParameters = {\n props: LayerT['props'];\n oldProps: LayerT['props'];\n context: LayerContext;\n changeFlags: ChangeFlags;\n};\n\nexport default abstract class Layer extends Component<\n PropsT & Required\n> {\n static defaultProps: DefaultProps = defaultProps;\n static layerName: string = 'Layer';\n\n static override get componentName() {\n return Object.prototype.hasOwnProperty.call(this, 'layerName') ? this.layerName : '';\n }\n\n internalState: LayerState | null = null;\n lifecycle: Lifecycle = LIFECYCLE.NO_STATE; // Helps track and debug the life cycle of the layers\n\n // context and state can technically be null before a layer is initialized/matched.\n // However, they are most extensively accessed in a layer's lifecycle methods, where they are always defined.\n // Checking for null state constantly in layer implementation is unnecessarily verbose.\n context!: LayerContext; // Will reference layer manager's context, contains state shared by layers\n state!: Record; // Will be set to the shared layer state object during layer matching\n\n parent: Layer | null = null;\n\n get root(): Layer {\n // eslint-disable-next-line\n let layer: Layer = this;\n while (layer.parent) {\n layer = layer.parent;\n }\n return layer;\n }\n\n toString(): string {\n const className = (this.constructor as typeof Layer).layerName || this.constructor.name;\n return `${className}({id: '${this.props.id}'})`;\n }\n\n // Public API for users\n\n /** Projects a point with current view state from the current layer's coordinate system to screen */\n project(xyz: number[]): number[] {\n assert(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n\n const worldPosition = getWorldPosition(xyz, {\n viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem\n });\n const [x, y, z] = worldToPixels(worldPosition, viewport.pixelProjectionMatrix);\n return xyz.length === 2 ? [x, y] : [x, y, z];\n }\n\n /** Unprojects a screen pixel to the current view's default coordinate system\n Note: this does not reverse `project`. */\n unproject(xy: number[]): number[] {\n assert(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n return viewport.unproject(xy);\n }\n\n /** Projects a point with current view state from the current layer's coordinate system to the world space */\n projectPosition(\n xyz: number[],\n params?: {\n /** The viewport to use */\n viewport?: Viewport;\n /** The coordinate system that the supplied position is in. Default to the same as `coordinateSystem`. */\n fromCoordinateSystem?: CoordinateSystem;\n /** The coordinate origin that the supplied position is in. Default to the same as `coordinateOrigin`. */\n fromCoordinateOrigin?: [number, number, number];\n /** Whether to apply offset mode automatically as does the project shader module.\n * Offset mode places the origin of the common space at the given viewport's center. It is used in some use cases\n * to improve precision in the vertex shader due to the fp32 float limitation.\n * Use `autoOffset:false` if the returned position should not be dependent on the current viewport.\n * Default `true` */\n autoOffset?: boolean;\n }\n ): [number, number, number] {\n assert(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n\n return projectPosition(xyz, {\n viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem,\n ...params\n });\n }\n\n // Public API for custom layer implementation\n\n /** `true` if this layer renders other layers */\n get isComposite(): boolean {\n return false;\n }\n\n /** Updates selected state members and marks the layer for redraw */\n setState(partialState: any): void {\n this.setChangeFlags({stateChanged: true});\n Object.assign(this.state, partialState);\n this.setNeedsRedraw();\n }\n\n /** Sets the redraw flag for this layer, will trigger a redraw next animation frame */\n setNeedsRedraw(): void {\n if (this.internalState) {\n this.internalState.needsRedraw = true;\n }\n }\n\n /** Mark this layer as needs a deep update */\n setNeedsUpdate() {\n if (this.internalState) {\n this.context.layerManager.setNeedsUpdate(String(this));\n this.internalState.needsUpdate = true;\n }\n }\n\n /** Returns true if all async resources are loaded */\n get isLoaded(): boolean {\n return this.internalState ? !this.internalState.isAsyncPropLoading() : false;\n }\n\n /** Returns true if using shader-based WGS84 longitude wrapping */\n get wrapLongitude(): boolean {\n return this.props.wrapLongitude;\n }\n\n /** @deprecated Returns true if the layer is visible in the picking pass */\n isPickable(): boolean {\n return this.props.pickable && this.props.visible;\n }\n\n /** Returns an array of models used by this layer, can be overriden by layer subclass */\n getModels(): Model[] {\n return (this.state && (this.state.models || (this.state.model && [this.state.model]))) || [];\n }\n\n /** Update shader module parameters */\n setModuleParameters(moduleParameters: any): void {\n for (const model of this.getModels()) {\n model.updateModuleSettings(moduleParameters);\n }\n }\n\n /** Returns the attribute manager of this layer */\n getAttributeManager(): AttributeManager | null {\n return this.internalState && this.internalState.attributeManager;\n }\n\n /** Returns the most recent layer that matched to this state\n (When reacting to an async event, this layer may no longer be the latest) */\n getCurrentLayer(): Layer | null {\n return this.internalState && this.internalState.layer;\n }\n\n /** Returns the default parse options for async props */\n getLoadOptions(): any {\n return this.props.loadOptions;\n }\n\n use64bitPositions(): boolean {\n const {coordinateSystem} = this.props;\n return (\n coordinateSystem === COORDINATE_SYSTEM.DEFAULT ||\n coordinateSystem === COORDINATE_SYSTEM.LNGLAT ||\n coordinateSystem === COORDINATE_SYSTEM.CARTESIAN\n );\n }\n\n // Event handling\n onHover(info: PickingInfo, pickingEvent): boolean {\n if (this.props.onHover) {\n return this.props.onHover(info, pickingEvent) || false;\n }\n return false;\n }\n\n onClick(info: PickingInfo, pickingEvent): boolean {\n if (this.props.onClick) {\n return this.props.onClick(info, pickingEvent) || false;\n }\n return false;\n }\n\n // Returns the picking color that doesn't match any subfeature\n // Use if some graphics do not belong to any pickable subfeature\n // @return {Array} - a black color\n nullPickingColor() {\n return [0, 0, 0];\n }\n\n // Returns the picking color that doesn't match any subfeature\n // Use if some graphics do not belong to any pickable subfeature\n encodePickingColor(i, target: number[] = []): number[] {\n target[0] = (i + 1) & 255;\n target[1] = ((i + 1) >> 8) & 255;\n target[2] = (((i + 1) >> 8) >> 8) & 255;\n return target;\n }\n\n // Returns the index corresponding to a picking color that doesn't match any subfeature\n // @param {Uint8Array} color - color array to be decoded\n // @return {Array} - the decoded picking color\n decodePickingColor(color) {\n assert(color instanceof Uint8Array);\n const [i1, i2, i3] = color;\n // 1 was added to seperate from no selection\n const index = i1 + i2 * 256 + i3 * 65536 - 1;\n return index;\n }\n\n /** Deduces number of instances. Intention is to support:\n - Explicit setting of numInstances\n - Auto-deduction for ES6 containers that define a size member\n - Auto-deduction for Classic Arrays via the built-in length attribute\n - Auto-deduction via arrays */\n getNumInstances(): number {\n // First Check if app has provided an explicit value\n if (Number.isFinite(this.props.numInstances)) {\n return this.props.numInstances as number;\n }\n\n // Second check if the layer has set its own value\n if (this.state && this.state.numInstances !== undefined) {\n return this.state.numInstances;\n }\n\n // Use container library to get a count for any ES6 container or object\n return count(this.props.data);\n }\n\n /** Buffer layout describes how many attribute values are packed for each data object\n The default (null) is one value each object.\n Some data formats (e.g. paths, polygons) have various length. Their buffer layout\n is in the form of [L0, L1, L2, ...] */\n getStartIndices(): NumericArray | null {\n // First Check if startIndices is provided as an explicit value\n if (this.props.startIndices) {\n return this.props.startIndices;\n }\n\n // Second check if the layer has set its own value\n if (this.state && this.state.startIndices) {\n return this.state.startIndices;\n }\n\n return null;\n }\n\n // Default implementation\n getBounds(): [number[], number[]] | null {\n return this.getAttributeManager()?.getBounds(['positions', 'instancePositions']);\n }\n\n // / LIFECYCLE METHODS - overridden by the layer subclasses\n\n /** Called once to set up the initial state. Layers can create WebGL resources here. */\n abstract initializeState(context: LayerContext): void;\n\n getShaders(shaders: any): any {\n for (const extension of this.props.extensions) {\n shaders = mergeShaders(shaders, extension.getShaders.call(this, extension));\n }\n return shaders;\n }\n\n /** Controls if updateState should be called. By default returns true if any prop has changed */\n shouldUpdateState(params: UpdateParameters>): boolean {\n return params.changeFlags.propsOrDataChanged;\n }\n\n /** Default implementation, all attributes will be invalidated and updated when data changes */\n // eslint-disable-next-line complexity\n updateState(params: UpdateParameters>): void {\n const attributeManager = this.getAttributeManager();\n const {dataChanged} = params.changeFlags;\n if (dataChanged && attributeManager) {\n if (Array.isArray(dataChanged)) {\n // is partial update\n for (const dataRange of dataChanged) {\n attributeManager.invalidateAll(dataRange);\n }\n } else {\n attributeManager.invalidateAll();\n }\n }\n\n // Enable/disable picking buffer\n if (attributeManager) {\n const {props} = params;\n const hasPickingBuffer = this.internalState!.hasPickingBuffer;\n const needsPickingBuffer =\n Number.isInteger(props.highlightedObjectIndex) ||\n props.pickable ||\n props.extensions.some(extension => extension.getNeedsPickingBuffer.call(this, extension));\n\n // Only generate picking buffer if needed\n if (hasPickingBuffer !== needsPickingBuffer) {\n this.internalState!.hasPickingBuffer = needsPickingBuffer;\n const {pickingColors, instancePickingColors} = attributeManager.attributes;\n const pickingColorsAttribute = pickingColors || instancePickingColors;\n if (pickingColorsAttribute) {\n if (needsPickingBuffer && pickingColorsAttribute.constant) {\n pickingColorsAttribute.constant = false;\n attributeManager.invalidate(pickingColorsAttribute.id);\n }\n if (!pickingColorsAttribute.value && !needsPickingBuffer) {\n pickingColorsAttribute.constant = true;\n pickingColorsAttribute.value = [0, 0, 0];\n }\n }\n }\n }\n }\n\n /** Called once when layer is no longer matched and state will be discarded. Layers can destroy WebGL resources here. */\n finalizeState(context: LayerContext): void {\n for (const model of this.getModels()) {\n model.delete();\n }\n const attributeManager = this.getAttributeManager();\n if (attributeManager) {\n attributeManager.finalize();\n }\n if (this.context) {\n this.context.resourceManager.unsubscribe({consumerId: this.id});\n }\n if (this.internalState) {\n this.internalState.uniformTransitions.clear();\n this.internalState.finalize();\n }\n }\n\n // If state has a model, draw it with supplied uniforms\n draw(opts) {\n for (const model of this.getModels()) {\n model.draw(opts);\n }\n }\n\n // called to populate the info object that is passed to the event handler\n // @return null to cancel event\n getPickingInfo({info, mode, sourceLayer}: GetPickingInfoParams) {\n const {index} = info;\n\n if (index >= 0) {\n // If props.data is an indexable array, get the object\n if (Array.isArray(this.props.data)) {\n info.object = this.props.data[index];\n }\n }\n\n return info;\n }\n\n // END LIFECYCLE METHODS\n\n // / INTERNAL METHODS - called by LayerManager, DeckRenderer and DeckPicker\n\n /** (Internal) Propagate an error event through the system */\n raiseError(error: Error, message: string): void {\n if (message) {\n error.message = `${message}: ${error.message}`;\n }\n if (!this.props.onError?.(error)) {\n this.context?.onError?.(error, this);\n }\n }\n\n /** (Internal) Checks if this layer needs redraw */\n getNeedsRedraw(\n opts: {\n /** Reset redraw flags to false after the check */\n clearRedrawFlags: boolean;\n } = {clearRedrawFlags: false}\n ): string | false {\n return this._getNeedsRedraw(opts);\n }\n\n /** (Internal) Checks if this layer needs a deep update */\n needsUpdate(): boolean {\n if (!this.internalState) {\n return false;\n }\n\n // Call subclass lifecycle method\n return (\n this.internalState.needsUpdate ||\n this.hasUniformTransition() ||\n this.shouldUpdateState(this._getUpdateParams())\n );\n // End lifecycle method\n }\n\n /** Checks if this layer has ongoing uniform transition */\n hasUniformTransition(): boolean {\n return this.internalState?.uniformTransitions.active || false;\n }\n\n /** Called when this layer is rendered into the given viewport */\n activateViewport(viewport: Viewport): void {\n if (!this.internalState) {\n return;\n }\n\n const oldViewport = this.internalState.viewport;\n this.internalState.viewport = viewport;\n\n if (!oldViewport || !areViewportsEqual({oldViewport, viewport})) {\n this.setChangeFlags({viewportChanged: true});\n\n if (this.isComposite) {\n if (this.needsUpdate()) {\n // Composite layers may add/remove sublayers on viewport change\n // Because we cannot change the layers list during a draw cycle, we don't want to update sublayers right away\n // This will not call update immediately, but mark the layerManager as needs update on the next frame\n this.setNeedsUpdate();\n }\n } else {\n this._update();\n }\n }\n }\n\n /** Default implementation of attribute invalidation, can be redefined */\n protected invalidateAttribute(name = 'all'): void {\n const attributeManager = this.getAttributeManager();\n if (!attributeManager) {\n return;\n }\n\n if (name === 'all') {\n attributeManager.invalidateAll();\n } else {\n attributeManager.invalidate(name);\n }\n }\n\n /** Send updated attributes to the WebGL model */\n protected updateAttributes(changedAttributes: {[id: string]: Attribute}) {\n for (const model of this.getModels()) {\n this._setModelAttributes(model, changedAttributes);\n }\n }\n\n /** Recalculate any attributes if needed */\n protected _updateAttributes(): void {\n const attributeManager = this.getAttributeManager();\n if (!attributeManager) {\n return;\n }\n const props = this.props;\n\n // Figure out data length\n const numInstances = this.getNumInstances();\n const startIndices = this.getStartIndices();\n\n attributeManager.update({\n data: props.data,\n numInstances,\n startIndices,\n props,\n transitions: props.transitions,\n // @ts-ignore (TS2339) property attribute is not present on some acceptable data types\n buffers: props.data.attributes,\n context: this\n });\n\n const changedAttributes = attributeManager.getChangedAttributes({clearChangedFlags: true});\n this.updateAttributes(changedAttributes);\n }\n\n /** Update attribute transitions. This is called in drawLayer, no model updates required. */\n private _updateAttributeTransition() {\n const attributeManager = this.getAttributeManager();\n if (attributeManager) {\n attributeManager.updateTransition();\n }\n }\n\n /** Update uniform (prop) transitions. This is called in updateState, may result in model updates. */\n private _updateUniformTransition(): Layer['props'] {\n // @ts-ignore (TS2339) internalState is alwasy defined when this method is called\n const {uniformTransitions} = this.internalState;\n if (uniformTransitions.active) {\n // clone props\n const propsInTransition = uniformTransitions.update();\n const props = Object.create(this.props);\n for (const key in propsInTransition) {\n Object.defineProperty(props, key, {value: propsInTransition[key]});\n }\n return props;\n }\n return this.props;\n }\n\n /** Updater for the automatically populated instancePickingColors attribute */\n protected calculateInstancePickingColors(\n attribute: Attribute,\n {numInstances}: {numInstances: number}\n ) {\n if (attribute.constant) {\n return;\n }\n\n // calculateInstancePickingColors always generates the same sequence.\n // pickingColorCache saves the largest generated sequence for reuse\n const cacheSize = Math.floor(pickingColorCache.length / 3);\n\n // Record when using the picking buffer cache, so that layers can always point at the most recently allocated cache\n // @ts-ignore (TS2531) internalState is always defined when this method is called\n this.internalState.usesPickingColorCache = true;\n\n if (cacheSize < numInstances) {\n if (numInstances > MAX_PICKING_COLOR_CACHE_SIZE) {\n log.warn(\n 'Layer has too many data objects. Picking might not be able to distinguish all objects.'\n )();\n }\n\n pickingColorCache = typedArrayManager.allocate(pickingColorCache, numInstances, {\n size: 3,\n copy: true,\n maxCount: Math.max(numInstances, MAX_PICKING_COLOR_CACHE_SIZE)\n });\n\n // If the attribute is larger than the cache, resize the cache and populate the missing chunk\n const newCacheSize = Math.floor(pickingColorCache.length / 3);\n const pickingColor = [];\n for (let i = cacheSize; i < newCacheSize; i++) {\n this.encodePickingColor(i, pickingColor);\n pickingColorCache[i * 3 + 0] = pickingColor[0];\n pickingColorCache[i * 3 + 1] = pickingColor[1];\n pickingColorCache[i * 3 + 2] = pickingColor[2];\n }\n }\n\n attribute.value = pickingColorCache.subarray(0, numInstances * 3);\n }\n\n /** Apply changed attributes to */\n protected _setModelAttributes(\n model: Model,\n changedAttributes: {\n [id: string]: Attribute;\n }\n ) {\n const attributeManager = this.getAttributeManager();\n // @ts-ignore luma.gl type issue\n const excludeAttributes = model.userData.excludeAttributes || {};\n // @ts-ignore (TS2531) this method is only called internally with attributeManager defined\n const shaderAttributes = attributeManager.getShaderAttributes(\n changedAttributes,\n excludeAttributes\n );\n\n model.setAttributes(shaderAttributes);\n }\n\n /** (Internal) Sets the picking color at the specified index to null picking color. Used for multi-depth picking.\n This method may be overriden by layer implementations */\n disablePickingIndex(objectIndex: number) {\n const data = this.props.data as LayerData;\n if (!('attributes' in data)) {\n this._disablePickingIndex(objectIndex);\n return;\n }\n\n // @ts-ignore (TS2531) this method is only called internally with attributeManager defined\n const {pickingColors, instancePickingColors} = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n const externalColorAttribute =\n colors && data.attributes && (data.attributes[colors.id] as BinaryAttribute);\n if (externalColorAttribute && externalColorAttribute.value) {\n const values = externalColorAttribute.value;\n const objectColor = this.encodePickingColor(objectIndex);\n for (let index = 0; index < data.length; index++) {\n const i = colors.getVertexOffset(index);\n if (\n values[i] === objectColor[0] &&\n values[i + 1] === objectColor[1] &&\n values[i + 2] === objectColor[2]\n ) {\n this._disablePickingIndex(index);\n }\n }\n } else {\n this._disablePickingIndex(objectIndex);\n }\n }\n\n // TODO - simplify subclassing interface\n protected _disablePickingIndex(objectIndex: number): void {\n // @ts-ignore (TS2531) this method is only called internally with attributeManager defined\n const {pickingColors, instancePickingColors} = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n if (!colors) {\n return;\n }\n\n const start = colors.getVertexOffset(objectIndex);\n const end = colors.getVertexOffset(objectIndex + 1);\n\n // Fill the sub buffer with 0s\n colors.buffer.subData({\n data: new Uint8Array(end - start),\n offset: start // 1 byte per element\n });\n }\n\n /** (Internal) Re-enable all picking indices after multi-depth picking */\n restorePickingColors(): void {\n // @ts-ignore (TS2531) this method is only called internally with attributeManager defined\n const {pickingColors, instancePickingColors} = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n if (!colors) {\n return;\n }\n // The picking color cache may have been freed and then reallocated. This ensures we read from the currently allocated cache.\n if (\n // @ts-ignore (TS2531) this method is only called internally with internalState defined\n this.internalState.usesPickingColorCache &&\n (colors.value as Uint8ClampedArray).buffer !== pickingColorCache.buffer\n ) {\n colors.value = pickingColorCache.subarray(0, (colors.value as Uint8ClampedArray).length);\n }\n colors.updateSubBuffer({startOffset: 0});\n }\n\n /* eslint-disable max-statements */\n /* (Internal) Called by layer manager when a new layer is found */\n _initialize() {\n assert(!this.internalState); // finalized layer cannot be reused\n assert(Number.isFinite(this.props.coordinateSystem)); // invalid coordinateSystem\n\n debug(TRACE_INITIALIZE, this);\n\n const attributeManager = this._getAttributeManager();\n\n if (attributeManager) {\n // All instanced layers get instancePickingColors attribute by default\n // Their shaders can use it to render a picking scene\n // TODO - this slightly slows down non instanced layers\n attributeManager.addInstanced({\n instancePickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n // Updaters are always called with `this` pointing to the layer\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateInstancePickingColors\n }\n });\n }\n\n this.internalState = new LayerState({\n attributeManager,\n layer: this\n });\n this._clearChangeFlags(); // populate this.internalState.changeFlags\n\n this.state = {};\n // for backwards compatibility with older layers\n // TODO - remove in next release\n /* eslint-disable accessor-pairs */\n Object.defineProperty(this.state, 'attributeManager', {\n get: () => {\n log.deprecated('layer.state.attributeManager', 'layer.getAttributeManager()')();\n return attributeManager;\n }\n });\n /* eslint-enable accessor-pairs */\n\n this.internalState.uniformTransitions = new UniformTransitionManager(this.context.timeline);\n this.internalState.onAsyncPropUpdated = this._onAsyncPropUpdated.bind(this);\n\n // Ensure any async props are updated\n this.internalState.setAsyncProps(this.props);\n\n // Call subclass lifecycle methods\n this.initializeState(this.context);\n\n // Initialize extensions\n for (const extension of this.props.extensions) {\n extension.initializeState.call(this, this.context, extension);\n }\n // End subclass lifecycle methods\n\n // initializeState callback tends to clear state\n this.setChangeFlags({\n dataChanged: 'init',\n propsChanged: 'init',\n viewportChanged: true,\n extensionsChanged: true\n });\n\n this._update();\n }\n\n /** (Internal) Called by layer manager to transfer state from an old layer */\n _transferState(oldLayer: Layer): void {\n debug(TRACE_MATCHED, this, this === oldLayer);\n\n const {state, internalState} = oldLayer;\n\n if (this === oldLayer) {\n return;\n }\n\n // Move internalState\n this.internalState = internalState as LayerState;\n\n // Move state\n this.state = state;\n // We keep the state ref on old layers to support async actions\n // oldLayer.state = null;\n\n // Ensure any async props are updated\n this.internalState.setAsyncProps(this.props);\n\n this._diffProps(this.props, this.internalState.getOldProps() as Layer['props']);\n }\n\n /** (Internal) Called by layer manager when a new layer is added or an existing layer is matched with a new instance */\n _update(): void {\n // Call subclass lifecycle method\n const stateNeedsUpdate = this.needsUpdate();\n // End lifecycle method\n debug(TRACE_UPDATE, this, stateNeedsUpdate);\n\n if (!stateNeedsUpdate) {\n return;\n }\n\n const currentProps = this.props;\n const context = this.context;\n const internalState = this.internalState as LayerState;\n\n const currentViewport = context.viewport;\n const propsInTransition = this._updateUniformTransition();\n internalState.propsInTransition = propsInTransition;\n // Overwrite this.context.viewport during update to use the last activated viewport on this layer\n // In multi-view applications, a layer may only be drawn in one of the views\n // Which would make the \"active\" viewport different from the shared context\n context.viewport = internalState.viewport || currentViewport;\n // Overwrite this.props during update to use in-transition prop values\n this.props = propsInTransition;\n\n try {\n const updateParams = this._getUpdateParams();\n const oldModels = this.getModels();\n\n // Safely call subclass lifecycle methods\n if (context.gl) {\n this.updateState(updateParams);\n } else {\n try {\n this.updateState(updateParams);\n } catch (error) {\n // ignore error if gl context is missing\n }\n }\n // Execute extension updates\n for (const extension of this.props.extensions) {\n extension.updateState.call(this, updateParams, extension);\n }\n\n const modelChanged = this.getModels()[0] !== oldModels[0];\n this._postUpdate(updateParams, modelChanged);\n // End subclass lifecycle methods\n } finally {\n // Restore shared context\n context.viewport = currentViewport;\n this.props = currentProps;\n this._clearChangeFlags();\n internalState.needsUpdate = false;\n internalState.resetOldProps();\n }\n }\n /* eslint-enable max-statements */\n\n /** (Internal) Called by manager when layer is about to be disposed \n Note: not guaranteed to be called on application shutdown */\n _finalize(): void {\n debug(TRACE_FINALIZE, this);\n\n // Call subclass lifecycle method\n this.finalizeState(this.context);\n // Finalize extensions\n for (const extension of this.props.extensions) {\n extension.finalizeState.call(this, this.context, extension);\n }\n }\n\n // Calculates uniforms\n _drawLayer({\n moduleParameters = null,\n uniforms = {},\n parameters = {}\n }: {\n moduleParameters: any;\n uniforms: any;\n parameters: any;\n }): void {\n this._updateAttributeTransition();\n\n const currentProps = this.props;\n const context = this.context;\n // Overwrite this.props during redraw to use in-transition prop values\n // `internalState.propsInTransition` could be missing if `updateState` failed\n // @ts-ignore (TS2339) internalState is alwasy defined when this method is called\n this.props = this.internalState.propsInTransition || currentProps;\n\n const opacity = this.props.opacity;\n // apply gamma to opacity to make it visually \"linear\"\n uniforms.opacity = Math.pow(opacity, 1 / 2.2);\n\n try {\n // TODO/ib - hack move to luma Model.draw\n if (moduleParameters) {\n this.setModuleParameters(moduleParameters);\n }\n\n // Apply polygon offset to avoid z-fighting\n // TODO - move to draw-layers\n const {getPolygonOffset} = this.props;\n const offsets = (getPolygonOffset && getPolygonOffset(uniforms)) || [0, 0];\n\n setParameters(context.gl, {polygonOffset: offsets});\n\n // Call subclass lifecycle method\n withParameters(context.gl, parameters, () => {\n const opts = {moduleParameters, uniforms, parameters, context};\n\n // extensions\n for (const extension of this.props.extensions) {\n extension.draw.call(this, opts, extension);\n }\n\n this.draw(opts);\n });\n } finally {\n this.props = currentProps;\n }\n\n // End lifecycle method\n }\n\n // Helper methods\n /** Returns the current change flags */\n getChangeFlags(): ChangeFlags | undefined {\n return this.internalState?.changeFlags;\n }\n\n /* eslint-disable complexity */\n /** Dirty some change flags, will be handled by updateLayer */\n setChangeFlags(flags: Partial): void {\n if (!this.internalState) {\n return;\n }\n const {changeFlags} = this.internalState;\n\n /* eslint-disable no-fallthrough, max-depth */\n for (const key in flags) {\n if (flags[key]) {\n let flagChanged = false;\n switch (key) {\n case 'dataChanged':\n // changeFlags.dataChanged may be `false`, a string (reason) or an array of ranges\n const dataChangedReason = flags[key];\n const prevDataChangedReason = changeFlags[key];\n if (dataChangedReason && Array.isArray(prevDataChangedReason)) {\n // Merge partial updates\n changeFlags.dataChanged = Array.isArray(dataChangedReason)\n ? prevDataChangedReason.concat(dataChangedReason)\n : dataChangedReason;\n flagChanged = true;\n }\n\n default:\n if (!changeFlags[key]) {\n changeFlags[key] = flags[key];\n flagChanged = true;\n }\n }\n if (flagChanged) {\n debug(TRACE_CHANGE_FLAG, this, key, flags);\n }\n }\n }\n /* eslint-enable no-fallthrough, max-depth */\n\n // Update composite flags\n const propsOrDataChanged = Boolean(\n changeFlags.dataChanged ||\n changeFlags.updateTriggersChanged ||\n changeFlags.propsChanged ||\n changeFlags.extensionsChanged\n );\n changeFlags.propsOrDataChanged = propsOrDataChanged;\n changeFlags.somethingChanged =\n propsOrDataChanged || changeFlags.viewportChanged || changeFlags.stateChanged;\n }\n /* eslint-enable complexity */\n\n /** Clear all changeFlags, typically after an update */\n private _clearChangeFlags(): void {\n // @ts-ignore TS2531 this method can only be called internally with internalState assigned\n this.internalState.changeFlags = {\n dataChanged: false,\n propsChanged: false,\n updateTriggersChanged: false,\n viewportChanged: false,\n stateChanged: false,\n extensionsChanged: false,\n propsOrDataChanged: false,\n somethingChanged: false\n };\n }\n\n /** Compares the layers props with old props from a matched older layer\n and extracts change flags that describe what has change so that state\n can be update correctly with minimal effort */\n private _diffProps(newProps: Layer['props'], oldProps: Layer['props']) {\n const changeFlags = diffProps(newProps, oldProps);\n\n // iterate over changedTriggers\n if (changeFlags.updateTriggersChanged) {\n for (const key in changeFlags.updateTriggersChanged) {\n if (changeFlags.updateTriggersChanged[key]) {\n this.invalidateAttribute(key);\n }\n }\n }\n\n // trigger uniform transitions\n if (changeFlags.transitionsChanged) {\n for (const key in changeFlags.transitionsChanged) {\n // prop changed and transition is enabled\n // @ts-ignore (TS2531) internalState is always defined when this method is called\n this.internalState.uniformTransitions.add(\n key,\n oldProps[key],\n newProps[key],\n newProps.transitions?.[key]\n );\n }\n }\n\n return this.setChangeFlags(changeFlags);\n }\n\n /** (Internal) called by layer manager to perform extra props validation (in development only) */\n validateProps(): void {\n validateProps(this.props);\n }\n\n /** (Internal) Called by deck picker when the hovered object changes to update the auto highlight */\n updateAutoHighlight(info: PickingInfo): void {\n if (this.props.autoHighlight && !Number.isInteger(this.props.highlightedObjectIndex)) {\n this._updateAutoHighlight(info);\n }\n }\n\n // May be overriden by subclasses\n\n // TODO - simplify subclassing interface\n /** Update picking module parameters to highlight the hovered object */\n protected _updateAutoHighlight(info: PickingInfo): void {\n const pickingModuleParameters: any = {\n pickingSelectedColor: info.picked ? info.color : null\n };\n const {highlightColor} = this.props;\n if (info.picked && typeof highlightColor === 'function') {\n pickingModuleParameters.pickingHighlightColor = highlightColor(info);\n }\n this.setModuleParameters(pickingModuleParameters);\n // setModuleParameters does not trigger redraw\n this.setNeedsRedraw();\n }\n\n /** Create new attribute manager */\n protected _getAttributeManager(): AttributeManager | null {\n const context = this.context;\n return new AttributeManager(context.gl, {\n id: this.props.id,\n stats: context.stats,\n timeline: context.timeline\n });\n }\n\n // Private methods\n\n /** Called after updateState to perform common tasks */\n protected _postUpdate(updateParams: UpdateParameters>, forceUpdate: boolean) {\n const {props, oldProps} = updateParams;\n\n this.setNeedsRedraw();\n // Check if attributes need recalculation\n this._updateAttributes();\n\n // Note: Automatic instance count update only works for single layers\n const {model} = this.state;\n model?.setInstanceCount(this.getNumInstances());\n\n // Set picking module parameters to match props\n const {autoHighlight, highlightedObjectIndex, highlightColor} = props;\n if (\n forceUpdate ||\n oldProps.autoHighlight !== autoHighlight ||\n oldProps.highlightedObjectIndex !== highlightedObjectIndex ||\n oldProps.highlightColor !== highlightColor\n ) {\n const parameters: any = {};\n if (!autoHighlight) {\n parameters.pickingSelectedColor = null;\n }\n if (Array.isArray(highlightColor)) {\n parameters.pickingHighlightColor = highlightColor;\n }\n\n // highlightedObjectIndex will overwrite any settings from auto highlighting.\n // Do not reset unless the value has changed.\n if (forceUpdate || highlightedObjectIndex !== oldProps.highlightedObjectIndex) {\n parameters.pickingSelectedColor =\n Number.isFinite(highlightedObjectIndex) && (highlightedObjectIndex as number) >= 0\n ? this.encodePickingColor(highlightedObjectIndex)\n : null;\n }\n\n this.setModuleParameters(parameters);\n }\n }\n\n private _getUpdateParams(): UpdateParameters> {\n return {\n props: this.props,\n // @ts-ignore TS2531 this method can only be called internally with internalState assigned\n oldProps: this.internalState.getOldProps() as PropsT,\n context: this.context,\n // @ts-ignore TS2531 this method can only be called internally with internalState assigned\n changeFlags: this.internalState.changeFlags\n };\n }\n\n /** Checks state of attributes and model */\n private _getNeedsRedraw(opts: {clearRedrawFlags: boolean}): string | false {\n // this method may be called by the render loop as soon a the layer\n // has been created, so guard against uninitialized state\n if (!this.internalState) {\n return false;\n }\n\n let redraw: string | false = false;\n redraw = redraw || (this.internalState.needsRedraw && this.id);\n\n // TODO - is attribute manager needed? - Model should be enough.\n const attributeManager = this.getAttributeManager();\n const attributeManagerNeedsRedraw = attributeManager\n ? attributeManager.getNeedsRedraw(opts)\n : false;\n redraw = redraw || attributeManagerNeedsRedraw;\n\n if (redraw) {\n for (const extension of this.props.extensions) {\n extension.onNeedsRedraw.call(this, extension);\n }\n }\n\n this.internalState.needsRedraw = this.internalState.needsRedraw && !opts.clearRedrawFlags;\n return redraw;\n }\n\n /** Callback when asyn prop is loaded */\n private _onAsyncPropUpdated(): void {\n // @ts-ignore TS2531 this method can only be called internally with internalState assigned\n this._diffProps(this.props, this.internalState.getOldProps());\n this.setNeedsUpdate();\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport Layer, {UpdateParameters} from './layer';\nimport debug from '../debug';\nimport {flatten} from '../utils/flatten';\n\nimport type AttributeManager from './attribute/attribute-manager';\nimport type {PickingInfo, GetPickingInfoParams} from './picking/pick-info';\nimport type {FilterContext} from '../passes/layers-pass';\nimport type {LayersList, LayerContext} from './layer-manager';\nimport type {CompositeLayerProps, Accessor, AccessorContext} from '../types/layer-props';\nimport {ConstructorOf} from '../types/types';\nimport {PROP_TYPES_SYMBOL} from '../lifecycle/constants';\n\nconst TRACE_RENDER_LAYERS = 'compositeLayer.renderLayers';\n\nexport default abstract class CompositeLayer extends Layer<\n PropsT & Required\n> {\n static layerName: string = 'CompositeLayer';\n\n /** `true` if this layer renders other layers */\n get isComposite(): boolean {\n return true;\n }\n\n /** Returns true if all async resources are loaded */\n get isLoaded(): boolean {\n return super.isLoaded && this.getSubLayers().every(layer => layer.isLoaded);\n }\n\n /** Return last rendered sub layers */\n getSubLayers(): Layer[] {\n return (this.internalState && this.internalState.subLayers) || [];\n }\n\n // initializeState is usually not needed for composite layers\n // Provide empty definition to disable check for missing definition\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n initializeState(context: LayerContext): void {}\n\n /** Updates selected state members and marks the composite layer to need rerender */\n setState(updateObject: any): void {\n super.setState(updateObject);\n // Trigger a layer update\n // Although conceptually layer.draw and compositeLayer.renderLayers are equivalent,\n // they are executed during different lifecycles.\n // draw can be called without calling updateState (e.g. most viewport changes),\n // while renderLayers can only be called during a recursive layer update.\n this.setNeedsUpdate();\n }\n\n /** called to augment the info object that is bubbled up from a sublayer\n override Layer.getPickingInfo() because decoding / setting uniform do\n not apply to a composite layer. */\n getPickingInfo({info}: GetPickingInfoParams): PickingInfo {\n const {object} = info;\n const isDataWrapped =\n object && object.__source && object.__source.parent && object.__source.parent.id === this.id;\n\n if (!isDataWrapped) {\n return info;\n }\n\n // override object with picked data\n info.object = object.__source.object;\n info.index = object.__source.index;\n\n return info;\n }\n\n // Implement to generate subLayers\n abstract renderLayers(): Layer | null | LayersList;\n\n /**\n * Filters sub layers at draw time. Return true if the sub layer should be drawn.\n */\n filterSubLayer(context: FilterContext): boolean {\n return true;\n }\n\n /** Returns true if sub layer needs to be rendered */\n protected shouldRenderSubLayer(subLayerId: string, data: any): boolean {\n return data && data.length;\n }\n\n /** Returns sub layer class for a specific sublayer */\n protected getSubLayerClass(\n subLayerId: string,\n DefaultLayerClass: ConstructorOf\n ): ConstructorOf {\n const {_subLayerProps: overridingProps} = this.props;\n\n return (\n (overridingProps &&\n overridingProps[subLayerId] &&\n (overridingProps[subLayerId].type as ConstructorOf)) ||\n DefaultLayerClass\n );\n }\n\n /** When casting user data into another format to pass to sublayers,\n add reference to the original object and object index */\n protected getSubLayerRow(row: T, sourceObject: any, sourceObjectIndex: number): T {\n // @ts-ignore (TS2339) adding undefined property\n row.__source = {\n parent: this,\n object: sourceObject,\n index: sourceObjectIndex\n };\n return row;\n }\n\n /** Some composite layers cast user data into another format before passing to sublayers\n We need to unwrap them before calling the accessor so that they see the original data\n objects */\n protected getSubLayerAccessor(accessor: Accessor): Accessor {\n if (typeof accessor === 'function') {\n const objectInfo: AccessorContext = {\n index: -1,\n // @ts-ignore accessing resolved data\n data: this.props.data,\n target: []\n };\n return (x: any, i: AccessorContext) => {\n if (x && x.__source) {\n objectInfo.index = x.__source.index;\n // @ts-ignore (TS2349) Out is never a function\n return accessor(x.__source.object as In, objectInfo);\n }\n // @ts-ignore (TS2349) Out is never a function\n return accessor(x as In, i);\n };\n }\n return accessor;\n }\n\n /** Returns sub layer props for a specific sublayer */\n // eslint-disable-next-line complexity\n protected getSubLayerProps(\n sublayerProps: {\n id?: string;\n updateTriggers?: Record;\n [propName: string]: any;\n } = {}\n ): any {\n const {\n opacity,\n pickable,\n visible,\n parameters,\n getPolygonOffset,\n highlightedObjectIndex,\n autoHighlight,\n highlightColor,\n coordinateSystem,\n coordinateOrigin,\n wrapLongitude,\n positionFormat,\n modelMatrix,\n extensions,\n fetch,\n operation,\n _subLayerProps: overridingProps\n } = this.props;\n const newProps = {\n id: '',\n updateTriggers: {},\n opacity,\n pickable,\n visible,\n parameters,\n getPolygonOffset,\n highlightedObjectIndex,\n autoHighlight,\n highlightColor,\n coordinateSystem,\n coordinateOrigin,\n wrapLongitude,\n positionFormat,\n modelMatrix,\n extensions,\n fetch,\n operation\n };\n\n const overridingSublayerProps =\n overridingProps && sublayerProps.id && overridingProps[sublayerProps.id];\n const overridingSublayerTriggers =\n overridingSublayerProps && overridingSublayerProps.updateTriggers;\n const sublayerId = sublayerProps.id || 'sublayer';\n\n if (overridingSublayerProps) {\n const propTypes = this.props[PROP_TYPES_SYMBOL];\n const subLayerPropTypes = sublayerProps.type ? sublayerProps.type._propTypes : {};\n for (const key in overridingSublayerProps) {\n const propType = subLayerPropTypes[key] || propTypes[key];\n // eslint-disable-next-line\n if (propType && propType.type === 'accessor') {\n overridingSublayerProps[key] = this.getSubLayerAccessor(overridingSublayerProps[key]);\n }\n }\n }\n\n Object.assign(\n newProps,\n sublayerProps,\n // experimental feature that allows users to override sublayer props via parent layer prop\n overridingSublayerProps\n );\n newProps.id = `${this.props.id}-${sublayerId}`;\n newProps.updateTriggers = {\n all: this.props.updateTriggers?.all,\n ...sublayerProps.updateTriggers,\n ...overridingSublayerTriggers\n };\n\n // Pass through extension props\n // @ts-ignore (TS2532) extensions is always defined after merging with default props\n for (const extension of extensions) {\n const passThroughProps = extension.getSubLayerProps.call(this, extension);\n if (passThroughProps) {\n Object.assign(newProps, passThroughProps, {\n updateTriggers: Object.assign(newProps.updateTriggers, passThroughProps.updateTriggers)\n });\n }\n }\n\n return newProps;\n }\n\n /** Update sub layers to highlight the hovered object */\n protected _updateAutoHighlight(info: PickingInfo): void {\n for (const layer of this.getSubLayers()) {\n layer.updateAutoHighlight(info);\n }\n }\n\n /** Override base Layer method */\n protected _getAttributeManager(): AttributeManager | null {\n return null;\n }\n\n /** (Internal) Called after an update to rerender sub layers */\n protected _postUpdate(updateParams: UpdateParameters, forceUpdate: boolean) {\n // @ts-ignore (TS2531) this method is only called internally when internalState is defined\n let subLayers = this.internalState.subLayers as Layer[];\n const shouldUpdate = !subLayers || this.needsUpdate();\n if (shouldUpdate) {\n const subLayersList = this.renderLayers();\n // Flatten the returned array, removing any null, undefined or false\n // this allows layers to render sublayers conditionally\n // (see CompositeLayer.renderLayers docs)\n subLayers = flatten(subLayersList, Boolean) as Layer[];\n // @ts-ignore (TS2531) this method is only called internally when internalState is defined\n this.internalState.subLayers = subLayers;\n }\n debug(TRACE_RENDER_LAYERS, this, shouldUpdate, subLayers);\n\n // populate reference to parent layer (this layer)\n // NOTE: needs to be done even when reusing layers as the parent may have changed\n for (const layer of subLayers) {\n layer.parent = this;\n }\n }\n}\n","// Assume data array is sorted by \n// Replaces the specified range with a new subarray\n// Mutates the data array\n// Returns {startRow, endRow} of the inserted items\nexport function replaceInRange({\n data,\n getIndex,\n dataRange,\n replace\n}: {\n data: any[];\n getIndex: (d: any) => number;\n dataRange: {startRow?: number; endRow?: number};\n replace: any[];\n}): {startRow: Number; endRow: number} {\n const {startRow = 0, endRow = Infinity} = dataRange;\n const count = data.length;\n let replaceStart = count;\n let replaceEnd = count;\n for (let i = 0; i < count; i++) {\n const row = getIndex(data[i]);\n if (replaceStart > i && row >= startRow) {\n replaceStart = i;\n }\n if (row >= endRow) {\n replaceEnd = i;\n break;\n }\n }\n let index = replaceStart;\n const dataLengthChanged = replaceEnd - replaceStart !== replace.length;\n // Save the items after replaceEnd before we overwrite data\n const endChunk = dataLengthChanged ? data.slice(replaceEnd) : undefined;\n // Insert new items\n for (let i = 0; i < replace.length; i++) {\n data[index++] = replace[i];\n }\n if (endChunk) {\n // Append items after replaceEnd\n for (let i = 0; i < endChunk.length; i++) {\n data[index++] = endChunk[i];\n }\n // Trim additional items\n data.length = index;\n }\n\n return {\n startRow: replaceStart,\n endRow: replaceStart + replace.length\n };\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport project from '../project/project';\nimport type {ShaderModule} from '../../types/types';\n\nconst vs = `\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition\n) {\n vec3 projectedPosition = project_position(position, position64Low);\n mat3 rotation;\n if (project_needs_rotation(projectedPosition, rotation)) {\n // offset is specified as ENU\n // when in globe projection, rotate offset so that the ground alighs with the surface of the globe\n offset = rotation * offset;\n }\n commonPosition = vec4(projectedPosition + offset, 1.0);\n return project_common_position_to_clipspace(commonPosition);\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset\n) {\n vec4 commonPosition;\n return project_position_to_clipspace(position, position64Low, offset, commonPosition);\n}\n`;\n\nexport default {\n name: 'project32',\n dependencies: [project],\n vs\n} as ShaderModule;\n","/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([0, 255, 255, 255]);\n\nconst DEFAULT_MODULE_OPTIONS = {\n pickingSelectedColor: null, // Set to a picking color to visually highlight that item\n pickingHighlightColor: DEFAULT_HIGHLIGHT_COLOR, // Color of visual highlight of \"selected\" item\n pickingActive: false, // Set to true when rendering to off-screen \"picking\" buffer\n pickingAttribute: false // Set to true when picking an attribute value instead of object index\n};\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS) {\n const uniforms = {};\n if (opts.pickingSelectedColor !== undefined) {\n if (!opts.pickingSelectedColor) {\n uniforms.picking_uSelectedColorValid = 0;\n } else {\n const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n uniforms.picking_uSelectedColorValid = 1;\n uniforms.picking_uSelectedColor = selectedColor;\n }\n }\n if (opts.pickingHighlightColor) {\n const color = Array.from(opts.pickingHighlightColor, x => x / 255);\n if (!Number.isFinite(color[3])) {\n color[3] = 1;\n }\n uniforms.picking_uHighlightColor = color;\n }\n if (opts.pickingActive !== undefined) {\n uniforms.picking_uActive = Boolean(opts.pickingActive);\n uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n }\n return uniforms;\n}\n\nconst vs = `\\\nuniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n // Use alpha as the validity flag. If pickingColor is [0, 0, 0] fragment is non-pickable\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n // Stores the picking color so that the fragment shader can render it during picking\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n // Do the comparison with selected item color in vertex shader as it should mean fewer compares\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n`;\n\nconst fs = `\\\nuniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\n\n/*\n * Returns highlight color if this item is selected.\n */\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\n\n/*\n * Returns picking color if picking enabled else unmodified argument.\n */\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\n\n/*\n * Returns picking color if picking is enabled if not\n * highlight color if this item is selected, otherwise unmodified argument.\n */\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n`;\n\n/** @type {ShaderModule} */\nexport const picking = {\n name: 'picking',\n vs,\n fs,\n getUniforms\n};\n","import {picking} from '@luma.gl/core';\nimport type {ShaderModule} from '../../types/types';\n\ntype PickingModuleSettings = {\n /** Set to a picking color to visually highlight that item */\n pickingSelectedColor?: [number, number, number] | null;\n /** Color of the highlight */\n pickingHighlightColor?: [number, number, number, number];\n /** Set to true when rendering to off-screen \"picking\" buffer */\n pickingActive?: boolean;\n /** Set to true when picking an attribute value instead of object index */\n pickingAttribute?: boolean;\n};\n\nexport default {\n inject: {\n 'vs:DECKGL_FILTER_GL_POSITION': `\n // for picking depth values\n picking_setPickingAttribute(position.z / position.w);\n `,\n 'vs:DECKGL_FILTER_COLOR': `\n picking_setPickingColor(geometry.pickingColor);\n `,\n // TODO - this should be declared in the luma module\n 'fs:#decl': `\nuniform bool picking_uAttribute;\n `,\n 'fs:DECKGL_FILTER_COLOR': {\n order: 99,\n injection: `\n // use highlight color if this fragment belongs to the selected object.\n color = picking_filterHighlightColor(color);\n\n // use picking color if rendering to picking FBO.\n color = picking_filterPickingColor(color);\n `\n }\n },\n ...picking\n} as ShaderModule;\n","import {uid, assert} from '@luma.gl/webgl';\n\n// Rendering primitives - specify how to extract primitives from vertices.\n// NOTE: These are numerically identical to the corresponding WebGL/OpenGL constants\nexport const DRAW_MODE = {\n POINTS: 0x0000, // draw single points.\n LINES: 0x0001, // draw lines. Each vertex connects to the one after it.\n LINE_LOOP: 0x0002, // draw lines. Each set of two vertices is treated as a separate line segment.\n LINE_STRIP: 0x0003, // draw a connected group of line segments from the first vertex to the last\n TRIANGLES: 0x0004, // draw triangles. Each set of three vertices creates a separate triangle.\n TRIANGLE_STRIP: 0x0005, // draw a connected group of triangles.\n TRIANGLE_FAN: 0x0006 // draw a connected group of triangles.\n // Each vertex connects to the previous and the first vertex in the fan.\n};\n\nexport default class Geometry {\n static get DRAW_MODE() {\n return DRAW_MODE;\n }\n\n constructor(props = {}) {\n const {\n id = uid('geometry'),\n drawMode = DRAW_MODE.TRIANGLES,\n attributes = {},\n indices = null,\n vertexCount = null\n } = props;\n\n this.id = id;\n this.drawMode = drawMode | 0;\n this.attributes = {};\n this.userData = {};\n\n this._setAttributes(attributes, indices);\n\n this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n\n // stubRemovedMethods(this, [\n // 'setNeedsRedraw', 'needsRedraw', 'setAttributes'\n // ], 'Immutable');\n\n // stubRemovedMethods(this, [\n // 'hasAttribute', 'getAttribute', 'getArray'\n // ], 'Use geometry.attributes and geometry.indices');\n\n // deprecateMethods(this, ['getAttributes'])\n }\n\n get mode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n // Return an object with all attributes plus indices added as a field.\n getAttributes() {\n return this.indices ? {indices: this.indices, ...this.attributes} : this.attributes;\n }\n\n // PRIVATE\n\n _print(attributeName) {\n return `Geometry ${this.id} attribute ${attributeName}`;\n }\n\n // Attribute\n // value: typed array\n // type: indices, vertices, uvs\n // size: elements per vertex\n // target: WebGL buffer type (string or constant)\n _setAttributes(attributes, indices) {\n if (indices) {\n this.indices = ArrayBuffer.isView(indices) ? {value: indices, size: 1} : indices;\n }\n\n for (const attributeName in attributes) {\n let attribute = attributes[attributeName];\n\n // Wrap \"unwrapped\" arrays and try to autodetect their type\n attribute = ArrayBuffer.isView(attribute) ? {value: attribute} : attribute;\n\n assert(\n ArrayBuffer.isView(attribute.value),\n `${this._print(attributeName)}: must be typed array or object with value as typed array`\n );\n\n if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {\n attribute.size = 3;\n }\n\n // Move indices to separate field\n if (attributeName === 'indices') {\n assert(!this.indices);\n this.indices = attribute;\n } else {\n this.attributes[attributeName] = attribute;\n }\n }\n\n if (this.indices && this.indices.isIndexed !== undefined) {\n this.indices = Object.assign({}, this.indices);\n delete this.indices.isIndexed;\n }\n\n return this;\n }\n\n _calculateVertexCount(attributes, indices) {\n if (indices) {\n return indices.value.length;\n }\n let vertexCount = Infinity;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const {value, size, constant} = attribute;\n if (!constant && value && size >= 1) {\n vertexCount = Math.min(vertexCount, value.length / size);\n }\n }\n\n assert(Number.isFinite(vertexCount));\n return vertexCount;\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME icon-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceSizes;\nattribute float instanceAngles;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\nattribute vec4 instanceIconFrames;\nattribute float instanceColorModes;\nattribute vec2 instanceOffsets;\nattribute vec2 instancePixelOffset;\n\nuniform float sizeScale;\nuniform vec2 iconsTextureDim;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform bool billboard;\nuniform int sizeUnits;\n\nvarying float vColorMode;\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = angle * PI / 180.0;\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n\n vec2 iconSize = instanceIconFrames.zw;\n // convert size in meters to pixels, then scaled and clamp\n \n // project meters to pixels and clamp to limits \n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), \n sizeMinPixels, sizeMaxPixels\n );\n\n // scale icon height to match instanceSize\n float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y;\n\n // scale and rotate vertex in \"pixel\" value and convert back to fraction in clipspace\n vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets;\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale;\n pixelOffset += instancePixelOffset;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); \n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n vTextureCoords = mix(\n instanceIconFrames.xy,\n instanceIconFrames.xy + iconSize,\n (positions.xy + 1.0) / 2.0\n ) / iconsTextureDim;\n\n vColor = instanceColors;\n DECKGL_FILTER_COLOR(vColor, geometry);\n\n vColorMode = instanceColorModes;\n}\n`;\n","/* global document */\nimport GL from '@luma.gl/constants';\nimport {Texture2D, copyToTexture} from '@luma.gl/core';\nimport {load} from '@loaders.gl/core';\nimport {createIterable} from '@deck.gl/core';\n\nimport type {AccessorFunction} from '@deck.gl/core';\n\nconst DEFAULT_CANVAS_WIDTH = 1024;\nconst DEFAULT_BUFFER = 4;\n\nconst noop = () => {};\n\nconst DEFAULT_TEXTURE_PARAMETERS = {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR_MIPMAP_LINEAR,\n // GL.LINEAR is the default value but explicitly set it here\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n // for texture boundary artifact\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\n\ntype IconDef = {\n /** Width of the icon */\n width: number;\n /** Height of the icon */\n height: number;\n /** Horizontal position of icon anchor. Default: half width. */\n anchorX?: number;\n /** Vertical position of icon anchor. Default: half height. */\n anchorY?: number;\n /**\n * Whether the icon is treated as a transparency mask.\n * If `true`, color defined by `getColor` is applied.\n * If `false`, pixel color from the icon image is applied.\n * @default false\n */\n mask?: boolean;\n};\n\nexport type UnpackedIcon = {\n /** Url to fetch the icon */\n url: string;\n /** Unique identifier of the icon. Icons of the same id are only fetched once. Fallback to `url` if not specified. */\n id?: string;\n} & IconDef;\n\ntype PrepackedIcon = {\n /** Left position of the icon on the atlas */\n x: number;\n /** Top position of the icon on the atlas */\n y: number;\n} & IconDef;\n\nexport type IconMapping = Record;\n\nexport type LoadIconErrorContext = {\n error: Error;\n /** The URL that was trying to fetch */\n url: string;\n /** The original data object that requested this icon */\n source: any;\n /** The index of the original data object that requested this icon */\n sourceIndex: number;\n /** The load options used for the fetch */\n loadOptions: any;\n};\n\nfunction nextPowOfTwo(number: number): number {\n return Math.pow(2, Math.ceil(Math.log2(number)));\n}\n\n// update comment to create a new texture and copy original data.\nfunction resizeImage(\n ctx: CanvasRenderingContext2D,\n imageData: HTMLImageElement | ImageBitmap,\n maxWidth: number,\n maxHeight: number\n): {\n data: HTMLImageElement | HTMLCanvasElement | ImageBitmap;\n width: number;\n height: number;\n} {\n const resizeRatio = Math.min(maxWidth / imageData.width, maxHeight / imageData.height);\n const width = Math.floor(imageData.width * resizeRatio);\n const height = Math.floor(imageData.height * resizeRatio);\n\n if (resizeRatio === 1) {\n // No resizing required\n return {data: imageData, width, height};\n }\n\n ctx.canvas.height = height;\n ctx.canvas.width = width;\n\n ctx.clearRect(0, 0, width, height);\n\n // image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight\n ctx.drawImage(imageData, 0, 0, imageData.width, imageData.height, 0, 0, width, height);\n return {data: ctx.canvas, width, height};\n}\n\nfunction getIconId(icon: UnpackedIcon): string {\n return icon && (icon.id || icon.url);\n}\n\n// resize texture without losing original data\nfunction resizeTexture(\n texture: Texture2D,\n width: number,\n height: number,\n parameters: any\n): Texture2D {\n const oldWidth = texture.width;\n const oldHeight = texture.height;\n\n const newTexture = new Texture2D(texture.gl, {width, height, parameters});\n copyToTexture(texture, newTexture, {\n targetY: 0,\n width: oldWidth,\n height: oldHeight\n });\n\n texture.delete();\n return newTexture;\n}\n\n// traverse icons in a row of icon atlas\n// extend each icon with left-top coordinates\nfunction buildRowMapping(\n mapping: IconMapping,\n columns: {\n icon: UnpackedIcon;\n xOffset: number;\n }[],\n yOffset: number\n): void {\n for (let i = 0; i < columns.length; i++) {\n const {icon, xOffset} = columns[i];\n const id = getIconId(icon);\n mapping[id] = {\n ...icon,\n x: xOffset,\n y: yOffset\n };\n }\n}\n\n/**\n * Generate coordinate mapping to retrieve icon left-top position from an icon atlas\n */\nexport function buildMapping({\n icons,\n buffer,\n mapping = {},\n xOffset = 0,\n yOffset = 0,\n rowHeight = 0,\n canvasWidth\n}: {\n /** list of icon definitions */\n icons: UnpackedIcon[];\n /** add bleeding buffer to the right and bottom side of the image */\n buffer: number;\n /** right position of last icon in old mapping */\n xOffset: number;\n /** top position in last icon in old mapping */\n yOffset: number;\n /** height of the last icon's row */\n rowHeight: number;\n /** max width of canvas */\n canvasWidth: number;\n mapping: IconMapping;\n}): {\n mapping: IconMapping;\n rowHeight: number;\n xOffset: number;\n yOffset: number;\n canvasWidth: number;\n canvasHeight: number;\n} {\n let columns: {\n icon: UnpackedIcon;\n xOffset: number;\n }[] = [];\n // Strategy to layout all the icons into a texture:\n // traverse the icons sequentially, layout the icons from left to right, top to bottom\n // when the sum of the icons width is equal or larger than canvasWidth,\n // move to next row starting from total height so far plus max height of the icons in previous row\n // row width is equal to canvasWidth\n // row height is decided by the max height of the icons in that row\n // mapping coordinates of each icon is its left-top position in the texture\n for (let i = 0; i < icons.length; i++) {\n const icon = icons[i];\n const id = getIconId(icon);\n\n if (!mapping[id]) {\n const {height, width} = icon;\n\n // fill one row\n if (xOffset + width + buffer > canvasWidth) {\n buildRowMapping(mapping, columns, yOffset);\n\n xOffset = 0;\n yOffset = rowHeight + yOffset + buffer;\n rowHeight = 0;\n columns = [];\n }\n\n columns.push({\n icon,\n xOffset\n });\n\n xOffset = xOffset + width + buffer;\n rowHeight = Math.max(rowHeight, height);\n }\n }\n\n if (columns.length > 0) {\n buildRowMapping(mapping, columns, yOffset);\n }\n\n return {\n mapping,\n rowHeight,\n xOffset,\n yOffset,\n canvasWidth,\n canvasHeight: nextPowOfTwo(rowHeight + yOffset + buffer)\n };\n}\n\n// extract icons from data\n// return icons should be unique, and not cached or cached but url changed\nexport function getDiffIcons(\n data: any,\n getIcon: AccessorFunction | null,\n cachedIcons: Record\n): Record<\n string,\n UnpackedIcon & {\n source: any;\n sourceIndex: number;\n }\n> | null {\n if (!data || !getIcon) {\n return null;\n }\n\n cachedIcons = cachedIcons || {};\n const icons = {};\n const {iterable, objectInfo} = createIterable(data);\n for (const object of iterable) {\n objectInfo.index++;\n const icon = getIcon(object, objectInfo);\n const id = getIconId(icon);\n\n if (!icon) {\n throw new Error('Icon is missing.');\n }\n\n if (!icon.url) {\n throw new Error('Icon url is missing.');\n }\n\n if (!icons[id] && (!cachedIcons[id] || icon.url !== cachedIcons[id].url)) {\n icons[id] = {...icon, source: object, sourceIndex: objectInfo.index};\n }\n }\n return icons;\n}\n\nexport default class IconManager {\n gl: WebGLRenderingContext;\n\n private onUpdate: () => void;\n private onError: (context: LoadIconErrorContext) => void;\n private _loadOptions: any = null;\n private _texture: Texture2D | null = null;\n private _externalTexture: Texture2D | null = null;\n private _mapping: IconMapping = {};\n private _textureParameters: Record | null = null;\n\n /** count of pending requests to fetch icons */\n private _pendingCount: number = 0;\n\n private _autoPacking: boolean = false;\n\n // / internal state used for autoPacking\n\n private _xOffset: number = 0;\n private _yOffset: number = 0;\n private _rowHeight: number = 0;\n private _buffer: number = DEFAULT_BUFFER;\n private _canvasWidth: number = DEFAULT_CANVAS_WIDTH;\n private _canvasHeight: number = 0;\n private _canvas: HTMLCanvasElement | null = null;\n\n constructor(\n gl: WebGLRenderingContext,\n {\n onUpdate = noop,\n onError = noop\n }: {\n /** Callback when the texture updates */\n onUpdate: () => void;\n /** Callback when an error is encountered */\n onError: (context: LoadIconErrorContext) => void;\n }\n ) {\n this.gl = gl;\n this.onUpdate = onUpdate;\n this.onError = onError;\n }\n\n finalize(): void {\n this._texture?.delete();\n }\n\n getTexture(): Texture2D | null {\n return this._texture || this._externalTexture;\n }\n\n getIconMapping(icon: string | UnpackedIcon): PrepackedIcon {\n const id = this._autoPacking ? getIconId(icon as UnpackedIcon) : (icon as string);\n return this._mapping[id] || {};\n }\n\n setProps({\n loadOptions,\n autoPacking,\n iconAtlas,\n iconMapping,\n textureParameters\n }: {\n loadOptions?: any;\n autoPacking?: boolean;\n iconAtlas?: Texture2D | null;\n iconMapping?: IconMapping | null;\n textureParameters?: Record | null;\n }) {\n if (loadOptions) {\n this._loadOptions = loadOptions;\n }\n\n if (autoPacking !== undefined) {\n this._autoPacking = autoPacking;\n }\n\n if (iconMapping) {\n this._mapping = iconMapping;\n }\n\n if (iconAtlas) {\n this._texture?.delete();\n this._texture = null;\n this._externalTexture = iconAtlas;\n }\n\n if (textureParameters) {\n this._textureParameters = textureParameters;\n }\n }\n\n get isLoaded(): boolean {\n return this._pendingCount === 0;\n }\n\n packIcons(data: any, getIcon: AccessorFunction): void {\n if (!this._autoPacking || typeof document === 'undefined') {\n return;\n }\n\n const icons = Object.values(getDiffIcons(data, getIcon, this._mapping) || {});\n\n if (icons.length > 0) {\n // generate icon mapping\n const {mapping, xOffset, yOffset, rowHeight, canvasHeight} = buildMapping({\n icons,\n buffer: this._buffer,\n canvasWidth: this._canvasWidth,\n mapping: this._mapping,\n rowHeight: this._rowHeight,\n xOffset: this._xOffset,\n yOffset: this._yOffset\n });\n\n this._rowHeight = rowHeight;\n this._mapping = mapping;\n this._xOffset = xOffset;\n this._yOffset = yOffset;\n this._canvasHeight = canvasHeight;\n\n // create new texture\n if (!this._texture) {\n this._texture = new Texture2D(this.gl, {\n width: this._canvasWidth,\n height: this._canvasHeight,\n parameters: this._textureParameters || DEFAULT_TEXTURE_PARAMETERS\n });\n }\n\n if (this._texture.height !== this._canvasHeight) {\n this._texture = resizeTexture(\n this._texture,\n this._canvasWidth,\n this._canvasHeight,\n this._textureParameters || DEFAULT_TEXTURE_PARAMETERS\n );\n }\n\n this.onUpdate();\n\n // load images\n this._canvas = this._canvas || document.createElement('canvas');\n this._loadIcons(icons);\n }\n }\n\n private _loadIcons(\n icons: (UnpackedIcon & {\n source: any;\n sourceIndex: number;\n })[]\n ): void {\n // This method is only called in the auto packing case, where _canvas is defined\n const ctx = this._canvas!.getContext('2d', {\n willReadFrequently: true\n }) as CanvasRenderingContext2D;\n\n for (const icon of icons) {\n this._pendingCount++;\n load(icon.url, this._loadOptions)\n .then(imageData => {\n const id = getIconId(icon);\n\n const iconDef = this._mapping[id];\n const {x, y, width: maxWidth, height: maxHeight} = iconDef;\n\n const {data, width, height} = resizeImage(ctx, imageData, maxWidth, maxHeight);\n\n this._texture.setSubImageData({\n data,\n x: x + (maxWidth - width) / 2,\n y: y + (maxHeight - height) / 2,\n width,\n height\n });\n iconDef.width = width;\n iconDef.height = height;\n\n // Call to regenerate mipmaps after modifying texture(s)\n this._texture.generateMipmap();\n\n this.onUpdate();\n })\n .catch(error => {\n this.onError({\n url: icon.url,\n source: icon.source,\n sourceIndex: icon.sourceIndex,\n loadOptions: this._loadOptions,\n error\n });\n })\n .finally(() => {\n this._pendingCount--;\n });\n }\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {Layer, project32, picking, log, UNIT} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry} from '@luma.gl/core';\n\nimport vs from './icon-layer-vertex.glsl';\nimport fs from './icon-layer-fragment.glsl';\nimport IconManager from './icon-manager';\n\nimport type {\n LayerProps,\n LayerDataSource,\n Accessor,\n AccessorFunction,\n Position,\n Color,\n Texture,\n Unit,\n UpdateParameters,\n LayerContext,\n DefaultProps\n} from '@deck.gl/core';\nimport type {UnpackedIcon, IconMapping, LoadIconErrorContext} from './icon-manager';\n\ntype _IconLayerProps = {\n data: LayerDataSource;\n /** A prepacked image that contains all icons. */\n iconAtlas?: string | Texture;\n /** Icon names mapped to icon definitions, or a URL to load such mapping from a JSON file. */\n iconMapping?: string | IconMapping;\n\n /** Icon size multiplier.\n * @default 1\n */\n sizeScale?: number;\n /**\n * The units of the icon size, one of `meters`, `common`, and `pixels`.\n *\n * @default 'pixels'\n */\n sizeUnits?: Unit;\n /**\n * The minimum size in pixels. When using non-pixel `sizeUnits`, this prop can be used to prevent the icon from getting too small when zoomed out.\n */\n sizeMinPixels?: number;\n /**\n * The maximum size in pixels. When using non-pixel `sizeUnits`, this prop can be used to prevent the icon from getting too big when zoomed in.\n */\n sizeMaxPixels?: number;\n /** If `true`, the icon always faces camera. Otherwise the icon faces up (z)\n * @default true\n */\n billboard?: boolean;\n /**\n * Discard pixels whose opacity is below this threshold.\n * A discarded pixel would create a \"hole\" in the icon that is not considered part of the object.\n * @default 0.05\n */\n alphaCutoff?: number;\n\n /** Anchor position accessor. */\n getPosition?: Accessor;\n /** Icon definition accessor.\n * Should return the icon id if using pre-packed icons (`iconAtlas` + `iconMapping`).\n * Return an object that defines the icon if using auto-packing.\n */\n getIcon?: AccessorFunction | AccessorFunction;\n /** Icon color accessor.\n * @default [0, 0, 0, 255]\n */\n getColor?: Accessor;\n /** Icon size accessor.\n * @default 1\n */\n getSize?: Accessor;\n /** Icon rotation accessor, in degrees.\n * @default 0\n */\n getAngle?: Accessor;\n /**\n * Icon offsest accessor, in pixels.\n * @default [0, 0]\n */\n getPixelOffset?: Accessor;\n /**\n * Callback called if the attempt to fetch an icon returned by `getIcon` fails.\n */\n onIconError?: ((context: LoadIconErrorContext) => void) | null;\n\n /** Customize the [texture parameters](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texParameter). */\n textureParameters?: Record | null;\n};\n\nexport type IconLayerProps = _IconLayerProps & LayerProps;\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\nconst defaultProps: DefaultProps = {\n iconAtlas: {type: 'image', value: null, async: true},\n iconMapping: {type: 'object', value: {}, async: true},\n sizeScale: {type: 'number', value: 1, min: 0},\n billboard: true,\n sizeUnits: 'pixels',\n sizeMinPixels: {type: 'number', min: 0, value: 0}, // min point radius in pixels\n sizeMaxPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER}, // max point radius in pixels\n alphaCutoff: {type: 'number', value: 0.05, min: 0, max: 1},\n\n getPosition: {type: 'accessor', value: x => x.position},\n getIcon: {type: 'accessor', value: x => x.icon},\n getColor: {type: 'accessor', value: DEFAULT_COLOR},\n getSize: {type: 'accessor', value: 1},\n getAngle: {type: 'accessor', value: 0},\n getPixelOffset: {type: 'accessor', value: [0, 0]},\n\n onIconError: {type: 'function', value: null, optional: true},\n\n textureParameters: {type: 'object', ignore: true}\n};\n\n/** Render raster icons at given coordinates. */\nexport default class IconLayer extends Layer<\n ExtraPropsT & Required<_IconLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'IconLayer';\n\n state!: {\n model?: Model;\n iconManager: IconManager;\n };\n\n getShaders() {\n return super.getShaders({vs, fs, modules: [project32, picking]});\n }\n\n initializeState() {\n this.state = {\n iconManager: new IconManager(this.context.gl, {\n onUpdate: this._onUpdate.bind(this),\n onError: this._onError.bind(this)\n })\n };\n\n const attributeManager = this.getAttributeManager();\n /* eslint-disable max-len */\n attributeManager!.addInstanced({\n instancePositions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceSizes: {\n size: 1,\n transition: true,\n accessor: 'getSize',\n defaultValue: 1\n },\n instanceOffsets: {\n size: 2,\n accessor: 'getIcon',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n transform: this.getInstanceOffset\n },\n instanceIconFrames: {\n size: 4,\n accessor: 'getIcon',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n transform: this.getInstanceIconFrame\n },\n instanceColorModes: {\n size: 1,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getIcon',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n transform: this.getInstanceColorMode\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: true,\n accessor: 'getColor',\n defaultValue: DEFAULT_COLOR\n },\n instanceAngles: {\n size: 1,\n transition: true,\n accessor: 'getAngle'\n },\n instancePixelOffset: {\n size: 2,\n transition: true,\n accessor: 'getPixelOffset'\n }\n });\n /* eslint-enable max-len */\n }\n\n /* eslint-disable max-statements, complexity */\n updateState(params: UpdateParameters) {\n super.updateState(params);\n const {props, oldProps, changeFlags} = params;\n\n const attributeManager = this.getAttributeManager();\n const {iconAtlas, iconMapping, data, getIcon, textureParameters} = props;\n const {iconManager} = this.state;\n\n // internalState is always defined during updateState\n const prePacked = iconAtlas || this.internalState!.isAsyncPropLoading('iconAtlas');\n iconManager.setProps({\n loadOptions: props.loadOptions,\n autoPacking: !prePacked,\n iconAtlas,\n iconMapping: prePacked ? (iconMapping as IconMapping) : null,\n textureParameters\n });\n\n // prepacked iconAtlas from user\n if (prePacked) {\n if (oldProps.iconMapping !== props.iconMapping) {\n attributeManager!.invalidate('getIcon');\n }\n } else if (\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getIcon))\n ) {\n // Auto packing - getIcon is expected to return an object\n iconManager.packIcons(data, getIcon as AccessorFunction);\n }\n\n if (changeFlags.extensionsChanged) {\n const {gl} = this.context;\n this.state.model?.delete();\n this.state.model = this._getModel(gl);\n attributeManager!.invalidateAll();\n }\n }\n /* eslint-enable max-statements, complexity */\n\n get isLoaded(): boolean {\n return super.isLoaded && this.state.iconManager.isLoaded;\n }\n\n finalizeState(context: LayerContext): void {\n super.finalizeState(context);\n // Release resources held by the icon manager\n this.state.iconManager.finalize();\n }\n\n draw({uniforms}): void {\n const {sizeScale, sizeMinPixels, sizeMaxPixels, sizeUnits, billboard, alphaCutoff} = this.props;\n const {iconManager} = this.state;\n\n const iconsTexture = iconManager.getTexture();\n if (iconsTexture) {\n this.state.model\n .setUniforms(uniforms)\n .setUniforms({\n iconsTexture,\n iconsTextureDim: [iconsTexture.width, iconsTexture.height],\n sizeUnits: UNIT[sizeUnits],\n sizeScale,\n sizeMinPixels,\n sizeMaxPixels,\n billboard,\n alphaCutoff\n })\n .draw();\n }\n }\n\n protected _getModel(gl: WebGLRenderingContext): Model {\n // The icon-layer vertex shader uses 2d positions\n // specifed via: attribute vec2 positions;\n const positions = [-1, -1, -1, 1, 1, 1, 1, -1];\n\n return new Model(gl, {\n ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_FAN,\n attributes: {\n // The size must be explicitly passed here otherwise luma.gl\n // will default to assuming that positions are 3D (x,y,z)\n positions: {\n size: 2,\n value: new Float32Array(positions)\n }\n }\n }),\n isInstanced: true\n });\n }\n\n private _onUpdate(): void {\n this.setNeedsRedraw();\n }\n\n private _onError(evt: LoadIconErrorContext): void {\n const onIconError = this.getCurrentLayer()?.props.onIconError;\n if (onIconError) {\n onIconError(evt);\n } else {\n log.error(evt.error.message)();\n }\n }\n\n protected getInstanceOffset(icon: string): number[] {\n const {\n width,\n height,\n anchorX = width / 2,\n anchorY = height / 2\n } = this.state.iconManager.getIconMapping(icon);\n return [width / 2 - anchorX, height / 2 - anchorY];\n }\n\n protected getInstanceColorMode(icon: string): number {\n const mapping = this.state.iconManager.getIconMapping(icon);\n return mapping.mask ? 1 : 0;\n }\n\n protected getInstanceIconFrame(icon: string): number[] {\n const {x, y, width, height} = this.state.iconManager.getIconMapping(icon);\n return [x, y, width, height];\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME icon-layer-fragment-shader\n\nprecision highp float;\n\nuniform float opacity;\nuniform sampler2D iconsTexture;\nuniform float alphaCutoff;\n\nvarying float vColorMode;\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvoid main(void) {\n geometry.uv = uv;\n\n vec4 texColor = texture2D(iconsTexture, vTextureCoords);\n\n // if colorMode == 0, use pixel color from the texture\n // if colorMode == 1 or rendering picking buffer, use texture as transparency mask\n vec3 color = mix(texColor.rgb, vColor.rgb, vColorMode);\n // Take the global opacity and the alpha from vColor into account for the alpha component\n float a = texColor.a * opacity * vColor.a;\n\n if (a < alphaCutoff) {\n discard;\n }\n\n gl_FragColor = vec4(color, a);\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME scatterplot-layer-vertex-shader\n\nattribute vec3 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceRadius;\nattribute float instanceLineWidths;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\nuniform float opacity;\nuniform float radiusScale;\nuniform float radiusMinPixels;\nuniform float radiusMaxPixels;\nuniform float lineWidthScale;\nuniform float lineWidthMinPixels;\nuniform float lineWidthMaxPixels;\nuniform float stroked;\nuniform bool filled;\nuniform bool antialiasing;\nuniform bool billboard;\nuniform int radiusUnits;\nuniform int lineWidthUnits;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n\n // Multiply out radius and clamp to limits\n outerRadiusPixels = clamp(\n project_size_to_pixel(radiusScale * instanceRadius, radiusUnits),\n radiusMinPixels, radiusMaxPixels\n );\n \n // Multiply out line width and clamp to limits\n float lineWidthPixels = clamp(\n project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits),\n lineWidthMinPixels, lineWidthMaxPixels\n );\n\n // outer radius needs to offset by half stroke width\n outerRadiusPixels += stroked * lineWidthPixels / 2.0;\n\n // Expand geometry to accomodate edge smoothing\n float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0;\n\n // position on the containing square in [-1, 1] space\n unitPosition = edgePadding * positions.xy;\n geometry.uv = unitPosition;\n geometry.pickingColor = instancePickingColors;\n\n innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\n \n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = edgePadding * positions * outerRadiusPixels;\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n } else {\n vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n // Apply opacity to instance color, or return instance picking color\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Layer, project32, picking, UNIT} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry} from '@luma.gl/core';\n\nimport vs from './scatterplot-layer-vertex.glsl';\nimport fs from './scatterplot-layer-fragment.glsl';\n\nimport type {\n LayerProps,\n LayerDataSource,\n UpdateParameters,\n Accessor,\n Unit,\n Position,\n Color,\n DefaultProps\n} from '@deck.gl/core';\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\n/** All props supported by the ScatterplotLayer */\nexport type ScatterplotLayerProps = _ScatterplotLayerProps & LayerProps;\n\n/** Props added by the ScatterplotLayer */\ntype _ScatterplotLayerProps = {\n data: LayerDataSource;\n /**\n * The units of the radius, one of `'meters'`, `'common'`, and `'pixels'`.\n * @default 'meters'\n */\n radiusUnits?: Unit;\n /**\n * Radius multiplier.\n * @default 1\n */\n radiusScale?: number;\n /**\n * The minimum radius in pixels. This prop can be used to prevent the circle from getting too small when zoomed out.\n * @default 0\n */\n radiusMinPixels?: number;\n /**\n * The maximum radius in pixels. This prop can be used to prevent the circle from getting too big when zoomed in.\n * @default Number.MAX_SAFE_INTEGER\n */\n radiusMaxPixels?: number;\n\n /**\n * The units of the stroke width, one of `'meters'`, `'common'`, and `'pixels'`.\n * @default 'meters'\n */\n lineWidthUnits?: Unit;\n /**\n * Stroke width multiplier.\n * @default 1\n */\n lineWidthScale?: number;\n /**\n * The minimum stroke width in pixels. This prop can be used to prevent the line from getting too thin when zoomed out.\n * @default 0\n */\n lineWidthMinPixels?: number;\n /**\n * The maximum stroke width in pixels. This prop can be used to prevent the circle from getting too thick when zoomed in.\n * @default Number.MAX_SAFE_INTEGER\n */\n lineWidthMaxPixels?: number;\n\n /**\n * Draw the outline of points.\n * @default false\n */\n stroked?: boolean;\n /**\n * Draw the filled area of points.\n * @default true\n */\n filled?: boolean;\n /**\n * If `true`, rendered circles always face the camera. If `false` circles face up (i.e. are parallel with the ground plane).\n * @default false\n */\n billboard?: boolean;\n /**\n * If `true`, circles are rendered with smoothed edges. If `false`, circles are rendered with rough edges. Antialiasing can cause artifacts on edges of overlapping circles.\n * @default true\n */\n antialiasing?: boolean;\n\n /**\n * Center position accessor.\n */\n getPosition?: Accessor;\n /**\n * Radius accessor.\n * @default 1\n */\n getRadius?: Accessor;\n /**\n * Fill color accessor.\n * @default [0, 0, 0, 255]\n */\n getFillColor?: Accessor;\n /**\n * Stroke color accessor.\n * @default [0, 0, 0, 255]\n */\n getLineColor?: Accessor;\n /**\n * Stroke width accessor.\n * @default 1\n */\n getLineWidth?: Accessor;\n /**\n * @deprecated Use `getLineWidth` instead\n */\n strokeWidth?: number;\n /**\n * @deprecated Use `stroked` instead\n */\n outline?: boolean;\n /**\n * @deprecated Use `getFillColor` and `getLineColor` instead\n */\n getColor?: Accessor;\n};\n\nconst defaultProps: DefaultProps = {\n radiusUnits: 'meters',\n radiusScale: {type: 'number', min: 0, value: 1},\n radiusMinPixels: {type: 'number', min: 0, value: 0}, // min point radius in pixels\n radiusMaxPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER}, // max point radius in pixels\n\n lineWidthUnits: 'meters',\n lineWidthScale: {type: 'number', min: 0, value: 1},\n lineWidthMinPixels: {type: 'number', min: 0, value: 0},\n lineWidthMaxPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER},\n\n stroked: false,\n filled: true,\n billboard: false,\n antialiasing: true,\n\n getPosition: {type: 'accessor', value: x => x.position},\n getRadius: {type: 'accessor', value: 1},\n getFillColor: {type: 'accessor', value: DEFAULT_COLOR},\n getLineColor: {type: 'accessor', value: DEFAULT_COLOR},\n getLineWidth: {type: 'accessor', value: 1},\n\n // deprecated\n strokeWidth: {deprecatedFor: 'getLineWidth'},\n outline: {deprecatedFor: 'stroked'},\n getColor: {deprecatedFor: ['getFillColor', 'getLineColor']}\n};\n\n/** Render circles at given coordinates. */\nexport default class ScatterplotLayer extends Layer<\n ExtraPropsT & Required<_ScatterplotLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName: string = 'ScatterplotLayer';\n\n getShaders() {\n return super.getShaders({vs, fs, modules: [project32, picking]});\n }\n\n initializeState() {\n this.getAttributeManager()!.addInstanced({\n instancePositions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceRadius: {\n size: 1,\n transition: true,\n accessor: 'getRadius',\n defaultValue: 1\n },\n instanceFillColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getFillColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getLineColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineWidths: {\n size: 1,\n transition: true,\n accessor: 'getLineWidth',\n defaultValue: 1\n }\n });\n }\n\n updateState(params: UpdateParameters) {\n super.updateState(params);\n\n if (params.changeFlags.extensionsChanged) {\n const {gl} = this.context;\n this.state.model?.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager()!.invalidateAll();\n }\n }\n\n draw({uniforms}) {\n const {\n radiusUnits,\n radiusScale,\n radiusMinPixels,\n radiusMaxPixels,\n stroked,\n filled,\n billboard,\n antialiasing,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels\n } = this.props;\n\n this.state.model\n .setUniforms(uniforms)\n .setUniforms({\n stroked: stroked ? 1 : 0,\n filled,\n billboard,\n antialiasing,\n radiusUnits: UNIT[radiusUnits],\n radiusScale,\n radiusMinPixels,\n radiusMaxPixels,\n lineWidthUnits: UNIT[lineWidthUnits],\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels\n })\n .draw();\n }\n\n protected _getModel(gl) {\n // a square that minimally cover the unit circle\n const positions = [-1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0];\n\n return new Model(gl, {\n ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_FAN,\n vertexCount: 4,\n attributes: {\n positions: {size: 3, value: new Float32Array(positions)}\n }\n }),\n isInstanced: true\n });\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME scatterplot-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool filled;\nuniform float stroked;\nuniform bool antialiasing;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\nvoid main(void) {\n geometry.uv = unitPosition;\n\n float distToCenter = length(unitPosition) * outerRadiusPixels;\n float inCircle = antialiasing ? \n smoothedge(distToCenter, outerRadiusPixels) : \n step(distToCenter, outerRadiusPixels);\n\n if (inCircle == 0.0) {\n discard;\n }\n\n if (stroked > 0.5) {\n float isLine = antialiasing ? \n smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) :\n step(innerUnitRadius * outerRadiusPixels, distToCenter);\n\n if (filled) {\n gl_FragColor = mix(vFillColor, vLineColor, isLine);\n } else {\n if (isLine == 0.0) {\n discard;\n }\n gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\n }\n } else if (filled) {\n gl_FragColor = vFillColor;\n } else {\n discard;\n }\n\n gl_FragColor.a *= inCircle;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME multi-icon-layer-fragment-shader\n\nprecision highp float;\n\nuniform float opacity;\nuniform sampler2D iconsTexture;\nuniform float gamma;\nuniform bool sdf;\nuniform float alphaCutoff;\nuniform float sdfBuffer;\nuniform float outlineBuffer;\nuniform vec4 outlineColor;\n\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvoid main(void) {\n geometry.uv = uv;\n\n if (!picking_uActive) {\n float alpha = texture2D(iconsTexture, vTextureCoords).a;\n vec4 color = vColor;\n\n // if enable sdf (signed distance fields)\n if (sdf) {\n float distance = alpha;\n alpha = smoothstep(sdfBuffer - gamma, sdfBuffer + gamma, distance);\n\n if (outlineBuffer > 0.0) {\n float inFill = alpha;\n float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance);\n color = mix(outlineColor, vColor, inFill);\n alpha = inBorder;\n }\n }\n\n // Take the global opacity and the alpha from color into account for the alpha component\n float a = alpha * color.a;\n \n if (a < alphaCutoff) {\n discard;\n }\n\n gl_FragColor = vec4(color.rgb, a * opacity);\n }\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport GL from '@luma.gl/constants';\nimport {log} from '@deck.gl/core';\nimport IconLayer from '../../icon-layer/icon-layer';\n\nimport fs from './multi-icon-layer-fragment.glsl';\n\nimport type {IconLayerProps} from '../../icon-layer/icon-layer';\nimport type {Accessor, Color, UpdateParameters, DefaultProps} from '@deck.gl/core';\n\n// TODO expose as layer properties\nconst DEFAULT_BUFFER = 192.0 / 256;\nconst EMPTY_ARRAY = [];\n\ntype _MultiIconLayerProps = {\n getIconOffsets?: Accessor;\n sdf?: boolean;\n smoothing?: number;\n outlineWidth?: number;\n outlineColor?: Color;\n};\n\nexport type MultiIconLayerProps = _MultiIconLayerProps & IconLayerProps;\n\nconst defaultProps: DefaultProps = {\n getIconOffsets: {type: 'accessor', value: x => x.offsets},\n alphaCutoff: 0.001,\n smoothing: 0.1,\n outlineWidth: 0,\n outlineColor: {type: 'color', value: [0, 0, 0, 255]}\n};\n\nexport default class MultiIconLayer extends IconLayer<\n DataT,\n ExtraPropsT & Required<_MultiIconLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'MultiIconLayer';\n\n state!: IconLayer['state'] & {\n outlineColor: Color;\n };\n\n getShaders() {\n return {...super.getShaders(), fs};\n }\n\n initializeState() {\n super.initializeState();\n\n const attributeManager = this.getAttributeManager();\n attributeManager!.addInstanced({\n instanceOffsets: {\n size: 2,\n accessor: 'getIconOffsets'\n },\n instancePickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n accessor: (object, {index, target: value}) => this.encodePickingColor(index, value)\n }\n });\n }\n\n updateState(params: UpdateParameters) {\n super.updateState(params);\n const {props, oldProps} = params;\n let {outlineColor} = props;\n\n if (outlineColor !== oldProps.outlineColor) {\n outlineColor = outlineColor.map(x => x / 255) as Color;\n outlineColor[3] = Number.isFinite(outlineColor[3]) ? outlineColor[3] : 1;\n\n this.setState({\n outlineColor\n });\n }\n if (!props.sdf && props.outlineWidth) {\n log.warn(`${this.id}: fontSettings.sdf is required to render outline`)();\n }\n }\n\n draw(params) {\n const {sdf, smoothing, outlineWidth} = this.props;\n const {outlineColor} = this.state;\n const outlineBuffer = outlineWidth\n ? Math.max(smoothing, DEFAULT_BUFFER * (1 - outlineWidth))\n : -1;\n\n params.uniforms = {\n ...params.uniforms,\n // Refer the following doc about gamma and buffer\n // https://blog.mapbox.com/drawing-text-with-signed-distance-fields-in-mapbox-gl-b0933af6f817\n sdfBuffer: DEFAULT_BUFFER,\n outlineBuffer,\n gamma: smoothing,\n sdf: Boolean(sdf),\n outlineColor\n };\n\n super.draw(params);\n\n // draw text without outline on top to ensure a thick outline won't occlude other characters\n if (sdf && outlineWidth) {\n const {iconManager} = this.state;\n const iconsTexture = iconManager.getTexture();\n\n if (iconsTexture) {\n this.state.model.draw({uniforms: {outlineBuffer: DEFAULT_BUFFER}});\n }\n }\n }\n\n protected getInstanceOffset(icons: string): number[] {\n return icons ? Array.from(icons).flatMap(icon => super.getInstanceOffset(icon)) : EMPTY_ARRAY;\n }\n\n getInstanceColorMode(icons: string): number {\n return 1; // mask\n }\n\n getInstanceIconFrame(icons: string): number[] {\n return icons\n ? Array.from(icons).flatMap(icon => super.getInstanceIconFrame(icon))\n : EMPTY_ARRAY;\n }\n}\n","const INF = 1e20;\n\nexport default class TinySDF {\n constructor({\n fontSize = 24,\n buffer = 3,\n radius = 8,\n cutoff = 0.25,\n fontFamily = 'sans-serif',\n fontWeight = 'normal',\n fontStyle = 'normal'\n } = {}) {\n this.buffer = buffer;\n this.cutoff = cutoff;\n this.radius = radius;\n\n // make the canvas size big enough to both have the specified buffer around the glyph\n // for \"halo\", and account for some glyphs possibly being larger than their font size\n const size = this.size = fontSize + buffer * 4;\n\n const canvas = this._createCanvas(size);\n const ctx = this.ctx = canvas.getContext('2d', {willReadFrequently: true});\n ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\n ctx.textBaseline = 'alphabetic';\n ctx.textAlign = 'left'; // Necessary so that RTL text doesn't have different alignment\n ctx.fillStyle = 'black';\n\n // temporary arrays for the distance transform\n this.gridOuter = new Float64Array(size * size);\n this.gridInner = new Float64Array(size * size);\n this.f = new Float64Array(size);\n this.z = new Float64Array(size + 1);\n this.v = new Uint16Array(size);\n }\n\n _createCanvas(size) {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = size;\n return canvas;\n }\n\n draw(char) {\n const {\n width: glyphAdvance,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n actualBoundingBoxLeft,\n actualBoundingBoxRight\n } = this.ctx.measureText(char);\n\n // The integer/pixel part of the top alignment is encoded in metrics.glyphTop\n // The remainder is implicitly encoded in the rasterization\n const glyphTop = Math.ceil(actualBoundingBoxAscent);\n const glyphLeft = 0;\n\n // If the glyph overflows the canvas size, it will be clipped at the bottom/right\n const glyphWidth = Math.max(0, Math.min(this.size - this.buffer, Math.ceil(actualBoundingBoxRight - actualBoundingBoxLeft)));\n const glyphHeight = Math.min(this.size - this.buffer, glyphTop + Math.ceil(actualBoundingBoxDescent));\n\n const width = glyphWidth + 2 * this.buffer;\n const height = glyphHeight + 2 * this.buffer;\n\n const len = Math.max(width * height, 0);\n const data = new Uint8ClampedArray(len);\n const glyph = {data, width, height, glyphWidth, glyphHeight, glyphTop, glyphLeft, glyphAdvance};\n if (glyphWidth === 0 || glyphHeight === 0) return glyph;\n\n const {ctx, buffer, gridInner, gridOuter} = this;\n ctx.clearRect(buffer, buffer, glyphWidth, glyphHeight);\n ctx.fillText(char, buffer, buffer + glyphTop);\n const imgData = ctx.getImageData(buffer, buffer, glyphWidth, glyphHeight);\n\n // Initialize grids outside the glyph range to alpha 0\n gridOuter.fill(INF, 0, len);\n gridInner.fill(0, 0, len);\n\n for (let y = 0; y < glyphHeight; y++) {\n for (let x = 0; x < glyphWidth; x++) {\n const a = imgData.data[4 * (y * glyphWidth + x) + 3] / 255; // alpha value\n if (a === 0) continue; // empty pixels\n\n const j = (y + buffer) * width + x + buffer;\n\n if (a === 1) { // fully drawn pixels\n gridOuter[j] = 0;\n gridInner[j] = INF;\n\n } else { // aliased pixels\n const d = 0.5 - a;\n gridOuter[j] = d > 0 ? d * d : 0;\n gridInner[j] = d < 0 ? d * d : 0;\n }\n }\n }\n\n edt(gridOuter, 0, 0, width, height, width, this.f, this.v, this.z);\n edt(gridInner, buffer, buffer, glyphWidth, glyphHeight, width, this.f, this.v, this.z);\n\n for (let i = 0; i < len; i++) {\n const d = Math.sqrt(gridOuter[i]) - Math.sqrt(gridInner[i]);\n data[i] = Math.round(255 - 255 * (d / this.radius + this.cutoff));\n }\n\n return glyph;\n }\n}\n\n// 2D Euclidean squared distance transform by Felzenszwalb & Huttenlocher https://cs.brown.edu/~pff/papers/dt-final.pdf\nfunction edt(data, x0, y0, width, height, gridSize, f, v, z) {\n for (let x = x0; x < x0 + width; x++) edt1d(data, y0 * gridSize + x, gridSize, height, f, v, z);\n for (let y = y0; y < y0 + height; y++) edt1d(data, y * gridSize + x0, 1, width, f, v, z);\n}\n\n// 1D squared distance transform\nfunction edt1d(grid, offset, stride, length, f, v, z) {\n v[0] = 0;\n z[0] = -INF;\n z[1] = INF;\n f[0] = grid[offset];\n\n for (let q = 1, k = 0, s = 0; q < length; q++) {\n f[q] = grid[offset + q * stride];\n const q2 = q * q;\n do {\n const r = v[k];\n s = (f[q] - f[r] + q2 - r * r) / (q - r) / 2;\n } while (s <= z[k] && --k > -1);\n\n k++;\n v[k] = q;\n z[k] = s;\n z[k + 1] = INF;\n }\n\n for (let q = 0, k = 0; q < length; q++) {\n while (z[k + 1] < q) k++;\n const r = v[k];\n const qr = q - r;\n grid[offset + q * stride] = f[r] + qr * qr;\n }\n}\n","/* eslint-disable max-statements, max-params, complexity, max-depth */\n// TODO merge with icon-layer/icon-manager\nimport {log} from '@deck.gl/core';\nimport type {NumericArray} from '@math.gl/core';\n\nconst MISSING_CHAR_WIDTH = 32;\nconst SINGLE_LINE = [];\n\nexport type Character = {\n x: number;\n y: number;\n width: number;\n height: number;\n layoutWidth: number;\n layoutHeight: number;\n layoutOffsetY?: number;\n};\n\nexport type CharacterMapping = Record;\n\nexport function nextPowOfTwo(number: number): number {\n return Math.pow(2, Math.ceil(Math.log2(number)));\n}\n\n/**\n * Generate character mapping table or update from an existing mapping table\n */\nexport function buildMapping({\n characterSet,\n getFontWidth,\n fontHeight,\n buffer,\n maxCanvasWidth,\n mapping = {},\n xOffset = 0,\n yOffset = 0\n}: {\n /** list of characters */\n characterSet: Set;\n /** function to get width of each character */\n getFontWidth: (char: string) => number;\n /** height of font */\n fontHeight: number;\n /** bleeding buffer surround each character */\n buffer: number;\n /** max width of font atlas */\n maxCanvasWidth: number;\n /** cached mapping table */\n mapping?: CharacterMapping;\n /** x position of last character in the existing mapping table */\n xOffset?: number;\n /** y position of last character in the existing mapping table */\n yOffset?: number;\n}): {\n /** new mapping table */\n mapping: CharacterMapping;\n /** x position of last character in the new mapping table */\n xOffset: number;\n /** y position of last character in the new mapping table */\n yOffset: number;\n /** height of the font atlas canvas, power of 2 */\n canvasHeight: number;\n} {\n let row = 0;\n // continue from x position of last character in the old mapping\n let x = xOffset;\n const rowHeight = fontHeight + buffer * 2;\n\n for (const char of characterSet) {\n if (!mapping[char]) {\n // measure texts\n // TODO - use Advanced text metrics when they are adopted:\n // https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics\n const width = getFontWidth(char);\n\n if (x + width + buffer * 2 > maxCanvasWidth) {\n x = 0;\n row++;\n }\n mapping[char] = {\n x: x + buffer,\n y: yOffset + row * rowHeight + buffer,\n width,\n height: rowHeight,\n layoutWidth: width,\n layoutHeight: fontHeight\n };\n x += width + buffer * 2;\n }\n }\n\n return {\n mapping,\n xOffset: x,\n yOffset: yOffset + row * rowHeight,\n canvasHeight: nextPowOfTwo(yOffset + (row + 1) * rowHeight)\n };\n}\n\nfunction getTextWidth(\n text: string[],\n startIndex: number,\n endIndex: number,\n mapping: CharacterMapping\n): number {\n let width = 0;\n for (let i = startIndex; i < endIndex; i++) {\n const character = text[i];\n width += mapping[character]?.layoutWidth || 0;\n }\n\n return width;\n}\n\nfunction breakAll(\n text: string[],\n startIndex: number,\n endIndex: number,\n maxWidth: number,\n iconMapping: CharacterMapping,\n target: number[]\n): number {\n let rowStartCharIndex = startIndex;\n let rowOffsetLeft = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n // 2. figure out where to break lines\n const textWidth = getTextWidth(text, i, i + 1, iconMapping);\n if (rowOffsetLeft + textWidth > maxWidth) {\n if (rowStartCharIndex < i) {\n target.push(i);\n }\n rowStartCharIndex = i;\n rowOffsetLeft = 0;\n }\n rowOffsetLeft += textWidth;\n }\n\n return rowOffsetLeft;\n}\n\nfunction breakWord(\n text: string[],\n startIndex: number,\n endIndex: number,\n maxWidth: number,\n iconMapping: CharacterMapping,\n target: number[]\n): number {\n let rowStartCharIndex = startIndex;\n let groupStartCharIndex = startIndex;\n let groupEndCharIndex = startIndex;\n let rowOffsetLeft = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n // 1. break text into word groups\n // - if current char is white space\n // - else if next char is white space\n // - else if reach last char\n if (text[i] === ' ') {\n groupEndCharIndex = i + 1;\n } else if (text[i + 1] === ' ' || i + 1 === endIndex) {\n groupEndCharIndex = i + 1;\n }\n\n if (groupEndCharIndex > groupStartCharIndex) {\n // 2. break text into next row at maxWidth\n let groupWidth = getTextWidth(text, groupStartCharIndex, groupEndCharIndex, iconMapping);\n if (rowOffsetLeft + groupWidth > maxWidth) {\n if (rowStartCharIndex < groupStartCharIndex) {\n target.push(groupStartCharIndex);\n rowStartCharIndex = groupStartCharIndex;\n rowOffsetLeft = 0;\n }\n\n // if a single text group is bigger than maxWidth, then `break-all`\n if (groupWidth > maxWidth) {\n groupWidth = breakAll(\n text,\n groupStartCharIndex,\n groupEndCharIndex,\n maxWidth,\n iconMapping,\n target\n );\n // move reference to last row\n rowStartCharIndex = target[target.length - 1];\n }\n }\n groupStartCharIndex = groupEndCharIndex;\n rowOffsetLeft += groupWidth;\n }\n }\n\n return rowOffsetLeft;\n}\n\n/**\n * Wrap the given text so that each line does not exceed the given max width.\n * Returns a list of indices where line breaks should be inserted.\n */\nexport function autoWrapping(\n text: string[],\n wordBreak: 'break-all' | 'break-word',\n maxWidth: number,\n iconMapping: CharacterMapping,\n startIndex: number = 0,\n endIndex: number\n): number[] {\n if (endIndex === undefined) {\n endIndex = text.length;\n }\n const result = [];\n if (wordBreak === 'break-all') {\n breakAll(text, startIndex, endIndex, maxWidth, iconMapping, result);\n } else {\n breakWord(text, startIndex, endIndex, maxWidth, iconMapping, result);\n }\n return result;\n}\n\nfunction transformRow(\n line: string[],\n startIndex: number,\n endIndex: number,\n iconMapping: CharacterMapping,\n leftOffsets: number[],\n rowSize: [number, number]\n) {\n let x = 0;\n let rowHeight = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n const character = line[i];\n const frame = iconMapping[character];\n if (frame) {\n if (!rowHeight) {\n // frame.height should be a constant\n rowHeight = frame.layoutHeight;\n }\n leftOffsets[i] = x + frame.layoutWidth / 2;\n x += frame.layoutWidth;\n } else {\n log.warn(`Missing character: ${character} (${character.codePointAt(0)})`)();\n leftOffsets[i] = x;\n x += MISSING_CHAR_WIDTH;\n }\n }\n\n rowSize[0] = x;\n rowSize[1] = rowHeight;\n}\n\n/**\n * Transform a text paragraph to an array of characters, each character contains\n */\nexport function transformParagraph(\n paragraph: string,\n /** CSS line-height */\n lineHeight: number,\n /** CSS word-break option */\n wordBreak: 'break-word' | 'break-all',\n /** CSS max-width */\n maxWidth: number,\n /** character mapping table for retrieving a character from font atlas */\n iconMapping: CharacterMapping\n): {\n /** x position of each character */\n x: number[];\n /** y position of each character */\n y: number[];\n /** the current row width of each character */\n rowWidth: number[];\n /** the width and height of the paragraph */\n size: [number, number];\n} {\n // Break into an array of characters\n // When dealing with double-length unicode characters, `str.length` or `str[i]` do not work\n const characters = Array.from(paragraph);\n const numCharacters = characters.length;\n const x = new Array(numCharacters) as number[];\n const y = new Array(numCharacters) as number[];\n const rowWidth = new Array(numCharacters) as number[];\n const autoWrappingEnabled =\n (wordBreak === 'break-word' || wordBreak === 'break-all') && isFinite(maxWidth) && maxWidth > 0;\n\n // maxWidth and height of the paragraph\n const size: [number, number] = [0, 0];\n const rowSize: [number, number] = [0, 0];\n let rowOffsetTop = 0;\n let lineStartIndex = 0;\n let lineEndIndex = 0;\n\n for (let i = 0; i <= numCharacters; i++) {\n const char = characters[i];\n if (char === '\\n' || i === numCharacters) {\n lineEndIndex = i;\n }\n\n if (lineEndIndex > lineStartIndex) {\n const rows = autoWrappingEnabled\n ? autoWrapping(characters, wordBreak, maxWidth, iconMapping, lineStartIndex, lineEndIndex)\n : SINGLE_LINE;\n\n for (let rowIndex = 0; rowIndex <= rows.length; rowIndex++) {\n const rowStart = rowIndex === 0 ? lineStartIndex : rows[rowIndex - 1];\n const rowEnd = rowIndex < rows.length ? rows[rowIndex] : lineEndIndex;\n\n transformRow(characters, rowStart, rowEnd, iconMapping, x, rowSize);\n for (let j = rowStart; j < rowEnd; j++) {\n const char = characters[j];\n const layoutOffsetY = iconMapping[char]?.layoutOffsetY || 0;\n y[j] = rowOffsetTop + rowSize[1] / 2 + layoutOffsetY;\n rowWidth[j] = rowSize[0];\n }\n\n rowOffsetTop = rowOffsetTop + rowSize[1] * lineHeight;\n size[0] = Math.max(size[0], rowSize[0]);\n }\n lineStartIndex = lineEndIndex;\n }\n\n if (char === '\\n') {\n // Make sure result.length matches paragraph.length\n x[lineStartIndex] = 0;\n y[lineStartIndex] = 0;\n rowWidth[lineStartIndex] = 0;\n lineStartIndex++;\n }\n }\n\n // last row\n size[1] = rowOffsetTop;\n return {x, y, rowWidth, size};\n}\n\nexport function getTextFromBuffer({\n value,\n length,\n stride,\n offset,\n startIndices,\n characterSet\n}: {\n value: Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array;\n length: number;\n stride?: number;\n offset?: number;\n startIndices: NumericArray;\n characterSet?: Set;\n}): {\n texts: string[];\n characterCount: number;\n} {\n const bytesPerElement = value.BYTES_PER_ELEMENT;\n const elementStride = stride ? stride / bytesPerElement : 1;\n const elementOffset = offset ? offset / bytesPerElement : 0;\n const characterCount =\n startIndices[length] || Math.ceil((value.length - elementOffset) / elementStride);\n const autoCharacterSet = characterSet && new Set();\n\n const texts = new Array(length);\n\n let codes = value;\n if (elementStride > 1 || elementOffset > 0) {\n const ArrayType = value.constructor as\n | Uint8ArrayConstructor\n | Uint8ClampedArrayConstructor\n | Uint16ArrayConstructor\n | Uint32ArrayConstructor;\n codes = new ArrayType(characterCount);\n for (let i = 0; i < characterCount; i++) {\n codes[i] = value[i * elementStride + elementOffset];\n }\n }\n\n for (let index = 0; index < length; index++) {\n const startIndex = startIndices[index];\n const endIndex = startIndices[index + 1] || characterCount;\n const codesAtIndex = codes.subarray(startIndex, endIndex);\n // @ts-ignore TS wants the argument to be number[] but typed array works too\n texts[index] = String.fromCodePoint.apply(null, codesAtIndex);\n if (autoCharacterSet) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n codesAtIndex.forEach(autoCharacterSet.add, autoCharacterSet);\n }\n }\n\n if (autoCharacterSet) {\n for (const charCode of autoCharacterSet) {\n characterSet.add(String.fromCodePoint(charCode));\n }\n }\n\n return {texts, characterCount};\n}\n","/**\n * LRU Cache class with limit\n *\n * Update order for each get/set operation\n * Delete oldest when reach given limit\n */\n\nexport default class LRUCache {\n private limit: number;\n private _cache: Record = {};\n /** access/update order, first item is oldest, last item is newest */\n private _order: string[] = [];\n\n constructor(limit: number = 5) {\n this.limit = limit;\n }\n\n get(key: string): ValueT {\n const value = this._cache[key];\n if (value) {\n // update order\n this._deleteOrder(key);\n this._appendOrder(key);\n }\n return value;\n }\n\n set(key: string, value: ValueT): void {\n if (!this._cache[key]) {\n // if reach limit, delete the oldest\n if (Object.keys(this._cache).length === this.limit) {\n this.delete(this._order[0]);\n }\n\n this._cache[key] = value;\n this._appendOrder(key);\n } else {\n // if found in cache, delete the old one, insert new one to the first of list\n this.delete(key);\n\n this._cache[key] = value;\n this._appendOrder(key);\n }\n }\n\n delete(key: string): void {\n const value = this._cache[key];\n if (value) {\n delete this._cache[key];\n this._deleteOrder(key);\n }\n }\n\n private _deleteOrder(key: string): void {\n const index = this._order.indexOf(key);\n if (index >= 0) {\n this._order.splice(index, 1);\n }\n }\n\n private _appendOrder(key: string): void {\n this._order.push(key);\n }\n}\n","/* global document */\nimport TinySDF from '@mapbox/tiny-sdf';\n\nimport {log} from '@deck.gl/core';\n\nimport {buildMapping, CharacterMapping} from './utils';\nimport LRUCache from './lru-cache';\n\nimport type {Texture} from '@deck.gl/core';\n\nfunction getDefaultCharacterSet() {\n const charSet: string[] = [];\n for (let i = 32; i < 128; i++) {\n charSet.push(String.fromCharCode(i));\n }\n return charSet;\n}\n\nexport type FontSettings = {\n /** CSS font family\n * @default 'Monaco, monospace'\n */\n fontFamily?: string;\n /** CSS font weight\n * @default 'normal'\n */\n fontWeight?: string | number;\n /** Specifies a list of characters to include in the font.\n * @default (ASCII characters 32-128)\n */\n characterSet?: Set | string[] | string;\n /** Font size in pixels. This option is only applied for generating `fontAtlas`, it does not impact the size of displayed text labels. Larger `fontSize` will give you a sharper look when rendering text labels with very large font sizes. But larger `fontSize` requires more time and space to generate the `fontAtlas`.\n * @default 64\n */\n fontSize?: number;\n /** Whitespace buffer around each side of the character. In general, bigger `fontSize` requires bigger `buffer`. Increase `buffer` will add more space between each character when layout `characterSet` in `fontAtlas`. This option could be tuned to provide sufficient space for drawing each character and avoiding overlapping of neighboring characters.\n * @default 4\n */\n buffer?: number;\n /** Flag to enable / disable `sdf`. [`sdf` (Signed Distance Fields)](http://cs.brown.edu/people/pfelzens/papers/dt-final.pdf) will provide a sharper look when rendering with very large or small font sizes. `TextLayer` integrates with [`TinySDF`](https://github.com/mapbox/tiny-sdf) which implements the `sdf` algorithm.\n * @default false\n */\n sdf?: boolean;\n /** How much of the radius (relative) is used for the inside part the glyph. Bigger `cutoff` makes character thinner. Smaller `cutoff` makes character look thicker. Only applies when `sdf: true`.\n * @default 0.25\n */\n cutoff?: number;\n /** How many pixels around the glyph shape to use for encoding distance. Bigger radius yields higher quality outcome. Only applies when `sdf: true`.\n * @default 12\n */\n radius?: number;\n /** How much smoothing to apply to the text edges. Only applies when `sdf: true`.\n * @default 0.1\n */\n smoothing?: number;\n};\n\nexport const DEFAULT_FONT_SETTINGS: Required = {\n fontFamily: 'Monaco, monospace',\n fontWeight: 'normal',\n characterSet: getDefaultCharacterSet(),\n fontSize: 64,\n buffer: 4,\n sdf: false,\n cutoff: 0.25,\n radius: 12,\n smoothing: 0.1\n};\n\nconst MAX_CANVAS_WIDTH = 1024;\n\nconst BASELINE_SCALE = 0.9;\nconst HEIGHT_SCALE = 1.2;\n\n// only preserve latest three fontAtlas\nconst CACHE_LIMIT = 3;\n\ntype FontAtlas = {\n /** x position of last character in mapping */\n xOffset: number;\n /** y position of last character in mapping */\n yOffset: number;\n /** bounding box of each character in the texture */\n mapping: CharacterMapping;\n /** packed texture */\n data: HTMLCanvasElement;\n /** texture width */\n width: number;\n /** texture height */\n height: number;\n};\n\nlet cache = new LRUCache(CACHE_LIMIT);\n\n/**\n * get all the chars not in cache\n * @returns chars not in cache\n */\nfunction getNewChars(cacheKey: string, characterSet: Set | string[] | string): Set {\n let newCharSet: Set;\n if (typeof characterSet === 'string') {\n newCharSet = new Set(Array.from(characterSet));\n } else {\n newCharSet = new Set(characterSet);\n }\n\n const cachedFontAtlas = cache.get(cacheKey);\n if (!cachedFontAtlas) {\n return newCharSet;\n }\n\n for (const char in cachedFontAtlas.mapping) {\n if (newCharSet.has(char)) {\n newCharSet.delete(char);\n }\n }\n return newCharSet;\n}\n\nfunction populateAlphaChannel(alphaChannel: Uint8ClampedArray, imageData: ImageData): void {\n // populate distance value from tinySDF to image alpha channel\n for (let i = 0; i < alphaChannel.length; i++) {\n imageData.data[4 * i + 3] = alphaChannel[i];\n }\n}\n\nfunction setTextStyle(\n ctx: CanvasRenderingContext2D,\n fontFamily: string,\n fontSize: number,\n fontWeight: string | number\n): void {\n ctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`;\n ctx.fillStyle = '#000';\n ctx.textBaseline = 'alphabetic';\n ctx.textAlign = 'left';\n}\n\n/**\n * Sets the Font Atlas LRU Cache Limit\n * @param {number} limit LRU Cache limit\n */\nexport function setFontAtlasCacheLimit(limit: number): void {\n log.assert(Number.isFinite(limit) && limit >= CACHE_LIMIT, 'Invalid cache limit');\n\n cache = new LRUCache(limit);\n}\n\nexport default class FontAtlasManager {\n /** Font settings */\n props: Required = {...DEFAULT_FONT_SETTINGS};\n\n /** Cache key of the current font atlas */\n private _key?: string;\n /** The current font atlas */\n private _atlas?: FontAtlas;\n\n get texture(): Texture | undefined {\n return this._atlas;\n }\n\n get mapping(): CharacterMapping | undefined {\n return this._atlas && this._atlas.mapping;\n }\n\n get scale(): number {\n const {fontSize, buffer} = this.props;\n return (fontSize * HEIGHT_SCALE + buffer * 2) / fontSize;\n }\n\n setProps(props: FontSettings = {}) {\n Object.assign(this.props, props);\n\n // update cache key\n this._key = this._getKey();\n\n const charSet = getNewChars(this._key, this.props.characterSet);\n const cachedFontAtlas = cache.get(this._key);\n\n // if a fontAtlas associated with the new settings is cached and\n // there are no new chars\n if (cachedFontAtlas && charSet.size === 0) {\n // update texture with cached fontAtlas\n if (this._atlas !== cachedFontAtlas) {\n this._atlas = cachedFontAtlas;\n }\n return;\n }\n\n // update fontAtlas with new settings\n const fontAtlas = this._generateFontAtlas(charSet, cachedFontAtlas);\n this._atlas = fontAtlas;\n\n // update cache\n cache.set(this._key, fontAtlas);\n }\n\n // eslint-disable-next-line max-statements\n private _generateFontAtlas(characterSet: Set, cachedFontAtlas?: FontAtlas): FontAtlas {\n const {fontFamily, fontWeight, fontSize, buffer, sdf, radius, cutoff} = this.props;\n let canvas = cachedFontAtlas && cachedFontAtlas.data;\n if (!canvas) {\n canvas = document.createElement('canvas');\n canvas.width = MAX_CANVAS_WIDTH;\n }\n const ctx = canvas.getContext('2d', {willReadFrequently: true})!;\n\n setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n\n // 1. build mapping\n const {mapping, canvasHeight, xOffset, yOffset} = buildMapping({\n getFontWidth: char => ctx.measureText(char).width,\n fontHeight: fontSize * HEIGHT_SCALE,\n buffer,\n characterSet,\n maxCanvasWidth: MAX_CANVAS_WIDTH,\n ...(cachedFontAtlas && {\n mapping: cachedFontAtlas.mapping,\n xOffset: cachedFontAtlas.xOffset,\n yOffset: cachedFontAtlas.yOffset\n })\n });\n\n // 2. update canvas\n // copy old canvas data to new canvas only when height changed\n if (canvas.height !== canvasHeight) {\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n canvas.height = canvasHeight;\n ctx.putImageData(imageData, 0, 0);\n }\n setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n\n // 3. layout characters\n if (sdf) {\n const tinySDF = new TinySDF({\n fontSize,\n buffer,\n radius,\n cutoff,\n fontFamily,\n fontWeight: `${fontWeight}`\n });\n\n for (const char of characterSet) {\n const {data, width, height, glyphTop} = tinySDF.draw(char);\n mapping[char].width = width;\n mapping[char].layoutOffsetY = fontSize * BASELINE_SCALE - glyphTop;\n\n const imageData = ctx.createImageData(width, height);\n populateAlphaChannel(data, imageData);\n ctx.putImageData(imageData, mapping[char].x, mapping[char].y);\n }\n } else {\n for (const char of characterSet) {\n ctx.fillText(char, mapping[char].x, mapping[char].y + buffer + fontSize * BASELINE_SCALE);\n }\n }\n\n return {\n xOffset,\n yOffset,\n mapping,\n data: canvas,\n width: canvas.width,\n height: canvas.height\n };\n }\n\n private _getKey(): string {\n const {fontFamily, fontWeight, fontSize, buffer, sdf, radius, cutoff} = this.props;\n if (sdf) {\n return `${fontFamily} ${fontWeight} ${fontSize} ${buffer} ${radius} ${cutoff}`;\n }\n return `${fontFamily} ${fontWeight} ${fontSize} ${buffer}`;\n }\n}\n","export default `\\\n#define SHADER_NAME text-background-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute vec4 instanceRects;\nattribute float instanceSizes;\nattribute float instanceAngles;\nattribute vec2 instancePixelOffsets;\nattribute float instanceLineWidths;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\nuniform bool billboard;\nuniform float opacity;\nuniform float sizeScale;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform vec4 padding;\nuniform int sizeUnits;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying float vLineWidth;\nvarying vec2 uv;\nvarying vec2 dimensions;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = radians(angle);\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n vLineWidth = instanceLineWidths;\n\n // convert size in meters to pixels, then scaled and clamp\n\n // project meters to pixels and clamp to limits\n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\n sizeMinPixels, sizeMaxPixels\n );\n\n dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw;\n\n vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions);\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\n pixelOffset += instancePixelOffsets;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n // Apply opacity to instance color, or return instance picking color\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;\n","import {Layer, project32, picking, UNIT} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry} from '@luma.gl/core';\n\nimport vs from './text-background-layer-vertex.glsl';\nimport fs from './text-background-layer-fragment.glsl';\n\nimport type {\n LayerProps,\n LayerDataSource,\n Accessor,\n Unit,\n Position,\n Color,\n UpdateParameters,\n DefaultProps\n} from '@deck.gl/core';\n\ntype _TextBackgroundLayerProps = {\n data: LayerDataSource;\n billboard?: boolean;\n sizeScale?: number;\n sizeUnits?: Unit;\n sizeMinPixels?: number;\n sizeMaxPixels?: number;\n\n padding?: [number, number] | [number, number, number, number];\n\n getPosition?: Accessor;\n getSize?: Accessor;\n getAngle?: Accessor;\n getPixelOffset?: Accessor;\n getBoundingRect?: Accessor;\n getFillColor?: Accessor;\n getLineColor?: Accessor;\n getLineWidth?: Accessor;\n};\n\nexport type TextBackgroundLayerProps = _TextBackgroundLayerProps & LayerProps;\n\nconst defaultProps: DefaultProps = {\n billboard: true,\n sizeScale: 1,\n sizeUnits: 'pixels',\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n\n padding: {type: 'array', value: [0, 0, 0, 0]},\n\n getPosition: {type: 'accessor', value: x => x.position},\n getSize: {type: 'accessor', value: 1},\n getAngle: {type: 'accessor', value: 0},\n getPixelOffset: {type: 'accessor', value: [0, 0]},\n getBoundingRect: {type: 'accessor', value: [0, 0, 0, 0]},\n getFillColor: {type: 'accessor', value: [0, 0, 0, 255]},\n getLineColor: {type: 'accessor', value: [0, 0, 0, 255]},\n getLineWidth: {type: 'accessor', value: 1}\n};\n\nexport default class TextBackgroundLayer extends Layer<\n ExtraPropsT & Required<_TextBackgroundLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'TextBackgroundLayer';\n\n state!: {\n model: Model;\n };\n\n getShaders() {\n return super.getShaders({vs, fs, modules: [project32, picking]});\n }\n\n initializeState() {\n this.getAttributeManager()!.addInstanced({\n instancePositions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceSizes: {\n size: 1,\n transition: true,\n accessor: 'getSize',\n defaultValue: 1\n },\n instanceAngles: {\n size: 1,\n transition: true,\n accessor: 'getAngle'\n },\n instanceRects: {\n size: 4,\n accessor: 'getBoundingRect'\n },\n instancePixelOffsets: {\n size: 2,\n transition: true,\n accessor: 'getPixelOffset'\n },\n instanceFillColors: {\n size: 4,\n transition: true,\n normalized: true,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getFillColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineColors: {\n size: 4,\n transition: true,\n normalized: true,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getLineColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineWidths: {\n size: 1,\n transition: true,\n accessor: 'getLineWidth',\n defaultValue: 1\n }\n });\n }\n\n updateState(params: UpdateParameters) {\n super.updateState(params);\n const {changeFlags} = params;\n if (changeFlags.extensionsChanged) {\n const {gl} = this.context;\n this.state.model?.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager()!.invalidateAll();\n }\n }\n\n draw({uniforms}) {\n const {billboard, sizeScale, sizeUnits, sizeMinPixels, sizeMaxPixels, getLineWidth} =\n this.props;\n let {padding} = this.props;\n\n if (padding.length < 4) {\n padding = [padding[0], padding[1], padding[0], padding[1]];\n }\n\n this.state.model\n .setUniforms(uniforms)\n .setUniforms({\n billboard,\n stroked: Boolean(getLineWidth),\n padding,\n sizeUnits: UNIT[sizeUnits],\n sizeScale,\n sizeMinPixels,\n sizeMaxPixels\n })\n .draw();\n }\n\n protected _getModel(gl: WebGLRenderingContext): Model {\n // a square that minimally cover the unit circle\n const positions = [0, 0, 1, 0, 1, 1, 0, 1];\n\n return new Model(gl, {\n ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_FAN,\n vertexCount: 4,\n attributes: {\n positions: {size: 2, value: new Float32Array(positions)}\n }\n }),\n isInstanced: true\n });\n }\n}\n","export default `\\\n#define SHADER_NAME text-background-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool stroked;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying float vLineWidth;\nvarying vec2 uv;\nvarying vec2 dimensions;\n\nvoid main(void) {\n geometry.uv = uv;\n\n vec2 pixelPosition = uv * dimensions;\n if (stroked) {\n float distToEdge = min(\n min(pixelPosition.x, dimensions.x - pixelPosition.x),\n min(pixelPosition.y, dimensions.y - pixelPosition.y)\n );\n float isBorder = smoothedge(distToEdge, vLineWidth);\n gl_FragColor = mix(vFillColor, vLineColor, isBorder);\n } else {\n gl_FragColor = vFillColor;\n }\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {CompositeLayer, createIterable, log} from '@deck.gl/core';\nimport MultiIconLayer from './multi-icon-layer/multi-icon-layer';\nimport FontAtlasManager, {\n DEFAULT_FONT_SETTINGS,\n setFontAtlasCacheLimit\n} from './font-atlas-manager';\nimport {transformParagraph, getTextFromBuffer} from './utils';\n\nimport TextBackgroundLayer from './text-background-layer/text-background-layer';\n\nimport type {FontSettings} from './font-atlas-manager';\nimport type {\n LayerProps,\n LayerDataSource,\n Accessor,\n AccessorFunction,\n AccessorContext,\n Unit,\n Position,\n Color,\n UpdateParameters,\n GetPickingInfoParams,\n PickingInfo,\n DefaultProps\n} from '@deck.gl/core';\n\nconst TEXT_ANCHOR = {\n start: 1,\n middle: 0,\n end: -1\n} as const;\n\nconst ALIGNMENT_BASELINE = {\n top: 1,\n center: 0,\n bottom: -1\n} as const;\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\nconst DEFAULT_LINE_HEIGHT = 1.0;\n\ntype _TextLayerProps = {\n data: LayerDataSource;\n /** If `true`, the text always faces camera. Otherwise the text faces up (z).\n * @default true\n */\n billboard?: boolean;\n /**\n * Text size multiplier.\n * @default 1\n */\n sizeScale?: number;\n /**\n * The units of the size, one of `'meters'`, `'common'`, and `'pixels'`.\n * @default 'pixels'\n */\n sizeUnits?: Unit;\n /**\n * The minimum size in pixels. When using non-pixel `sizeUnits`, this prop can be used to prevent the icon from getting too small when zoomed out.\n * @default 0\n */\n sizeMinPixels?: number;\n /**\n * The maximum size in pixels. When using non-pixel `sizeUnits`, this prop can be used to prevent the icon from getting too big when zoomed in.\n * @default Number.MAX_SAFE_INTEGER\n */\n sizeMaxPixels?: number;\n\n /** Whether to render background for the text blocks.\n * @default false\n */\n background?: boolean;\n /** Background color accessor.\n * @default [255, 255, 255, 255]\n */\n getBackgroundColor?: Accessor;\n /** Border color accessor.\n * @default [0, 0, 0, 255]\n */\n getBorderColor?: Accessor;\n /** Border width accessor.\n * @default 0\n */\n getBorderWidth?: Accessor;\n /**\n * The padding of the background..\n * If an array of 2 is supplied, it is interpreted as `[padding_x, padding_y]` in pixels.\n * If an array of 4 is supplied, it is interpreted as `[padding_left, padding_top, padding_right, padding_bottom]` in pixels.\n * @default [0, 0, 0, 0]\n */\n backgroundPadding?: [number, number] | [number, number, number, number];\n /**\n * Specifies a list of characters to include in the font. If set to 'auto', will be automatically generated from the data set.\n * @default (ASCII characters 32-128)\n */\n characterSet?: FontSettings['characterSet'] | 'auto';\n /** CSS font family\n * @default 'Monaco, monospace'\n */\n fontFamily?: FontSettings['fontFamily'];\n /** CSS font weight\n * @default 'normal'\n */\n fontWeight?: FontSettings['fontWeight'];\n /** A unitless number that will be multiplied with the current text size to set the line height.\n * @default 'normal'\n */\n lineHeight?: number;\n /**\n * Width of outline around the text, relative to the text size. Only effective if `fontSettings.sdf` is `true`.\n * @default 0\n */\n outlineWidth?: number;\n /**\n * Color of outline around the text, in `[r, g, b, [a]]`. Each channel is a number between 0-255 and `a` is 255 if not supplied.\n * @default [0, 0, 0, 255]\n */\n outlineColor?: Color;\n /**\n * Advance options for fine tuning the appearance and performance of the generated shared `fontAtlas`.\n */\n fontSettings?: FontSettings;\n /**\n * Available options are `break-all` and `break-word`. A valid `maxWidth` has to be provided to use `wordBreak`.\n * @default 'break-word'\n */\n wordBreak?: 'break-word' | 'break-all';\n /**\n * A unitless number that will be multiplied with the current text size to set the width limit of a string.\n * If specified, when the text is longer than the width limit, it will be wrapped into multiple lines using\n * the strategy of `wordBreak`.\n * @default -1\n */\n maxWidth?: number;\n /**\n * Label text accessor\n */\n getText?: AccessorFunction;\n /**\n * Anchor position accessor\n */\n getPosition?: Accessor;\n /**\n * Label color accessor\n * @default [0, 0, 0, 255]\n */\n getColor?: Accessor;\n /**\n * Label size accessor\n * @default 32\n */\n getSize?: Accessor;\n /**\n * Label rotation accessor, in degrees\n * @default 0\n */\n getAngle?: Accessor;\n /**\n * Horizontal alignment accessor\n * @default 'middle'\n */\n getTextAnchor?: Accessor;\n /**\n * Vertical alignment accessor\n * @default 'center'\n */\n getAlignmentBaseline?: Accessor;\n /**\n * Label offset from the anchor position, [x, y] in pixels\n * @default [0, 0]\n */\n getPixelOffset?: Accessor;\n /**\n * @deprecated Use `background` and `getBackgroundColor` instead\n */\n backgroundColor?: Color;\n};\n\nexport type TextLayerProps = _TextLayerProps & LayerProps;\n\nconst defaultProps: DefaultProps = {\n billboard: true,\n sizeScale: 1,\n sizeUnits: 'pixels',\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n\n background: false,\n getBackgroundColor: {type: 'accessor', value: [255, 255, 255, 255]},\n getBorderColor: {type: 'accessor', value: DEFAULT_COLOR},\n getBorderWidth: {type: 'accessor', value: 0},\n backgroundPadding: {type: 'array', value: [0, 0, 0, 0]},\n\n characterSet: {type: 'object', value: DEFAULT_FONT_SETTINGS.characterSet},\n fontFamily: DEFAULT_FONT_SETTINGS.fontFamily,\n fontWeight: DEFAULT_FONT_SETTINGS.fontWeight,\n lineHeight: DEFAULT_LINE_HEIGHT,\n outlineWidth: {type: 'number', value: 0, min: 0},\n outlineColor: {type: 'color', value: DEFAULT_COLOR},\n fontSettings: {type: 'object', value: {}, compare: 1},\n\n // auto wrapping options\n wordBreak: 'break-word',\n maxWidth: {type: 'number', value: -1},\n\n getText: {type: 'accessor', value: x => x.text},\n getPosition: {type: 'accessor', value: x => x.position},\n getColor: {type: 'accessor', value: DEFAULT_COLOR},\n getSize: {type: 'accessor', value: 32},\n getAngle: {type: 'accessor', value: 0},\n getTextAnchor: {type: 'accessor', value: 'middle'},\n getAlignmentBaseline: {type: 'accessor', value: 'center'},\n getPixelOffset: {type: 'accessor', value: [0, 0]},\n\n // deprecated\n backgroundColor: {deprecatedFor: ['background', 'getBackgroundColor']}\n};\n\n/** Render text labels at given coordinates. */\nexport default class TextLayer extends CompositeLayer<\n ExtraPropsT & Required<_TextLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'TextLayer';\n\n state!: {\n styleVersion: number;\n fontAtlasManager: FontAtlasManager;\n characterSet?: Set;\n startIndices?: number[];\n numInstances?: number;\n getText?: AccessorFunction;\n };\n\n initializeState() {\n this.state = {\n styleVersion: 0,\n fontAtlasManager: new FontAtlasManager()\n };\n\n // Breaking change in v8.9\n if (this.props.maxWidth > 0) {\n log.warn('v8.9 breaking change: TextLayer maxWidth is now relative to text size')();\n }\n }\n\n // eslint-disable-next-line complexity\n updateState(params: UpdateParameters) {\n const {props, oldProps, changeFlags} = params;\n const textChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getText));\n\n if (textChanged) {\n this._updateText();\n }\n\n const fontChanged = this._updateFontAtlas();\n\n const styleChanged =\n fontChanged ||\n props.lineHeight !== oldProps.lineHeight ||\n props.wordBreak !== oldProps.wordBreak ||\n props.maxWidth !== oldProps.maxWidth;\n\n if (styleChanged) {\n this.setState({\n styleVersion: this.state.styleVersion + 1\n });\n }\n }\n\n getPickingInfo({info}: GetPickingInfoParams): PickingInfo {\n // because `TextLayer` assign the same pickingInfoIndex for one text label,\n // here info.index refers the index of text label in props.data\n info.object = info.index >= 0 ? this.props.data[info.index] : null;\n return info;\n }\n\n /** Returns true if font has changed */\n private _updateFontAtlas(): boolean {\n const {fontSettings, fontFamily, fontWeight} = this.props;\n const {fontAtlasManager, characterSet} = this.state;\n\n const fontProps = {\n ...fontSettings,\n characterSet,\n fontFamily,\n fontWeight\n };\n\n if (!fontAtlasManager.mapping) {\n // This is the first update\n fontAtlasManager.setProps(fontProps);\n return true;\n }\n\n for (const key in fontProps) {\n if (fontProps[key] !== fontAtlasManager.props[key]) {\n fontAtlasManager.setProps(fontProps);\n return true;\n }\n }\n\n return false;\n }\n\n // Text strings are variable width objects\n // Count characters and start offsets\n private _updateText() {\n const {data, characterSet} = this.props;\n const textBuffer = (data as any).attributes?.getText;\n let {getText} = this.props;\n let startIndices: number[] = (data as any).startIndices;\n let numInstances: number;\n\n const autoCharacterSet = characterSet === 'auto' && new Set();\n\n if (textBuffer && startIndices) {\n const {texts, characterCount} = getTextFromBuffer({\n ...(ArrayBuffer.isView(textBuffer) ? {value: textBuffer} : textBuffer),\n // @ts-ignore if data.attribute is defined then length is expected\n length: data.length,\n startIndices,\n characterSet: autoCharacterSet\n });\n numInstances = characterCount;\n getText = (_, {index}) => texts[index];\n } else {\n const {iterable, objectInfo} = createIterable(data);\n startIndices = [0];\n numInstances = 0;\n\n for (const object of iterable) {\n objectInfo.index++;\n // Break into an array of characters\n // When dealing with double-length unicode characters, `str.length` or `str[i]` do not work\n const text = Array.from(getText(object, objectInfo) || '');\n if (autoCharacterSet) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n text.forEach(autoCharacterSet.add, autoCharacterSet);\n }\n numInstances += text.length;\n startIndices.push(numInstances);\n }\n }\n\n this.setState({\n getText,\n startIndices,\n numInstances,\n characterSet: autoCharacterSet || characterSet\n });\n }\n\n /** There are two size systems in this layer:\n\n + Pixel size: user-specified text size, via getSize, sizeScale, sizeUnits etc.\n The layer roughly matches the output of the layer to CSS pixels, e.g. getSize: 12, sizeScale: 2\n in layer props is roughly equivalent to font-size: 24px in CSS.\n + Texture size: internally, character positions in a text blob are calculated using the sizes of iconMapping,\n which depends on how large each character is drawn into the font atlas. This is controlled by\n fontSettings.fontSize (default 64) and most users do not set it manually.\n These numbers are intended to be used in the vertex shader and never to be exposed to the end user.\n\n All surfaces exposed to the user should either use the pixel size or a multiplier relative to the pixel size. */\n\n /** Calculate the size and position of each character in a text string.\n * Values are in texture size */\n private transformParagraph(\n object: DataT,\n objectInfo: AccessorContext\n ): ReturnType {\n const {fontAtlasManager} = this.state;\n const iconMapping = fontAtlasManager.mapping!;\n const getText = this.state.getText!;\n const {wordBreak, lineHeight, maxWidth} = this.props;\n\n const paragraph = getText(object, objectInfo) || '';\n return transformParagraph(\n paragraph,\n lineHeight,\n wordBreak,\n maxWidth * fontAtlasManager.props.fontSize,\n iconMapping\n );\n }\n\n /** Returns the x, y, width, height of each text string, relative to pixel size.\n * Used to render the background.\n */\n private getBoundingRect: AccessorFunction = (\n object,\n objectInfo\n ) => {\n let {\n size: [width, height]\n } = this.transformParagraph(object, objectInfo);\n const {fontSize} = this.state.fontAtlasManager.props;\n width /= fontSize;\n height /= fontSize;\n\n const {getTextAnchor, getAlignmentBaseline} = this.props;\n const anchorX =\n TEXT_ANCHOR[\n typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor\n ];\n const anchorY =\n ALIGNMENT_BASELINE[\n typeof getAlignmentBaseline === 'function'\n ? getAlignmentBaseline(object, objectInfo)\n : getAlignmentBaseline\n ];\n\n return [((anchorX - 1) * width) / 2, ((anchorY - 1) * height) / 2, width, height];\n };\n\n /** Returns the x, y offsets of each character in a text string, in texture size.\n * Used to layout characters in the vertex shader.\n */\n private getIconOffsets: AccessorFunction = (object, objectInfo) => {\n const {getTextAnchor, getAlignmentBaseline} = this.props;\n\n const {\n x,\n y,\n rowWidth,\n size: [width, height]\n } = this.transformParagraph(object, objectInfo);\n const anchorX =\n TEXT_ANCHOR[\n typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor\n ];\n const anchorY =\n ALIGNMENT_BASELINE[\n typeof getAlignmentBaseline === 'function'\n ? getAlignmentBaseline(object, objectInfo)\n : getAlignmentBaseline\n ];\n\n const numCharacters = x.length;\n const offsets = new Array(numCharacters * 2);\n let index = 0;\n\n for (let i = 0; i < numCharacters; i++) {\n // For a multi-line object, offset in x-direction needs consider\n // the row offset in the paragraph and the object offset in the row\n const rowOffset = ((1 - anchorX) * (width - rowWidth[i])) / 2;\n offsets[index++] = ((anchorX - 1) * width) / 2 + rowOffset + x[i];\n offsets[index++] = ((anchorY - 1) * height) / 2 + y[i];\n }\n return offsets;\n };\n\n renderLayers() {\n const {\n startIndices,\n numInstances,\n getText,\n fontAtlasManager: {scale, texture, mapping},\n styleVersion\n } = this.state;\n\n const {\n data,\n _dataDiff,\n getPosition,\n getColor,\n getSize,\n getAngle,\n getPixelOffset,\n getBackgroundColor,\n getBorderColor,\n getBorderWidth,\n backgroundPadding,\n background,\n billboard,\n fontSettings,\n outlineWidth,\n outlineColor,\n sizeScale,\n sizeUnits,\n sizeMinPixels,\n sizeMaxPixels,\n transitions,\n updateTriggers\n } = this.props;\n\n const CharactersLayerClass = this.getSubLayerClass('characters', MultiIconLayer);\n const BackgroundLayerClass = this.getSubLayerClass('background', TextBackgroundLayer);\n\n return [\n background &&\n new BackgroundLayerClass(\n {\n // background props\n getFillColor: getBackgroundColor,\n getLineColor: getBorderColor,\n getLineWidth: getBorderWidth,\n padding: backgroundPadding,\n\n // props shared with characters layer\n getPosition,\n getSize,\n getAngle,\n getPixelOffset,\n billboard,\n sizeScale,\n sizeUnits,\n sizeMinPixels,\n sizeMaxPixels,\n\n transitions: transitions && {\n getPosition: transitions.getPosition,\n getAngle: transitions.getAngle,\n getSize: transitions.getSize,\n getFillColor: transitions.getBackgroundColor,\n getLineColor: transitions.getBorderColor,\n getLineWidth: transitions.getBorderWidth,\n getPixelOffset: transitions.getPixelOffset\n }\n },\n this.getSubLayerProps({\n id: 'background',\n updateTriggers: {\n getPosition: updateTriggers.getPosition,\n getAngle: updateTriggers.getAngle,\n getSize: updateTriggers.getSize,\n getFillColor: updateTriggers.getBackgroundColor,\n getLineColor: updateTriggers.getBorderColor,\n getLineWidth: updateTriggers.getBorderWidth,\n getPixelOffset: updateTriggers.getPixelOffset,\n getBoundingRect: {\n getText: updateTriggers.getText,\n getTextAnchor: updateTriggers.getTextAnchor,\n getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n styleVersion\n }\n }\n }),\n {\n data:\n // @ts-ignore (2339) attribute is not defined on all data types\n data.attributes && data.attributes.background\n ? // @ts-ignore (2339) attribute is not defined on all data types\n {length: data.length, attributes: data.attributes.background}\n : data,\n _dataDiff,\n // Maintain the same background behavior as <=8.3. Remove in v9?\n autoHighlight: false,\n getBoundingRect: this.getBoundingRect\n }\n ),\n new CharactersLayerClass(\n {\n sdf: fontSettings.sdf,\n smoothing: Number.isFinite(fontSettings.smoothing)\n ? fontSettings.smoothing\n : DEFAULT_FONT_SETTINGS.smoothing,\n outlineWidth: outlineWidth / (fontSettings.radius || DEFAULT_FONT_SETTINGS.radius),\n outlineColor,\n iconAtlas: texture,\n iconMapping: mapping,\n\n getPosition,\n getColor,\n getSize,\n getAngle,\n getPixelOffset,\n\n billboard,\n sizeScale: sizeScale * scale,\n sizeUnits,\n sizeMinPixels: sizeMinPixels * scale,\n sizeMaxPixels: sizeMaxPixels * scale,\n\n transitions: transitions && {\n getPosition: transitions.getPosition,\n getAngle: transitions.getAngle,\n getColor: transitions.getColor,\n getSize: transitions.getSize,\n getPixelOffset: transitions.getPixelOffset\n }\n },\n this.getSubLayerProps({\n id: 'characters',\n updateTriggers: {\n all: updateTriggers.getText,\n getPosition: updateTriggers.getPosition,\n getAngle: updateTriggers.getAngle,\n getColor: updateTriggers.getColor,\n getSize: updateTriggers.getSize,\n getPixelOffset: updateTriggers.getPixelOffset,\n getIconOffsets: {\n getTextAnchor: updateTriggers.getTextAnchor,\n getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n styleVersion\n }\n }\n }),\n {\n data,\n _dataDiff,\n startIndices,\n numInstances,\n getIconOffsets: this.getIconOffsets,\n getIcon: getText\n }\n )\n ];\n }\n\n static set fontAtlasCacheLimit(limit: number) {\n setFontAtlasCacheLimit(limit);\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {createIterable, getAccessorFromBuffer} from './iterable-utils';\nimport defaultTypedArrayManager from './typed-array-manager';\nimport assert from './assert';\n\nimport {Buffer} from '@luma.gl/webgl';\n\nimport type {BinaryAttribute} from '../lib/attribute/attribute';\nimport type {TypedArray} from '../types/types';\nimport type {AccessorFunction} from '../types/layer-props';\nimport type {TypedArrayManager} from './typed-array-manager';\n\ntype ExternalBuffer = TypedArray | Buffer | BinaryAttribute;\n\ntype TesselatorOptions = ExtraOptionsT & {\n attributes?: Record;\n getGeometry?: AccessorFunction;\n data?: any;\n buffers?: Record;\n geometryBuffer?: ExternalBuffer;\n positionFormat?: 'XY' | 'XYZ';\n dataChanged?: {startRow: number; endRow?: number}[] | string | false;\n normalize?: boolean;\n};\n\nexport type GeometryUpdateContext = {\n vertexStart: number;\n indexStart: number;\n geometrySize: number;\n geometryIndex: number;\n};\n\nexport default abstract class Tesselator {\n opts: TesselatorOptions;\n typedArrayManager: TypedArrayManager;\n indexStarts: number[] = [0];\n vertexStarts: number[] = [0];\n vertexCount: number = 0;\n instanceCount: number = 0;\n attributes: Record;\n\n protected _attributeDefs: any;\n protected data: any;\n protected getGeometry?: AccessorFunction | null;\n protected geometryBuffer?: ExternalBuffer;\n protected buffers!: Record;\n protected positionSize!: number;\n protected normalize!: boolean;\n\n constructor(opts: TesselatorOptions) {\n const {attributes = {}} = opts;\n\n this.typedArrayManager = defaultTypedArrayManager;\n this.attributes = {};\n this._attributeDefs = attributes;\n this.opts = opts;\n\n this.updateGeometry(opts);\n }\n\n /* Public methods */\n updateGeometry(opts: TesselatorOptions): void {\n Object.assign(this.opts, opts);\n const {\n data,\n buffers = {},\n getGeometry,\n geometryBuffer,\n positionFormat,\n dataChanged,\n normalize = true\n } = this.opts;\n this.data = data;\n this.getGeometry = getGeometry;\n this.positionSize =\n // @ts-ignore (2339) when geometryBuffer is a luma Buffer, size falls back to positionFormat\n (geometryBuffer && geometryBuffer.size) || (positionFormat === 'XY' ? 2 : 3);\n this.buffers = buffers;\n this.normalize = normalize;\n\n // Handle external logical value\n if (geometryBuffer) {\n assert(data.startIndices); // binary data missing startIndices\n this.getGeometry = this.getGeometryFromBuffer(geometryBuffer);\n\n if (!normalize) {\n // skip packing and set attribute value directly\n // TODO - avoid mutating user-provided object\n buffers.positions = geometryBuffer;\n }\n }\n this.geometryBuffer = buffers.positions;\n\n if (Array.isArray(dataChanged)) {\n // is partial update\n for (const dataRange of dataChanged as {startRow: number; endRow?: number}[]) {\n this._rebuildGeometry(dataRange);\n }\n } else {\n this._rebuildGeometry();\n }\n }\n\n updatePartialGeometry({startRow, endRow}: {startRow: number; endRow: number}): void {\n this._rebuildGeometry({startRow, endRow});\n }\n\n // Subclass interface\n\n /** Convert geometry to a uniform shape */\n protected abstract normalizeGeometry(geometry: GeometryT): NormalizedGeometryT;\n\n /** Update the positions buffer of a single geometry */\n protected abstract updateGeometryAttributes(\n geometry: NormalizedGeometryT | null,\n context: GeometryUpdateContext\n );\n\n /** Get the number of vertices in a geometry */\n protected abstract getGeometrySize(geometry: NormalizedGeometryT): number;\n\n protected getGeometryFromBuffer(\n geometryBuffer: ExternalBuffer\n ): AccessorFunction | null {\n const value = (geometryBuffer as BinaryAttribute).value || geometryBuffer;\n if (!ArrayBuffer.isView(value)) {\n // Cannot read binary geometries\n return null;\n }\n\n // @ts-ignore (2322) NumericArray not assignable to GeometryT\n return getAccessorFromBuffer(value, {\n size: this.positionSize,\n offset: (geometryBuffer as BinaryAttribute).offset,\n stride: (geometryBuffer as BinaryAttribute).stride,\n startIndices: this.data.startIndices\n });\n }\n\n /* Private utility methods */\n private _allocate(instanceCount: number, copy: boolean): void {\n // allocate attributes\n const {attributes, buffers, _attributeDefs, typedArrayManager} = this;\n for (const name in _attributeDefs) {\n if (name in buffers) {\n // Use external buffer\n typedArrayManager.release(attributes[name]);\n attributes[name] = null;\n } else {\n const def = _attributeDefs[name];\n // If dataRange is supplied, this is a partial update.\n // In case we need to reallocate the typed array, it will need the old values copied\n // before performing partial update.\n def.copy = copy;\n\n attributes[name] = typedArrayManager.allocate(attributes[name], instanceCount, def);\n }\n }\n }\n\n /**\n * Visit all objects\n * `data` is expected to be an iterable consistent with the base Layer expectation\n */\n private _forEachGeometry(\n visitor: (geometry: GeometryT | null, index: number) => void,\n startRow: number,\n endRow: number\n ): void {\n const {data, getGeometry} = this;\n const {iterable, objectInfo} = createIterable(data, startRow, endRow);\n for (const object of iterable) {\n objectInfo.index++;\n const geometry = getGeometry ? getGeometry(object, objectInfo) : null;\n visitor(geometry, objectInfo.index);\n }\n }\n\n /* eslint-disable complexity,max-statements */\n private _rebuildGeometry(dataRange?: {startRow: number; endRow?: number}): void {\n if (!this.data) {\n return;\n }\n\n let {indexStarts, vertexStarts, instanceCount} = this;\n const {data, geometryBuffer} = this;\n const {startRow = 0, endRow = Infinity} = dataRange || {};\n\n const normalizedData: Record = {};\n\n if (!dataRange) {\n // Full update - regenerate buffer layout from scratch\n indexStarts = [0];\n vertexStarts = [0];\n }\n if (this.normalize || !geometryBuffer) {\n this._forEachGeometry(\n (geometry: GeometryT | null, dataIndex: number) => {\n const normalizedGeometry = geometry && this.normalizeGeometry(geometry);\n normalizedData[dataIndex] = normalizedGeometry;\n vertexStarts[dataIndex + 1] =\n vertexStarts[dataIndex] +\n (normalizedGeometry ? this.getGeometrySize(normalizedGeometry) : 0);\n },\n startRow,\n endRow\n );\n // count instances\n instanceCount = vertexStarts[vertexStarts.length - 1];\n } else {\n // assume user provided data is already normalized\n vertexStarts = data.startIndices;\n instanceCount = vertexStarts[data.length] || 0;\n\n if (ArrayBuffer.isView(geometryBuffer)) {\n instanceCount = instanceCount || geometryBuffer.length / this.positionSize;\n } else if (geometryBuffer instanceof Buffer) {\n // @ts-expect-error (2339) accessor is not typed\n const byteStride = geometryBuffer.accessor.stride || this.positionSize * 4;\n instanceCount = instanceCount || geometryBuffer.byteLength / byteStride;\n } else if (geometryBuffer.buffer) {\n const byteStride = geometryBuffer.stride || this.positionSize * 4;\n instanceCount = instanceCount || geometryBuffer.buffer.byteLength / byteStride;\n } else if (geometryBuffer.value) {\n const bufferValue = geometryBuffer.value;\n const elementStride =\n // @ts-ignore (2339) if stride is not specified, will fall through to positionSize\n geometryBuffer.stride / bufferValue.BYTES_PER_ELEMENT || this.positionSize;\n instanceCount = instanceCount || bufferValue.length / elementStride;\n }\n }\n\n // allocate attributes\n this._allocate(instanceCount, Boolean(dataRange));\n\n this.indexStarts = indexStarts;\n this.vertexStarts = vertexStarts;\n this.instanceCount = instanceCount;\n\n // @ts-ignore (2739) context will be populated in the loop\n const context: GeometryUpdateContext = {};\n\n this._forEachGeometry(\n (geometry: GeometryT | null, dataIndex: number) => {\n const normalizedGeometry =\n normalizedData[dataIndex] ||\n // @ts-expect-error (2352) GeometryT cannot be casted to NormalizedGeometryT. We are assuming the user passed already normalized data if opts.normalize is set to false.\n (geometry as NormalizedGeometryT);\n context.vertexStart = vertexStarts[dataIndex];\n context.indexStart = indexStarts[dataIndex];\n const vertexEnd =\n dataIndex < vertexStarts.length - 1 ? vertexStarts[dataIndex + 1] : instanceCount;\n context.geometrySize = vertexEnd - vertexStarts[dataIndex];\n context.geometryIndex = dataIndex;\n this.updateGeometryAttributes(normalizedGeometry, context);\n },\n startRow,\n endRow\n );\n\n this.vertexCount = indexStarts[indexStarts.length - 1];\n }\n}\n","import {cutPolylineByGrid, cutPolylineByMercatorBounds} from '@math.gl/polygon';\n\nimport type {NumericArray} from '@math.gl/core';\nimport type {Position} from '@deck.gl/core';\n\nexport type NestedPathGeometry = Position[];\nexport type FlatPathGeometry = NumericArray;\nexport type PathGeometry = NestedPathGeometry | FlatPathGeometry;\nexport type NormalizedPathGeometry = FlatPathGeometry[] | FlatPathGeometry;\n\n/**\n * Flattens a nested path object\n * Cut the feature if needed (globe projection, wrap longitude, etc.)\n * Returns a flat array of path positions, or a list of flat arrays representing multiple paths\n */\nexport function normalizePath(\n path: PathGeometry,\n size: number,\n gridResolution?: number,\n wrapLongitude?: boolean\n): number[][] | NumericArray {\n let flatPath: NumericArray;\n if (Array.isArray(path[0])) {\n const length = path.length * size;\n flatPath = new Array(length);\n for (let i = 0; i < path.length; i++) {\n for (let j = 0; j < size; j++) {\n flatPath[i * size + j] = path[i][j] || 0;\n }\n }\n } else {\n flatPath = path as NumericArray;\n }\n if (gridResolution) {\n return cutPolylineByGrid(flatPath, {size, gridResolution});\n }\n if (wrapLongitude) {\n return cutPolylineByMercatorBounds(flatPath, {size});\n }\n return flatPath;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {Tesselator} from '@deck.gl/core';\nimport {normalizePath} from './path';\n\nimport type {TypedArray} from '@math.gl/core';\nimport type {PathGeometry, FlatPathGeometry, NormalizedPathGeometry} from './path';\n\nconst START_CAP = 1;\nconst END_CAP = 2;\nconst INVALID = 4;\n\n// This class is set up to allow querying one attribute at a time\n// the way the AttributeManager expects it\nexport default class PathTesselator extends Tesselator<\n PathGeometry,\n NormalizedPathGeometry,\n {\n fp64?: boolean;\n resolution?: number;\n wrapLongitude?: boolean;\n loop?: boolean;\n }\n> {\n constructor(opts) {\n super({\n ...opts,\n attributes: {\n // Padding covers shaderAttributes for last segment in largest case fp64\n // additional vertex + hi & low parts, 3 * 6\n positions: {\n size: 3,\n padding: 18,\n initialize: true,\n type: opts.fp64 ? Float64Array : Float32Array\n },\n segmentTypes: {size: 1, type: Uint8ClampedArray}\n }\n });\n }\n\n /** Get packed attribute by name */\n get(attributeName: string): TypedArray | null {\n return this.attributes[attributeName];\n }\n\n /* Implement base Tesselator interface */\n protected getGeometryFromBuffer(buffer) {\n if (this.normalize) {\n return super.getGeometryFromBuffer(buffer);\n }\n // we don't need to read the positions if no normalization\n return null;\n }\n\n /* Implement base Tesselator interface */\n protected normalizeGeometry(path: PathGeometry): number[][] | PathGeometry {\n if (this.normalize) {\n return normalizePath(path, this.positionSize, this.opts.resolution, this.opts.wrapLongitude);\n }\n return path;\n }\n\n /* Implement base Tesselator interface */\n protected getGeometrySize(path: NormalizedPathGeometry): number {\n if (isCut(path)) {\n let size = 0;\n for (const subPath of path) {\n size += this.getGeometrySize(subPath);\n }\n return size;\n }\n const numPoints = this.getPathLength(path);\n if (numPoints < 2) {\n // invalid path\n return 0;\n }\n if (this.isClosed(path)) {\n // minimum 3 vertices\n return numPoints < 3 ? 0 : numPoints + 2;\n }\n return numPoints;\n }\n\n /* Implement base Tesselator interface */\n protected updateGeometryAttributes(\n path: NormalizedPathGeometry | null,\n context: {\n vertexStart: number;\n geometrySize: number;\n }\n ): void {\n if (context.geometrySize === 0) {\n return;\n }\n if (path && isCut(path)) {\n for (const subPath of path) {\n const geometrySize = this.getGeometrySize(subPath);\n context.geometrySize = geometrySize;\n this.updateGeometryAttributes(subPath, context);\n context.vertexStart += geometrySize;\n }\n } else {\n this._updateSegmentTypes(path, context);\n this._updatePositions(path, context);\n }\n }\n\n private _updateSegmentTypes(\n path: FlatPathGeometry | null,\n context: {\n vertexStart: number;\n geometrySize: number;\n }\n ) {\n const segmentTypes = this.attributes.segmentTypes as TypedArray;\n const isPathClosed = path ? this.isClosed(path) : false;\n const {vertexStart, geometrySize} = context;\n\n // positions -- A0 A1 B0 B1 B2 B3 B0 B1 B2 --\n // segmentTypes 3 4 4 0 0 0 0 4 4\n segmentTypes.fill(0, vertexStart, vertexStart + geometrySize);\n if (isPathClosed) {\n segmentTypes[vertexStart] = INVALID;\n segmentTypes[vertexStart + geometrySize - 2] = INVALID;\n } else {\n segmentTypes[vertexStart] += START_CAP;\n segmentTypes[vertexStart + geometrySize - 2] += END_CAP;\n }\n segmentTypes[vertexStart + geometrySize - 1] = INVALID;\n }\n\n private _updatePositions(\n path: FlatPathGeometry | null,\n context: {\n vertexStart: number;\n geometrySize: number;\n }\n ) {\n const {positions} = this.attributes;\n if (!positions || !path) {\n return;\n }\n const {vertexStart, geometrySize} = context;\n const p = new Array(3);\n\n // positions -- A0 A1 B0 B1 B2 B3 B0 B1 B2 --\n // segmentTypes 3 4 4 0 0 0 0 4 4\n for (let i = vertexStart, ptIndex = 0; ptIndex < geometrySize; i++, ptIndex++) {\n this.getPointOnPath(path, ptIndex, p);\n positions[i * 3] = p[0];\n positions[i * 3 + 1] = p[1];\n positions[i * 3 + 2] = p[2];\n }\n }\n\n // Utilities\n /** Returns the number of points in the path */\n private getPathLength(path: FlatPathGeometry): number {\n return path.length / this.positionSize;\n }\n\n /** Returns a point on the path at the specified index */\n private getPointOnPath(path: FlatPathGeometry, index: number, target: number[] = []): number[] {\n const {positionSize} = this;\n if (index * positionSize >= path.length) {\n // loop\n index += 1 - path.length / positionSize;\n }\n const i = index * positionSize;\n target[0] = path[i];\n target[1] = path[i + 1];\n target[2] = (positionSize === 3 && path[i + 2]) || 0;\n return target;\n }\n\n // Returns true if the first and last points are identical\n private isClosed(path: FlatPathGeometry): boolean {\n if (!this.normalize) {\n return Boolean(this.opts.loop);\n }\n const {positionSize} = this;\n const lastPointIndex = path.length - positionSize;\n return (\n path[0] === path[lastPointIndex] &&\n path[1] === path[lastPointIndex + 1] &&\n (positionSize === 2 || path[2] === path[lastPointIndex + 2])\n );\n }\n}\n\nfunction isCut(path: NormalizedPathGeometry): path is FlatPathGeometry[] {\n return Array.isArray(path[0]);\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME path-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute float instanceTypes;\nattribute vec3 instanceStartPositions;\nattribute vec3 instanceEndPositions;\nattribute vec3 instanceLeftPositions;\nattribute vec3 instanceRightPositions;\nattribute vec3 instanceLeftPositions64Low;\nattribute vec3 instanceStartPositions64Low;\nattribute vec3 instanceEndPositions64Low;\nattribute vec3 instanceRightPositions64Low;\nattribute float instanceStrokeWidths;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\n\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform float jointType;\nuniform float capType;\nuniform float miterLimit;\nuniform bool billboard;\nuniform int widthUnits;\n\nuniform float opacity;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\nvarying vec2 vPathPosition;\nvarying float vPathLength;\nvarying float vJointType;\n\nconst float EPSILON = 0.001;\nconst vec3 ZERO_OFFSET = vec3(0.0);\n\nfloat flipIfTrue(bool flag) {\n return -(float(flag) * 2. - 1.);\n}\n\n// calculate line join positions\nvec3 getLineJoinOffset(\n vec3 prevPoint, vec3 currPoint, vec3 nextPoint,\n vec2 width\n) {\n bool isEnd = positions.x > 0.0;\n // side of the segment - -1: left, 0: center, 1: right\n float sideOfPath = positions.y;\n float isJoint = float(sideOfPath == 0.0);\n\n vec3 deltaA3 = (currPoint - prevPoint);\n vec3 deltaB3 = (nextPoint - currPoint);\n\n mat3 rotationMatrix;\n bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix);\n if (needsRotation) {\n deltaA3 = deltaA3 * rotationMatrix;\n deltaB3 = deltaB3 * rotationMatrix;\n }\n vec2 deltaA = deltaA3.xy / width;\n vec2 deltaB = deltaB3.xy / width;\n\n float lenA = length(deltaA);\n float lenB = length(deltaB);\n\n vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0);\n vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0);\n\n vec2 perpA = vec2(-dirA.y, dirA.x);\n vec2 perpB = vec2(-dirB.y, dirB.x);\n\n // tangent of the corner\n vec2 tangent = dirA + dirB;\n tangent = length(tangent) > 0. ? normalize(tangent) : perpA;\n // direction of the corner\n vec2 miterVec = vec2(-tangent.y, tangent.x);\n // direction of the segment\n vec2 dir = isEnd ? dirA : dirB;\n // direction of the extrusion\n vec2 perp = isEnd ? perpA : perpB;\n // length of the segment\n float L = isEnd ? lenA : lenB;\n\n // A = angle of the corner\n float sinHalfA = abs(dot(miterVec, perp));\n float cosHalfA = abs(dot(dirA, miterVec));\n\n // -1: right, 1: left\n float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x);\n\n // relative position to the corner:\n // -1: inside (smaller side of the angle)\n // 0: center\n // 1: outside (bigger side of the angle)\n float cornerPosition = sideOfPath * turnDirection;\n\n float miterSize = 1.0 / max(sinHalfA, EPSILON);\n // trim if inside corner extends further than the line segment\n miterSize = mix(\n min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)),\n miterSize,\n step(0.0, cornerPosition)\n );\n\n vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition))\n * (sideOfPath + isJoint * turnDirection);\n\n // special treatment for start cap and end cap\n bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0));\n bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0));\n bool isCap = isStartCap || isEndCap;\n\n // extend out a triangle to envelope the round cap\n if (isCap) {\n offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint);\n vJointType = capType;\n } else {\n vJointType = jointType;\n }\n\n // Generate variables for fragment shader\n vPathLength = L;\n vCornerOffset = offsetVec;\n vMiterLength = dot(vCornerOffset, miterVec * turnDirection);\n vMiterLength = isCap ? isJoint : vMiterLength;\n\n vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd);\n vPathPosition = vec2(\n dot(offsetFromStartOfPath, perp),\n dot(offsetFromStartOfPath, dir)\n );\n geometry.uv = vPathPosition;\n\n float isValid = step(instanceTypes, 3.5);\n vec3 offset = vec3(offsetVec * width * isValid, 0.0);\n\n if (needsRotation) {\n offset = rotationMatrix * offset;\n }\n return offset;\n}\n\n// In clipspace extrusion, if a line extends behind the camera, clip it to avoid visual artifacts\nvoid clipLine(inout vec4 position, vec4 refPosition) {\n if (position.w < EPSILON) {\n float r = (EPSILON - refPosition.w) / (position.w - refPosition.w);\n position = refPosition + (position - refPosition) * r;\n }\n}\n\nvoid main() {\n geometry.pickingColor = instancePickingColors;\n\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\n\n float isEnd = positions.x;\n\n vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd);\n vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd);\n\n vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\n vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd);\n\n vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd);\n vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd);\n\n geometry.worldPosition = currPosition;\n vec2 widthPixels = vec2(clamp(\n project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels) / 2.0);\n vec3 width;\n\n if (billboard) {\n // Extrude in clipspace\n vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET);\n vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position);\n vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET);\n\n clipLine(prevPositionScreen, currPositionScreen);\n clipLine(nextPositionScreen, currPositionScreen);\n clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd));\n\n width = vec3(widthPixels, 0.0);\n DECKGL_FILTER_SIZE(width, geometry);\n\n vec3 offset = getLineJoinOffset(\n prevPositionScreen.xyz / prevPositionScreen.w,\n currPositionScreen.xyz / currPositionScreen.w,\n nextPositionScreen.xyz / nextPositionScreen.w,\n project_pixel_size_to_clipspace(width.xy)\n );\n\n DECKGL_FILTER_GL_POSITION(currPositionScreen, geometry);\n gl_Position = vec4(currPositionScreen.xyz + offset * currPositionScreen.w, currPositionScreen.w);\n } else {\n // Extrude in commonspace\n prevPosition = project_position(prevPosition, prevPosition64Low);\n currPosition = project_position(currPosition, currPosition64Low);\n nextPosition = project_position(nextPosition, nextPosition64Low);\n\n width = vec3(project_pixel_size(widthPixels), 0.0);\n DECKGL_FILTER_SIZE(width, geometry);\n\n vec3 offset = getLineJoinOffset(prevPosition, currPosition, nextPosition, width.xy);\n geometry.position = vec4(currPosition + offset, 1.0);\n gl_Position = project_common_position_to_clipspace(geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Layer, project32, picking, UNIT} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry} from '@luma.gl/core';\nimport PathTesselator from './path-tesselator';\n\nimport vs from './path-layer-vertex.glsl';\nimport fs from './path-layer-fragment.glsl';\n\nimport type {\n LayerProps,\n LayerDataSource,\n Color,\n Accessor,\n AccessorFunction,\n Unit,\n UpdateParameters,\n GetPickingInfoParams,\n PickingInfo,\n DefaultProps\n} from '@deck.gl/core';\nimport type {PathGeometry} from './path';\n\ntype _PathLayerProps = {\n data: LayerDataSource;\n /** The units of the line width, one of `'meters'`, `'common'`, and `'pixels'`\n * @default 'meters'\n */\n widthUnits?: Unit;\n /**\n * Path width multiplier.\n * @default 1\n */\n widthScale?: number;\n /**\n * The minimum path width in pixels. This prop can be used to prevent the path from getting too thin when zoomed out.\n * @default 0\n */\n widthMinPixels?: number;\n /**\n * The maximum path width in pixels. This prop can be used to prevent the path from getting too thick when zoomed in.\n * @default Number.MAX_SAFE_INTEGER\n */\n widthMaxPixels?: number;\n /**\n * Type of joint. If `true`, draw round joints. Otherwise draw miter joints.\n * @default false\n */\n jointRounded?: boolean;\n /**\n * Type of caps. If `true`, draw round caps. Otherwise draw square caps.\n * @default false\n */\n capRounded?: boolean;\n /**\n * The maximum extent of a joint in ratio to the stroke width. Only works if `jointRounded` is `false`.\n * @default 4\n */\n miterLimit?: number;\n /**\n * If `true`, extrude the path in screen space (width always faces the camera).\n * If `false`, the width always faces up (z).\n * @default false\n */\n billboard?: boolean;\n /**\n * (Experimental) If `'loop'` or `'open'`, will skip normalizing the coordinates returned by `getPath` and instead assume all paths are to be loops or open paths.\n * When normalization is disabled, paths must be specified in the format of flat array. Open paths must contain at least 2 vertices and closed paths must contain at least 3 vertices.\n * @default null\n */\n _pathType?: null | 'loop' | 'open';\n /**\n * Path geometry accessor.\n */\n getPath?: AccessorFunction;\n /**\n * Path color accessor.\n * @default [0, 0, 0, 255]\n */\n getColor?: Accessor;\n /**\n * Path width accessor.\n * @default 1\n */\n getWidth?: Accessor;\n /**\n * @deprecated Use `jointRounded` and `capRounded` instead\n */\n rounded?: boolean;\n};\n\nexport type PathLayerProps = _PathLayerProps & LayerProps;\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\nconst defaultProps: DefaultProps = {\n widthUnits: 'meters',\n widthScale: {type: 'number', min: 0, value: 1},\n widthMinPixels: {type: 'number', min: 0, value: 0},\n widthMaxPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER},\n jointRounded: false,\n capRounded: false,\n miterLimit: {type: 'number', min: 0, value: 4},\n billboard: false,\n _pathType: null,\n\n getPath: {type: 'accessor', value: object => object.path},\n getColor: {type: 'accessor', value: DEFAULT_COLOR},\n getWidth: {type: 'accessor', value: 1},\n\n // deprecated props\n rounded: {deprecatedFor: ['jointRounded', 'capRounded']}\n};\n\nconst ATTRIBUTE_TRANSITION = {\n enter: (value, chunk) => {\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\n\n/** Render lists of coordinate points as extruded polylines with mitering. */\nexport default class PathLayer extends Layer<\n ExtraPropsT & Required<_PathLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'PathLayer';\n\n state!: {\n model?: Model;\n pathTesselator: PathTesselator;\n };\n\n getShaders() {\n return super.getShaders({vs, fs, modules: [project32, picking]}); // 'project' module added by default.\n }\n\n get wrapLongitude(): boolean {\n return false;\n }\n\n initializeState() {\n const noAlloc = true;\n const attributeManager = this.getAttributeManager();\n /* eslint-disable max-len */\n attributeManager!.addInstanced({\n positions: {\n size: 3,\n // Start filling buffer from 1 vertex in\n vertexOffset: 1,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getPath',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculatePositions,\n noAlloc,\n shaderAttributes: {\n instanceLeftPositions: {\n vertexOffset: 0\n },\n instanceStartPositions: {\n vertexOffset: 1\n },\n instanceEndPositions: {\n vertexOffset: 2\n },\n instanceRightPositions: {\n vertexOffset: 3\n }\n }\n },\n instanceTypes: {\n size: 1,\n type: GL.UNSIGNED_BYTE,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateSegmentTypes,\n noAlloc\n },\n instanceStrokeWidths: {\n size: 1,\n accessor: 'getWidth',\n transition: ATTRIBUTE_TRANSITION,\n defaultValue: 1\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n accessor: 'getColor',\n transition: ATTRIBUTE_TRANSITION,\n defaultValue: DEFAULT_COLOR\n },\n instancePickingColors: {\n size: 3,\n type: GL.UNSIGNED_BYTE,\n accessor: (object, {index, target: value}) =>\n this.encodePickingColor(object && object.__source ? object.__source.index : index, value)\n }\n });\n /* eslint-enable max-len */\n\n this.setState({\n pathTesselator: new PathTesselator({\n fp64: this.use64bitPositions()\n })\n });\n }\n\n updateState(params: UpdateParameters) {\n super.updateState(params);\n const {props, changeFlags} = params;\n\n const attributeManager = this.getAttributeManager();\n\n const geometryChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPath));\n\n if (geometryChanged) {\n const {pathTesselator} = this.state;\n const buffers = (props.data as any).attributes || {};\n\n pathTesselator.updateGeometry({\n data: props.data,\n geometryBuffer: buffers.getPath,\n buffers,\n normalize: !props._pathType,\n loop: props._pathType === 'loop',\n getGeometry: props.getPath,\n positionFormat: props.positionFormat,\n wrapLongitude: props.wrapLongitude,\n // TODO - move the flag out of the viewport\n resolution: this.context.viewport.resolution,\n dataChanged: changeFlags.dataChanged\n });\n this.setState({\n numInstances: pathTesselator.instanceCount,\n startIndices: pathTesselator.vertexStarts\n });\n if (!changeFlags.dataChanged) {\n // Base `layer.updateState` only invalidates all attributes on data change\n // Cover the rest of the scenarios here\n attributeManager!.invalidateAll();\n }\n }\n\n if (changeFlags.extensionsChanged) {\n const {gl} = this.context;\n this.state.model?.delete();\n this.state.model = this._getModel(gl);\n attributeManager!.invalidateAll();\n }\n }\n\n getPickingInfo(params: GetPickingInfoParams): PickingInfo {\n const info = super.getPickingInfo(params);\n const {index} = info;\n const {data} = this.props;\n\n // Check if data comes from a composite layer, wrapped with getSubLayerRow\n if (data[0] && data[0].__source) {\n // index decoded from picking color refers to the source index\n info.object = (data as any[]).find(d => d.__source.index === index);\n }\n return info;\n }\n\n /** Override base Layer method */\n disablePickingIndex(objectIndex: number) {\n const {data} = this.props;\n\n // Check if data comes from a composite layer, wrapped with getSubLayerRow\n if (data[0] && data[0].__source) {\n // index decoded from picking color refers to the source index\n for (let i = 0; i < (data as any[]).length; i++) {\n if (data[i].__source.index === objectIndex) {\n this._disablePickingIndex(i);\n }\n }\n } else {\n super.disablePickingIndex(objectIndex);\n }\n }\n\n draw({uniforms}) {\n const {\n jointRounded,\n capRounded,\n billboard,\n miterLimit,\n widthUnits,\n widthScale,\n widthMinPixels,\n widthMaxPixels\n } = this.props;\n\n this.state.model\n .setUniforms(uniforms)\n .setUniforms({\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n billboard,\n widthUnits: UNIT[widthUnits],\n widthScale,\n miterLimit,\n widthMinPixels,\n widthMaxPixels\n })\n .draw();\n }\n\n protected _getModel(gl: WebGLRenderingContext): Model {\n /*\n * _\n * \"-_ 1 3 5\n * _ \"o---------------------o-------------------_-o\n * - / \"\"--..__ '. _.-' /\n * _ \"@- - - - - \"\"--..__- - - - x - - - -_.@' /\n * \"-_ / \"\"--..__ '. _,-` : /\n * \"o----------------------------\"\"-o' : /\n * 0,2 4 / '. : /\n * / '.: /\n * / :'. /\n * / : ', /\n * / : o\n */\n\n // prettier-ignore\n const SEGMENT_INDICES = [\n // start corner\n 0, 1, 2,\n // body\n 1, 4, 2,\n 1, 3, 4,\n // end corner\n 3, 5, 4\n ];\n\n // [0] position on segment - 0: start, 1: end\n // [1] side of path - -1: left, 0: center (joint), 1: right\n // prettier-ignore\n const SEGMENT_POSITIONS = [\n // bevel start corner\n 0, 0,\n // start inner corner\n 0, -1,\n // start outer corner\n 0, 1,\n // end inner corner\n 1, -1,\n // end outer corner\n 1, 1,\n // bevel end corner\n 1, 0\n ];\n\n return new Model(gl, {\n ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: {\n indices: new Uint16Array(SEGMENT_INDICES),\n positions: {value: new Float32Array(SEGMENT_POSITIONS), size: 2}\n }\n }),\n isInstanced: true\n });\n }\n\n protected calculatePositions(attribute) {\n const {pathTesselator} = this.state;\n\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get('positions');\n }\n\n protected calculateSegmentTypes(attribute) {\n const {pathTesselator} = this.state;\n\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get('segmentTypes');\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME path-layer-fragment-shader\n\nprecision highp float;\n\nuniform float miterLimit;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\n/*\n * vPathPosition represents the relative coordinates of the current fragment on the path segment.\n * vPathPosition.x - position along the width of the path, between [-1, 1]. 0 is the center line.\n * vPathPosition.y - position along the length of the path, between [0, L / width].\n */\nvarying vec2 vPathPosition;\nvarying float vPathLength;\nvarying float vJointType;\n\nvoid main(void) {\n geometry.uv = vPathPosition;\n\n if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) {\n // if joint is rounded, test distance from the corner\n if (vJointType > 0.5 && length(vCornerOffset) > 1.0) {\n discard;\n }\n // trim miter\n if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) {\n discard;\n }\n }\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","export default `\\\n#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\n\nstruct AmbientLight {\n vec3 color;\n};\n\nstruct PointLight {\n vec3 color;\n vec3 position;\n\n // Constant-Linear-Exponential\n vec3 attenuation;\n};\n\nstruct DirectionalLight {\n vec3 color;\n vec3 direction;\n};\n\nuniform AmbientLight lighting_uAmbientLight;\nuniform PointLight lighting_uPointLight[MAX_LIGHTS];\nuniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS];\nuniform int lighting_uPointLightCount;\nuniform int lighting_uDirectionalLightCount;\n\nuniform bool lighting_uEnabled;\n\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\n return pointLight.attenuation.x\n + pointLight.attenuation.y * distance\n + pointLight.attenuation.z * distance * distance;\n}\n\n#endif\n`;\n","/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport lightingShader from './lights.glsl';\n\nconst INITIAL_MODULE_OPTIONS = {\n lightSources: {}\n};\n\n// Take color 0-255 and intensity as input and output 0.0-1.0 range\nfunction convertColor({color = [0, 0, 0], intensity = 1.0} = {}) {\n return color.map(component => (component * intensity) / 255.0);\n}\n\nfunction getLightSourceUniforms({ambientLight, pointLights = [], directionalLights = []}) {\n const lightSourceUniforms = {};\n\n if (ambientLight) {\n lightSourceUniforms['lighting_uAmbientLight.color'] = convertColor(ambientLight);\n } else {\n lightSourceUniforms['lighting_uAmbientLight.color'] = [0, 0, 0];\n }\n\n pointLights.forEach((pointLight, index) => {\n lightSourceUniforms[`lighting_uPointLight[${index}].color`] = convertColor(pointLight);\n lightSourceUniforms[`lighting_uPointLight[${index}].position`] = pointLight.position;\n lightSourceUniforms[`lighting_uPointLight[${index}].attenuation`] = pointLight.attenuation || [\n 1,\n 0,\n 0\n ];\n });\n lightSourceUniforms.lighting_uPointLightCount = pointLights.length;\n\n directionalLights.forEach((directionalLight, index) => {\n lightSourceUniforms[`lighting_uDirectionalLight[${index}].color`] = convertColor(\n directionalLight\n );\n lightSourceUniforms[`lighting_uDirectionalLight[${index}].direction`] =\n directionalLight.direction;\n });\n lightSourceUniforms.lighting_uDirectionalLightCount = directionalLights.length;\n\n return lightSourceUniforms;\n}\n\n// eslint-disable-next-line complexity\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n // Specify lights separately\n if ('lightSources' in opts) {\n const {ambientLight, pointLights, directionalLights} = opts.lightSources || {};\n const hasLights =\n ambientLight ||\n (pointLights && pointLights.length > 0) ||\n (directionalLights && directionalLights.length > 0);\n\n if (!hasLights) {\n return {lighting_uEnabled: false};\n }\n\n return Object.assign(\n {},\n getLightSourceUniforms({ambientLight, pointLights, directionalLights}),\n {\n lighting_uEnabled: true\n }\n );\n }\n\n // Support for array of lights. Type of light is detected by type field\n if ('lights' in opts) {\n const lightSources = {pointLights: [], directionalLights: []};\n // @ts-ignore\n for (const light of opts.lights || []) {\n switch (light.type) {\n case 'ambient':\n // Note: Only uses last ambient light\n // TODO - add ambient light sources on CPU?\n lightSources.ambientLight = light;\n break;\n case 'directional':\n lightSources.directionalLights.push(light);\n break;\n case 'point':\n lightSources.pointLights.push(light);\n break;\n default:\n // eslint-disable-next-line\n // console.warn(light.type);\n }\n }\n\n // Call the `opts.lightSources`` version\n return getUniforms({lightSources});\n }\n\n return {};\n}\n\n/** @type {ShaderModule} */\nexport const lights = {\n name: 'lights',\n vs: lightingShader,\n fs: lightingShader,\n getUniforms,\n defines: {\n MAX_LIGHTS: 3\n }\n};\n","export default `\\\n\nuniform float lighting_uAmbient;\nuniform float lighting_uDiffuse;\nuniform float lighting_uShininess;\nuniform vec3 lighting_uSpecularColor;\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\n vec3 halfway_direction = normalize(light_direction + view_direction);\n float lambertian = dot(light_direction, normal_worldspace);\n float specular = 0.0;\n if (lambertian > 0.0) {\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\n specular = pow(specular_angle, lighting_uShininess);\n }\n lambertian = max(lambertian, 0.0);\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\n}\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = surfaceColor;\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = vec3(0, 0, 0);\n vec3 surfaceColor = vec3(0, 0, 0);\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n`;\n","/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport {lights} from '../lights/lights';\nimport lightingShader from './phong-lighting.glsl';\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getMaterialUniforms(material) {\n const {ambient = 0.35, diffuse = 0.6, shininess = 32, specularColor = [30, 30, 30]} = material;\n\n return {\n lighting_uAmbient: ambient,\n lighting_uDiffuse: diffuse,\n lighting_uShininess: shininess,\n lighting_uSpecularColor: specularColor.map(x => x / 255)\n };\n}\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n if (!('material' in opts)) {\n return {};\n }\n\n const {material} = opts;\n\n if (!material) {\n return {lighting_uEnabled: false};\n }\n\n return getMaterialUniforms(material);\n}\n\n/** @type {ShaderModule} */\nexport const gouraudLighting = {\n name: 'gouraud-lighting',\n dependencies: [lights],\n vs: lightingShader,\n defines: {\n LIGHTING_VERTEX: 1\n },\n getUniforms\n};\n\n/** @type {ShaderModule} */\nexport const phongLighting = {\n name: 'phong-lighting',\n dependencies: [lights],\n fs: lightingShader,\n defines: {\n LIGHTING_FRAGMENT: 1\n },\n getUniforms\n};\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable max-params */\nimport earcut from 'earcut';\nimport {modifyPolygonWindingDirection, WINDING} from '@math.gl/polygon';\n\nimport type {Position} from '@deck.gl/core';\nimport type {NumericArray} from '@math.gl/core';\n\nconst OUTER_POLYGON_WINDING = WINDING.CLOCKWISE;\nconst HOLE_POLYGON_WINDING = WINDING.COUNTER_CLOCKWISE;\n\ntype WindingOptions = {\n start?: number;\n end?: number;\n size?: number;\n isClosed?: boolean;\n};\n\n/** A scratch object for sending winding options */\nconst windingOptions: WindingOptions = {\n isClosed: true\n};\n\n// 4 data formats are supported:\n\n/** Simple Polygon: an array of points */\nexport type NestedSimplePolygonGeometry = Position[];\n/** Complex Polygon: an array of array of points (array of rings)\n * with the first ring representing the outer hull and other rings representing holes\n */\nexport type NestedComplexPolygonGeometry = Position[][];\n/** An array of numbers (flattened \"simple polygon\") */\nexport type FlatSimplePolygonGeometry = NumericArray;\n/** Flattened \"complex polygon\" */\nexport type FlatComplexPolygonGeometry = {positions: NumericArray; holeIndices: NumericArray};\n\nexport type PolygonGeometry =\n | NestedSimplePolygonGeometry\n | NestedComplexPolygonGeometry\n | FlatSimplePolygonGeometry\n | FlatComplexPolygonGeometry;\n\nexport type NormalizedPolygonGeometry = FlatSimplePolygonGeometry | FlatComplexPolygonGeometry;\n\n/**\n * Ensure a polygon is valid format\n */\nfunction validate(polygon: PolygonGeometry): void {\n polygon = (polygon && (polygon as FlatComplexPolygonGeometry).positions) || polygon;\n if (!Array.isArray(polygon) && !ArrayBuffer.isView(polygon)) {\n throw new Error('invalid polygon');\n }\n}\n\n/** Get the positions from a normalized polygon */\nexport function getPositions(polygon: NormalizedPolygonGeometry): NumericArray {\n return 'positions' in polygon ? polygon.positions : polygon;\n}\n\n/** Get the hole indices from a normalized polygon */\nexport function getHoleIndices(polygon: NormalizedPolygonGeometry): NumericArray | null {\n return 'holeIndices' in polygon ? polygon.holeIndices : null;\n}\n\n/**\n * Check if a polygon is nested or flat\n * Returns true if the polygon is a flat polygon (i.e. not an array of polygons)\n */\nfunction isNested(\n polygon: PolygonGeometry\n): polygon is NestedSimplePolygonGeometry | NestedComplexPolygonGeometry {\n return Array.isArray(polygon[0]);\n}\n\n/**\n * Check if a polygon is simple or complex\n * Returns true if the polygon is a simple polygon (i.e. not an array of polygons)\n */\nfunction isSimple(\n polygon: NestedSimplePolygonGeometry | NestedComplexPolygonGeometry\n): polygon is NestedSimplePolygonGeometry {\n return polygon.length >= 1 && polygon[0].length >= 2 && Number.isFinite(polygon[0][0]);\n}\n\n/**\n * Check if a simple polygon is a closed ring\n * Returns true if the simple polygon is a closed ring\n */\nfunction isNestedRingClosed(simplePolygon: NestedSimplePolygonGeometry): boolean {\n // check if first and last vertex are the same\n const p0 = simplePolygon[0];\n const p1 = simplePolygon[simplePolygon.length - 1];\n\n return p0[0] === p1[0] && p0[1] === p1[1] && p0[2] === p1[2];\n}\n\n/**\n * Check if a simple flat array is a closed ring\n * Returns true if the simple flat array is a closed ring\n */\nfunction isFlatRingClosed(\n positions: FlatSimplePolygonGeometry,\n /** size of a position, 2 (xy) or 3 (xyz) */\n size: number,\n /** start index of the path in the positions array */\n startIndex: number,\n /** end index of the path in the positions array */\n endIndex: number\n): boolean {\n for (let i = 0; i < size; i++) {\n if (positions[startIndex + i] !== positions[endIndex - size + i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Copy a simple polygon coordinates into a flat array, closes the ring if needed.\n * Returns the index of the write head in the destination\n */\nfunction copyNestedRing(\n /** destination */\n target: NumericArray,\n /** index in the destination to start copying into */\n targetStartIndex: number,\n /** the source polygon */\n simplePolygon: NestedSimplePolygonGeometry,\n /** size of a position, 2 (xy) or 3 (xyz) */\n size: number,\n /** modify polygon to be of the specified winding direction */\n windingDirection: number\n): number {\n let targetIndex = targetStartIndex;\n const len = simplePolygon.length;\n for (let i = 0; i < len; i++) {\n for (let j = 0; j < size; j++) {\n target[targetIndex++] = simplePolygon[i][j] || 0;\n }\n }\n\n if (!isNestedRingClosed(simplePolygon)) {\n for (let j = 0; j < size; j++) {\n target[targetIndex++] = simplePolygon[0][j] || 0;\n }\n }\n\n windingOptions.start = targetStartIndex;\n windingOptions.end = targetIndex;\n windingOptions.size = size;\n modifyPolygonWindingDirection(target, windingDirection, windingOptions);\n\n return targetIndex;\n}\n\n/**\n * Copy a simple flat array into another flat array, closes the ring if needed.\n * Returns the index of the write head in the destination\n */\nfunction copyFlatRing(\n /** destination */\n target: NumericArray,\n /** index in the destination to start copying into */\n targetStartIndex: number,\n /** the source polygon */\n positions: FlatSimplePolygonGeometry,\n /** size of a position, 2 (xy) or 3 (xyz) */\n size: number,\n /** start index of the path in the positions array */\n srcStartIndex: number = 0,\n /** end index of the path in the positions array */\n srcEndIndex: number,\n windingDirection: number\n): number {\n srcEndIndex = srcEndIndex || positions.length;\n const srcLength = srcEndIndex - srcStartIndex;\n if (srcLength <= 0) {\n return targetStartIndex;\n }\n let targetIndex = targetStartIndex;\n\n for (let i = 0; i < srcLength; i++) {\n target[targetIndex++] = positions[srcStartIndex + i];\n }\n\n if (!isFlatRingClosed(positions, size, srcStartIndex, srcEndIndex)) {\n for (let i = 0; i < size; i++) {\n target[targetIndex++] = positions[srcStartIndex + i];\n }\n }\n\n windingOptions.start = targetStartIndex;\n windingOptions.end = targetIndex;\n windingOptions.size = size;\n modifyPolygonWindingDirection(target, windingDirection, windingOptions);\n\n return targetIndex;\n}\n\n/**\n * Normalize any polygon representation into the \"complex flat\" format\n */\n/* eslint-disable max-statements */\nexport function normalize(\n polygon: PolygonGeometry,\n positionSize: number\n): NormalizedPolygonGeometry {\n validate(polygon);\n\n const positions: number[] = [];\n const holeIndices: number[] = [];\n\n if ('positions' in polygon) {\n // complex flat\n const {positions: srcPositions, holeIndices: srcHoleIndices} = polygon;\n\n if (srcHoleIndices) {\n let targetIndex = 0;\n // split the positions array into `holeIndices.length + 1` rings\n // holeIndices[-1] falls back to 0\n // holeIndices[holeIndices.length] falls back to positions.length\n for (let i = 0; i <= srcHoleIndices.length; i++) {\n targetIndex = copyFlatRing(\n positions,\n targetIndex,\n srcPositions,\n positionSize,\n srcHoleIndices[i - 1],\n srcHoleIndices[i],\n i === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING\n );\n holeIndices.push(targetIndex);\n }\n // The last one is not a starting index of a hole, remove\n holeIndices.pop();\n\n return {positions, holeIndices};\n }\n polygon = srcPositions;\n }\n if (!isNested(polygon)) {\n // simple flat\n copyFlatRing(positions, 0, polygon, positionSize, 0, positions.length, OUTER_POLYGON_WINDING);\n return positions;\n }\n if (!isSimple(polygon)) {\n // complex polygon\n let targetIndex = 0;\n\n for (const [polygonIndex, simplePolygon] of polygon.entries()) {\n targetIndex = copyNestedRing(\n positions,\n targetIndex,\n simplePolygon,\n positionSize,\n polygonIndex === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING\n );\n holeIndices.push(targetIndex);\n }\n // The last one is not a starting index of a hole, remove\n holeIndices.pop();\n // last index points to the end of the array, remove it\n return {positions, holeIndices};\n }\n // simple polygon\n copyNestedRing(positions, 0, polygon, positionSize, OUTER_POLYGON_WINDING);\n return positions;\n}\n/* eslint-enable max-statements */\n\n/*\n * Calculate the area of a single plane of the polygon\n */\nfunction getPlaneArea(positions: NumericArray, xIndex: number, yIndex: number): number {\n const numVerts = positions.length / 3;\n let area = 0;\n for (let i = 0; i < numVerts; i++) {\n const j = (i + 1) % numVerts;\n area += positions[i * 3 + xIndex] * positions[j * 3 + yIndex];\n area -= positions[j * 3 + xIndex] * positions[i * 3 + yIndex];\n }\n return Math.abs(area / 2);\n}\n\nfunction permutePositions(positions: NumericArray, xIndex: number, yIndex: number, zIndex: number) {\n const numVerts = positions.length / 3;\n for (let i = 0; i < numVerts; i++) {\n const o = i * 3;\n\n const x = positions[o + 0];\n const y = positions[o + 1];\n const z = positions[o + 2];\n\n positions[o + xIndex] = x;\n positions[o + yIndex] = y;\n positions[o + zIndex] = z;\n }\n}\n\n/*\n * Get vertex indices for drawing polygon mesh (triangulation)\n */\n// eslint-disable-next-line complexity, max-statements\nexport function getSurfaceIndices(\n polygon: NormalizedPolygonGeometry,\n positionSize: number,\n preproject?: (xy: number[]) => number[],\n full3d?: boolean\n): number[] {\n let holeIndices = getHoleIndices(polygon);\n if (holeIndices) {\n holeIndices = holeIndices.map(positionIndex => positionIndex / positionSize);\n }\n\n let positions = getPositions(polygon);\n\n const is3d = full3d && positionSize === 3;\n\n if (preproject) {\n // When tesselating lnglat coordinates, project them to the common space for accuracy\n const n = positions.length;\n\n // Clone the array\n positions = positions.slice();\n\n const p: number[] = [];\n for (let i = 0; i < n; i += positionSize) {\n p[0] = positions[i];\n p[1] = positions[i + 1];\n\n if (is3d) {\n p[2] = positions[i + 2];\n }\n\n const xy = preproject(p);\n\n positions[i] = xy[0];\n positions[i + 1] = xy[1];\n\n if (is3d) {\n positions[i + 2] = xy[2];\n }\n }\n }\n\n if (is3d) {\n // calculate plane with largest area\n const xyArea = getPlaneArea(positions, 0, 1);\n const xzArea = getPlaneArea(positions, 0, 2);\n const yzArea = getPlaneArea(positions, 1, 2);\n\n if (!xyArea && !xzArea && !yzArea) {\n return []; // no planes have area, nothing we can do\n }\n\n // permute positions to make the largest plane xy for earcut\n if (xyArea > xzArea && xyArea > yzArea) {\n // xy plane largest, nothing to do\n } else if (xzArea > yzArea) {\n // xz plane largest, permute to make xyz -> xzy\n if (!preproject) {\n positions = positions.slice();\n }\n permutePositions(positions, 0, 2, 1);\n } else {\n // yz plane largest, permute to make xyz -> yzx\n if (!preproject) {\n positions = positions.slice();\n }\n permutePositions(positions, 2, 0, 1);\n }\n }\n\n // Let earcut triangulate the polygon\n return earcut(positions, holeIndices, positionSize);\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Handles tesselation of polygons with holes\n// - 2D surfaces\n// - 2D outlines\n// - 3D surfaces (top and sides only)\n// - 3D wireframes (not yet)\nimport * as Polygon from './polygon';\nimport {Tesselator} from '@deck.gl/core';\nimport {cutPolygonByGrid, cutPolygonByMercatorBounds} from '@math.gl/polygon';\n\nimport type {\n PolygonGeometry,\n NormalizedPolygonGeometry,\n FlatComplexPolygonGeometry\n} from './polygon';\nimport type {TypedArray} from '@math.gl/core';\n\ntype GeometryUpdateContext = {\n vertexStart: number;\n indexStart: number;\n geometrySize: number;\n geometryIndex: number;\n};\n\ntype CutPolygon = FlatComplexPolygonGeometry & {\n edgeTypes: number[];\n};\n\n// This class is set up to allow querying one attribute at a time\n// the way the AttributeManager expects it\nexport default class PolygonTesselator extends Tesselator<\n PolygonGeometry,\n NormalizedPolygonGeometry | CutPolygon[],\n {\n fp64?: boolean;\n IndexType?: Uint32ArrayConstructor | Uint16ArrayConstructor;\n resolution?: number;\n wrapLongitude?: boolean;\n preproject?: (xy: number[]) => number[];\n full3d?: boolean;\n }\n> {\n constructor(opts) {\n const {fp64, IndexType = Uint32Array} = opts;\n super({\n ...opts,\n attributes: {\n positions: {size: 3, type: fp64 ? Float64Array : Float32Array},\n vertexValid: {type: Uint8ClampedArray, size: 1},\n indices: {type: IndexType, size: 1}\n }\n });\n }\n\n /** Get attribute by name */\n get(attributeName: string): TypedArray | null {\n const {attributes} = this;\n if (attributeName === 'indices') {\n return attributes.indices && attributes.indices.subarray(0, this.vertexCount);\n }\n\n return attributes[attributeName];\n }\n\n /** Override base Tesselator method */\n updateGeometry(opts) {\n super.updateGeometry(opts);\n\n const externalIndices = this.buffers.indices;\n if (externalIndices) {\n // @ts-ignore (2339) value is not defined on TypedArray (fall through)\n this.vertexCount = (externalIndices.value || externalIndices).length;\n } else if (this.data && !this.getGeometry) {\n throw new Error('missing indices buffer');\n }\n }\n\n /** Implement base Tesselator interface */\n protected normalizeGeometry(polygon: PolygonGeometry): NormalizedPolygonGeometry | CutPolygon[] {\n if (this.normalize) {\n const normalizedPolygon = Polygon.normalize(polygon, this.positionSize);\n if (this.opts.resolution) {\n return cutPolygonByGrid(\n Polygon.getPositions(normalizedPolygon),\n Polygon.getHoleIndices(normalizedPolygon),\n {\n size: this.positionSize,\n gridResolution: this.opts.resolution,\n edgeTypes: true\n }\n ) as CutPolygon[];\n }\n if (this.opts.wrapLongitude) {\n return cutPolygonByMercatorBounds(\n Polygon.getPositions(normalizedPolygon),\n Polygon.getHoleIndices(normalizedPolygon),\n {\n size: this.positionSize,\n maxLatitude: 86,\n edgeTypes: true\n }\n ) as CutPolygon[];\n }\n return normalizedPolygon;\n }\n // normalize is explicitly set to false, assume that user passed in already normalized polygons\n return polygon as NormalizedPolygonGeometry;\n }\n\n /** Implement base Tesselator interface */\n protected getGeometrySize(polygon: NormalizedPolygonGeometry | CutPolygon[]): number {\n if (isCut(polygon)) {\n let size = 0;\n for (const subPolygon of polygon) {\n size += this.getGeometrySize(subPolygon);\n }\n return size;\n }\n return Polygon.getPositions(polygon).length / this.positionSize;\n }\n\n /** Override base Tesselator method */\n protected getGeometryFromBuffer(buffer) {\n if (this.normalize || !this.buffers.indices) {\n return super.getGeometryFromBuffer(buffer);\n }\n // we don't need to read the positions if no normalization/tesselation\n return null;\n }\n\n /** Implement base Tesselator interface */\n protected updateGeometryAttributes(\n polygon: NormalizedPolygonGeometry | CutPolygon[] | null,\n context: GeometryUpdateContext\n ) {\n if (polygon && isCut(polygon)) {\n for (const subPolygon of polygon) {\n const geometrySize = this.getGeometrySize(subPolygon);\n context.geometrySize = geometrySize;\n this.updateGeometryAttributes(subPolygon, context);\n context.vertexStart += geometrySize;\n context.indexStart = this.indexStarts[context.geometryIndex + 1];\n }\n } else {\n this._updateIndices(polygon, context);\n this._updatePositions(polygon, context);\n this._updateVertexValid(polygon, context);\n }\n }\n\n // Flatten the indices array\n private _updateIndices(\n polygon: NormalizedPolygonGeometry | null,\n {geometryIndex, vertexStart: offset, indexStart}: GeometryUpdateContext\n ) {\n const {attributes, indexStarts, typedArrayManager} = this;\n\n let target = attributes.indices;\n if (!target || !polygon) {\n return;\n }\n let i = indexStart;\n\n // 1. get triangulated indices for the internal areas\n const indices = Polygon.getSurfaceIndices(\n polygon,\n this.positionSize,\n this.opts.preproject,\n this.opts.full3d\n );\n\n // make sure the buffer is large enough\n target = typedArrayManager.allocate(target, indexStart + indices.length, {\n copy: true\n });\n\n // 2. offset each index by the number of indices in previous polygons\n for (let j = 0; j < indices.length; j++) {\n target[i++] = indices[j] + offset;\n }\n\n indexStarts[geometryIndex + 1] = indexStart + indices.length;\n attributes.indices = target;\n }\n\n // Flatten out all the vertices of all the sub subPolygons\n private _updatePositions(\n polygon: NormalizedPolygonGeometry | null,\n {vertexStart, geometrySize}: GeometryUpdateContext\n ) {\n const {\n attributes: {positions},\n positionSize\n } = this;\n if (!positions || !polygon) {\n return;\n }\n const polygonPositions = Polygon.getPositions(polygon);\n\n for (let i = vertexStart, j = 0; j < geometrySize; i++, j++) {\n const x = polygonPositions[j * positionSize];\n const y = polygonPositions[j * positionSize + 1];\n const z = positionSize > 2 ? polygonPositions[j * positionSize + 2] : 0;\n\n positions[i * 3] = x;\n positions[i * 3 + 1] = y;\n positions[i * 3 + 2] = z;\n }\n }\n\n private _updateVertexValid(\n polygon: NormalizedPolygonGeometry | null,\n {vertexStart, geometrySize}: GeometryUpdateContext\n ) {\n const {positionSize} = this;\n const vertexValid = this.attributes.vertexValid as TypedArray;\n const holeIndices = polygon && Polygon.getHoleIndices(polygon);\n /* We are reusing the some buffer for `nextPositions` by offseting one vertex\n * to the left. As a result,\n * the last vertex of each ring overlaps with the first vertex of the next ring.\n * `vertexValid` is used to mark the end of each ring so we don't draw these\n * segments:\n positions A0 A1 A2 A3 A4 B0 B1 B2 C0 ...\n nextPositions A1 A2 A3 A4 B0 B1 B2 C0 C1 ...\n vertexValid 1 1 1 1 0 1 1 0 1 ...\n */\n if (polygon && (polygon as CutPolygon).edgeTypes) {\n vertexValid.set((polygon as CutPolygon).edgeTypes, vertexStart);\n } else {\n vertexValid.fill(1, vertexStart, vertexStart + geometrySize);\n }\n if (holeIndices) {\n for (let j = 0; j < holeIndices.length; j++) {\n vertexValid[vertexStart + holeIndices[j] / positionSize - 1] = 0;\n }\n }\n vertexValid[vertexStart + geometrySize - 1] = 0;\n }\n}\n\nfunction isCut(polygon: NormalizedPolygonGeometry | CutPolygon[]): polygon is CutPolygon[] {\n return Array.isArray(polygon) && polygon.length > 0 && !Number.isFinite(polygon[0]);\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n\nattribute vec2 vertexPositions;\nattribute float vertexValid;\n\nuniform bool extruded;\nuniform bool isWireframe;\nuniform float elevationScale;\nuniform float opacity;\n\nvarying vec4 vColor;\n\nstruct PolygonProps {\n vec4 fillColors;\n vec4 lineColors;\n vec3 positions;\n vec3 nextPositions;\n vec3 pickingColors;\n vec3 positions64Low;\n vec3 nextPositions64Low;\n float elevations;\n};\n\nvec3 project_offset_normal(vec3 vector) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\n // normals generated by the polygon tesselator are in lnglat offsets instead of meters\n return normalize(vector * project_uCommonUnitsPerWorldUnit);\n }\n return project_normal(vector);\n}\n\nvoid calculatePosition(PolygonProps props) {\n#ifdef IS_SIDE_VERTEX\n if(vertexValid < 0.5){\n gl_Position = vec4(0.);\n return;\n }\n#endif\n\n vec3 pos;\n vec3 pos64Low;\n vec3 normal;\n vec4 colors = isWireframe ? props.lineColors : props.fillColors;\n\n geometry.worldPosition = props.positions;\n geometry.worldPositionAlt = props.nextPositions;\n geometry.pickingColor = props.pickingColors;\n\n#ifdef IS_SIDE_VERTEX\n pos = mix(props.positions, props.nextPositions, vertexPositions.x);\n pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x);\n#else\n pos = props.positions;\n pos64Low = props.positions64Low;\n#endif\n\n if (extruded) {\n pos.z += props.elevations * vertexPositions.y * elevationScale;\n }\n gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position);\n\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n if (extruded) {\n #ifdef IS_SIDE_VERTEX\n normal = vec3(\n props.positions.y - props.nextPositions.y + (props.positions64Low.y - props.nextPositions64Low.y),\n props.nextPositions.x - props.positions.x + (props.nextPositions64Low.x - props.positions64Low.x),\n 0.0);\n normal = project_offset_normal(normal);\n #else\n normal = project_normal(vec3(0.0, 0.0, 1.0));\n #endif\n geometry.normal = normal;\n vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal);\n vColor = vec4(lightColor, colors.a * opacity);\n } else {\n vColor = vec4(colors.rgb, colors.a * opacity);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport main from './solid-polygon-layer-vertex-main.glsl';\n\nexport default `\\\n#define SHADER_NAME solid-polygon-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec3 positions64Low;\nattribute float elevations;\nattribute vec4 fillColors;\nattribute vec4 lineColors;\nattribute vec3 pickingColors;\n\n${main}\n\nvoid main(void) {\n PolygonProps props;\n\n props.positions = positions;\n props.positions64Low = positions64Low;\n props.elevations = elevations;\n props.fillColors = fillColors;\n props.lineColors = lineColors;\n props.pickingColors = pickingColors;\n\n calculatePosition(props);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport main from './solid-polygon-layer-vertex-main.glsl';\n\nexport default `\\\n#define SHADER_NAME solid-polygon-layer-vertex-shader-side\n#define IS_SIDE_VERTEX\n\n\nattribute vec3 instancePositions;\nattribute vec3 nextPositions;\nattribute vec3 instancePositions64Low;\nattribute vec3 nextPositions64Low;\nattribute float instanceElevations;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\n${main}\n\nvoid main(void) {\n PolygonProps props;\n\n #if RING_WINDING_ORDER_CW == 1\n props.positions = instancePositions;\n props.positions64Low = instancePositions64Low;\n props.nextPositions = nextPositions;\n props.nextPositions64Low = nextPositions64Low;\n #else\n props.positions = nextPositions;\n props.positions64Low = nextPositions64Low;\n props.nextPositions = instancePositions;\n props.nextPositions64Low = instancePositions64Low;\n #endif\n props.elevations = instanceElevations;\n props.fillColors = instanceFillColors;\n props.lineColors = instanceLineColors;\n props.pickingColors = instancePickingColors;\n\n calculatePosition(props);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Layer, project32, gouraudLighting, picking, COORDINATE_SYSTEM} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry, hasFeatures, FEATURES} from '@luma.gl/core';\n\n// Polygon geometry generation is managed by the polygon tesselator\nimport PolygonTesselator from './polygon-tesselator';\n\nimport vsTop from './solid-polygon-layer-vertex-top.glsl';\nimport vsSide from './solid-polygon-layer-vertex-side.glsl';\nimport fs from './solid-polygon-layer-fragment.glsl';\n\nimport type {\n LayerProps,\n LayerDataSource,\n Color,\n Material,\n Accessor,\n AccessorFunction,\n UpdateParameters,\n GetPickingInfoParams,\n PickingInfo,\n DefaultProps\n} from '@deck.gl/core';\nimport type {PolygonGeometry} from './polygon';\n\ntype _SolidPolygonLayerProps = {\n data: LayerDataSource;\n /** Whether to fill the polygons\n * @default true\n */\n filled?: boolean;\n /** Whether to extrude the polygons\n * @default false\n */\n extruded?: boolean;\n /** Whether to generate a line wireframe of the polygon.\n * @default false\n */\n wireframe?: boolean;\n /**\n * (Experimental) If `false`, will skip normalizing the coordinates returned by `getPolygon`.\n * @default true\n */\n _normalize?: boolean;\n /**\n * (Experimental) This prop is only effective with `_normalize: false`.\n * It specifies the winding order of rings in the polygon data, one of 'CW' (clockwise) and 'CCW' (counter-clockwise)\n */\n _windingOrder?: 'CW' | 'CCW';\n\n /**\n * (Experimental) This prop is only effective with `XYZ` data.\n * When true, polygon tesselation will be performed on the plane with the largest area, instead of the xy plane.\n * @default false\n */\n _full3d?: boolean;\n\n /** Elevation multiplier.\n * @default 1\n */\n elevationScale?: number;\n\n /** Polygon geometry accessor. */\n getPolygon?: AccessorFunction;\n /** Extrusion height accessor.\n * @default 1000\n */\n getElevation?: Accessor;\n /** Fill color accessor.\n * @default [0, 0, 0, 255]\n */\n getFillColor?: Accessor;\n /** Stroke color accessor.\n * @default [0, 0, 0, 255]\n */\n getLineColor?: Accessor;\n\n /**\n * Material settings for lighting effect. Applies if `extruded: true`\n *\n * @default true\n * @see https://deck.gl/docs/developer-guide/using-lighting\n */\n material?: Material;\n};\n\n/** Render filled and/or extruded polygons. */\nexport type SolidPolygonLayerProps = _SolidPolygonLayerProps & LayerProps;\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\nconst defaultProps: DefaultProps = {\n filled: true,\n extruded: false,\n wireframe: false,\n _normalize: true,\n _windingOrder: 'CW',\n _full3d: false,\n\n elevationScale: {type: 'number', min: 0, value: 1},\n\n getPolygon: {type: 'accessor', value: f => f.polygon},\n getElevation: {type: 'accessor', value: 1000},\n getFillColor: {type: 'accessor', value: DEFAULT_COLOR},\n getLineColor: {type: 'accessor', value: DEFAULT_COLOR},\n\n material: true\n};\n\nconst ATTRIBUTE_TRANSITION = {\n enter: (value, chunk) => {\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\n\nexport default class SolidPolygonLayer extends Layer<\n ExtraPropsT & Required<_SolidPolygonLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'SolidPolygonLayer';\n\n state!: {\n topModel?: Model;\n sideModel?: Model;\n models?: Model[];\n numInstances: number;\n polygonTesselator: PolygonTesselator;\n };\n\n getShaders(type) {\n return super.getShaders({\n vs: type === 'top' ? vsTop : vsSide,\n fs,\n defines: {\n RING_WINDING_ORDER_CW: !this.props._normalize && this.props._windingOrder === 'CCW' ? 0 : 1\n },\n modules: [project32, gouraudLighting, picking]\n });\n }\n\n get wrapLongitude(): boolean {\n return false;\n }\n\n initializeState() {\n const {gl, viewport} = this.context;\n let {coordinateSystem} = this.props;\n const {_full3d} = this.props;\n if (viewport.isGeospatial && coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = COORDINATE_SYSTEM.LNGLAT;\n }\n\n let preproject: ((xy: number[]) => number[]) | undefined;\n\n if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {\n if (_full3d) {\n preproject = viewport.projectPosition.bind(viewport);\n } else {\n preproject = viewport.projectFlat.bind(viewport);\n }\n }\n\n this.setState({\n numInstances: 0,\n polygonTesselator: new PolygonTesselator({\n // Lnglat coordinates are usually projected non-linearly, which affects tesselation results\n // Provide a preproject function if the coordinates are in lnglat\n preproject,\n fp64: this.use64bitPositions(),\n IndexType: !gl || hasFeatures(gl, FEATURES.ELEMENT_INDEX_UINT32) ? Uint32Array : Uint16Array\n })\n });\n\n const attributeManager = this.getAttributeManager()!;\n const noAlloc = true;\n\n attributeManager.remove(['instancePickingColors']);\n\n /* eslint-disable max-len */\n attributeManager.add({\n indices: {\n size: 1,\n isIndexed: true,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateIndices,\n noAlloc\n },\n positions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getPolygon',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculatePositions,\n noAlloc,\n shaderAttributes: {\n positions: {\n vertexOffset: 0,\n divisor: 0\n },\n instancePositions: {\n vertexOffset: 0,\n divisor: 1\n },\n nextPositions: {\n vertexOffset: 1,\n divisor: 1\n }\n }\n },\n vertexValid: {\n size: 1,\n divisor: 1,\n type: GL.UNSIGNED_BYTE,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateVertexValid,\n noAlloc\n },\n elevations: {\n size: 1,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getElevation',\n shaderAttributes: {\n elevations: {\n divisor: 0\n },\n instanceElevations: {\n divisor: 1\n }\n }\n },\n fillColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getFillColor',\n defaultValue: DEFAULT_COLOR,\n shaderAttributes: {\n fillColors: {\n divisor: 0\n },\n instanceFillColors: {\n divisor: 1\n }\n }\n },\n lineColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getLineColor',\n defaultValue: DEFAULT_COLOR,\n shaderAttributes: {\n lineColors: {\n divisor: 0\n },\n instanceLineColors: {\n divisor: 1\n }\n }\n },\n pickingColors: {\n size: 3,\n type: GL.UNSIGNED_BYTE,\n accessor: (object, {index, target: value}) =>\n this.encodePickingColor(object && object.__source ? object.__source.index : index, value),\n shaderAttributes: {\n pickingColors: {\n divisor: 0\n },\n instancePickingColors: {\n divisor: 1\n }\n }\n }\n });\n /* eslint-enable max-len */\n }\n\n getPickingInfo(params: GetPickingInfoParams): PickingInfo {\n const info = super.getPickingInfo(params);\n const {index} = info;\n const {data} = this.props;\n\n // Check if data comes from a composite layer, wrapped with getSubLayerRow\n if (data[0] && data[0].__source) {\n // index decoded from picking color refers to the source index\n info.object = (data as any[]).find(d => d.__source.index === index);\n }\n return info;\n }\n\n disablePickingIndex(objectIndex: number) {\n const {data} = this.props;\n\n // Check if data comes from a composite layer, wrapped with getSubLayerRow\n if (data[0] && data[0].__source) {\n // index decoded from picking color refers to the source index\n for (let i = 0; i < (data as any[]).length; i++) {\n if (data[i].__source.index === objectIndex) {\n this._disablePickingIndex(i);\n }\n }\n } else {\n super.disablePickingIndex(objectIndex);\n }\n }\n\n draw({uniforms}) {\n const {extruded, filled, wireframe, elevationScale} = this.props;\n const {topModel, sideModel, polygonTesselator} = this.state;\n\n const renderUniforms = {\n ...uniforms,\n extruded: Boolean(extruded),\n elevationScale\n };\n\n // Note: the order is important\n if (sideModel) {\n sideModel.setInstanceCount(polygonTesselator.instanceCount - 1);\n sideModel.setUniforms(renderUniforms);\n if (wireframe) {\n sideModel.setDrawMode(GL.LINE_STRIP);\n sideModel.setUniforms({isWireframe: true}).draw();\n }\n if (filled) {\n sideModel.setDrawMode(GL.TRIANGLE_FAN);\n sideModel.setUniforms({isWireframe: false}).draw();\n }\n }\n\n if (topModel) {\n topModel.setVertexCount(polygonTesselator.vertexCount);\n topModel.setUniforms(renderUniforms).draw();\n }\n }\n\n updateState(updateParams: UpdateParameters) {\n super.updateState(updateParams);\n\n this.updateGeometry(updateParams);\n\n const {props, oldProps, changeFlags} = updateParams;\n const attributeManager = this.getAttributeManager();\n\n const regenerateModels =\n changeFlags.extensionsChanged ||\n props.filled !== oldProps.filled ||\n props.extruded !== oldProps.extruded;\n\n if (regenerateModels) {\n this.state.models?.forEach(model => model.delete());\n\n this.setState(this._getModels(this.context.gl));\n attributeManager!.invalidateAll();\n }\n }\n\n protected updateGeometry({props, oldProps, changeFlags}: UpdateParameters) {\n const geometryConfigChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon));\n\n // When the geometry config or the data is changed,\n // tessellator needs to be invoked\n if (geometryConfigChanged) {\n const {polygonTesselator} = this.state;\n const buffers = (props.data as any).attributes || {};\n polygonTesselator.updateGeometry({\n data: props.data,\n normalize: props._normalize,\n geometryBuffer: buffers.getPolygon,\n buffers,\n getGeometry: props.getPolygon,\n positionFormat: props.positionFormat,\n wrapLongitude: props.wrapLongitude,\n // TODO - move the flag out of the viewport\n resolution: this.context.viewport.resolution,\n fp64: this.use64bitPositions(),\n dataChanged: changeFlags.dataChanged,\n full3d: props._full3d\n });\n\n this.setState({\n numInstances: polygonTesselator.instanceCount,\n startIndices: polygonTesselator.vertexStarts\n });\n\n if (!changeFlags.dataChanged) {\n // Base `layer.updateState` only invalidates all attributes on data change\n // Cover the rest of the scenarios here\n this.getAttributeManager()!.invalidateAll();\n }\n }\n }\n\n protected _getModels(gl: WebGLRenderingContext): Model {\n const {id, filled, extruded} = this.props;\n\n let topModel;\n let sideModel;\n\n if (filled) {\n const shaders = this.getShaders('top');\n shaders.defines.NON_INSTANCED_MODEL = 1;\n\n topModel = new Model(gl, {\n ...shaders,\n id: `${id}-top`,\n drawMode: GL.TRIANGLES,\n attributes: {\n vertexPositions: new Float32Array([0, 1])\n },\n uniforms: {\n isWireframe: false,\n isSideVertex: false\n },\n vertexCount: 0,\n isIndexed: true\n });\n }\n if (extruded) {\n sideModel = new Model(gl, {\n ...this.getShaders('side'),\n id: `${id}-side`,\n geometry: new Geometry({\n drawMode: GL.LINES,\n vertexCount: 4,\n attributes: {\n // top right - top left - bootom left - bottom right\n vertexPositions: {\n size: 2,\n value: new Float32Array([1, 0, 0, 0, 0, 1, 1, 1])\n }\n }\n }),\n instanceCount: 0,\n isInstanced: 1\n });\n\n sideModel.userData.excludeAttributes = {indices: true};\n }\n\n return {\n models: [sideModel, topModel].filter(Boolean),\n topModel,\n sideModel\n };\n }\n\n protected calculateIndices(attribute) {\n const {polygonTesselator} = this.state;\n attribute.startIndices = polygonTesselator.indexStarts;\n attribute.value = polygonTesselator.get('indices');\n }\n\n protected calculatePositions(attribute) {\n const {polygonTesselator} = this.state;\n attribute.startIndices = polygonTesselator.vertexStarts;\n attribute.value = polygonTesselator.get('positions');\n }\n\n protected calculateVertexValid(attribute) {\n attribute.value = this.state.polygonTesselator.get('vertexValid');\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME solid-polygon-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\n\nvoid main(void) {\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","import {CompositeLayer, Layer} from '@deck.gl/core';\n\nimport IconLayer from '../icon-layer/icon-layer';\nimport ScatterplotLayer from '../scatterplot-layer/scatterplot-layer';\nimport TextLayer from '../text-layer/text-layer';\nimport PathLayer from '../path-layer/path-layer';\nimport SolidPolygonLayer from '../solid-polygon-layer/solid-polygon-layer';\n\nexport const POINT_LAYER = {\n circle: {\n type: ScatterplotLayer,\n props: {\n filled: 'filled',\n stroked: 'stroked',\n\n lineWidthMaxPixels: 'lineWidthMaxPixels',\n lineWidthMinPixels: 'lineWidthMinPixels',\n lineWidthScale: 'lineWidthScale',\n lineWidthUnits: 'lineWidthUnits',\n pointRadiusMaxPixels: 'radiusMaxPixels',\n pointRadiusMinPixels: 'radiusMinPixels',\n pointRadiusScale: 'radiusScale',\n pointRadiusUnits: 'radiusUnits',\n pointAntialiasing: 'antialiasing',\n pointBillboard: 'billboard',\n\n getFillColor: 'getFillColor',\n getLineColor: 'getLineColor',\n getLineWidth: 'getLineWidth',\n getPointRadius: 'getRadius'\n }\n },\n icon: {\n type: IconLayer,\n props: {\n iconAtlas: 'iconAtlas',\n iconMapping: 'iconMapping',\n\n iconSizeMaxPixels: 'sizeMaxPixels',\n iconSizeMinPixels: 'sizeMinPixels',\n iconSizeScale: 'sizeScale',\n iconSizeUnits: 'sizeUnits',\n iconAlphaCutoff: 'alphaCutoff',\n iconBillboard: 'billboard',\n\n getIcon: 'getIcon',\n getIconAngle: 'getAngle',\n getIconColor: 'getColor',\n getIconPixelOffset: 'getPixelOffset',\n getIconSize: 'getSize'\n }\n },\n text: {\n type: TextLayer,\n props: {\n textSizeMaxPixels: 'sizeMaxPixels',\n textSizeMinPixels: 'sizeMinPixels',\n textSizeScale: 'sizeScale',\n textSizeUnits: 'sizeUnits',\n\n textBackground: 'background',\n textBackgroundPadding: 'backgroundPadding',\n textFontFamily: 'fontFamily',\n textFontWeight: 'fontWeight',\n textLineHeight: 'lineHeight',\n textMaxWidth: 'maxWidth',\n textOutlineColor: 'outlineColor',\n textOutlineWidth: 'outlineWidth',\n textWordBreak: 'wordBreak',\n textCharacterSet: 'characterSet',\n textBillboard: 'billboard',\n textFontSettings: 'fontSettings',\n\n getText: 'getText',\n getTextAngle: 'getAngle',\n getTextColor: 'getColor',\n getTextPixelOffset: 'getPixelOffset',\n getTextSize: 'getSize',\n getTextAnchor: 'getTextAnchor',\n getTextAlignmentBaseline: 'getAlignmentBaseline',\n getTextBackgroundColor: 'getBackgroundColor',\n getTextBorderColor: 'getBorderColor',\n getTextBorderWidth: 'getBorderWidth'\n }\n }\n};\n\nexport const LINE_LAYER = {\n type: PathLayer,\n props: {\n lineWidthUnits: 'widthUnits',\n lineWidthScale: 'widthScale',\n lineWidthMinPixels: 'widthMinPixels',\n lineWidthMaxPixels: 'widthMaxPixels',\n lineJointRounded: 'jointRounded',\n lineCapRounded: 'capRounded',\n lineMiterLimit: 'miterLimit',\n lineBillboard: 'billboard',\n\n getLineColor: 'getColor',\n getLineWidth: 'getWidth'\n }\n};\n\nexport const POLYGON_LAYER = {\n type: SolidPolygonLayer,\n props: {\n extruded: 'extruded',\n filled: 'filled',\n wireframe: 'wireframe',\n elevationScale: 'elevationScale',\n material: 'material',\n _full3d: '_full3d',\n\n getElevation: 'getElevation',\n getFillColor: 'getFillColor',\n getLineColor: 'getLineColor'\n }\n};\n\nexport function getDefaultProps({\n type,\n props\n}: {\n type: typeof Layer;\n props: Record;\n}): Record {\n const result = {};\n for (const key in props) {\n result[key] = type.defaultProps[props[key]];\n }\n return result;\n}\n\nexport function forwardProps(\n layer: CompositeLayer,\n mapping: Record\n): Record {\n const {transitions, updateTriggers} = layer.props;\n const result: Record = {\n updateTriggers: {},\n transitions: transitions && {\n getPosition: transitions.geometry\n }\n };\n\n for (const sourceKey in mapping) {\n const targetKey = mapping[sourceKey];\n let value = layer.props[sourceKey];\n if (sourceKey.startsWith('get')) {\n // isAccessor\n value = (layer as any).getSubLayerAccessor(value);\n result.updateTriggers[targetKey] = updateTriggers[sourceKey];\n if (transitions) {\n result.transitions[targetKey] = transitions[sourceKey];\n }\n }\n result[targetKey] = value;\n }\n return result;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {log} from '@deck.gl/core';\nimport type {\n Feature,\n GeoJSON,\n GeoJsonGeometryTypes,\n LineString,\n MultiLineString,\n MultiPoint,\n MultiPolygon,\n Point,\n Polygon\n} from 'geojson';\n\ntype SupportedGeometry = Point | MultiPoint | LineString | MultiLineString | Polygon | MultiPolygon;\n\nexport type SeparatedGeometries = {\n pointFeatures: {geometry: Point}[];\n lineFeatures: {geometry: LineString}[];\n polygonFeatures: {geometry: Polygon}[];\n polygonOutlineFeatures: {geometry: LineString}[];\n};\n\n/**\n * \"Normalizes\" complete or partial GeoJSON data into iterable list of features\n * Can accept GeoJSON geometry or \"Feature\", \"FeatureCollection\" in addition\n * to plain arrays and iterables.\n * Works by extracting the feature array or wrapping single objects in an array,\n * so that subsequent code can simply iterate over features.\n *\n * @param {object} geojson - geojson data\n * @param {Object|Array} data - geojson object (FeatureCollection, Feature or\n * Geometry) or array of features\n * @return {Array|\"iteratable\"} - iterable list of features\n */\nexport function getGeojsonFeatures(geojson: GeoJSON): Feature[] {\n // If array, assume this is a list of features\n if (Array.isArray(geojson)) {\n return geojson;\n }\n\n log.assert(geojson.type, 'GeoJSON does not have type');\n\n switch (geojson.type) {\n case 'Feature':\n // Wrap the feature in a 'Features' array\n return [geojson];\n case 'FeatureCollection':\n // Just return the 'Features' array from the collection\n log.assert(Array.isArray(geojson.features), 'GeoJSON does not have features array');\n return geojson.features;\n default:\n // Assume it's a geometry, we'll check type in separateGeojsonFeatures\n // Wrap the geometry object in a 'Feature' object and wrap in an array\n return [{geometry: geojson}] as Feature[];\n }\n}\n\n// Linearize\nexport function separateGeojsonFeatures(\n features: Feature[],\n wrapFeature: (row: T, sourceObject: any, sourceObjectIndex: number) => T,\n dataRange: {startRow?: number; endRow?: number} = {}\n): SeparatedGeometries {\n const separated: SeparatedGeometries = {\n pointFeatures: [],\n lineFeatures: [],\n polygonFeatures: [],\n polygonOutlineFeatures: []\n };\n const {startRow = 0, endRow = features.length} = dataRange;\n\n for (let featureIndex = startRow; featureIndex < endRow; featureIndex++) {\n const feature = features[featureIndex];\n const {geometry} = feature;\n\n if (!geometry) {\n // geometry can be null per specification\n continue; // eslint-disable-line no-continue\n }\n\n if (geometry.type === 'GeometryCollection') {\n log.assert(Array.isArray(geometry.geometries), 'GeoJSON does not have geometries array');\n const {geometries} = geometry;\n for (let i = 0; i < geometries.length; i++) {\n const subGeometry = geometries[i];\n separateGeometry(\n subGeometry as SupportedGeometry,\n separated,\n wrapFeature,\n feature,\n featureIndex\n );\n }\n } else {\n separateGeometry(geometry, separated, wrapFeature, feature, featureIndex);\n }\n }\n\n return separated;\n}\n\nfunction separateGeometry(\n geometry: SupportedGeometry,\n separated: SeparatedGeometries,\n wrapFeature: (row: T, sourceObject: any, sourceObjectIndex: number) => T,\n sourceFeature: Feature,\n sourceFeatureIndex: number\n) {\n const {type, coordinates} = geometry;\n const {pointFeatures, lineFeatures, polygonFeatures, polygonOutlineFeatures} = separated;\n\n if (!validateGeometry(type, coordinates)) {\n // Avoid hard failure if some features are malformed\n log.warn(`${type} coordinates are malformed`)();\n return;\n }\n\n // Split each feature, but keep track of the source feature and index (for Multi* geometries)\n switch (type) {\n case 'Point':\n pointFeatures.push(\n wrapFeature(\n {\n geometry\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n break;\n case 'MultiPoint':\n coordinates.forEach(point => {\n pointFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'Point', coordinates: point}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n break;\n case 'LineString':\n lineFeatures.push(\n wrapFeature(\n {\n geometry\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n break;\n case 'MultiLineString':\n // Break multilinestrings into multiple lines\n coordinates.forEach(path => {\n lineFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'LineString', coordinates: path}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n break;\n case 'Polygon':\n polygonFeatures.push(\n wrapFeature(\n {\n geometry\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n // Break polygon into multiple lines\n coordinates.forEach(path => {\n polygonOutlineFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'LineString', coordinates: path}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n break;\n case 'MultiPolygon':\n // Break multipolygons into multiple polygons\n coordinates.forEach(polygon => {\n polygonFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'Polygon', coordinates: polygon}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n // Break polygon into multiple lines\n polygon.forEach(path => {\n polygonOutlineFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'LineString', coordinates: path}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n });\n break;\n default:\n }\n}\n\n/**\n * Simple GeoJSON validation util. For perf reasons we do not validate against the full spec,\n * only the following:\n - geometry.type is supported\n - geometry.coordinate has correct nesting level\n */\nconst COORDINATE_NEST_LEVEL: Record = {\n Point: 1,\n MultiPoint: 2,\n LineString: 2,\n MultiLineString: 3,\n Polygon: 3,\n MultiPolygon: 4\n};\n\nexport function validateGeometry(type: GeoJsonGeometryTypes, coordinates: any): boolean {\n let nestLevel = COORDINATE_NEST_LEVEL[type] as number;\n\n log.assert(nestLevel, `Unknown GeoJSON type ${type}`);\n\n while (coordinates && --nestLevel > 0) {\n coordinates = coordinates[0];\n }\n\n return coordinates && Number.isFinite(coordinates[0]);\n}\n","import {BinaryAttribute, LayerData, LayerProps} from '@deck.gl/core';\nimport {PolygonLayerProps, ScatterplotLayerProps} from '..';\nimport {calculatePickingColors} from './geojson-binary';\nimport {BinaryFeatures} from '@loaders.gl/schema';\nimport {SeparatedGeometries} from './geojson';\n\n// TODO: PathLayer is not yet typed\ntype PathLayerProps = LayerProps & Record;\n\ntype SubLayersProps = {\n points: Partial;\n lines: Partial;\n polygons: Partial;\n polygonsOutline: Partial;\n};\n\ntype ExtendedBinaryFeatures = {\n [P in keyof BinaryFeatures]: BinaryFeatures[P] & {attributes?: Record};\n};\n\nfunction createEmptyLayerProps(): SubLayersProps {\n return {\n points: {},\n lines: {},\n polygons: {},\n polygonsOutline: {}\n };\n}\n\nfunction getCoordinates(f) {\n return f.geometry.coordinates;\n}\n\nexport function createLayerPropsFromFeatures(\n features: SeparatedGeometries,\n featuresDiff\n): SubLayersProps {\n const layerProps = createEmptyLayerProps();\n const {pointFeatures, lineFeatures, polygonFeatures, polygonOutlineFeatures} = features;\n\n layerProps.points.data = pointFeatures;\n layerProps.points._dataDiff = featuresDiff.pointFeatures && (() => featuresDiff.pointFeatures);\n layerProps.points.getPosition = getCoordinates;\n\n layerProps.lines.data = lineFeatures;\n layerProps.lines._dataDiff = featuresDiff.lineFeatures && (() => featuresDiff.lineFeatures);\n layerProps.lines.getPath = getCoordinates;\n\n layerProps.polygons.data = polygonFeatures;\n layerProps.polygons._dataDiff =\n featuresDiff.polygonFeatures && (() => featuresDiff.polygonFeatures);\n layerProps.polygons.getPolygon = getCoordinates;\n\n layerProps.polygonsOutline.data = polygonOutlineFeatures;\n layerProps.polygonsOutline._dataDiff =\n featuresDiff.polygonOutlineFeatures && (() => featuresDiff.polygonOutlineFeatures);\n layerProps.polygonsOutline.getPath = getCoordinates;\n\n return layerProps;\n}\n\nexport function createLayerPropsFromBinary(\n geojsonBinary: Required,\n encodePickingColor\n): SubLayersProps {\n // The binary data format is documented here\n // https://github.com/visgl/loaders.gl/blob/master/modules/gis/docs/api-reference/geojson-to-binary.md\n // It is the default output from the `MVTLoader` and can also be obtained\n // from GeoJSON by using the `geojsonToBinary` utility function.\n const layerProps = createEmptyLayerProps();\n const {points, lines, polygons} = geojsonBinary;\n\n const customPickingColors = calculatePickingColors(geojsonBinary, encodePickingColor);\n\n layerProps.points.data = {\n length: points.positions.value.length / points.positions.size,\n attributes: {\n ...points.attributes,\n getPosition: points.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.points!\n }\n },\n properties: points.properties,\n numericProps: points.numericProps,\n featureIds: points.featureIds\n } as LayerData;\n\n layerProps.lines.data = {\n length: lines.pathIndices.value.length - 1,\n startIndices: lines.pathIndices.value,\n attributes: {\n ...lines.attributes,\n getPath: lines.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.lines!\n }\n },\n properties: lines.properties,\n numericProps: lines.numericProps,\n featureIds: lines.featureIds\n } as LayerData;\n layerProps.lines._pathType = 'open';\n\n layerProps.polygons.data = {\n length: polygons.polygonIndices.value.length - 1,\n startIndices: polygons.polygonIndices.value,\n attributes: {\n ...polygons.attributes,\n getPolygon: polygons.positions,\n pickingColors: {\n size: 3,\n value: customPickingColors.polygons!\n }\n },\n properties: polygons.properties,\n numericProps: polygons.numericProps,\n featureIds: polygons.featureIds\n } as LayerData;\n layerProps.polygons._normalize = false;\n if (polygons.triangles) {\n (layerProps.polygons.data as any).attributes.indices = polygons.triangles.value;\n }\n\n layerProps.polygonsOutline.data = {\n length: polygons.primitivePolygonIndices.value.length - 1,\n startIndices: polygons.primitivePolygonIndices.value,\n attributes: {\n ...polygons.attributes,\n getPath: polygons.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.polygons!\n }\n },\n properties: polygons.properties,\n numericProps: polygons.numericProps,\n featureIds: polygons.featureIds\n } as LayerData;\n layerProps.polygonsOutline._pathType = 'open';\n\n return layerProps;\n}\n","// This module implement some utility functions to work with\n// the geojson-binary format defined at loaders.gl:\n// https://github.com/visgl/loaders.gl/blob/master/modules/gis/docs/api-reference/geojson-to-binary.md\n\nimport {\n BinaryFeatures,\n BinaryLineFeatures,\n BinaryPointFeatures,\n BinaryPolygonFeatures,\n Feature\n} from '@loaders.gl/schema';\n\nexport type BinaryFeatureTypes = BinaryPointFeatures | BinaryLineFeatures | BinaryPolygonFeatures;\n\ntype FeaureOnlyProperties = Pick;\n\n/**\n * Return the feature for an accesor\n */\nexport function binaryToFeatureForAccesor(\n data: BinaryFeatureTypes,\n index: number\n): FeaureOnlyProperties | null {\n if (!data) {\n return null;\n }\n\n const featureIndex = 'startIndices' in data ? (data as any).startIndices[index] : index;\n const geometryIndex = data.featureIds.value[featureIndex];\n\n if (featureIndex !== -1) {\n return getPropertiesForIndex(data, geometryIndex, featureIndex);\n }\n\n return null;\n}\n\nfunction getPropertiesForIndex(\n data: BinaryFeatureTypes,\n propertiesIndex: number,\n numericPropsIndex: number\n): FeaureOnlyProperties {\n const feature = {\n properties: {...data.properties[propertiesIndex]}\n };\n\n for (const prop in data.numericProps) {\n feature.properties[prop] = data.numericProps[prop].value[numericPropsIndex];\n }\n\n return feature;\n}\n\n// Custom picking color to keep binary indexes\nexport function calculatePickingColors(\n geojsonBinary: BinaryFeatures,\n encodePickingColor: (id: number, result: number[]) => void\n): Record {\n const pickingColors: Record = {\n points: null,\n lines: null,\n polygons: null\n };\n for (const key in pickingColors) {\n const featureIds = geojsonBinary[key].globalFeatureIds.value;\n pickingColors[key] = new Uint8ClampedArray(featureIds.length * 3);\n const pickingColor = [];\n for (let i = 0; i < featureIds.length; i++) {\n encodePickingColor(featureIds[i], pickingColor);\n pickingColors[key]![i * 3 + 0] = pickingColor[0];\n pickingColors[key]![i * 3 + 1] = pickingColor[1];\n pickingColors[key]![i * 3 + 2] = pickingColor[2];\n }\n }\n\n return pickingColors;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {\n Accessor,\n Color,\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n PickingInfo,\n Unit,\n Material,\n UpdateParameters,\n _ConstructorOf,\n DefaultProps\n} from '@deck.gl/core';\n\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature, GeoJSON} from 'geojson';\n\nimport {replaceInRange} from '../utils';\nimport {BinaryFeatureTypes, binaryToFeatureForAccesor} from './geojson-binary';\nimport {\n POINT_LAYER,\n LINE_LAYER,\n POLYGON_LAYER,\n getDefaultProps,\n forwardProps\n} from './sub-layer-map';\n\nimport {getGeojsonFeatures, SeparatedGeometries, separateGeojsonFeatures} from './geojson';\nimport {createLayerPropsFromFeatures, createLayerPropsFromBinary} from './geojson-layer-props';\n\n/** All properties supported by GeoJsonLayer */\nexport type GeoJsonLayerProps = _GeoJsonLayerProps & CompositeLayerProps;\n\n/** Properties added by GeoJsonLayer */\nexport type _GeoJsonLayerProps = {\n data: string | GeoJSON | BinaryFeatures | Promise;\n /**\n * How to render Point and MultiPoint features in the data.\n *\n * Supported types are:\n * * `'circle'`\n * * `'icon'`\n * * `'text'`\n *\n * @default 'circle'\n */\n pointType?: string;\n} & _GeoJsonLayerFillProps &\n _GeoJsonLayerStrokeProps &\n _GeoJsonLayer3DProps &\n _GeoJsonLayerPointCircleProps &\n _GeojsonLayerIconPointProps &\n _GeojsonLayerTextPointProps;\n\n/** GeoJsonLayer fill options. */\ntype _GeoJsonLayerFillProps = {\n /**\n * Whether to draw a filled polygon (solid fill).\n *\n * Note that only the area between the outer polygon and any holes will be filled.\n *\n * @default true\n */\n filled?: boolean;\n\n /**\n * Fill collor value or accessor.\n *\n * @default [0, 0, 0, 255]\n */\n getFillColor?: Accessor;\n};\n\n/** GeoJsonLayer stroke options. */\ntype _GeoJsonLayerStrokeProps = {\n /**\n * Whether to draw an outline around the polygon (solid fill).\n *\n * Note that both the outer polygon as well the outlines of any holes will be drawn.\n *\n * @default true\n */\n stroked?: boolean;\n\n /**\n * Line color value or accessor.\n *\n * @default [0, 0, 0, 255]\n */\n getLineColor?: Accessor;\n\n /**\n * Line width value or accessor.\n *\n * @default [0, 0, 0, 255]\n */\n getLineWidth?: Accessor;\n\n /**\n * The units of the line width, one of `meters`, `common`, and `pixels`.\n *\n * @default 'meters'\n * @see Unit.\n */\n lineWidthUnits?: Unit;\n\n /**\n * A multiplier that is applied to all line widths\n *\n * @default 1\n */\n lineWidthScale?: number;\n\n /**\n * The minimum line width in pixels.\n *\n * @default 0\n */\n lineWidthMinPixels?: number;\n\n /**\n * The maximum line width in pixels\n *\n * @default Number.MAX_SAFE_INTEGER\n */\n lineWidthMaxPixels?: number;\n\n /**\n * Type of joint. If `true`, draw round joints. Otherwise draw miter joints.\n *\n * @default false\n */\n lineJointRounded?: boolean;\n\n /**\n * The maximum extent of a joint in ratio to the stroke width.\n *\n * Only works if `lineJointRounded` is false.\n *\n * @default 4\n */\n lineMiterLimit?: number;\n\n /**\n * Type of line caps.\n *\n * If `true`, draw round caps. Otherwise draw square caps.\n *\n * @default false\n */\n lineCapRounded?: boolean;\n\n /**\n * If `true`, extrude the line in screen space (width always faces the camera).\n * If `false`, the width always faces up.\n *\n * @default false\n */\n lineBillboard?: boolean;\n};\n\n/** GeoJsonLayer 3D options. */\ntype _GeoJsonLayer3DProps = {\n /**\n * Extrude Polygon and MultiPolygon features along the z-axis if set to true\n *\n * Based on the elevations provided by the `getElevation` accessor.\n *\n * @default false\n */\n extruded?: boolean;\n\n /**\n * Whether to generate a line wireframe of the hexagon.\n *\n * @default false\n */\n wireframe?: boolean;\n\n /**\n * (Experimental) This prop is only effective with `XYZ` data.\n * When true, polygon tesselation will be performed on the plane with the largest area, instead of the xy plane.\n * @default false\n */\n _full3d?: boolean;\n\n /**\n * Elevation valur or accessor.\n *\n * Only used if `extruded: true`.\n *\n * @default 1000\n */\n getElevation?: Accessor;\n\n /**\n * Elevation multiplier.\n *\n * The final elevation is calculated by `elevationScale * getElevation(d)`.\n * `elevationScale` is a handy property to scale all elevation without updating the data.\n *\n * @default 1\n */\n elevationScale?: boolean;\n\n /**\n * Material settings for lighting effect. Applies to extruded polgons.\n *\n * @default true\n * @see https://deck.gl/docs/developer-guide/using-lighting\n */\n material?: Material;\n};\n\n/** GeoJsonLayer Properties forwarded to `ScatterPlotLayer` if `pointType` is `'circle'` */\nexport type _GeoJsonLayerPointCircleProps = {\n getPointRadius?: Accessor;\n pointRadiusUnits?: Unit;\n pointRadiusScale?: number;\n pointRadiusMinPixels?: number;\n pointRadiusMaxPixels?: number;\n pointAntialiasing?: boolean;\n pointBillboard?: boolean;\n\n /** @deprecated use getPointRadius */\n getRadius?: Accessor;\n};\n\n/** GeoJsonLayer properties forwarded to `IconLayer` if `pointType` is `'icon'` */\ntype _GeojsonLayerIconPointProps = {\n iconAtlas?: any;\n iconMapping?: any;\n getIcon?: Accessor;\n getIconSize?: Accessor;\n getIconColor?: Accessor;\n getIconAngle?: Accessor;\n getIconPixelOffset?: Accessor;\n iconSizeUnits?: Unit;\n iconSizeScale?: number;\n iconSizeMinPixels?: number;\n iconSizeMaxPixels?: number;\n iconBillboard?: boolean;\n iconAlphaCutoff?: number;\n};\n\n/** GeoJsonLayer properties forwarded to `TextLayer` if `pointType` is `'text'` */\ntype _GeojsonLayerTextPointProps = {\n getText?: Accessor;\n getTextColor?: Accessor;\n getTextAngle?: Accessor;\n getTextSize?: Accessor;\n getTextAnchor?: Accessor;\n getTextAlignmentBaseline?: Accessor;\n getTextPixelOffset?: Accessor;\n getTextBackgroundColor?: Accessor;\n getTextBorderColor?: Accessor;\n getTextBorderWidth?: Accessor;\n textSizeUnits?: Unit;\n textSizeScale?: number;\n textSizeMinPixels?: number;\n textSizeMaxPixels?: number;\n textCharacterSet?: any;\n textFontFamily?: string;\n textFontWeight?: number;\n textLineHeight?: number;\n textMaxWidth?: number;\n textWordBreak?: string; // TODO\n textBackground?: boolean;\n textBackgroundPadding?: number[];\n textOutlineColor?: Color;\n textOutlineWidth?: number;\n textBillboard?: boolean;\n textFontSettings?: any;\n};\n\nconst FEATURE_TYPES = ['points', 'linestrings', 'polygons'];\n\nconst defaultProps: DefaultProps = {\n ...getDefaultProps(POINT_LAYER.circle),\n ...getDefaultProps(POINT_LAYER.icon),\n ...getDefaultProps(POINT_LAYER.text),\n ...getDefaultProps(LINE_LAYER),\n ...getDefaultProps(POLYGON_LAYER),\n\n // Overwrite sub layer defaults\n stroked: true,\n filled: true,\n extruded: false,\n wireframe: false,\n _full3d: false,\n iconAtlas: {type: 'object', value: null},\n iconMapping: {type: 'object', value: {}},\n getIcon: {type: 'accessor', value: f => f.properties.icon},\n getText: {type: 'accessor', value: f => f.properties.text},\n\n // Self props\n pointType: 'circle',\n\n // TODO: deprecated, remove in v9\n getRadius: {deprecatedFor: 'getPointRadius'}\n};\n\ntype GeoJsonPickingInfo = PickingInfo & {\n featureType?: string | null;\n info?: any;\n};\n\n/** Render GeoJSON formatted data as polygons, lines and points (circles, icons and/or texts). */\nexport default class GeoJsonLayer extends CompositeLayer<\n Required & ExtraProps\n> {\n static layerName = 'GeoJsonLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n this.state = {\n layerProps: {},\n features: {}\n };\n }\n\n updateState({props, changeFlags}: UpdateParameters): void {\n if (!changeFlags.dataChanged) {\n return;\n }\n const {data} = this.props;\n const binary =\n data && 'points' in (data as {}) && 'polygons' in (data as {}) && 'lines' in (data as {});\n\n this.setState({binary});\n\n if (binary) {\n this._updateStateBinary({props, changeFlags});\n } else {\n this._updateStateJSON({props, changeFlags});\n }\n }\n\n private _updateStateBinary({props, changeFlags}): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const layerProps = createLayerPropsFromBinary(props.data, this.encodePickingColor);\n this.setState({layerProps});\n }\n\n private _updateStateJSON({props, changeFlags}): void {\n const features: Feature[] = getGeojsonFeatures(props.data) as any;\n const wrapFeature = this.getSubLayerRow.bind(this);\n let newFeatures: SeparatedGeometries = {} as SeparatedGeometries;\n const featuresDiff = {};\n\n if (Array.isArray(changeFlags.dataChanged)) {\n const oldFeatures = this.state.features;\n for (const key in oldFeatures) {\n newFeatures[key] = oldFeatures[key].slice();\n featuresDiff[key] = [];\n }\n\n for (const dataRange of changeFlags.dataChanged) {\n const partialFeatures = separateGeojsonFeatures(features, wrapFeature, dataRange);\n for (const key in oldFeatures) {\n featuresDiff[key].push(\n replaceInRange({\n data: newFeatures[key],\n getIndex: f => f.__source.index,\n dataRange,\n replace: partialFeatures[key]\n })\n );\n }\n }\n } else {\n newFeatures = separateGeojsonFeatures(features, wrapFeature);\n }\n\n const layerProps = createLayerPropsFromFeatures(newFeatures, featuresDiff);\n\n this.setState({\n features: newFeatures,\n featuresDiff,\n layerProps\n });\n }\n\n getPickingInfo(params): GeoJsonPickingInfo {\n const info = super.getPickingInfo(params) as GeoJsonPickingInfo;\n const {index, sourceLayer} = info;\n info.featureType = FEATURE_TYPES.find(ft => sourceLayer!.id.startsWith(`${this.id}-${ft}-`));\n if (index >= 0 && sourceLayer!.id.startsWith(`${this.id}-points-text`) && this.state.binary) {\n info.index = (this.props.data as BinaryFeatures).points!.globalFeatureIds.value[index];\n }\n return info;\n }\n\n _updateAutoHighlight(info: GeoJsonPickingInfo): void {\n // All sub layers except the points layer use source feature index to encode the picking color\n // The points layer uses indices from the points data array.\n const pointLayerIdPrefix = `${this.id}-points-`;\n const sourceIsPoints = info.featureType === 'points';\n for (const layer of this.getSubLayers()) {\n if (layer.id.startsWith(pointLayerIdPrefix) === sourceIsPoints) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n private _renderPolygonLayer(): Layer | null {\n const {extruded, wireframe} = this.props;\n const {layerProps} = this.state;\n const id = 'polygons-fill';\n\n const PolygonFillLayer =\n this.shouldRenderSubLayer(id, layerProps.polygons.data) &&\n this.getSubLayerClass(id, POLYGON_LAYER.type);\n\n if (PolygonFillLayer) {\n const forwardedProps = forwardProps(this, POLYGON_LAYER.props);\n // Avoid building the lineColors attribute if wireframe is off\n const useLineColor = extruded && wireframe;\n if (!useLineColor) {\n delete forwardedProps.getLineColor;\n }\n // using a legacy API to invalid lineColor attributes\n forwardedProps.updateTriggers.lineColors = useLineColor;\n\n return new PolygonFillLayer(\n forwardedProps,\n this.getSubLayerProps({\n id,\n updateTriggers: forwardedProps.updateTriggers\n }),\n layerProps.polygons\n );\n }\n return null;\n }\n\n private _renderLineLayers(): (Layer | false)[] | null {\n const {extruded, stroked} = this.props;\n const {layerProps} = this.state;\n const polygonStrokeLayerId = 'polygons-stroke';\n const lineStringsLayerId = 'linestrings';\n\n const PolygonStrokeLayer =\n !extruded &&\n stroked &&\n this.shouldRenderSubLayer(polygonStrokeLayerId, layerProps.polygonsOutline.data) &&\n this.getSubLayerClass(polygonStrokeLayerId, LINE_LAYER.type);\n const LineStringsLayer =\n this.shouldRenderSubLayer(lineStringsLayerId, layerProps.lines.data) &&\n this.getSubLayerClass(lineStringsLayerId, LINE_LAYER.type);\n\n if (PolygonStrokeLayer || LineStringsLayer) {\n const forwardedProps = forwardProps(this, LINE_LAYER.props);\n\n return [\n PolygonStrokeLayer &&\n new PolygonStrokeLayer(\n forwardedProps,\n this.getSubLayerProps({\n id: polygonStrokeLayerId,\n updateTriggers: forwardedProps.updateTriggers\n }),\n layerProps.polygonsOutline\n ),\n\n LineStringsLayer &&\n new LineStringsLayer(\n forwardedProps,\n this.getSubLayerProps({\n id: lineStringsLayerId,\n updateTriggers: forwardedProps.updateTriggers\n }),\n layerProps.lines\n )\n ];\n }\n return null;\n }\n\n private _renderPointLayers(): Layer[] | null {\n const {pointType} = this.props;\n const {layerProps, binary} = this.state;\n let {highlightedObjectIndex} = this.props;\n\n if (!binary && Number.isFinite(highlightedObjectIndex)) {\n highlightedObjectIndex = layerProps.points.data.findIndex(\n d => d.__source.index === highlightedObjectIndex\n );\n }\n\n // Avoid duplicate sub layer ids\n const types = new Set(pointType.split('+'));\n const pointLayers: Layer[] = [];\n for (const type of types) {\n const id = `points-${type}`;\n const PointLayerMapping = POINT_LAYER[type];\n const PointsLayer: _ConstructorOf =\n PointLayerMapping &&\n this.shouldRenderSubLayer(id, layerProps.points.data) &&\n this.getSubLayerClass(id, PointLayerMapping.type);\n if (PointsLayer) {\n const forwardedProps = forwardProps(this, PointLayerMapping.props);\n let pointsLayerProps = layerProps.points;\n\n if (type === 'text' && binary) {\n // Picking colors are per-point but for text per-character are required\n // getPickingInfo() maps back to the correct index\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {instancePickingColors, ...rest} = pointsLayerProps.data.attributes;\n pointsLayerProps = {\n ...pointsLayerProps,\n data: {...pointsLayerProps.data, attributes: rest}\n };\n }\n\n pointLayers.push(\n new PointsLayer(\n forwardedProps,\n this.getSubLayerProps({\n id,\n updateTriggers: forwardedProps.updateTriggers,\n highlightedObjectIndex\n }),\n pointsLayerProps\n )\n );\n }\n }\n return pointLayers;\n }\n\n renderLayers() {\n const {extruded} = this.props;\n\n const polygonFillLayer = this._renderPolygonLayer();\n const lineLayers = this._renderLineLayers();\n const pointLayers = this._renderPointLayers();\n\n return [\n // If not extruded: flat fill layer is drawn below outlines\n !extruded && polygonFillLayer,\n lineLayers,\n pointLayers,\n // If extruded: draw fill layer last for correct blending behavior\n extruded && polygonFillLayer\n ];\n }\n\n protected getSubLayerAccessor(accessor: Accessor): Accessor {\n const {binary} = this.state;\n if (!binary || typeof accessor !== 'function') {\n return super.getSubLayerAccessor(accessor);\n }\n\n return (object, info) => {\n const {data, index} = info;\n const feature = binaryToFeatureForAccesor(data as unknown as BinaryFeatureTypes, index);\n // @ts-ignore (TS2349) accessor is always function\n return accessor(feature, info);\n };\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default function getHiResTimestamp(): number {\n let timestamp;\n // Get best timer available.\n if (typeof window !== 'undefined' && window.performance) {\n timestamp = window.performance.now();\n } else if (typeof process !== 'undefined' && process.hrtime) {\n const timeParts = process.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n","import getHiResTimestamp from '../utils/hi-res-timestamp';\n\nexport default class Stat {\n readonly name: string;\n readonly type: string | undefined;\n sampleSize: number = 1;\n time: number = 0;\n count: number = 0;\n samples: number = 0;\n lastTiming: number = 0;\n lastSampleTime: number = 0;\n lastSampleCount: number = 0;\n\n _count: number = 0;\n _time: number = 0;\n _samples: number = 0;\n _startTime: number = 0;\n _timerPending: boolean = false;\n\n constructor(name: string, type?: string) {\n this.name = name;\n this.type = type;\n this.reset();\n }\n\n reset(): this {\n this.time = 0;\n this.count = 0;\n this.samples = 0;\n this.lastTiming = 0;\n this.lastSampleTime = 0;\n this.lastSampleCount = 0;\n this._count = 0;\n this._time = 0;\n this._samples = 0;\n this._startTime = 0;\n this._timerPending = false;\n\n return this;\n }\n\n setSampleSize(samples: number): this {\n this.sampleSize = samples;\n return this;\n }\n\n /** Call to increment count (+1) */\n incrementCount(): this {\n this.addCount(1);\n\n return this;\n }\n\n /** Call to decrement count (-1) */\n decrementCount(): this {\n this.subtractCount(1);\n\n return this;\n }\n\n /** Increase count */\n addCount(value: number): this {\n this._count += value;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n /** Decrease count */\n subtractCount(value: number): this {\n this._count -= value;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n /** Add an arbitrary timing and bump the count */\n addTime(time: number): this {\n this._time += time;\n this.lastTiming = time;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n /** Start a timer */\n timeStart(): this {\n this._startTime = getHiResTimestamp();\n this._timerPending = true;\n\n return this;\n }\n\n /** End a timer. Adds to time and bumps the timing count. */\n timeEnd(): this {\n if (!this._timerPending) {\n return this;\n }\n this.addTime(getHiResTimestamp() - this._startTime);\n this._timerPending = false;\n this._checkSampling();\n\n return this;\n }\n\n getSampleAverageCount(): number {\n return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n }\n\n /** Calculate average time / count for the previous window */\n getSampleAverageTime(): number {\n return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n }\n\n /** Calculate counts per second for the previous window */\n getSampleHz(): number {\n return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n }\n\n getAverageCount(): number {\n return this.samples > 0 ? this.count / this.samples : 0;\n }\n\n /** Calculate average time / count */\n getAverageTime(): number {\n return this.samples > 0 ? this.time / this.samples : 0;\n }\n\n /** Calculate counts per second */\n getHz(): number {\n return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n }\n\n _checkSampling(): void {\n if (this._samples === this.sampleSize) {\n this.lastSampleTime = this._time;\n this.lastSampleCount = this._count;\n this.count += this._count;\n this.time += this._time;\n this.samples += this._samples;\n this._time = 0;\n this._count = 0;\n this._samples = 0;\n }\n }\n}\n","// probe.gl, MIT license\n\nimport Stat from './stat';\n\ntype TableEntry = {\n time: number;\n count: number;\n average: number;\n hz: number;\n};\n\n/** A \"bag\" of `Stat` objects, can be visualized using `StatsWidget` */\nexport default class Stats {\n readonly id: string;\n readonly stats: Record = {};\n\n constructor(options: {id: string; stats?: Stats | Stat[] | {name: string; type?: string}[]}) {\n this.id = options.id;\n this.stats = {};\n\n this._initializeStats(options.stats);\n\n Object.seal(this);\n }\n\n /** Acquire a stat. Create if it doesn't exist. */\n get(name: string, type: string = 'count'): Stat {\n return this._getOrCreate({name, type});\n }\n\n get size(): number {\n return Object.keys(this.stats).length;\n }\n\n /** Reset all stats */\n reset(): this {\n for (const stat of Object.values(this.stats)) {\n stat.reset();\n }\n\n return this;\n }\n\n forEach(fn: (stat: Stat) => void): void {\n for (const stat of Object.values(this.stats)) {\n fn(stat);\n }\n }\n\n getTable(): Record {\n const table: Record = {};\n this.forEach(stat => {\n table[stat.name] = {\n time: stat.time || 0,\n count: stat.count || 0,\n average: stat.getAverageTime() || 0,\n hz: stat.getHz() || 0\n };\n });\n\n return table;\n }\n\n _initializeStats(stats: Stats | Stat[] | {name: string; type?: string}[] = []): void {\n stats.forEach(stat => this._getOrCreate(stat));\n }\n\n _getOrCreate(stat: Stat | {name: string, type?: string}): Stat {\n const {name, type} = stat;\n let result = this.stats[name];\n if (!result) {\n if (stat instanceof Stat) {\n result = stat;\n } else {\n result = new Stat(name, type);\n }\n this.stats[name] = result;\n }\n return result;\n }\n}\n","import {Stats} from '@probe.gl/stats';\n\ntype Handle = any;\ntype DoneFunction = () => any;\ntype GetPriorityFunction = () => number;\ntype RequestResult = {\n done: DoneFunction;\n} | null;\n\n/** RequestScheduler Options */\nexport type RequestSchedulerProps = {\n id?: string;\n throttleRequests?: boolean;\n maxRequests?: number;\n};\n\nconst STAT_QUEUED_REQUESTS = 'Queued Requests';\nconst STAT_ACTIVE_REQUESTS = 'Active Requests';\nconst STAT_CANCELLED_REQUESTS = 'Cancelled Requests';\nconst STAT_QUEUED_REQUESTS_EVER = 'Queued Requests Ever';\nconst STAT_ACTIVE_REQUESTS_EVER = 'Active Requests Ever';\n\nconst DEFAULT_PROPS: Required = {\n id: 'request-scheduler',\n // Specifies if the request scheduler should throttle incoming requests, mainly for comparative testing\n throttleRequests: true,\n // The maximum number of simultaneous active requests. Un-throttled requests do not observe this limit.\n maxRequests: 6\n};\n\n/** Tracks one request */\ntype Request = {\n handle: Handle;\n priority: number;\n getPriority: GetPriorityFunction;\n resolve?: (value: any) => any;\n};\n\n/**\n * Used to issue a request, without having them \"deeply queued\" by the browser.\n * @todo - Track requests globally, across multiple servers\n */\nexport default class RequestScheduler {\n readonly props: Required;\n readonly stats: Stats;\n activeRequestCount: number = 0;\n\n /** Tracks the number of active requests and prioritizes/cancels queued requests. */\n private requestQueue: Request[] = [];\n private requestMap: Map> = new Map();\n private deferredUpdate: any = null;\n\n constructor(props: RequestSchedulerProps = {}) {\n this.props = {...DEFAULT_PROPS, ...props};\n\n // Returns the statistics used by the request scheduler.\n this.stats = new Stats({id: this.props.id});\n this.stats.get(STAT_QUEUED_REQUESTS);\n this.stats.get(STAT_ACTIVE_REQUESTS);\n this.stats.get(STAT_CANCELLED_REQUESTS);\n this.stats.get(STAT_QUEUED_REQUESTS_EVER);\n this.stats.get(STAT_ACTIVE_REQUESTS_EVER);\n }\n\n /**\n * Called by an application that wants to issue a request, without having it deeply queued by the browser\n *\n * When the returned promise resolved, it is OK for the application to issue a request.\n * The promise resolves to an object that contains a `done` method.\n * When the application's request has completed (or failed), the application must call the `done` function\n *\n * @param handle\n * @param getPriority will be called when request \"slots\" open up,\n * allowing the caller to update priority or cancel the request\n * Highest priority executes first, priority < 0 cancels the request\n * @returns a promise\n * - resolves to a object (with a `done` field) when the request can be issued without queueing,\n * - resolves to `null` if the request has been cancelled (by the callback return < 0).\n * In this case the application should not issue the request\n */\n scheduleRequest(\n handle: Handle,\n getPriority: GetPriorityFunction = () => 0\n ): Promise {\n // Allows throttling to be disabled\n if (!this.props.throttleRequests) {\n return Promise.resolve({done: () => {}});\n }\n\n // dedupe\n if (this.requestMap.has(handle)) {\n return this.requestMap.get(handle) as Promise;\n }\n\n const request: Request = {handle, priority: 0, getPriority};\n const promise = new Promise((resolve) => {\n // @ts-ignore\n request.resolve = resolve;\n return request;\n });\n\n this.requestQueue.push(request);\n this.requestMap.set(handle, promise);\n this._issueNewRequests();\n return promise;\n }\n\n // PRIVATE\n\n _issueRequest(request: Request): Promise {\n const {handle, resolve} = request;\n let isDone = false;\n\n const done = () => {\n // can only be called once\n if (!isDone) {\n isDone = true;\n\n // Stop tracking a request - it has completed, failed, cancelled etc\n this.requestMap.delete(handle);\n this.activeRequestCount--;\n // A slot just freed up, see if any queued requests are waiting\n this._issueNewRequests();\n }\n };\n\n // Track this request\n this.activeRequestCount++;\n\n return resolve ? resolve({done}) : Promise.resolve({done});\n }\n\n /** We check requests asynchronously, to prevent multiple updates */\n _issueNewRequests(): void {\n if (!this.deferredUpdate) {\n this.deferredUpdate = setTimeout(() => this._issueNewRequestsAsync(), 0);\n }\n }\n\n /** Refresh all requests */\n _issueNewRequestsAsync() {\n // TODO - shouldn't we clear the timeout?\n this.deferredUpdate = null;\n\n const freeSlots = Math.max(this.props.maxRequests - this.activeRequestCount, 0);\n\n if (freeSlots === 0) {\n return;\n }\n\n this._updateAllRequests();\n\n // Resolve pending promises for the top-priority requests\n for (let i = 0; i < freeSlots; ++i) {\n const request = this.requestQueue.shift();\n if (request) {\n this._issueRequest(request); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n\n // Uncomment to debug\n // console.log(`${freeSlots} free slots, ${this.requestQueue.length} queued requests`);\n }\n\n /** Ensure all requests have updated priorities, and that no longer valid requests are cancelled */\n _updateAllRequests() {\n const requestQueue = this.requestQueue;\n for (let i = 0; i < requestQueue.length; ++i) {\n const request = requestQueue[i];\n if (!this._updateRequest(request)) {\n // Remove the element and make sure to adjust the counter to account for shortened array\n requestQueue.splice(i, 1);\n this.requestMap.delete(request.handle);\n i--;\n }\n }\n\n // Sort the remaining requests based on priority\n requestQueue.sort((a, b) => a.priority - b.priority);\n }\n\n /** Update a single request by calling the callback */\n _updateRequest(request) {\n request.priority = request.getPriority(request.handle); // eslint-disable-line callback-return\n\n // by returning a negative priority, the callback cancels the request\n if (request.priority < 0) {\n request.resolve(null);\n return false;\n }\n return true;\n }\n}\n","/* eslint-env browser */\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {TileBoundingBox, TileIndex, TileLoadProps} from './types';\n\nexport type TileLoadDataProps = {\n requestScheduler: RequestScheduler;\n getData: (props: TileLoadProps) => Promise;\n onLoad: (tile: Tile2DHeader) => void;\n onError: (error: any, tile: Tile2DHeader) => void;\n};\n\nexport class Tile2DHeader {\n index: TileIndex;\n isVisible: boolean;\n isSelected: boolean;\n parent: Tile2DHeader | null;\n children: Tile2DHeader[] | null;\n content: DataT | null;\n state?: number;\n layers?: any[] | null; // Layer[] | null\n\n id!: string; // assigned _always_ with result of `getTileId`\n zoom!: number; // assigned _always_ with result of `getTileZoom`\n userData?: Record; // _may be_ assigned with result of `getTileMetadata`\n boundingBox!: [min: number[], max: number[]]; // assigned _always_ with bbox from `getTileMetadata`\n\n private _abortController: AbortController | null;\n private _loader: Promise | undefined;\n private _loaderId: number;\n private _isLoaded: boolean;\n private _isCancelled: boolean;\n private _needsReload: boolean;\n private _bbox!: TileBoundingBox;\n\n constructor(index: TileIndex) {\n this.index = index;\n this.isVisible = false;\n this.isSelected = false;\n this.parent = null;\n this.children = [];\n\n this.content = null;\n\n this._loader = undefined;\n this._abortController = null;\n this._loaderId = 0;\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n }\n\n /** @deprecated use `boundingBox` instead */\n get bbox(): TileBoundingBox {\n return this._bbox;\n }\n\n // TODO - remove in v9\n set bbox(value: TileBoundingBox) {\n // Only set once from `Tileset2D.getTileMetadata`\n if (this._bbox) return;\n\n this._bbox = value;\n if ('west' in value) {\n this.boundingBox = [\n [value.west, value.south],\n [value.east, value.north]\n ];\n } else {\n this.boundingBox = [\n [value.left, value.top],\n [value.right, value.bottom]\n ];\n }\n }\n\n get data(): Promise | DataT | null {\n return this.isLoading && this._loader ? this._loader.then(() => this.data) : this.content;\n }\n\n get isLoaded(): boolean {\n return this._isLoaded && !this._needsReload;\n }\n\n get isLoading(): boolean {\n return Boolean(this._loader) && !this._isCancelled;\n }\n\n get needsReload(): boolean {\n return this._needsReload || this._isCancelled;\n }\n\n get byteLength(): number {\n const result = this.content ? (this.content as any).byteLength : 0;\n if (!Number.isFinite(result)) {\n // eslint-disable-next-line no-console\n console.error('byteLength not defined in tile data');\n }\n return result;\n }\n\n /* eslint-disable max-statements */\n private async _loadData({\n getData,\n requestScheduler,\n onLoad,\n onError\n }: TileLoadDataProps): Promise {\n const {index, id, bbox, userData, zoom} = this;\n const loaderId = this._loaderId;\n\n this._abortController = new AbortController();\n const {signal} = this._abortController;\n\n // @ts-expect-error (2345) Argument of type '(tile: any) => 1 | -1' is not assignable ...\n const requestToken = await requestScheduler.scheduleRequest(this, tile => {\n return tile.isSelected ? 1 : -1;\n });\n\n if (!requestToken) {\n this._isCancelled = true;\n return;\n }\n // A tile can be cancelled while being scheduled\n if (this._isCancelled) {\n requestToken.done();\n return;\n }\n\n let tileData: DataT | null = null;\n let error;\n try {\n tileData = await getData({index, id, bbox, userData, zoom, signal});\n } catch (err) {\n error = err || true;\n } finally {\n requestToken.done();\n }\n\n // If loadData has been called with a newer version, discard the result from this operation\n if (loaderId !== this._loaderId) {\n return;\n }\n // Clear the `isLoading` flag\n this._loader = undefined;\n // Rewrite tile content with the result of getTileData if successful, or `null` in case of\n // error or cancellation\n this.content = tileData;\n // If cancelled, do not invoke the callbacks\n // Consider it loaded if we tried to cancel but `getTileData` still returned data\n if (this._isCancelled && !tileData) {\n this._isLoaded = false;\n return;\n }\n this._isLoaded = true;\n this._isCancelled = false;\n\n if (error) {\n onError(error, this);\n } else {\n onLoad(this);\n }\n }\n\n loadData(opts: TileLoadDataProps): Promise {\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n this._loaderId++;\n this._loader = this._loadData(opts);\n return this._loader;\n }\n\n setNeedsReload(): void {\n if (this.isLoading) {\n this.abort();\n this._loader = undefined;\n }\n this._needsReload = true;\n }\n\n abort(): void {\n if (this.isLoaded) {\n return;\n }\n\n this._isCancelled = true;\n this._abortController?.abort();\n }\n}\n","import {Matrix4} from '@math.gl/core';\nimport Viewport from './viewport';\nimport {PROJECTION_MODE} from '../lib/constants';\n\nimport * as vec3 from 'gl-matrix/vec3';\nimport * as vec4 from 'gl-matrix/vec4';\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nconst RADIANS_TO_DEGREES = 180 / Math.PI;\nconst EARTH_RADIUS = 6370972;\nconst GLOBE_RADIUS = 256;\n\nfunction getDistanceScales() {\n const unitsPerMeter = GLOBE_RADIUS / EARTH_RADIUS;\n const unitsPerDegree = (Math.PI / 180) * GLOBE_RADIUS;\n\n return {\n unitsPerMeter: [unitsPerMeter, unitsPerMeter, unitsPerMeter],\n unitsPerMeter2: [0, 0, 0],\n metersPerUnit: [1 / unitsPerMeter, 1 / unitsPerMeter, 1 / unitsPerMeter],\n unitsPerDegree: [unitsPerDegree, unitsPerDegree, unitsPerMeter],\n unitsPerDegree2: [0, 0, 0],\n degreesPerUnit: [1 / unitsPerDegree, 1 / unitsPerDegree, 1 / unitsPerMeter]\n };\n}\n\nexport type GlobeViewportOptions = {\n /** Name of the viewport */\n id?: string;\n /** Left offset from the canvas edge, in pixels */\n x?: number;\n /** Top offset from the canvas edge, in pixels */\n y?: number;\n /** Viewport width in pixels */\n width?: number;\n /** Viewport height in pixels */\n height?: number;\n /** Longitude in degrees */\n longitude?: number;\n /** Latitude in degrees */\n latitude?: number;\n /** Camera altitude relative to the viewport height, used to control the FOV. Default `1.5` */\n altitude?: number;\n /* Meter offsets of the viewport center from lng, lat */\n position?: number[];\n /** Zoom level */\n zoom?: number;\n /** Use orthographic projection */\n orthographic?: boolean;\n /** Scaler for the near plane, 1 unit equals to the height of the viewport. Default `0.1` */\n nearZMultiplier?: number;\n /** Scaler for the far plane, 1 unit equals to the distance from the camera to the edge of the screen. Default `2` */\n farZMultiplier?: number;\n /** The resolution at which to turn flat features into 3D meshes, in degrees. Smaller numbers will generate more detailed mesh. Default `10` */\n resolution?: number;\n};\n\nexport default class GlobeViewport extends Viewport {\n // @ts-ignore\n longitude: number;\n // @ts-ignore\n latitude: number;\n resolution: number;\n\n constructor(opts: GlobeViewportOptions = {}) {\n const {\n latitude = 0,\n longitude = 0,\n zoom = 0,\n nearZMultiplier = 0.1,\n farZMultiplier = 2,\n resolution = 10\n } = opts;\n\n let {height, altitude = 1.5} = opts;\n\n height = height || 1;\n altitude = Math.max(0.75, altitude);\n\n // Calculate view matrix\n const viewMatrix = new Matrix4().lookAt({eye: [0, -altitude, 0], up: [0, 0, 1]});\n const scale = Math.pow(2, zoom);\n viewMatrix.rotateX(latitude * DEGREES_TO_RADIANS);\n viewMatrix.rotateZ(-longitude * DEGREES_TO_RADIANS);\n viewMatrix.scale(scale / height);\n\n const halfFov = Math.atan(0.5 / altitude);\n const relativeScale = (GLOBE_RADIUS * 2 * scale) / height;\n\n super({\n ...opts,\n // x, y, width,\n height,\n\n // view matrix\n viewMatrix,\n longitude,\n latitude,\n zoom,\n\n // projection matrix parameters\n distanceScales: getDistanceScales(),\n fovyRadians: halfFov * 2,\n focalDistance: altitude,\n near: nearZMultiplier,\n far: Math.min(2, 1 / relativeScale + 1) * altitude * farZMultiplier\n });\n\n this.latitude = latitude;\n this.longitude = longitude;\n this.resolution = resolution;\n }\n\n get projectionMode() {\n return PROJECTION_MODE.GLOBE;\n }\n\n getDistanceScales() {\n return this.distanceScales;\n }\n\n getBounds(options: {z?: number} = {}): [number, number, number, number] {\n const unprojectOption = {targetZ: options.z || 0};\n\n const left = this.unproject([0, this.height / 2], unprojectOption);\n const top = this.unproject([this.width / 2, 0], unprojectOption);\n const right = this.unproject([this.width, this.height / 2], unprojectOption);\n const bottom = this.unproject([this.width / 2, this.height], unprojectOption);\n\n if (right[0] < this.longitude) right[0] += 360;\n if (left[0] > this.longitude) left[0] -= 360;\n\n return [\n Math.min(left[0], right[0], top[0], bottom[0]),\n Math.min(left[1], right[1], top[1], bottom[1]),\n Math.max(left[0], right[0], top[0], bottom[0]),\n Math.max(left[1], right[1], top[1], bottom[1])\n ];\n }\n\n unproject(\n xyz: number[],\n {topLeft = true, targetZ}: {topLeft?: boolean; targetZ?: number} = {}\n ): number[] {\n const [x, y, z] = xyz;\n\n const y2 = topLeft ? y : this.height - y;\n const {pixelUnprojectionMatrix} = this;\n\n let coord;\n if (Number.isFinite(z)) {\n // Has depth component\n coord = transformVector(pixelUnprojectionMatrix, [x, y2, z, 1]);\n } else {\n // since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that line that intersects with the sphere\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y2, -1, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y2, 1, 1]);\n\n const lt = ((targetZ || 0) / EARTH_RADIUS + 1) * GLOBE_RADIUS;\n const lSqr = vec3.sqrLen(vec3.sub([], coord0, coord1));\n const l0Sqr = vec3.sqrLen(coord0);\n const l1Sqr = vec3.sqrLen(coord1);\n const sSqr = (4 * l0Sqr * l1Sqr - (lSqr - l0Sqr - l1Sqr) ** 2) / 16;\n const dSqr = (4 * sSqr) / lSqr;\n const r0 = Math.sqrt(l0Sqr - dSqr);\n const dr = Math.sqrt(Math.max(0, lt * lt - dSqr));\n const t = (r0 - dr) / Math.sqrt(lSqr);\n\n coord = vec3.lerp([], coord0, coord1, t);\n }\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n return Number.isFinite(targetZ) ? [X, Y, targetZ as number] : [X, Y];\n }\n\n projectPosition(xyz: number[]): [number, number, number] {\n const [lng, lat, Z = 0] = xyz;\n const lambda = lng * DEGREES_TO_RADIANS;\n const phi = lat * DEGREES_TO_RADIANS;\n const cosPhi = Math.cos(phi);\n const D = (Z / EARTH_RADIUS + 1) * GLOBE_RADIUS;\n\n return [Math.sin(lambda) * cosPhi * D, -Math.cos(lambda) * cosPhi * D, Math.sin(phi) * D];\n }\n\n unprojectPosition(xyz: number[]): [number, number, number] {\n const [x, y, z] = xyz;\n const D = vec3.len(xyz);\n const phi = Math.asin(z / D);\n const lambda = Math.atan2(x, -y);\n\n const lng = lambda * RADIANS_TO_DEGREES;\n const lat = phi * RADIANS_TO_DEGREES;\n const Z = (D / GLOBE_RADIUS - 1) * EARTH_RADIUS;\n return [lng, lat, Z];\n }\n\n projectFlat(xyz: number[]): [number, number] {\n return xyz as [number, number];\n }\n\n unprojectFlat(xyz: number[]): [number, number] {\n return xyz as [number, number];\n }\n\n panByPosition(coords: number[], pixel: number[]): GlobeViewportOptions {\n const fromPosition = this.unproject(pixel);\n return {\n longitude: coords[0] - fromPosition[0] + this.longitude,\n latitude: coords[1] - fromPosition[1] + this.latitude\n };\n }\n}\n\nfunction transformVector(matrix: number[], vector: number[]): number[] {\n const result = vec4.transformMat4([], vector, matrix);\n vec4.scale(result, result, 1 / result[3]);\n return result;\n}\n","// This file is derived from the Cesium math library under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nexport const INTERSECTION = {\n OUTSIDE: -1, // Represents that an object is not contained within the frustum.\n INTERSECTING: 0, // Represents that an object intersects one of the frustum's planes.\n INSIDE: 1 // Represents that an object is fully within the frustum.\n} as const;\n","import {BoundingVolume} from './bounding-volume';\nimport {Vector3} from '@math.gl/core';\nimport Plane from '../plane';\nimport {INTERSECTION} from '../../constants';\n\nconst scratchVector = new Vector3();\nconst scratchNormal = new Vector3();\n\n/**\n * An axis aligned bounding box - aligned with coordinate axes\n * @see BoundingVolume\n * @see BoundingRectangle\n * @see OrientedBoundingBox\n */\nexport default class AxisAlignedBoundingBox implements BoundingVolume {\n /** The center point of the bounding box. */\n readonly center: Vector3;\n /** The positive half diagonal of the bounding box. */\n readonly halfDiagonal: Vector3;\n /** The minimum point defining the bounding box. [0, 0, 0] for empty box */\n readonly minimum: Vector3;\n /** The maximum point defining the bounding box. [0, 0, 0] for empty box */\n readonly maximum: Vector3;\n\n /**\n * Creates an instance of an AxisAlignedBoundingBox from the minimum and maximum points along the x, y, and z axes.\n * @param minimum=[0, 0, 0] The minimum point along the x, y, and z axes.\n * @param maximum=[0, 0, 0] The maximum point along the x, y, and z axes.\n * @param center The center of the box; automatically computed if not supplied.\n */\n constructor(\n minimum: readonly number[] = [0, 0, 0],\n maximum: readonly number[] = [0, 0, 0],\n center?: readonly number[]\n ) {\n // If center was not defined, compute it.\n center = center || scratchVector.copy(minimum).add(maximum).scale(0.5);\n this.center = new Vector3(center);\n this.halfDiagonal = new Vector3(maximum).subtract(this.center);\n\n /**\n * The minimum point defining the bounding box.\n * @type {Vector3}\n * @default {@link 0, 0, 0}\n */\n this.minimum = new Vector3(minimum);\n\n /**\n * The maximum point defining the bounding box.\n * @type {Vector3}\n * @default {@link 0, 0, 0}\n */\n this.maximum = new Vector3(maximum);\n }\n\n /**\n * Duplicates a AxisAlignedBoundingBox instance.\n *\n * @returns {AxisAlignedBoundingBox} A new AxisAlignedBoundingBox instance.\n */\n clone(): AxisAlignedBoundingBox {\n return new AxisAlignedBoundingBox(this.minimum, this.maximum, this.center);\n }\n\n /**\n * Compares the provided AxisAlignedBoundingBox componentwise and returns\n * true if they are equal, false otherwise.\n *\n * @param {AxisAlignedBoundingBox} [right] The second AxisAlignedBoundingBox to compare with.\n * @returns {Boolean} true if left and right are equal, false otherwise.\n */\n equals(right: AxisAlignedBoundingBox): boolean {\n return (\n this === right ||\n (Boolean(right) && this.minimum.equals(right.minimum) && this.maximum.equals(right.maximum))\n );\n }\n\n /**\n * Applies a 4x4 affine transformation matrix to a bounding sphere.\n * @param transform The transformation matrix to apply to the bounding sphere.\n * @returns itself, i.e. the modified BoundingVolume.\n */\n transform(transform: readonly number[]): this {\n this.center.transformAsPoint(transform);\n // TODO - this.halfDiagonal.transformAsVector(transform);\n this.halfDiagonal.transform(transform);\n this.minimum.transform(transform);\n this.maximum.transform(transform);\n return this;\n }\n\n /**\n * Determines which side of a plane a box is located.\n */\n intersectPlane(plane: Plane): number {\n const {halfDiagonal} = this;\n const normal = scratchNormal.from(plane.normal);\n const e =\n halfDiagonal.x * Math.abs(normal.x) +\n halfDiagonal.y * Math.abs(normal.y) +\n halfDiagonal.z * Math.abs(normal.z);\n const s = this.center.dot(normal) + plane.distance; // signed distance from center\n\n if (s - e > 0) {\n return INTERSECTION.INSIDE;\n }\n\n if (s + e < 0) {\n // Not in front because normals point inward\n return INTERSECTION.OUTSIDE;\n }\n\n return INTERSECTION.INTERSECTING;\n }\n\n /** Computes the estimated distance from the closest point on a bounding box to a point. */\n distanceTo(point: readonly number[]): number {\n return Math.sqrt(this.distanceSquaredTo(point));\n }\n\n /** Computes the estimated distance squared from the closest point on a bounding box to a point. */\n distanceSquaredTo(point: readonly number[]): number {\n const offset = scratchVector.from(point).subtract(this.center);\n const {halfDiagonal} = this;\n\n let distanceSquared = 0.0;\n let d;\n\n d = Math.abs(offset.x) - halfDiagonal.x;\n if (d > 0) {\n distanceSquared += d * d;\n }\n\n d = Math.abs(offset.y) - halfDiagonal.y;\n if (d > 0) {\n distanceSquared += d * d;\n }\n\n d = Math.abs(offset.z) - halfDiagonal.z;\n if (d > 0) {\n distanceSquared += d * d;\n }\n\n return distanceSquared;\n }\n}\n","// This file is derived from the Cesium math library under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {NumericArray, Vector3} from '@math.gl/core';\nimport * as mat4 from 'gl-matrix/mat4';\nimport {INTERSECTION} from '../../constants';\nimport {BoundingVolume} from './bounding-volume';\nimport Plane from '../plane';\n\nconst scratchVector = new Vector3();\nconst scratchVector2 = new Vector3();\n\n/** A BoundingSphere */\nexport default class BoundingSphere implements BoundingVolume {\n center: Vector3;\n radius: number;\n\n /** Creates a bounding sphere */\n constructor(center: readonly number[] = [0, 0, 0], radius: number = 0.0) {\n this.radius = -0;\n this.center = new Vector3();\n this.fromCenterRadius(center, radius);\n }\n\n /** Sets the bounding sphere from `center` and `radius`. */\n fromCenterRadius(center: readonly number[], radius: number): this {\n this.center.from(center);\n this.radius = radius;\n return this;\n }\n\n /**\n * Computes a bounding sphere from the corner points of an axis-aligned bounding box. The sphere\n * tightly and fully encompasses the box.\n */\n fromCornerPoints(corner: readonly number[], oppositeCorner: readonly number[]): this {\n oppositeCorner = scratchVector.from(oppositeCorner);\n this.center = new Vector3().from(corner).add(oppositeCorner).scale(0.5);\n this.radius = this.center.distance(oppositeCorner);\n return this;\n }\n\n /** Compares the provided BoundingSphere component wise */\n equals(right: BoundingSphere): boolean {\n return (\n this === right ||\n (Boolean(right) && this.center.equals(right.center) && this.radius === right.radius)\n );\n }\n\n /** Duplicates a BoundingSphere instance. */\n clone(): BoundingSphere {\n return new BoundingSphere(this.center, this.radius);\n }\n\n /** Computes a bounding sphere that contains both the left and right bounding spheres. */\n union(boundingSphere: BoundingSphere): BoundingSphere {\n const leftCenter = this.center;\n const leftRadius = this.radius;\n const rightCenter = boundingSphere.center;\n const rightRadius = boundingSphere.radius;\n\n const toRightCenter = scratchVector.copy(rightCenter).subtract(leftCenter);\n const centerSeparation = toRightCenter.magnitude();\n\n if (leftRadius >= centerSeparation + rightRadius) {\n // Left sphere wins.\n return this.clone();\n }\n\n if (rightRadius >= centerSeparation + leftRadius) {\n // Right sphere wins.\n return boundingSphere.clone();\n }\n\n // There are two tangent points, one on far side of each sphere.\n const halfDistanceBetweenTangentPoints = (leftRadius + centerSeparation + rightRadius) * 0.5;\n\n // Compute the center point halfway between the two tangent points.\n scratchVector2\n .copy(toRightCenter)\n .scale((-leftRadius + halfDistanceBetweenTangentPoints) / centerSeparation)\n .add(leftCenter);\n\n this.center.copy(scratchVector2);\n this.radius = halfDistanceBetweenTangentPoints;\n\n return this;\n }\n\n /** Computes a bounding sphere by enlarging the provided sphere to contain the provided point. */\n expand(point: readonly number[]): this {\n const scratchPoint = scratchVector.from(point);\n const radius = scratchPoint.subtract(this.center).magnitude();\n if (radius > this.radius) {\n this.radius = radius;\n }\n return this;\n }\n\n // BoundingVolume interface\n\n /**\n * Applies a 4x4 affine transformation matrix to a bounding sphere.\n * @param sphere The bounding sphere to apply the transformation to.\n * @param transform The transformation matrix to apply to the bounding sphere.\n * @returns self.\n */\n transform(transform: readonly number[]): this {\n this.center.transform(transform);\n const scale = mat4.getScaling(scratchVector, transform);\n this.radius = Math.max(scale[0], Math.max(scale[1], scale[2])) * this.radius;\n return this;\n }\n\n /** Computes the estimated distance squared from the closest point on a bounding sphere to a point. */\n distanceSquaredTo(point: Readonly): number {\n const d = this.distanceTo(point);\n return d * d;\n }\n\n /** Computes the estimated distance from the closest point on a bounding sphere to a point. */\n distanceTo(point: Readonly): number {\n const scratchPoint = scratchVector.from(point);\n const delta = scratchPoint.subtract(this.center);\n return Math.max(0, delta.len() - this.radius);\n }\n\n /** Determines which side of a plane a sphere is located. */\n intersectPlane(plane: Plane): number {\n const center = this.center;\n const radius = this.radius;\n const normal = plane.normal;\n const distanceToPlane = normal.dot(center) + plane.distance;\n\n // The center point is negative side of the plane normal\n if (distanceToPlane < -radius) {\n return INTERSECTION.OUTSIDE;\n }\n // The center point is positive side of the plane, but radius extends beyond it; partial overlap\n if (distanceToPlane < radius) {\n return INTERSECTION.INTERSECTING;\n }\n // The center point and radius is positive side of the plane\n return INTERSECTION.INSIDE;\n }\n}\n","import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport Matrix from './base/matrix';\nimport {checkVector} from '../lib/validators';\n/* eslint-disable camelcase */\nimport {vec4_transformMat3} from '../lib/gl-matrix-extras';\nimport * as mat3 from 'gl-matrix/mat3';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport {NumericArray} from '@math.gl/types';\n\nenum INDICES {\n COL0ROW0 = 0,\n COL0ROW1 = 1,\n COL0ROW2 = 2,\n COL1ROW0 = 3,\n COL1ROW1 = 4,\n COL1ROW2 = 5,\n COL2ROW0 = 6,\n COL2ROW1 = 7,\n COL2ROW2 = 8\n}\n\nconst IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\nexport default class Matrix3 extends Matrix {\n static get IDENTITY(): Readonly {\n return getIdentityMatrix();\n }\n\n static get ZERO(): Readonly {\n return getZeroMatrix();\n }\n\n get ELEMENTS(): number {\n return 9;\n }\n\n get RANK(): number {\n return 3;\n }\n\n get INDICES(): typeof INDICES {\n return INDICES;\n }\n\n constructor(array?: Readonly);\n /** @deprecated */\n constructor(...args: number[]);\n\n constructor(array?: number | Readonly, ...args: number[]) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0, -0, -0, -0, -0, -0);\n if (arguments.length === 1 && Array.isArray(array)) {\n this.copy(array);\n } else if (args.length > 0) {\n this.copy([array as number, ...args]);\n } else {\n this.identity();\n }\n }\n\n copy(array: Readonly): this {\n // Element wise copy for performance\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n this[4] = array[4];\n this[5] = array[5];\n this[6] = array[6];\n this[7] = array[7];\n this[8] = array[8];\n return this.check();\n }\n\n // Constructors\n\n identity(): this {\n return this.copy(IDENTITY_MATRIX);\n }\n\n /**\n *\n * @param object\n * @returns self\n */\n fromObject(object: {[key: string]: any}): this {\n return this.check();\n }\n\n // Calculates a 3x3 matrix from the given quaternion\n // q quat Quaternion to create matrix from\n fromQuaternion(q: Readonly): this {\n mat3.fromQuat(this, q);\n return this.check();\n }\n\n /**\n * accepts column major order, stores in column major order\n */\n // eslint-disable-next-line max-params\n set(\n m00: number,\n m10: number,\n m20: number,\n m01: number,\n m11: number,\n m21: number,\n m02: number,\n m12: number,\n m22: number\n ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m01;\n this[4] = m11;\n this[5] = m21;\n this[6] = m02;\n this[7] = m12;\n this[8] = m22;\n return this.check();\n }\n\n /**\n * accepts row major order, stores as column major\n */\n // eslint-disable-next-line max-params\n setRowMajor(\n m00: number,\n m01: number,\n m02: number,\n m10: number,\n m11: number,\n m12: number,\n m20: number,\n m21: number,\n m22: number\n ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m01;\n this[4] = m11;\n this[5] = m21;\n this[6] = m02;\n this[7] = m12;\n this[8] = m22;\n return this.check();\n }\n\n // Accessors\n\n determinant(): number {\n return mat3.determinant(this);\n }\n\n // Modifiers\n transpose(): this {\n mat3.transpose(this, this);\n return this.check();\n }\n\n /** Invert a matrix. Note that this can fail if the matrix is not invertible */\n invert(): this {\n mat3.invert(this, this);\n return this.check();\n }\n\n // Operations\n multiplyLeft(a: NumericArray): this {\n mat3.multiply(this, a, this);\n return this.check();\n }\n\n multiplyRight(a: NumericArray): this {\n mat3.multiply(this, this, a);\n return this.check();\n }\n\n rotate(radians: number): NumericArray {\n mat3.rotate(this, this, radians);\n return this.check();\n }\n\n scale(factor: NumericArray | number): this {\n if (Array.isArray(factor)) {\n mat3.scale(this, this, factor);\n } else {\n mat3.scale(this, this, [factor as number, factor as number]);\n }\n return this.check();\n }\n\n translate(vec: NumericArray): this {\n mat3.translate(this, this, vec);\n return this.check();\n }\n\n // Transforms\n transform(vector: Readonly, result?: NumericArray): NumericArray {\n let out: NumericArray;\n switch (vector.length) {\n case 2:\n out = vec2.transformMat3(result || [-0, -0], vector, this);\n break;\n case 3:\n out = vec3.transformMat3(result || [-0, -0, -0], vector, this);\n break;\n case 4:\n out = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(out, vector.length);\n return out;\n }\n\n /** @deprecated */\n transformVector(vector: Readonly, result?: NumericArray): NumericArray {\n return this.transform(vector, result);\n }\n\n /** @deprecated */\n transformVector2(vector: Readonly, result?: NumericArray): NumericArray {\n return this.transform(vector, result);\n }\n\n /** @deprecated */\n transformVector3(vector: Readonly, result?: NumericArray): NumericArray {\n return this.transform(vector, result);\n }\n}\n\nlet ZERO_MATRIX3;\nlet IDENTITY_MATRIX3;\n\nfunction getZeroMatrix(): Readonly {\n if (!ZERO_MATRIX3) {\n ZERO_MATRIX3 = new Matrix3([0, 0, 0, 0, 0, 0, 0, 0, 0]);\n Object.freeze(ZERO_MATRIX3);\n }\n return ZERO_MATRIX3;\n}\n\nfunction getIdentityMatrix(): Matrix3 {\n if (!IDENTITY_MATRIX3) {\n IDENTITY_MATRIX3 = new Matrix3();\n Object.freeze(IDENTITY_MATRIX3);\n }\n return IDENTITY_MATRIX3;\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\n\nimport Vector from './base/vector';\nimport {config, isArray} from '../lib/common';\nimport {checkNumber} from '../lib/validators';\nimport * as vec4 from 'gl-matrix/vec3';\n/* eslint-disable camelcase */\nimport {vec4_transformMat2, vec4_transformMat3} from '../lib/gl-matrix-extras';\nimport {NumericArray} from '@math.gl/types';\n\nimport type Matrix4 from './matrix4';\n\nlet ZERO: Vector4;\n\n/**\n * Four-element vector class.\n * Subclass of Array\n */\nexport default class Vector4 extends Vector {\n static get ZERO(): Vector4 {\n if (!ZERO) {\n ZERO = new Vector4(0, 0, 0, 0);\n Object.freeze(ZERO);\n }\n return ZERO;\n }\n\n constructor(x: number | Readonly = 0, y: number = 0, z: number = 0, w: number = 0) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0);\n if (isArray(x) && arguments.length === 1) {\n this.copy(x as Readonly);\n } else {\n // this.set(x, y, z, w);\n if (config.debug) {\n checkNumber(x);\n checkNumber(y);\n checkNumber(z);\n checkNumber(w);\n }\n this[0] = x as number;\n this[1] = y;\n this[2] = z;\n this[3] = w;\n }\n }\n\n set(x: number, y: number, z: number, w: number): this {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n this[3] = w;\n return this.check();\n }\n\n copy(array: Readonly): this {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n return this.check();\n }\n\n fromObject(object: {x: number; y: number; z: number; w: number}): this {\n if (config.debug) {\n checkNumber(object.x);\n checkNumber(object.y);\n checkNumber(object.z);\n checkNumber(object.w);\n }\n this[0] = object.x;\n this[1] = object.y;\n this[2] = object.z;\n this[3] = object.w;\n return this;\n }\n\n toObject(object: {x?: number; y?: number; z?: number; w?: number}): {\n x: number;\n y: number;\n z: number;\n w: number;\n } {\n object.x = this[0];\n object.y = this[1];\n object.z = this[2];\n object.w = this[3];\n return object as {\n x: number;\n y: number;\n z: number;\n w: number;\n };\n }\n\n // Getters/setters\n /* eslint-disable no-multi-spaces, brace-style, no-return-assign */\n get ELEMENTS(): number {\n return 4;\n }\n\n get z(): number {\n return this[2];\n }\n set z(value: number) {\n this[2] = checkNumber(value);\n }\n get w(): number {\n return this[3];\n }\n set w(value: number) {\n this[3] = checkNumber(value);\n }\n\n transform(matrix4: Readonly): this {\n vec4.transformMat4(this, this, matrix4);\n return this.check();\n }\n\n transformByMatrix3(matrix3: Readonly): this {\n vec4_transformMat3(this, this, matrix3);\n return this.check();\n }\n\n transformByMatrix2(matrix2: Readonly): this {\n vec4_transformMat2(this, this, matrix2);\n return this.check();\n }\n\n transformByQuaternion(quaternion: Readonly): this {\n vec4.transformQuat(this, this, quaternion);\n return this.check();\n }\n\n // three.js compatibility\n applyMatrix4(m: Matrix4): this {\n m.transform(this, this);\n return this;\n }\n}\n","import * as glMatrix from \"./common.js\";\nimport * as mat3 from \"./mat3.js\";\nimport * as vec3 from \"./vec3.js\";\nimport * as vec4 from \"./vec4.js\";\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n out[3] = 1;\n return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nexport function setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param {vec3} out_axis Vector receiving the axis of rotation\n * @param {ReadonlyQuat} q Quaternion to be decomposed\n * @return {Number} Angle, in radians, of the rotation\n */\n\nexport function getAxisAngle(out_axis, q) {\n var rad = Math.acos(q[3]) * 2.0;\n var s = Math.sin(rad / 2.0);\n\n if (s > glMatrix.EPSILON) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n\n return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param {ReadonlyQuat} a Origin unit quaternion\n * @param {ReadonlyQuat} b Destination unit quaternion\n * @return {Number} Angle, in radians, between the two quaternions\n */\n\nexport function getAngle(a, b) {\n var dotproduct = dot(a, b);\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nexport function multiply(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateX(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateY(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var by = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateZ(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bz = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nexport function calculateW(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function exp(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var et = Math.exp(w);\n var s = r > 0 ? et * Math.sin(r) / r : 0;\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function ln(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var t = r > 0 ? Math.atan2(r, w) / r : 0;\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nexport function pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport function slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > glMatrix.EPSILON) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function random(out) {\n // Implementation of http://planning.cs.uiuc.edu/node198.html\n // TODO: Calling random 3 times is probably not the fastest solution\n var u1 = glMatrix.RANDOM();\n var u2 = glMatrix.RANDOM();\n var u3 = glMatrix.RANDOM();\n var sqrt1MinusU1 = Math.sqrt(1 - u1);\n var sqrtU1 = Math.sqrt(u1);\n out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nexport function fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n var j = (i + 1) % 3;\n var k = (i + 2) % 3;\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nexport function fromEuler(out, x, y, z) {\n var halfToRad = 0.5 * Math.PI / 180.0;\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n var sx = Math.sin(x);\n var cx = Math.cos(x);\n var sy = Math.sin(y);\n var cy = Math.cos(y);\n var sz = Math.sin(z);\n var cz = Math.cos(z);\n out[0] = sx * cy * cz - cx * sy * sz;\n out[1] = cx * sy * cz + sx * cy * sz;\n out[2] = cx * cy * sz - sx * sy * cz;\n out[3] = cx * cy * cz + sx * sy * sz;\n return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var clone = vec4.clone;\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var fromValues = vec4.fromValues;\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nexport var copy = vec4.copy;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nexport var set = vec4.set;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nexport var add = vec4.add;\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nexport var scale = vec4.scale;\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = vec4.dot;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nexport var lerp = vec4.lerp;\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport var length = vec4.length;\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = vec4.squaredLength;\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nexport var normalize = vec4.normalize;\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var exactEquals = vec4.exactEquals;\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var equals = vec4.equals;\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nexport var rotationTo = function () {\n var tmpvec3 = vec3.create();\n var xUnitVec3 = vec3.fromValues(1, 0, 0);\n var yUnitVec3 = vec3.fromValues(0, 1, 0);\n return function (out, a, b) {\n var dot = vec3.dot(a, b);\n\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.len(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n }\n };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport var sqlerp = function () {\n var temp1 = create();\n var temp2 = create();\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n return out;\n };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nexport var setAxes = function () {\n var matr = mat3.create();\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n return normalize(out, fromMat3(out, matr));\n };\n}();","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport MathArray from './base/math-array';\nimport {checkNumber, checkVector} from '../lib/validators';\nimport Vector4 from './vector4';\nimport * as quat from 'gl-matrix/quat';\nimport * as vec4 from 'gl-matrix/vec4';\nimport {NumericArray} from '@math.gl/types';\n\nconst IDENTITY_QUATERNION = [0, 0, 0, 1] as const;\n\nexport default class Quaternion extends MathArray {\n constructor(x: number | Readonly = 0, y = 0, z = 0, w = 1) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0);\n // eslint-disable-next-line prefer-rest-params\n if (Array.isArray(x) && arguments.length === 1) {\n this.copy(x);\n } else {\n this.set(x as number, y, z, w);\n }\n }\n\n copy(array: Readonly): this {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n return this.check();\n }\n\n set(x: number, y: number, z: number, w: number): this {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n this[3] = w;\n return this.check();\n }\n\n fromObject(object: {x: number; y: number; z: number; w: number}): this {\n this[0] = object.x;\n this[1] = object.y;\n this[2] = object.z;\n this[3] = object.w;\n return this.check();\n }\n\n /**\n * Creates a quaternion from the given 3x3 rotation matrix.\n * NOTE: The resultant quaternion is not normalized, so you should\n * be sure to renormalize the quaternion yourself where necessary.\n * @param m\n * @returns\n */\n fromMatrix3(m: Readonly): this {\n quat.fromMat3(this, m);\n return this.check();\n }\n\n fromAxisRotation(axis: Readonly, rad: number): this {\n quat.setAxisAngle(this, axis, rad);\n return this.check();\n }\n\n /** Set a quat to the identity quaternion */\n identity(): this {\n quat.identity(this);\n return this.check();\n }\n\n // Set the components of a quat to the given values\n // set(i, j, k, l) {\n // quat.set(this, i, j, k, l);\n // return this.check();\n // }\n\n // Sets a quat from the given angle and rotation axis, then returns it.\n setAxisAngle(axis: Readonly, rad: number): this {\n return this.fromAxisRotation(axis, rad);\n }\n\n // Getters/setters\n get ELEMENTS(): number {\n return 4;\n }\n\n get x(): number {\n return this[0];\n }\n set x(value: number) {\n this[0] = checkNumber(value);\n }\n\n get y(): number {\n return this[1];\n }\n set y(value: number) {\n this[1] = checkNumber(value);\n }\n\n get z(): number {\n return this[2];\n }\n set z(value: number) {\n this[2] = checkNumber(value);\n }\n\n get w(): number {\n return this[3];\n }\n set w(value: number) {\n this[3] = checkNumber(value);\n }\n\n // Calculates the length of a quat\n len(): number {\n return quat.length(this);\n }\n\n // Calculates the squared length of a quat\n lengthSquared(): number {\n return quat.squaredLength(this);\n }\n\n // Calculates the dot product of two quat's\n // @return {Number}\n dot(a: Readonly): number {\n return quat.dot(this, a);\n }\n\n // Gets the rotation axis and angle for a given quaternion.\n // If a quaternion is created with setAxisAngle, this method will\n // return the same values as providied in the original parameter\n // list OR functionally equivalent values.\n // Example: The quaternion formed by axis [0, 0, 1] and angle -90\n // is the same as the quaternion formed by [0, 0, 1] and 270.\n // This method favors the latter.\n // @return {{[x,y,z], Number}}\n // getAxisAngle() {\n // const axis = [];\n // const angle = quat.getAxisAngle(axis, this);\n // return {axis, angle};\n // }\n // MODIFIERS\n // Sets a quaternion to represent the shortest rotation from one vector\n // to another. Both vectors are assumed to be unit length.\n rotationTo(vectorA: NumericArray, vectorB: NumericArray): this {\n quat.rotationTo(this, vectorA, vectorB);\n return this.check();\n }\n\n // Sets the specified quaternion with values corresponding to the given axes.\n // Each axis is a vec3 and is expected to be unit length and perpendicular\n // to all other specified axes.\n // setAxes() {\n // Number\n // }\n // Performs a spherical linear interpolation with two control points\n // sqlerp() {\n // Number;\n // }\n // Adds two quat's\n add(a: Readonly): this {\n quat.add(this, this, a);\n return this.check();\n }\n\n // Calculates the W component of a quat from the X, Y, and Z components.\n // Any existing W component will be ignored.\n calculateW(): this {\n quat.calculateW(this, this);\n return this.check();\n }\n\n // Calculates the conjugate of a quat If the quaternion is normalized,\n // this function is faster than quat.inverse and produces the same result.\n conjugate(): this {\n quat.conjugate(this, this);\n return this.check();\n }\n\n // Calculates the inverse of a quat\n invert(): this {\n quat.invert(this, this);\n return this.check();\n }\n\n // Performs a linear interpolation between two quat's\n lerp(a: Readonly, b: Readonly | number, t?: number): this {\n if (t === undefined) {\n return this.lerp(this, a, b as number);\n }\n quat.lerp(this, a, b as NumericArray, t);\n return this.check();\n }\n\n // Multiplies two quat's\n multiplyRight(a: Readonly): this {\n quat.multiply(this, this, a);\n return this.check();\n }\n\n multiplyLeft(a: Readonly): this {\n quat.multiply(this, a, this);\n return this.check();\n }\n\n // Normalize a quat\n normalize(): this {\n // Handle 0 case\n const length = this.len();\n const l = length > 0 ? 1 / length : 0;\n this[0] = this[0] * l;\n this[1] = this[1] * l;\n this[2] = this[2] * l;\n this[3] = this[3] * l;\n // Set to [0, 0, 0, 1] if length is 0\n if (length === 0) {\n this[3] = 1;\n }\n return this.check();\n }\n\n // Rotates a quaternion by the given angle about the X axis\n rotateX(rad: number): this {\n quat.rotateX(this, this, rad);\n return this.check();\n }\n\n // Rotates a quaternion by the given angle about the Y axis\n rotateY(rad: number): this {\n quat.rotateY(this, this, rad);\n return this.check();\n }\n\n // Rotates a quaternion by the given angle about the Z axis\n rotateZ(rad: number): this {\n quat.rotateZ(this, this, rad);\n return this.check();\n }\n\n // Scales a quat by a scalar number\n scale(b: number): this {\n quat.scale(this, this, b);\n return this.check();\n }\n\n slerp(target: Readonly, ratio: number): this;\n slerp(start: Readonly, target: Readonly, ratio: number): this;\n slerp(params: {\n start: Readonly;\n target: Readonly;\n ratio: number;\n }): this;\n\n // Performs a spherical linear interpolation between two quat\n slerp(\n arg0:\n | Readonly\n | {\n start: Readonly;\n target: Readonly;\n ratio: number;\n },\n arg1?: Readonly | number,\n arg2?: number\n ): this {\n let start: Readonly;\n let target: Readonly;\n let ratio: number;\n // eslint-disable-next-line prefer-rest-params\n switch (arguments.length) {\n case 1: // Deprecated signature ({start, target, ratio})\n // eslint-disable-next-line prefer-rest-params\n ({\n start = IDENTITY_QUATERNION,\n target,\n ratio\n } = arg0 as {\n start: Readonly;\n target: Readonly;\n ratio: number;\n });\n break;\n case 2: // THREE.js compatibility signature (target, ration)\n start = this; // eslint-disable-line\n target = arg0 as Readonly;\n ratio = arg1 as number;\n break;\n default:\n // Default signature: (start, target, ratio)\n start = arg0 as Readonly;\n target = arg1 as Readonly;\n ratio = arg2;\n }\n quat.slerp(this, start, target, ratio);\n return this.check();\n }\n\n transformVector4(\n vector: Readonly,\n result: NumericArray = new Vector4()\n ): NumericArray {\n vec4.transformQuat(result, vector, this);\n return checkVector(result, 4);\n }\n\n // THREE.js Math API compatibility\n lengthSq(): number {\n return this.lengthSquared();\n }\n\n setFromAxisAngle(axis: Readonly, rad: number): this {\n return this.setAxisAngle(axis, rad);\n }\n\n premultiply(a: Readonly): this {\n return this.multiplyLeft(a);\n }\n\n multiply(a: Readonly): this {\n return this.multiplyRight(a);\n }\n}\n","// This file is derived from the Cesium math library under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {Vector3, Matrix3, Matrix4, Quaternion, NumericArray} from '@math.gl/core';\nimport type {BoundingVolume} from './bounding-volume';\nimport BoundingSphere from './bounding-sphere';\nimport type Plane from '../plane';\nimport {INTERSECTION} from '../../constants';\n\nconst scratchVector3 = new Vector3();\nconst scratchOffset = new Vector3();\nconst scratchVectorU = new Vector3();\nconst scratchVectorV = new Vector3();\nconst scratchVectorW = new Vector3();\nconst scratchCorner = new Vector3();\nconst scratchToCenter = new Vector3();\n\nconst MATRIX3 = {\n COLUMN0ROW0: 0,\n COLUMN0ROW1: 1,\n COLUMN0ROW2: 2,\n COLUMN1ROW0: 3,\n COLUMN1ROW1: 4,\n COLUMN1ROW2: 5,\n COLUMN2ROW0: 6,\n COLUMN2ROW1: 7,\n COLUMN2ROW2: 8\n};\n\n/**\n * An OrientedBoundingBox of some object is a closed and convex cuboid.\n * It can provide a tighter bounding volume than `BoundingSphere` or\n * `AxisAlignedBoundingBox` in many cases.\n */\nexport default class OrientedBoundingBox implements BoundingVolume {\n center: Vector3;\n halfAxes: Matrix3;\n\n /**\n * An OrientedBoundingBox of some object is a closed and convex cuboid.\n * It can provide a tighter bounding volume than\n * `BoundingSphere` or `AxisAlignedBoundingBox` in many cases.\n */\n constructor(center?: readonly number[], halfAxes?: readonly number[]);\n constructor(center: Readonly = [0, 0, 0], halfAxes = [0, 0, 0, 0, 0, 0, 0, 0, 0]) {\n this.center = new Vector3().from(center);\n this.halfAxes = new Matrix3(halfAxes);\n }\n\n /** Returns an array with three halfSizes for the bounding box */\n get halfSize(): number[] {\n const xAxis = this.halfAxes.getColumn(0);\n const yAxis = this.halfAxes.getColumn(1);\n const zAxis = this.halfAxes.getColumn(2);\n return [new Vector3(xAxis).len(), new Vector3(yAxis).len(), new Vector3(zAxis).len()];\n }\n\n /** Returns a quaternion describing the orientation of the bounding box */\n get quaternion(): Quaternion {\n const xAxis = this.halfAxes.getColumn(0);\n const yAxis = this.halfAxes.getColumn(1);\n const zAxis = this.halfAxes.getColumn(2);\n const normXAxis = new Vector3(xAxis).normalize();\n const normYAxis = new Vector3(yAxis).normalize();\n const normZAxis = new Vector3(zAxis).normalize();\n return new Quaternion().fromMatrix3(new Matrix3([...normXAxis, ...normYAxis, ...normZAxis]));\n }\n\n /**\n * Create OrientedBoundingBox from quaternion based OBB,\n */\n fromCenterHalfSizeQuaternion(\n center: number[],\n halfSize: number[],\n quaternion: number[]\n ): OrientedBoundingBox {\n const quaternionObject = new Quaternion(quaternion);\n const directionsMatrix = new Matrix3().fromQuaternion(quaternionObject);\n directionsMatrix[0] = directionsMatrix[0] * halfSize[0];\n directionsMatrix[1] = directionsMatrix[1] * halfSize[0];\n directionsMatrix[2] = directionsMatrix[2] * halfSize[0];\n directionsMatrix[3] = directionsMatrix[3] * halfSize[1];\n directionsMatrix[4] = directionsMatrix[4] * halfSize[1];\n directionsMatrix[5] = directionsMatrix[5] * halfSize[1];\n directionsMatrix[6] = directionsMatrix[6] * halfSize[2];\n directionsMatrix[7] = directionsMatrix[7] * halfSize[2];\n directionsMatrix[8] = directionsMatrix[8] * halfSize[2];\n this.center = new Vector3().from(center);\n this.halfAxes = directionsMatrix;\n return this;\n }\n\n /** Duplicates a OrientedBoundingBox instance. */\n clone(): OrientedBoundingBox {\n return new OrientedBoundingBox(this.center, this.halfAxes);\n }\n\n /** Compares the provided OrientedBoundingBox component wise and returns */\n equals(right: OrientedBoundingBox): boolean {\n return (\n this === right ||\n (Boolean(right) && this.center.equals(right.center) && this.halfAxes.equals(right.halfAxes))\n );\n }\n\n /** Computes a tight-fitting bounding sphere enclosing the provided oriented bounding box. */\n getBoundingSphere(result = new BoundingSphere()): BoundingSphere {\n const halfAxes = this.halfAxes;\n const u = halfAxes.getColumn(0, scratchVectorU);\n const v = halfAxes.getColumn(1, scratchVectorV);\n const w = halfAxes.getColumn(2, scratchVectorW);\n\n // Calculate \"corner\" vector\n const cornerVector = scratchVector3.copy(u).add(v).add(w);\n\n result.center.copy(this.center);\n result.radius = cornerVector.magnitude();\n\n return result;\n }\n\n /** Determines which side of a plane the oriented bounding box is located. */\n intersectPlane(plane: Plane): number {\n const center = this.center;\n const normal = plane.normal;\n const halfAxes = this.halfAxes;\n\n const normalX = normal.x;\n const normalY = normal.y;\n const normalZ = normal.z;\n\n // Plane is used as if it is its normal; the first three components are assumed to be normalized\n const radEffective =\n Math.abs(\n normalX * halfAxes[MATRIX3.COLUMN0ROW0] +\n normalY * halfAxes[MATRIX3.COLUMN0ROW1] +\n normalZ * halfAxes[MATRIX3.COLUMN0ROW2]\n ) +\n Math.abs(\n normalX * halfAxes[MATRIX3.COLUMN1ROW0] +\n normalY * halfAxes[MATRIX3.COLUMN1ROW1] +\n normalZ * halfAxes[MATRIX3.COLUMN1ROW2]\n ) +\n Math.abs(\n normalX * halfAxes[MATRIX3.COLUMN2ROW0] +\n normalY * halfAxes[MATRIX3.COLUMN2ROW1] +\n normalZ * halfAxes[MATRIX3.COLUMN2ROW2]\n );\n const distanceToPlane = normal.dot(center) + plane.distance;\n\n if (distanceToPlane <= -radEffective) {\n // The entire box is on the negative side of the plane normal\n return INTERSECTION.OUTSIDE;\n } else if (distanceToPlane >= radEffective) {\n // The entire box is on the positive side of the plane normal\n return INTERSECTION.INSIDE;\n }\n return INTERSECTION.INTERSECTING;\n }\n\n /** Computes the estimated distance from the closest point on a bounding box to a point. */\n distanceTo(point: readonly number[]): number {\n return Math.sqrt(this.distanceSquaredTo(point));\n }\n\n /**\n * Computes the estimated distance squared from the closest point\n * on a bounding box to a point.\n * See Geometric Tools for Computer Graphics 10.4.2\n */\n distanceSquaredTo(point: readonly number[]): number {\n // Computes the estimated distance squared from the\n // closest point on a bounding box to a point.\n // See Geometric Tools for Computer Graphics 10.4.2\n const offset = scratchOffset.from(point).subtract(this.center);\n\n const halfAxes = this.halfAxes;\n const u = halfAxes.getColumn(0, scratchVectorU);\n const v = halfAxes.getColumn(1, scratchVectorV);\n const w = halfAxes.getColumn(2, scratchVectorW);\n\n const uHalf = u.magnitude();\n const vHalf = v.magnitude();\n const wHalf = w.magnitude();\n\n u.normalize();\n v.normalize();\n w.normalize();\n\n let distanceSquared = 0.0;\n let d;\n\n d = Math.abs(offset.dot(u)) - uHalf;\n if (d > 0) {\n distanceSquared += d * d;\n }\n\n d = Math.abs(offset.dot(v)) - vHalf;\n if (d > 0) {\n distanceSquared += d * d;\n }\n\n d = Math.abs(offset.dot(w)) - wHalf;\n if (d > 0) {\n distanceSquared += d * d;\n }\n\n return distanceSquared;\n }\n\n /**\n * The distances calculated by the vector from the center of the bounding box\n * to position projected onto direction.\n *\n * - If you imagine the infinite number of planes with normal direction,\n * this computes the smallest distance to the closest and farthest planes\n * from `position` that intersect the bounding box.\n *\n * @param position The position to calculate the distance from.\n * @param direction The direction from position.\n * @param result An Interval (array of length 2) to store the nearest and farthest distances.\n * @returns Interval (array of length 2) with nearest and farthest distances\n * on the bounding box from position in direction.\n */\n // eslint-disable-next-line max-statements\n computePlaneDistances(\n position: readonly number[],\n direction: Vector3,\n result: number[] = [-0, -0]\n ): number[] {\n let minDist = Number.POSITIVE_INFINITY;\n let maxDist = Number.NEGATIVE_INFINITY;\n\n const center = this.center;\n const halfAxes = this.halfAxes;\n\n const u = halfAxes.getColumn(0, scratchVectorU);\n const v = halfAxes.getColumn(1, scratchVectorV);\n const w = halfAxes.getColumn(2, scratchVectorW);\n\n // project first corner\n const corner = scratchCorner.copy(u).add(v).add(w).add(center);\n\n const toCenter = scratchToCenter.copy(corner).subtract(position);\n let mag = direction.dot(toCenter);\n\n minDist = Math.min(mag, minDist);\n maxDist = Math.max(mag, maxDist);\n\n // project second corner\n corner.copy(center).add(u).add(v).subtract(w);\n\n toCenter.copy(corner).subtract(position);\n mag = direction.dot(toCenter);\n\n minDist = Math.min(mag, minDist);\n maxDist = Math.max(mag, maxDist);\n\n // project third corner\n corner.copy(center).add(u).subtract(v).add(w);\n\n toCenter.copy(corner).subtract(position);\n mag = direction.dot(toCenter);\n\n minDist = Math.min(mag, minDist);\n maxDist = Math.max(mag, maxDist);\n\n // project fourth corner\n corner.copy(center).add(u).subtract(v).subtract(w);\n\n toCenter.copy(corner).subtract(position);\n mag = direction.dot(toCenter);\n\n minDist = Math.min(mag, minDist);\n maxDist = Math.max(mag, maxDist);\n\n // project fifth corner\n center.copy(corner).subtract(u).add(v).add(w);\n\n toCenter.copy(corner).subtract(position);\n mag = direction.dot(toCenter);\n\n minDist = Math.min(mag, minDist);\n maxDist = Math.max(mag, maxDist);\n\n // project sixth corner\n center.copy(corner).subtract(u).add(v).subtract(w);\n\n toCenter.copy(corner).subtract(position);\n mag = direction.dot(toCenter);\n\n minDist = Math.min(mag, minDist);\n maxDist = Math.max(mag, maxDist);\n\n // project seventh corner\n center.copy(corner).subtract(u).subtract(v).add(w);\n\n toCenter.copy(corner).subtract(position);\n mag = direction.dot(toCenter);\n\n minDist = Math.min(mag, minDist);\n maxDist = Math.max(mag, maxDist);\n\n // project eighth corner\n center.copy(corner).subtract(u).subtract(v).subtract(w);\n\n toCenter.copy(corner).subtract(position);\n mag = direction.dot(toCenter);\n\n minDist = Math.min(mag, minDist);\n maxDist = Math.max(mag, maxDist);\n\n result[0] = minDist;\n result[1] = maxDist;\n return result;\n }\n\n /**\n * Applies a 4x4 affine transformation matrix to a bounding sphere.\n * @param transform The transformation matrix to apply to the bounding sphere.\n * @returns itself, i.e. the modified BoundingVolume.\n */\n transform(transformation: readonly number[]): this {\n this.center.transformAsPoint(transformation);\n\n const xAxis = this.halfAxes.getColumn(0, scratchVectorU);\n xAxis.transformAsPoint(transformation);\n\n const yAxis = this.halfAxes.getColumn(1, scratchVectorV);\n yAxis.transformAsPoint(transformation);\n\n const zAxis = this.halfAxes.getColumn(2, scratchVectorW);\n zAxis.transformAsPoint(transformation);\n\n this.halfAxes = new Matrix3([...xAxis, ...yAxis, ...zAxis]);\n return this;\n }\n\n getTransform(): Matrix4 {\n // const modelMatrix = Matrix4.fromRotationTranslation(this.boundingVolume.halfAxes, this.boundingVolume.center);\n // return modelMatrix;\n throw new Error('not implemented');\n }\n}\n","// This file is derived from the Cesium math library under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n/* eslint-disable */\nimport {Vector3, equals, assert, NumericArray} from '@math.gl/core';\n\nconst scratchPosition = new Vector3();\nconst scratchNormal = new Vector3();\n\n// A plane in Hessian Normal Form\nexport default class Plane {\n readonly normal: Vector3;\n distance: number;\n\n constructor(normal: Readonly = [0, 0, 1], distance: number = 0) {\n this.normal = new Vector3();\n this.distance = -0;\n this.fromNormalDistance(normal, distance);\n }\n\n /** Creates a plane from a normal and a distance from the origin. */\n fromNormalDistance(normal: Readonly, distance: number): this {\n assert(Number.isFinite(distance));\n this.normal.from(normal).normalize();\n this.distance = distance;\n return this;\n }\n\n /** Creates a plane from a normal and a point on the plane. */\n fromPointNormal(point: Readonly, normal: Readonly): this {\n point = scratchPosition.from(point);\n this.normal.from(normal).normalize();\n const distance = -this.normal.dot(point);\n this.distance = distance;\n return this;\n }\n\n /** Creates a plane from the general equation */\n fromCoefficients(a: number, b: number, c: number, d: number): this {\n this.normal.set(a, b, c);\n assert(equals(this.normal.len(), 1));\n this.distance = d;\n return this;\n }\n\n /** Duplicates a Plane instance. */\n clone(): Plane {\n return new Plane(this.normal, this.distance);\n }\n\n /** Compares the provided Planes by normal and distance */\n equals(right: Plane): boolean {\n return equals(this.distance, right.distance) && equals(this.normal, right.normal);\n }\n\n /** Computes the signed shortest distance of a point to a plane.\n * The sign of the distance determines which side of the plane the point is on.\n */\n getPointDistance(point: Readonly): number {\n return this.normal.dot(point) + this.distance;\n }\n\n /** Transforms the plane by the given transformation matrix. */\n transform(matrix4: Readonly): this {\n const normal = scratchNormal.copy(this.normal).transformAsVector(matrix4).normalize();\n const point = this.normal.scale(-this.distance).transform(matrix4);\n return this.fromPointNormal(point, normal);\n }\n\n /** Projects a point onto the plane. */\n projectPointOntoPlane(point: Readonly, result: Vector3): Vector3;\n projectPointOntoPlane(\n point: Readonly,\n result?: readonly number[]\n ): readonly number[];\n\n projectPointOntoPlane(point, result = [0, 0, 0]) {\n point = scratchPosition.from(point);\n // projectedPoint = point - (normal.point + scale) * normal\n const pointDistance = this.getPointDistance(point);\n const scaledNormal = scratchNormal.copy(this.normal).scale(pointDistance);\n\n return point.subtract(scaledNormal).to(result);\n }\n}\n","// This file is derived from the Cesium math library under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n/* eslint-disable */\nimport {Vector3, assert} from '@math.gl/core';\nimport {INTERSECTION} from '../constants';\nimport Plane from './plane';\nimport type {BoundingVolume} from './bounding-volumes/bounding-volume';\nimport type BoundingSphere from './bounding-volumes/bounding-sphere';\n\n// X, Y, Z Unit vectors\nconst faces = [new Vector3([1, 0, 0]), new Vector3([0, 1, 0]), new Vector3([0, 0, 1])];\n\nconst scratchPlaneCenter = new Vector3();\nconst scratchPlaneNormal = new Vector3();\nconst scratchPlane = new Plane(new Vector3(1.0, 0.0, 0.0), 0.0);\n\n/** A culling volume defined by planes. */\nexport default class CullingVolume {\n /**\n * For plane masks (as used in {@link CullingVolume#computeVisibilityWithPlaneMask}), this special value\n * represents the case where the object bounding volume is entirely outside the culling volume.\n */\n static MASK_OUTSIDE = 0xffffffff;\n\n /**\n * For plane masks (as used in {@link CullingVolume.prototype.computeVisibilityWithPlaneMask}), this value\n * represents the case where the object bounding volume is entirely inside the culling volume.\n */\n static MASK_INSIDE = 0x00000000;\n\n /**\n * For plane masks (as used in {@link CullingVolume.prototype.computeVisibilityWithPlaneMask}), this value\n * represents the case where the object bounding volume (may) intersect all planes of the culling volume.\n */\n static MASK_INDETERMINATE = 0x7fffffff;\n\n /** Array of clipping planes. */\n readonly planes: Plane[];\n\n /**\n * Create a new `CullingVolume` bounded by an array of clipping planed\n * @param planes Array of clipping planes.\n * */\n constructor(planes: Plane[] = []) {\n this.planes = planes;\n }\n\n /**\n * Constructs a culling volume from a bounding sphere. Creates six planes that create a box containing the sphere.\n * The planes are aligned to the x, y, and z axes in world coordinates.\n */\n fromBoundingSphere(boundingSphere: BoundingSphere): CullingVolume {\n this.planes.length = 2 * faces.length;\n\n const center = boundingSphere.center;\n const radius = boundingSphere.radius;\n\n let planeIndex = 0;\n\n for (const faceNormal of faces) {\n let plane0 = this.planes[planeIndex];\n let plane1 = this.planes[planeIndex + 1];\n\n if (!plane0) {\n plane0 = this.planes[planeIndex] = new Plane();\n }\n if (!plane1) {\n plane1 = this.planes[planeIndex + 1] = new Plane();\n }\n\n const plane0Center = scratchPlaneCenter.copy(faceNormal).scale(-radius).add(center);\n const plane0Distance = -faceNormal.dot(plane0Center);\n\n plane0.fromPointNormal(plane0Center, faceNormal);\n\n const plane1Center = scratchPlaneCenter.copy(faceNormal).scale(radius).add(center);\n\n const negatedFaceNormal = scratchPlaneNormal.copy(faceNormal).negate();\n\n const plane1Distance = -negatedFaceNormal.dot(plane1Center);\n\n plane1.fromPointNormal(plane1Center, negatedFaceNormal);\n\n planeIndex += 2;\n }\n\n return this;\n }\n\n /** Determines whether a bounding volume intersects the culling volume. */\n computeVisibility(boundingVolume: BoundingVolume): number {\n // const planes = this.planes;\n let intersect: number = INTERSECTION.INSIDE;\n for (const plane of this.planes) {\n const result = boundingVolume.intersectPlane(plane);\n switch (result) {\n case INTERSECTION.OUTSIDE:\n // We are done\n return INTERSECTION.OUTSIDE;\n\n case INTERSECTION.INTERSECTING:\n // If no other intersection is outside, return INTERSECTING\n intersect = INTERSECTION.INTERSECTING;\n break;\n\n default:\n }\n }\n\n return intersect;\n }\n\n /**\n * Determines whether a bounding volume intersects the culling volume.\n *\n * @param parentPlaneMask A bit mask from the boundingVolume's parent's check against the same culling\n * volume, such that if (planeMask & (1 << planeIndex) === 0), for k < 31, then\n * the parent (and therefore this) volume is completely inside plane[planeIndex]\n * and that plane check can be skipped.\n */\n computeVisibilityWithPlaneMask(boundingVolume: BoundingVolume, parentPlaneMask: number): number {\n assert(Number.isFinite(parentPlaneMask), 'parentPlaneMask is required.');\n\n if (\n parentPlaneMask === CullingVolume.MASK_OUTSIDE ||\n parentPlaneMask === CullingVolume.MASK_INSIDE\n ) {\n // parent is completely outside or completely inside, so this child is as well.\n return parentPlaneMask;\n }\n\n // Start with MASK_INSIDE (all zeros) so that after the loop, the return value can be compared with MASK_INSIDE.\n // (Because if there are fewer than 31 planes, the upper bits wont be changed.)\n let mask = CullingVolume.MASK_INSIDE;\n\n const planes = this.planes;\n for (let k = 0; k < this.planes.length; ++k) {\n // For k greater than 31 (since 31 is the maximum number of INSIDE/INTERSECTING bits we can store), skip the optimization.\n const flag = k < 31 ? 1 << k : 0;\n if (k < 31 && (parentPlaneMask & flag) === 0) {\n // boundingVolume is known to be INSIDE this plane.\n continue;\n }\n\n const plane = planes[k];\n const result = boundingVolume.intersectPlane(plane);\n if (result === INTERSECTION.OUTSIDE) {\n return CullingVolume.MASK_OUTSIDE;\n } else if (result === INTERSECTION.INTERSECTING) {\n mask |= flag;\n }\n }\n\n return mask;\n }\n}\n","// This file is derived from the Cesium math library under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n// Note: This class is still an experimental export, mainly used by other test cases\n// - It has not been fully adapted to math.gl conventions\n// - Documentation has not been ported\n\nimport {Vector3, Vector2, Matrix4, assert, NumericArray} from '@math.gl/core';\nimport CullingVolume from './culling-volume';\nimport Plane from './plane';\n\nconst scratchPlaneUpVector = new Vector3();\nconst scratchPlaneRightVector = new Vector3();\nconst scratchPlaneNearCenter = new Vector3();\nconst scratchPlaneFarCenter = new Vector3();\nconst scratchPlaneNormal = new Vector3();\n\ntype PerspectiveOffCenterFrustumOptions = {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n near?: number;\n far?: number;\n};\n\nexport default class PerspectiveOffCenterFrustum {\n /**\n * Defines the left clipping plane.\n * @type {Number}\n * @default undefined\n */\n left?: number;\n private _left?: number;\n /**\n * Defines the right clipping plane.\n * @type {Number}\n * @default undefined\n */\n right?: number;\n private _right?: number;\n /**\n * Defines the top clipping plane.\n * @type {Number}\n * @default undefined\n */\n top?: number;\n private _top?: number;\n /**\n * Defines the bottom clipping plane.\n * @type {Number}\n * @default undefined\n */\n bottom?: number;\n private _bottom?: number;\n /**\n * The distance of the near plane.\n * @type {Number}\n * @default 1.0\n */\n near: number;\n private _near: number;\n /**\n * The distance of the far plane.\n * @type {Number}\n * @default 500000000.0\n */\n far: number;\n private _far: number;\n\n private _cullingVolume = new CullingVolume([\n new Plane(),\n new Plane(),\n new Plane(),\n new Plane(),\n new Plane(),\n new Plane()\n ]);\n private _perspectiveMatrix = new Matrix4();\n private _infinitePerspective = new Matrix4();\n\n /**\n * The viewing frustum is defined by 6 planes.\n * Each plane is represented by a {@link Vector4} object, where the x, y, and z components\n * define the unit vector normal to the plane, and the w component is the distance of the\n * plane from the origin/camera position.\n *\n * @alias PerspectiveOffCenterFrustum\n *\n * @example\n * const frustum = new PerspectiveOffCenterFrustum({\n * left : -1.0,\n * right : 1.0,\n * top : 1.0,\n * bottom : -1.0,\n * near : 1.0,\n * far : 100.0\n * });\n *\n * @see PerspectiveFrustum\n */\n constructor(options: PerspectiveOffCenterFrustumOptions = {}) {\n const {near = 1.0, far = 500000000.0} = options;\n\n this.left = options.left;\n this._left = undefined;\n\n this.right = options.right;\n this._right = undefined;\n\n this.top = options.top;\n this._top = undefined;\n\n this.bottom = options.bottom;\n this._bottom = undefined;\n\n this.near = near;\n this._near = near;\n\n this.far = far;\n this._far = far;\n }\n\n /**\n * Returns a duplicate of a PerspectiveOffCenterFrustum instance.\n * @returns {PerspectiveOffCenterFrustum} A new PerspectiveFrustum instance.\n * */\n clone(): PerspectiveOffCenterFrustum {\n return new PerspectiveOffCenterFrustum({\n right: this.right,\n left: this.left,\n top: this.top,\n bottom: this.bottom,\n near: this.near,\n far: this.far\n });\n }\n\n /**\n * Compares the provided PerspectiveOffCenterFrustum componentwise and returns\n * true if they are equal, false otherwise.\n *\n * @returns {Boolean} true if they are equal, false otherwise.\n */\n equals(other: PerspectiveOffCenterFrustum): boolean {\n return (\n other &&\n other instanceof PerspectiveOffCenterFrustum &&\n this.right === other.right &&\n this.left === other.left &&\n this.top === other.top &&\n this.bottom === other.bottom &&\n this.near === other.near &&\n this.far === other.far\n );\n }\n\n /**\n * Gets the perspective projection matrix computed from the view frustum.\n * @memberof PerspectiveOffCenterFrustum.prototype\n * @type {Matrix4}\n *\n * @see PerspectiveOffCenterFrustum#infiniteProjectionMatrix\n */\n get projectionMatrix(): Matrix4 {\n this._update();\n return this._perspectiveMatrix;\n }\n\n /**\n * Gets the perspective projection matrix computed from the view frustum with an infinite far plane.\n * @memberof PerspectiveOffCenterFrustum.prototype\n * @type {Matrix4}\n *\n * @see PerspectiveOffCenterFrustum#projectionMatrix\n */\n get infiniteProjectionMatrix(): Matrix4 {\n this._update();\n return this._infinitePerspective;\n }\n\n /**\n * Creates a culling volume for this frustum.\n * @returns {CullingVolume} A culling volume at the given position and orientation.\n *\n * @example\n * // Check if a bounding volume intersects the frustum.\n * const cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);\n * const intersect = cullingVolume.computeVisibility(boundingVolume);\n */\n // eslint-disable-next-line complexity, max-statements\n computeCullingVolume(\n /** A Vector3 defines the eye position. */\n position: Readonly,\n /** A Vector3 defines the view direction. */\n direction: Readonly,\n /** A Vector3 defines the up direction. */\n up: Readonly\n ): CullingVolume {\n assert(position, 'position is required.');\n assert(direction, 'direction is required.');\n assert(up, 'up is required.');\n\n const planes = this._cullingVolume.planes;\n\n up = scratchPlaneUpVector.copy(up).normalize();\n const right = scratchPlaneRightVector.copy(direction).cross(up).normalize();\n\n const nearCenter = scratchPlaneNearCenter\n .copy(direction)\n .multiplyByScalar(this.near)\n .add(position);\n\n const farCenter = scratchPlaneFarCenter\n .copy(direction)\n .multiplyByScalar(this.far)\n .add(position);\n\n let normal = scratchPlaneNormal;\n\n // Left plane computation\n normal.copy(right).multiplyByScalar(this.left).add(nearCenter).subtract(position).cross(up);\n\n planes[0].fromPointNormal(position, normal);\n\n // Right plane computation\n normal\n .copy(right)\n .multiplyByScalar(this.right)\n .add(nearCenter)\n .subtract(position)\n .cross(up)\n .negate();\n\n planes[1].fromPointNormal(position, normal);\n\n // Bottom plane computation\n normal\n .copy(up)\n .multiplyByScalar(this.bottom)\n .add(nearCenter)\n .subtract(position)\n .cross(right)\n .negate();\n\n planes[2].fromPointNormal(position, normal);\n\n // Top plane computation\n normal.copy(up).multiplyByScalar(this.top).add(nearCenter).subtract(position).cross(right);\n\n planes[3].fromPointNormal(position, normal);\n\n normal = new Vector3().copy(direction);\n\n // Near plane computation\n planes[4].fromPointNormal(nearCenter, normal);\n\n // Far plane computation\n normal.negate();\n\n planes[5].fromPointNormal(farCenter, normal);\n\n return this._cullingVolume;\n }\n\n /**\n * Returns the pixel's width and height in meters.\n *\n * @returns {Vector2} The modified result parameter or a new instance of {@link Vector2} with the pixel's width and height in the x and y properties, respectively.\n *\n * @exception {DeveloperError} drawingBufferWidth must be greater than zero.\n * @exception {DeveloperError} drawingBufferHeight must be greater than zero.\n *\n * @example\n * // Example 1\n * // Get the width and height of a pixel.\n * const pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, 1.0, new Vector2());\n *\n * @example\n * // Example 2\n * // Get the width and height of a pixel if the near plane was set to 'distance'.\n * // For example, get the size of a pixel of an image on a billboard.\n * const position = camera.position;\n * const direction = camera.direction;\n * const toCenter = Vector3.subtract(primitive.boundingVolume.center, position, new Vector3()); // vector from camera to a primitive\n * const toCenterProj = Vector3.multiplyByScalar(direction, Vector3.dot(direction, toCenter), new Vector3()); // project vector onto camera direction vector\n * const distance = Vector3.magnitude(toCenterProj);\n * const pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, distance, new Vector2());\n */\n getPixelDimensions(\n /** The width of the drawing buffer. */\n drawingBufferWidth: number,\n /** The height of the drawing buffer. */\n drawingBufferHeight: number,\n /** The distance to the near plane in meters. */\n distance: number,\n /** The object onto which to store the result. */\n result: Vector2\n ): Vector2 {\n this._update();\n\n assert(Number.isFinite(drawingBufferWidth) && Number.isFinite(drawingBufferHeight));\n // 'Both drawingBufferWidth and drawingBufferHeight are required.'\n assert(drawingBufferWidth > 0);\n // 'drawingBufferWidth must be greater than zero.'\n assert(drawingBufferHeight > 0);\n // 'drawingBufferHeight must be greater than zero.'\n assert(distance > 0);\n // 'distance is required.');\n assert(result);\n // 'A result object is required.');\n\n const inverseNear = 1.0 / this.near;\n let tanTheta = this.top * inverseNear;\n const pixelHeight = (2.0 * distance * tanTheta) / drawingBufferHeight;\n tanTheta = this.right * inverseNear;\n const pixelWidth = (2.0 * distance * tanTheta) / drawingBufferWidth;\n\n result.x = pixelWidth;\n result.y = pixelHeight;\n return result;\n }\n\n // eslint-disable-next-line complexity, max-statements\n private _update() {\n assert(\n Number.isFinite(this.right) &&\n Number.isFinite(this.left) &&\n Number.isFinite(this.top) &&\n Number.isFinite(this.bottom) &&\n Number.isFinite(this.near) &&\n Number.isFinite(this.far)\n );\n // throw new DeveloperError('right, left, top, bottom, near, or far parameters are not set.');\n\n const {top, bottom, right, left, near, far} = this;\n\n if (\n top !== this._top ||\n bottom !== this._bottom ||\n left !== this._left ||\n right !== this._right ||\n near !== this._near ||\n far !== this._far\n ) {\n assert(\n this.near > 0 && this.near < this.far,\n 'near must be greater than zero and less than far.'\n );\n\n this._left = left;\n this._right = right;\n this._top = top;\n this._bottom = bottom;\n this._near = near;\n this._far = far;\n this._perspectiveMatrix = new Matrix4().frustum({\n left,\n right,\n bottom,\n top,\n near,\n far\n });\n this._infinitePerspective = new Matrix4().frustum({\n left,\n right,\n bottom,\n top,\n near,\n far: Infinity\n });\n }\n }\n}\n","// This file is derived from the Cesium math library under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {Vector3} from '@math.gl/core';\nimport BoundingSphere from '../bounding-volumes/bounding-sphere';\n\n/* eslint-disable */\nconst fromPointsXMin = new Vector3();\nconst fromPointsYMin = new Vector3();\nconst fromPointsZMin = new Vector3();\nconst fromPointsXMax = new Vector3();\nconst fromPointsYMax = new Vector3();\nconst fromPointsZMax = new Vector3();\nconst fromPointsCurrentPos = new Vector3();\nconst fromPointsScratch = new Vector3();\nconst fromPointsRitterCenter = new Vector3();\nconst fromPointsMinBoxPt = new Vector3();\nconst fromPointsMaxBoxPt = new Vector3();\nconst fromPointsNaiveCenterScratch = new Vector3();\nconst volumeConstant = (4.0 / 3.0) * Math.PI;\n\n/**\n * Computes a tight-fitting bounding sphere enclosing a list of 3D Cartesian points.\n *\n * The bounding sphere is computed by running two algorithms, a naive algorithm and\n * Ritter's algorithm. The smaller of the two spheres is used to ensure a tight fit.\n * Bounding sphere computation article http://blogs.agi.com/insight3d/index.php/2008/02/04/a-bounding\n *\n * @param positions An array of points that the bounding sphere will enclose.\n * @param result Optional object onto which to store the result.\n * @returns The modified result parameter or a new `BoundingSphere` instance if not provided.\n */\nexport default function makeBoundingSphereFromPoints(\n positions: number[][],\n result: BoundingSphere = new BoundingSphere()\n): BoundingSphere {\n if (!positions || positions.length === 0) {\n return result.fromCenterRadius([0, 0, 0], 0);\n }\n\n const currentPos = fromPointsCurrentPos.copy(positions[0]);\n\n const xMin = fromPointsXMin.copy(currentPos);\n const yMin = fromPointsYMin.copy(currentPos);\n const zMin = fromPointsZMin.copy(currentPos);\n\n const xMax = fromPointsXMax.copy(currentPos);\n const yMax = fromPointsYMax.copy(currentPos);\n const zMax = fromPointsZMax.copy(currentPos);\n\n for (const position of positions) {\n currentPos.copy(position);\n\n const x = currentPos.x;\n const y = currentPos.y;\n const z = currentPos.z;\n\n // Store points containing the the smallest and largest components\n if (x < xMin.x) {\n xMin.copy(currentPos);\n }\n\n if (x > xMax.x) {\n xMax.copy(currentPos);\n }\n\n if (y < yMin.y) {\n yMin.copy(currentPos);\n }\n\n if (y > yMax.y) {\n yMax.copy(currentPos);\n }\n\n if (z < zMin.z) {\n zMin.copy(currentPos);\n }\n\n if (z > zMax.z) {\n zMax.copy(currentPos);\n }\n }\n\n // Compute x-, y-, and z-spans (Squared distances b/n each component's min. and max.).\n const xSpan = fromPointsScratch.copy(xMax).subtract(xMin).magnitudeSquared();\n const ySpan = fromPointsScratch.copy(yMax).subtract(yMin).magnitudeSquared();\n const zSpan = fromPointsScratch.copy(zMax).subtract(zMin).magnitudeSquared();\n\n // Set the diameter endpoints to the largest span.\n let diameter1 = xMin;\n let diameter2 = xMax;\n let maxSpan = xSpan;\n if (ySpan > maxSpan) {\n maxSpan = ySpan;\n diameter1 = yMin;\n diameter2 = yMax;\n }\n if (zSpan > maxSpan) {\n maxSpan = zSpan;\n diameter1 = zMin;\n diameter2 = zMax;\n }\n\n // Calculate the center of the initial sphere found by Ritter's algorithm\n const ritterCenter = fromPointsRitterCenter;\n ritterCenter.x = (diameter1.x + diameter2.x) * 0.5;\n ritterCenter.y = (diameter1.y + diameter2.y) * 0.5;\n ritterCenter.z = (diameter1.z + diameter2.z) * 0.5;\n\n // Calculate the radius of the initial sphere found by Ritter's algorithm\n let radiusSquared = fromPointsScratch.copy(diameter2).subtract(ritterCenter).magnitudeSquared();\n let ritterRadius = Math.sqrt(radiusSquared);\n\n // Find the center of the sphere found using the Naive method.\n const minBoxPt = fromPointsMinBoxPt;\n minBoxPt.x = xMin.x;\n minBoxPt.y = yMin.y;\n minBoxPt.z = zMin.z;\n\n const maxBoxPt = fromPointsMaxBoxPt;\n maxBoxPt.x = xMax.x;\n maxBoxPt.y = yMax.y;\n maxBoxPt.z = zMax.z;\n\n const naiveCenter = fromPointsNaiveCenterScratch\n .copy(minBoxPt)\n .add(maxBoxPt)\n .multiplyByScalar(0.5);\n\n // Begin 2nd pass to find naive radius and modify the ritter sphere.\n let naiveRadius = 0;\n for (const position of positions) {\n currentPos.copy(position);\n\n // Find the furthest point from the naive center to calculate the naive radius.\n const r = fromPointsScratch.copy(currentPos).subtract(naiveCenter).magnitude();\n if (r > naiveRadius) {\n naiveRadius = r;\n }\n\n // Make adjustments to the Ritter Sphere to include all points.\n const oldCenterToPointSquared = fromPointsScratch\n .copy(currentPos)\n .subtract(ritterCenter)\n .magnitudeSquared();\n\n if (oldCenterToPointSquared > radiusSquared) {\n const oldCenterToPoint = Math.sqrt(oldCenterToPointSquared);\n // Calculate new radius to include the point that lies outside\n ritterRadius = (ritterRadius + oldCenterToPoint) * 0.5;\n radiusSquared = ritterRadius * ritterRadius;\n // Calculate center of new Ritter sphere\n const oldToNew = oldCenterToPoint - ritterRadius;\n ritterCenter.x = (ritterRadius * ritterCenter.x + oldToNew * currentPos.x) / oldCenterToPoint;\n ritterCenter.y = (ritterRadius * ritterCenter.y + oldToNew * currentPos.y) / oldCenterToPoint;\n ritterCenter.z = (ritterRadius * ritterCenter.z + oldToNew * currentPos.z) / oldCenterToPoint;\n }\n }\n\n if (ritterRadius < naiveRadius) {\n ritterCenter.to(result.center);\n result.radius = ritterRadius;\n } else {\n naiveCenter.to(result.center);\n result.radius = naiveRadius;\n }\n\n return result;\n}\n","// NOTE: Added to make Cesium-derived test cases work\n// TODO: Determine if/how to keep\nexport default {\n EPSILON1: 1e-1,\n EPSILON2: 1e-2,\n EPSILON3: 1e-3,\n EPSILON4: 1e-4,\n EPSILON5: 1e-5,\n EPSILON6: 1e-6,\n EPSILON7: 1e-7,\n EPSILON8: 1e-8,\n EPSILON9: 1e-9,\n EPSILON10: 1e-10,\n EPSILON11: 1e-11,\n EPSILON12: 1e-12,\n EPSILON13: 1e-13,\n EPSILON14: 1e-14,\n EPSILON15: 1e-15,\n EPSILON16: 1e-16,\n EPSILON17: 1e-17,\n EPSILON18: 1e-18,\n EPSILON19: 1e-19,\n EPSILON20: 1e-20,\n\n PI_OVER_TWO: Math.PI / 2,\n PI_OVER_FOUR: Math.PI / 4,\n PI_OVER_SIX: Math.PI / 6,\n\n TWO_PI: Math.PI * 2\n};\n","// This file is derived from the Cesium math library under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {Matrix3, _MathUtils} from '@math.gl/core';\n\nconst scratchMatrix = new Matrix3();\nconst scratchUnitary = new Matrix3();\nconst scratchDiagonal = new Matrix3();\n\nconst jMatrix = new Matrix3();\nconst jMatrixTranspose = new Matrix3();\n\nexport type EigenDecomposition = {\n unitary: Matrix3;\n diagonal: Matrix3;\n};\n\n/**\n * Computes the eigenvectors and eigenvalues of a symmetric matrix.\n *\n * - Returns a diagonal matrix and unitary matrix such that:\n * `matrix = unitary matrix * diagonal matrix * transpose(unitary matrix)`\n * - The values along the diagonal of the diagonal matrix are the eigenvalues. The columns\n * of the unitary matrix are the corresponding eigenvectors.\n * - This routine was created based upon Matrix Computations, 3rd ed., by Golub and Van Loan,\n * section 8.4.3 The Classical Jacobi Algorithm\n *\n * @param matrix The 3x3 matrix to decompose into diagonal and unitary matrix. Expected to be symmetric.\n * @param result Optional object with unitary and diagonal properties which are matrices onto which to store the result.\n * @returns An object with unitary and diagonal properties which are the unitary and diagonal matrices, respectively.\n *\n * @example\n * const a = //... symmetric matrix\n * const result = {\n * unitary : new Matrix3(),\n * diagonal : new Matrix3()\n * };\n * computeEigenDecomposition(a, result);\n *\n * const unitaryTranspose = Matrix3.transpose(result.unitary, new Matrix3());\n * const b = Matrix3.multiply(result.unitary, result.diagonal, new Matrix3());\n * Matrix3.multiply(b, unitaryTranspose, b); // b is now equal to a\n *\n * const lambda = result.diagonal.getColumn(0, new Vector3()).x; // first eigenvalue\n * const v = result.unitary.getColumn(0, new Vector3()); // first eigenvector\n * const c = v.multiplyByScalar(lambda); // equal to v.transformByMatrix3(a)\n */\nexport default function computeEigenDecomposition(\n matrix: number[],\n // @ts-expect-error accept empty object type\n result: EigenDecomposition = {}\n): EigenDecomposition {\n const EIGEN_TOLERANCE = _MathUtils.EPSILON20;\n const EIGEN_MAX_SWEEPS = 10;\n\n let count = 0;\n let sweep = 0;\n\n const unitaryMatrix = scratchUnitary;\n const diagonalMatrix = scratchDiagonal;\n\n unitaryMatrix.identity();\n diagonalMatrix.copy(matrix);\n\n const epsilon = EIGEN_TOLERANCE * computeFrobeniusNorm(diagonalMatrix);\n\n while (sweep < EIGEN_MAX_SWEEPS && offDiagonalFrobeniusNorm(diagonalMatrix) > epsilon) {\n shurDecomposition(diagonalMatrix, jMatrix);\n\n jMatrixTranspose.copy(jMatrix).transpose();\n\n diagonalMatrix.multiplyRight(jMatrix);\n diagonalMatrix.multiplyLeft(jMatrixTranspose);\n unitaryMatrix.multiplyRight(jMatrix);\n\n if (++count > 2) {\n ++sweep;\n count = 0;\n }\n }\n\n result.unitary = unitaryMatrix.toTarget(result.unitary);\n result.diagonal = diagonalMatrix.toTarget(result.diagonal);\n\n return result;\n}\n\nfunction computeFrobeniusNorm(matrix: Matrix3): number {\n let norm = 0.0;\n for (let i = 0; i < 9; ++i) {\n const temp = matrix[i];\n norm += temp * temp;\n }\n return Math.sqrt(norm);\n}\n\nconst rowVal = [1, 0, 0];\nconst colVal = [2, 2, 1];\n\n// Computes the \"off-diagonal\" Frobenius norm.\n// Assumes matrix is symmetric.\nfunction offDiagonalFrobeniusNorm(matrix: Matrix3): number {\n let norm = 0.0;\n for (let i = 0; i < 3; ++i) {\n const temp = matrix[scratchMatrix.getElementIndex(colVal[i], rowVal[i])];\n norm += 2.0 * temp * temp;\n }\n return Math.sqrt(norm);\n}\n\n// The routine takes a matrix, which is assumed to be symmetric, and\n// finds the largest off-diagonal term, and then creates\n// a matrix (result) which can be used to help reduce it\n//\n// This routine was created based upon Matrix Computations, 3rd ed., by Golub and Van Loan,\n// section 8.4.2 The 2by2 Symmetric Schur Decomposition.\n//\n// eslint-disable-next-line max-statements\nfunction shurDecomposition(matrix: Matrix3, result: Matrix3): Matrix3 {\n const tolerance = _MathUtils.EPSILON15;\n\n let maxDiagonal = 0.0;\n let rotAxis = 1;\n\n // find pivot (rotAxis) based on max diagonal of matrix\n for (let i = 0; i < 3; ++i) {\n const temp = Math.abs(matrix[scratchMatrix.getElementIndex(colVal[i], rowVal[i])]);\n if (temp > maxDiagonal) {\n rotAxis = i;\n maxDiagonal = temp;\n }\n }\n\n const p = rowVal[rotAxis];\n const q = colVal[rotAxis];\n\n let c = 1.0;\n let s = 0.0;\n\n if (Math.abs(matrix[scratchMatrix.getElementIndex(q, p)]) > tolerance) {\n const qq = matrix[scratchMatrix.getElementIndex(q, q)];\n const pp = matrix[scratchMatrix.getElementIndex(p, p)];\n const qp = matrix[scratchMatrix.getElementIndex(q, p)];\n\n const tau = (qq - pp) / 2.0 / qp;\n let t;\n\n if (tau < 0.0) {\n t = -1.0 / (-tau + Math.sqrt(1.0 + tau * tau));\n } else {\n t = 1.0 / (tau + Math.sqrt(1.0 + tau * tau));\n }\n\n c = 1.0 / Math.sqrt(1.0 + t * t);\n s = t * c;\n }\n\n // Copy into result\n Matrix3.IDENTITY.to(result);\n result[scratchMatrix.getElementIndex(p, p)] = result[scratchMatrix.getElementIndex(q, q)] = c;\n result[scratchMatrix.getElementIndex(q, p)] = s;\n result[scratchMatrix.getElementIndex(p, q)] = -s;\n\n return result;\n}\n","// This file is derived from the Cesium math library under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {Vector3, Matrix3} from '@math.gl/core';\nimport computeEigenDecomposition from './compute-eigen-decomposition';\nimport OrientedBoundingBox from '../bounding-volumes/oriented-bounding-box';\nimport AxisAlignedBoundingBox from '../bounding-volumes/axis-aligned-bounding-box';\n\nconst scratchVector2 = new Vector3();\n\nconst scratchVector3 = new Vector3();\n\nconst scratchVector4 = new Vector3();\n\nconst scratchVector5 = new Vector3();\n\nconst scratchVector6 = new Vector3();\n\nconst scratchCovarianceResult = new Matrix3();\n\nconst scratchEigenResult = {\n diagonal: new Matrix3(),\n unitary: new Matrix3()\n};\n\n/**\n * Computes an instance of an OrientedBoundingBox of the given positions.\n *\n * This is an implementation of Stefan Gottschalk's Collision Queries using Oriented Bounding Boxes solution (PHD thesis).\n * Reference: http://gamma.cs.unc.edu/users/gottschalk/main.pdf\n */\n/* eslint-disable max-statements */\nexport function makeOrientedBoundingBoxFromPoints(\n positions: number[][],\n result: OrientedBoundingBox = new OrientedBoundingBox()\n): OrientedBoundingBox {\n if (!positions || positions.length === 0) {\n result.halfAxes = new Matrix3([0, 0, 0, 0, 0, 0, 0, 0, 0]);\n result.center = new Vector3();\n return result;\n }\n\n const length = positions.length;\n const meanPoint = new Vector3(0, 0, 0);\n for (const position of positions) {\n meanPoint.add(position);\n }\n const invLength = 1.0 / length;\n meanPoint.multiplyByScalar(invLength);\n\n let exx = 0.0;\n let exy = 0.0;\n let exz = 0.0;\n let eyy = 0.0;\n let eyz = 0.0;\n let ezz = 0.0;\n\n for (const position of positions) {\n const p = scratchVector2.copy(position).subtract(meanPoint);\n exx += p.x * p.x;\n exy += p.x * p.y;\n exz += p.x * p.z;\n eyy += p.y * p.y;\n eyz += p.y * p.z;\n ezz += p.z * p.z;\n }\n\n exx *= invLength;\n exy *= invLength;\n exz *= invLength;\n eyy *= invLength;\n eyz *= invLength;\n ezz *= invLength;\n\n const covarianceMatrix = scratchCovarianceResult;\n covarianceMatrix[0] = exx;\n covarianceMatrix[1] = exy;\n covarianceMatrix[2] = exz;\n covarianceMatrix[3] = exy;\n covarianceMatrix[4] = eyy;\n covarianceMatrix[5] = eyz;\n covarianceMatrix[6] = exz;\n covarianceMatrix[7] = eyz;\n covarianceMatrix[8] = ezz;\n\n const {unitary} = computeEigenDecomposition(covarianceMatrix, scratchEigenResult);\n const rotation = result.halfAxes.copy(unitary);\n\n let v1 = rotation.getColumn(0, scratchVector4);\n let v2 = rotation.getColumn(1, scratchVector5);\n let v3 = rotation.getColumn(2, scratchVector6);\n\n let u1 = -Number.MAX_VALUE;\n let u2 = -Number.MAX_VALUE;\n let u3 = -Number.MAX_VALUE;\n let l1 = Number.MAX_VALUE;\n let l2 = Number.MAX_VALUE;\n let l3 = Number.MAX_VALUE;\n\n for (const position of positions) {\n scratchVector2.copy(position);\n\n u1 = Math.max(scratchVector2.dot(v1), u1);\n u2 = Math.max(scratchVector2.dot(v2), u2);\n u3 = Math.max(scratchVector2.dot(v3), u3);\n\n l1 = Math.min(scratchVector2.dot(v1), l1);\n l2 = Math.min(scratchVector2.dot(v2), l2);\n l3 = Math.min(scratchVector2.dot(v3), l3);\n }\n\n v1 = v1.multiplyByScalar(0.5 * (l1 + u1));\n v2 = v2.multiplyByScalar(0.5 * (l2 + u2));\n v3 = v3.multiplyByScalar(0.5 * (l3 + u3));\n\n result.center.copy(v1).add(v2).add(v3);\n\n const scale = scratchVector3.set(u1 - l1, u2 - l2, u3 - l3).multiplyByScalar(0.5);\n const scaleMatrix = new Matrix3([scale[0], 0, 0, 0, scale[1], 0, 0, 0, scale[2]]);\n result.halfAxes.multiplyRight(scaleMatrix);\n\n return result;\n}\n\n/**\n * Computes an instance of an AxisAlignedBoundingBox. The box is determined by\n * finding the points spaced the farthest apart on the x, y, and z axes.\n */\nexport function makeAxisAlignedBoundingBoxFromPoints(\n positions: readonly number[][],\n result: AxisAlignedBoundingBox = new AxisAlignedBoundingBox()\n): AxisAlignedBoundingBox {\n if (!positions || positions.length === 0) {\n result.minimum.set(0, 0, 0);\n result.maximum.set(0, 0, 0);\n result.center.set(0, 0, 0);\n result.halfDiagonal.set(0, 0, 0);\n return result;\n }\n\n let minimumX = positions[0][0];\n let minimumY = positions[0][1];\n let minimumZ = positions[0][2];\n\n let maximumX = positions[0][0];\n let maximumY = positions[0][1];\n let maximumZ = positions[0][2];\n\n for (const p of positions) {\n const x = p[0];\n const y = p[1];\n const z = p[2];\n\n minimumX = Math.min(x, minimumX);\n maximumX = Math.max(x, maximumX);\n minimumY = Math.min(y, minimumY);\n maximumY = Math.max(y, maximumY);\n minimumZ = Math.min(z, minimumZ);\n maximumZ = Math.max(z, maximumZ);\n }\n\n result.minimum.set(minimumX, minimumY, minimumZ);\n result.maximum.set(maximumX, maximumY, maximumZ);\n result.center.copy(result.minimum).add(result.maximum).scale(0.5);\n result.halfDiagonal.copy(result.maximum).subtract(result.center);\n\n return result;\n}\n","import {Viewport, WebMercatorViewport, _GlobeViewport} from '@deck.gl/core';\n\nimport {\n CullingVolume,\n Plane,\n AxisAlignedBoundingBox,\n makeOrientedBoundingBoxFromPoints\n} from '@math.gl/culling';\nimport {lngLatToWorld} from '@math.gl/web-mercator';\nimport {Bounds, TileIndex, ZRange} from './types';\nimport {osmTile2lngLat} from './utils';\n\nconst TILE_SIZE = 512;\n// number of world copies to check\nconst MAX_MAPS = 3;\n// for calculating bounding volume of a tile in a non-web-mercator viewport\nconst REF_POINTS_5 = [\n [0.5, 0.5],\n [0, 0],\n [0, 1],\n [1, 0],\n [1, 1]\n]; // 4 corners and center\nconst REF_POINTS_9 = REF_POINTS_5.concat([\n [0, 0.5],\n [0.5, 0],\n [1, 0.5],\n [0.5, 1]\n]); // 4 corners, center and 4 mid points\nconst REF_POINTS_11 = REF_POINTS_9.concat([\n [0.25, 0.5],\n [0.75, 0.5]\n]); // 2 additional points on equator for top tile\n\nclass OSMNode {\n x: number;\n y: number;\n z: number;\n\n private childVisible?: boolean;\n private selected?: boolean;\n\n private _children?: OSMNode[];\n\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n get children() {\n if (!this._children) {\n const x = this.x * 2;\n const y = this.y * 2;\n const z = this.z + 1;\n this._children = [\n new OSMNode(x, y, z),\n new OSMNode(x, y + 1, z),\n new OSMNode(x + 1, y, z),\n new OSMNode(x + 1, y + 1, z)\n ];\n }\n return this._children;\n }\n\n // eslint-disable-next-line complexity\n update(params: {\n viewport: Viewport;\n project: ((xyz: number[]) => number[]) | null;\n cullingVolume: CullingVolume;\n elevationBounds: ZRange;\n minZ: number;\n maxZ: number;\n bounds?: Bounds;\n offset: number;\n }) {\n const {viewport, cullingVolume, elevationBounds, minZ, maxZ, bounds, offset, project} = params;\n const boundingVolume = this.getBoundingVolume(elevationBounds, offset, project);\n\n // First, check if this tile is visible\n if (bounds && !this.insideBounds(bounds)) {\n return false;\n }\n\n const isInside = cullingVolume.computeVisibility(boundingVolume);\n if (isInside < 0) {\n return false;\n }\n\n // Avoid loading overlapping tiles - if a descendant is requested, do not request the ancester\n if (!this.childVisible) {\n let {z} = this;\n if (z < maxZ && z >= minZ) {\n // Adjust LOD\n // If the tile is far enough from the camera, accept a lower zoom level\n const distance =\n (boundingVolume.distanceTo(viewport.cameraPosition) * viewport.scale) / viewport.height;\n z += Math.floor(Math.log2(distance));\n }\n if (z >= maxZ) {\n // LOD is acceptable\n this.selected = true;\n return true;\n }\n }\n\n // LOD is not enough, recursively test child tiles\n this.selected = false;\n this.childVisible = true;\n for (const child of this.children) {\n child.update(params);\n }\n return true;\n }\n\n getSelected(result: OSMNode[] = []): OSMNode[] {\n if (this.selected) {\n result.push(this);\n }\n if (this._children) {\n for (const node of this._children) {\n node.getSelected(result);\n }\n }\n return result;\n }\n\n insideBounds([minX, minY, maxX, maxY]: Bounds): boolean {\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n\n return (\n this.x * extent < maxX &&\n this.y * extent < maxY &&\n (this.x + 1) * extent > minX &&\n (this.y + 1) * extent > minY\n );\n }\n\n getBoundingVolume(\n zRange: ZRange,\n worldOffset: number,\n project: ((xyz: number[]) => number[]) | null\n ) {\n if (project) {\n // Custom projection\n // Estimate bounding box from sample points\n // At low zoom level we need more samples to calculate the bounding volume correctly\n const refPoints = this.z < 1 ? REF_POINTS_11 : this.z < 2 ? REF_POINTS_9 : REF_POINTS_5;\n\n // Convert from tile-relative coordinates to common space\n const refPointPositions: number[][] = [];\n for (const p of refPoints) {\n const lngLat: number[] = osmTile2lngLat(this.x + p[0], this.y + p[1], this.z);\n lngLat[2] = zRange[0];\n refPointPositions.push(project(lngLat));\n\n if (zRange[0] !== zRange[1]) {\n // Account for the elevation volume\n lngLat[2] = zRange[1];\n refPointPositions.push(project(lngLat));\n }\n }\n\n return makeOrientedBoundingBoxFromPoints(refPointPositions);\n }\n\n // Use WebMercator projection\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n const originX = this.x * extent + worldOffset * TILE_SIZE;\n // deck's common space is y-flipped\n const originY = TILE_SIZE - (this.y + 1) * extent;\n\n return new AxisAlignedBoundingBox(\n [originX, originY, zRange[0]],\n [originX + extent, originY + extent, zRange[1]]\n );\n }\n}\n\n// eslint-disable-next-line complexity\nexport function getOSMTileIndices(\n viewport: Viewport,\n maxZ: number,\n zRange: ZRange | undefined,\n bounds?: Bounds\n): TileIndex[] {\n const project: ((xyz: number[]) => number[]) | null =\n viewport instanceof _GlobeViewport && viewport.resolution\n ? // eslint-disable-next-line @typescript-eslint/unbound-method\n viewport.projectPosition\n : null;\n\n // Get the culling volume of the current camera\n const planes: Plane[] = Object.values(viewport.getFrustumPlanes()).map(\n ({normal, distance}) => new Plane(normal.clone().negate(), distance)\n );\n const cullingVolume = new CullingVolume(planes);\n\n // Project zRange from meters to common space\n const unitsPerMeter = viewport.distanceScales.unitsPerMeter[2];\n const elevationMin = (zRange && zRange[0] * unitsPerMeter) || 0;\n const elevationMax = (zRange && zRange[1] * unitsPerMeter) || 0;\n\n // Always load at the current zoom level if pitch is small\n const minZ = viewport instanceof WebMercatorViewport && viewport.pitch <= 60 ? maxZ : 0;\n\n // Map extent to OSM position\n if (bounds) {\n const [minLng, minLat, maxLng, maxLat] = bounds;\n const topLeft = lngLatToWorld([minLng, maxLat]);\n const bottomRight = lngLatToWorld([maxLng, minLat]);\n bounds = [topLeft[0], TILE_SIZE - topLeft[1], bottomRight[0], TILE_SIZE - bottomRight[1]];\n }\n\n const root = new OSMNode(0, 0, 0);\n const traversalParams = {\n viewport,\n project,\n cullingVolume,\n elevationBounds: [elevationMin, elevationMax] as ZRange,\n minZ,\n maxZ,\n bounds,\n // num. of worlds from the center. For repeated maps\n offset: 0\n };\n\n root.update(traversalParams);\n\n if (\n viewport instanceof WebMercatorViewport &&\n viewport.subViewports &&\n viewport.subViewports.length > 1\n ) {\n // Check worlds in repeated maps\n traversalParams.offset = -1;\n while (root.update(traversalParams)) {\n if (--traversalParams.offset < -MAX_MAPS) {\n break;\n }\n }\n traversalParams.offset = 1;\n while (root.update(traversalParams)) {\n if (++traversalParams.offset > MAX_MAPS) {\n break;\n }\n }\n }\n\n return root.getSelected();\n}\n","import {Viewport} from '@deck.gl/core';\nimport {Matrix4} from '@math.gl/core';\nimport {getOSMTileIndices} from './tile-2d-traversal';\nimport {Bounds, GeoBoundingBox, TileBoundingBox, TileIndex, ZRange} from './types';\n\nconst TILE_SIZE = 512;\nconst DEFAULT_EXTENT: Bounds = [-Infinity, -Infinity, Infinity, Infinity];\n\nexport type URLTemplate = string | string[] | null;\n\nexport const urlType = {\n type: 'object' as const,\n value: null as URLTemplate,\n validate: (value, propType) =>\n (propType.optional && value === null) ||\n typeof value === 'string' ||\n (Array.isArray(value) && value.every(url => typeof url === 'string')),\n equal: (value1, value2) => {\n if (value1 === value2) {\n return true;\n }\n if (!Array.isArray(value1) || !Array.isArray(value2)) {\n return false;\n }\n const len = value1.length;\n if (len !== value2.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (value1[i] !== value2[i]) {\n return false;\n }\n }\n return true;\n }\n};\n\nfunction transformBox(bbox: Bounds, modelMatrix: Matrix4): Bounds {\n const transformedCoords = [\n // top-left\n modelMatrix.transformAsPoint([bbox[0], bbox[1]]),\n // top-right\n modelMatrix.transformAsPoint([bbox[2], bbox[1]]),\n // bottom-left\n modelMatrix.transformAsPoint([bbox[0], bbox[3]]),\n // bottom-right\n modelMatrix.transformAsPoint([bbox[2], bbox[3]])\n ];\n const transformedBox: Bounds = [\n // Minimum x coord\n Math.min(...transformedCoords.map(i => i[0])),\n // Minimum y coord\n Math.min(...transformedCoords.map(i => i[1])),\n // Max x coord\n Math.max(...transformedCoords.map(i => i[0])),\n // Max y coord\n Math.max(...transformedCoords.map(i => i[1]))\n ];\n return transformedBox;\n}\n\nfunction stringHash(s: string): number {\n return Math.abs(s.split('').reduce((a, b) => ((a << 5) - a + b.charCodeAt(0)) | 0, 0));\n}\n\nexport function getURLFromTemplate(\n template: URLTemplate,\n tile: {\n index: TileIndex;\n id: string;\n }\n): string | null {\n if (!template || !template.length) {\n return null;\n }\n const {index, id} = tile;\n\n if (Array.isArray(template)) {\n const i = stringHash(id) % template.length;\n template = template[i];\n }\n\n let url = template;\n for (const key of Object.keys(index)) {\n const regex = new RegExp(`{${key}}`, 'g');\n url = url.replace(regex, String(index[key]));\n }\n\n // Back-compatible support for {-y}\n if (Number.isInteger(index.y) && Number.isInteger(index.z)) {\n url = url.replace(/\\{-y\\}/g, String(Math.pow(2, index.z) - index.y - 1));\n }\n return url;\n}\n\n/**\n * gets the bounding box of a viewport\n */\nfunction getBoundingBox(viewport: Viewport, zRange: number[] | null, extent: Bounds): Bounds {\n let bounds;\n if (zRange && zRange.length === 2) {\n const [minZ, maxZ] = zRange;\n const bounds0 = viewport.getBounds({z: minZ});\n const bounds1 = viewport.getBounds({z: maxZ});\n bounds = [\n Math.min(bounds0[0], bounds1[0]),\n Math.min(bounds0[1], bounds1[1]),\n Math.max(bounds0[2], bounds1[2]),\n Math.max(bounds0[3], bounds1[3])\n ];\n } else {\n bounds = viewport.getBounds();\n }\n if (!viewport.isGeospatial) {\n return [\n // Top corner should not be more then bottom corner in either direction\n Math.max(Math.min(bounds[0], extent[2]), extent[0]),\n Math.max(Math.min(bounds[1], extent[3]), extent[1]),\n // Bottom corner should not be less then top corner in either direction\n Math.min(Math.max(bounds[2], extent[0]), extent[2]),\n Math.min(Math.max(bounds[3], extent[1]), extent[3])\n ];\n }\n return [\n Math.max(bounds[0], extent[0]),\n Math.max(bounds[1], extent[1]),\n Math.min(bounds[2], extent[2]),\n Math.min(bounds[3], extent[3])\n ];\n}\n\n/** Get culling bounds in world space */\nexport function getCullBounds({\n viewport,\n z = 0,\n cullRect\n}: {\n /** Current viewport */\n viewport: Viewport;\n /** Current z range */\n z: ZRange | number | undefined;\n /** Culling rectangle in screen space */\n cullRect: {x: number; y: number; width: number; height: number};\n}): [number, number, number, number][] {\n const subViewports = viewport.subViewports || [viewport];\n return subViewports.map(v => getCullBoundsInViewport(v, z, cullRect));\n}\n\nfunction getCullBoundsInViewport(\n /** Current viewport */\n viewport: Viewport,\n /** At altitude */\n z: ZRange | number,\n /** Culling rectangle in screen space */\n cullRect: {x: number; y: number; width: number; height: number}\n): [number, number, number, number] {\n if (!Array.isArray(z)) {\n const x = cullRect.x - viewport.x;\n const y = cullRect.y - viewport.y;\n const {width, height} = cullRect;\n\n const unprojectOption = {targetZ: z};\n\n const topLeft = viewport.unproject([x, y], unprojectOption);\n const topRight = viewport.unproject([x + width, y], unprojectOption);\n const bottomLeft = viewport.unproject([x, y + height], unprojectOption);\n const bottomRight = viewport.unproject([x + width, y + height], unprojectOption);\n\n return [\n Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),\n Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]),\n Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),\n Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1])\n ];\n }\n\n const bounds0 = getCullBoundsInViewport(viewport, z[0], cullRect);\n const bounds1 = getCullBoundsInViewport(viewport, z[1], cullRect);\n\n return [\n Math.min(bounds0[0], bounds1[0]),\n Math.min(bounds0[1], bounds1[1]),\n Math.max(bounds0[2], bounds1[2]),\n Math.max(bounds0[3], bounds1[3])\n ];\n}\n\nfunction getIndexingCoords(bbox: Bounds, scale: number, modelMatrixInverse?: Matrix4): Bounds {\n if (modelMatrixInverse) {\n const transformedTileIndex = transformBox(bbox, modelMatrixInverse).map(\n i => (i * scale) / TILE_SIZE\n );\n return transformedTileIndex as Bounds;\n }\n return bbox.map(i => (i * scale) / TILE_SIZE) as Bounds;\n}\n\nfunction getScale(z: number, tileSize: number): number {\n return (Math.pow(2, z) * TILE_SIZE) / tileSize;\n}\n\n// https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2\nexport function osmTile2lngLat(x: number, y: number, z: number): [number, number] {\n const scale = getScale(z, TILE_SIZE);\n const lng = (x / scale) * 360 - 180;\n const n = Math.PI - (2 * Math.PI * y) / scale;\n const lat = (180 / Math.PI) * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));\n return [lng, lat];\n}\n\nfunction tile2XY(x: number, y: number, z: number, tileSize: number): [number, number] {\n const scale = getScale(z, tileSize);\n return [(x / scale) * TILE_SIZE, (y / scale) * TILE_SIZE];\n}\nexport function tileToBoundingBox(\n viewport: Viewport,\n x: number,\n y: number,\n z: number,\n tileSize: number = TILE_SIZE\n): TileBoundingBox {\n if (viewport.isGeospatial) {\n const [west, north] = osmTile2lngLat(x, y, z);\n const [east, south] = osmTile2lngLat(x + 1, y + 1, z);\n return {west, north, east, south};\n }\n const [left, top] = tile2XY(x, y, z, tileSize);\n const [right, bottom] = tile2XY(x + 1, y + 1, z, tileSize);\n return {left, top, right, bottom};\n}\n\nfunction getIdentityTileIndices(\n viewport: Viewport,\n z: number,\n tileSize: number,\n extent: Bounds,\n modelMatrixInverse?: Matrix4\n) {\n const bbox = getBoundingBox(viewport, null, extent);\n const scale = getScale(z, tileSize);\n const [minX, minY, maxX, maxY] = getIndexingCoords(bbox, scale, modelMatrixInverse);\n const indices: TileIndex[] = [];\n\n /*\n | TILE | TILE | TILE |\n |(minX) |(maxX)\n */\n for (let x = Math.floor(minX); x < maxX; x++) {\n for (let y = Math.floor(minY); y < maxY; y++) {\n indices.push({x, y, z});\n }\n }\n return indices;\n}\n\n/**\n * Returns all tile indices in the current viewport. If the current zoom level is smaller\n * than minZoom, return an empty array. If the current zoom level is greater than maxZoom,\n * return tiles that are on maxZoom.\n */\n// eslint-disable-next-line complexity\nexport function getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n extent,\n tileSize = TILE_SIZE,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset = 0\n}: {\n viewport: Viewport;\n maxZoom?: number;\n minZoom?: number;\n zRange: ZRange | undefined;\n extent?: Bounds;\n tileSize?: number;\n modelMatrix?: Matrix4;\n modelMatrixInverse?: Matrix4;\n zoomOffset?: number;\n}) {\n let z = viewport.isGeospatial\n ? Math.round(viewport.zoom + Math.log2(TILE_SIZE / tileSize)) + zoomOffset\n : Math.ceil(viewport.zoom) + zoomOffset;\n if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {\n if (!extent) {\n return [];\n }\n z = minZoom;\n }\n if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {\n z = maxZoom;\n }\n let transformedExtent = extent;\n if (modelMatrix && modelMatrixInverse && extent && !viewport.isGeospatial) {\n transformedExtent = transformBox(extent, modelMatrix);\n }\n return viewport.isGeospatial\n ? getOSMTileIndices(viewport, z, zRange, extent)\n : getIdentityTileIndices(\n viewport,\n z,\n tileSize,\n transformedExtent || DEFAULT_EXTENT,\n modelMatrixInverse\n );\n}\n\n/**\n * Returns true if s is a valid URL template\n */\nexport function isURLTemplate(s: string): boolean {\n return /(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(s);\n}\n\nexport function isGeoBoundingBox(v: any): v is GeoBoundingBox {\n return (\n Number.isFinite(v.west) &&\n Number.isFinite(v.north) &&\n Number.isFinite(v.east) &&\n Number.isFinite(v.south)\n );\n}\n","// deck.gl, MIT license\n// @note - this is a duplicate of the deck.gl core export (because Tileset2D should be deck.gl independent)\n\n/**\n * Speed up consecutive function calls by caching the result of calls with identical input\n * https://en.wikipedia.org/wiki/Memoization\n * @param compute - the function to be memoized\n */\nexport function memoize(compute: (args: In) => Out): (args: In) => Out {\n let cachedArgs: any = {};\n let cachedResult: Out;\n\n return (args: In) => {\n for (const key in args) {\n if (!isEqual(args[key], cachedArgs[key])) {\n cachedResult = compute(args);\n cachedArgs = args;\n break;\n }\n }\n return cachedResult;\n };\n}\n\nfunction isEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a)) {\n // Special treatment for arrays: compare 1-level deep\n // This is to support equality of matrix/coordinate props\n const len = a.length;\n if (!b || b.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import {Viewport} from '@deck.gl/core';\n\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {Matrix4, equals} from '@math.gl/core';\n\nimport {Tile2DHeader} from './tile-2d-header';\n\nimport {getTileIndices, tileToBoundingBox, getCullBounds} from './utils';\nimport {Bounds, TileIndex, ZRange} from './types';\nimport {TileLoadProps} from './types';\nimport {memoize} from './memoize';\n\n// bit masks\nconst TILE_STATE_VISITED = 1;\nconst TILE_STATE_VISIBLE = 2;\n/*\n show cached parent tile if children are loading\n +-----------+ +-----+ +-----+-----+\n | | | | | | |\n | | | | | | |\n | | --> +-----+-----+ -> +-----+-----+\n | | | | | | |\n | | | | | | |\n +-----------+ +-----+ +-----+-----+\n\n show cached children tiles when parent is loading\n +-------+---- +------------\n | | |\n | | |\n | | |\n +-------+---- --> |\n | | |\n */\n\nexport const STRATEGY_NEVER = 'never';\nexport const STRATEGY_REPLACE = 'no-overlap';\nexport const STRATEGY_DEFAULT = 'best-available';\n\nexport type RefinementStrategyFunction = (tiles: Tile2DHeader[]) => void;\nexport type RefinementStrategy =\n | 'never'\n | 'no-overlap'\n | 'best-available'\n | RefinementStrategyFunction;\n\nconst DEFAULT_CACHE_SCALE = 5;\n\nconst STRATEGIES = {\n [STRATEGY_DEFAULT]: updateTileStateDefault,\n [STRATEGY_REPLACE]: updateTileStateReplace,\n [STRATEGY_NEVER]: () => {}\n};\n\nexport type Tileset2DProps = {\n /** `getTileData` is called to retrieve the data of each tile. */\n getTileData: (props: TileLoadProps) => Promise | DataT;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n /** The max zoom level of the layer's data. @default null */\n maxZoom?: number | null;\n /** The min zoom level of the layer's data. @default 0 */\n minZoom?: number | null;\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n /** The maximum memory used for caching tiles. @default null */\n maxCacheByteSize?: number | null;\n /** How the tile layer refines the visibility of tiles. @default 'best-available' */\n refinementStrategy?: RefinementStrategy;\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n /** The maximum number of concurrent getTileData calls. @default 6 */\n maxRequests?: number;\n /** Changes the zoom level at which the tiles are fetched. Needs to be an integer. @default 0 */\n zoomOffset?: number;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader) => void;\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader) => void;\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile: Tile2DHeader) => void;\n\n // onTileLoad: (tile: Tile2DHeader) => void;\n // onTileUnload: (tile: Tile2DHeader) => void;\n // onTileError: (error: any, tile: Tile2DHeader) => void;\n /** Called when all tiles in the current viewport are loaded. */\n // sonViewportLoad?: ((tiles: Tile2DHeader[]) => void) | null;\n};\n\nexport const DEFAULT_TILESET2D_PROPS: Omit, 'getTileData'> = {\n extent: null,\n tileSize: 512,\n\n maxZoom: null,\n minZoom: null,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: 'best-available',\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0,\n\n // onTileLoad: (tile: Tile2DHeader) => void, // onTileUnload: (tile: Tile2DHeader) => void, // onTileError: (error: any, tile: Tile2DHeader) => void, /** Called when all tiles in the current viewport are loaded. */\n // onViewportLoad: ((tiles: Tile2DHeader[]) => void) | null,\n onTileLoad: () => {},\n onTileUnload: () => {},\n onTileError: () => {}\n};\n\n/**\n * Manages loading and purging of tile data. This class caches recently visited tiles\n * and only creates new tiles if they are present.\n */\nexport class Tileset2D {\n private opts: Required;\n private _requestScheduler: RequestScheduler;\n private _cache: Map;\n private _dirty: boolean;\n private _tiles: Tile2DHeader[];\n\n private _cacheByteSize: number;\n private _viewport: Viewport | null;\n private _zRange?: ZRange;\n private _selectedTiles: Tile2DHeader[] | null;\n private _frameNumber: number;\n private _modelMatrix: Matrix4;\n private _modelMatrixInverse: Matrix4;\n\n private _maxZoom?: number;\n private _minZoom?: number;\n\n private onTileLoad: (tile: Tile2DHeader) => void;\n\n /**\n * Takes in a function that returns tile data, a cache size, and a max and a min zoom level.\n * Cache size defaults to 5 * number of tiles in the current viewport\n */\n constructor(opts: Tileset2DProps) {\n this.opts = {...DEFAULT_TILESET2D_PROPS, ...opts};\n\n this.onTileLoad = tile => {\n this.opts.onTileLoad?.(tile);\n if (this.opts.maxCacheByteSize) {\n this._cacheByteSize += tile.byteLength;\n this._resizeCache();\n }\n };\n\n this._requestScheduler = new RequestScheduler({\n maxRequests: opts.maxRequests,\n throttleRequests: Boolean(opts.maxRequests && opts.maxRequests > 0)\n });\n\n // Maps tile id in string {z}-{x}-{y} to a Tile object\n this._cache = new Map();\n this._tiles = [];\n this._dirty = false;\n this._cacheByteSize = 0;\n\n // Cache the last processed viewport\n this._viewport = null;\n this._selectedTiles = null;\n this._frameNumber = 0;\n\n this._modelMatrix = new Matrix4();\n this._modelMatrixInverse = new Matrix4();\n\n this.setOptions(opts);\n }\n\n /* Public API */\n get tiles() {\n return this._tiles;\n }\n\n get selectedTiles(): Tile2DHeader[] | null {\n return this._selectedTiles;\n }\n\n get isLoaded(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.every(tile => tile.isLoaded);\n }\n\n get needsReload(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.some(tile => tile.needsReload);\n }\n\n setOptions(opts: Tileset2DProps): void {\n Object.assign(this.opts, opts);\n if (Number.isFinite(opts.maxZoom)) {\n this._maxZoom = Math.floor(opts.maxZoom as number);\n }\n if (Number.isFinite(opts.minZoom)) {\n this._minZoom = Math.ceil(opts.minZoom as number);\n }\n }\n\n // Clean up any outstanding tile requests.\n finalize(): void {\n for (const tile of this._cache.values()) {\n if (tile.isLoading) {\n tile.abort();\n }\n }\n this._cache.clear();\n this._tiles = [];\n this._selectedTiles = null;\n }\n\n reloadAll(): void {\n for (const id of this._cache.keys()) {\n const tile = this._cache.get(id) as Tile2DHeader;\n if (!this._selectedTiles || !this._selectedTiles.includes(tile)) {\n this._cache.delete(id);\n } else {\n tile.setNeedsReload();\n }\n }\n }\n\n /**\n * Update the cache with the given viewport and model matrix and triggers callback onUpdate.\n */\n update(\n viewport: Viewport,\n {zRange, modelMatrix}: {zRange?: ZRange; modelMatrix?: Matrix4} = {}\n ): number {\n const modelMatrixAsMatrix4 = new Matrix4(modelMatrix);\n const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);\n if (\n !this._viewport ||\n !viewport.equals(this._viewport) ||\n !equals(this._zRange, zRange) ||\n isModelMatrixNew\n ) {\n if (isModelMatrixNew) {\n this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();\n this._modelMatrix = modelMatrixAsMatrix4;\n }\n this._viewport = viewport;\n this._zRange = zRange;\n const tileIndices = this.getTileIndices({\n viewport,\n maxZoom: this._maxZoom,\n minZoom: this._minZoom,\n zRange,\n modelMatrix: this._modelMatrix,\n modelMatrixInverse: this._modelMatrixInverse\n });\n this._selectedTiles = tileIndices.map(index => this._getTile(index, true));\n\n if (this._dirty) {\n // Some new tiles are added\n this._rebuildTree();\n }\n // Check for needed reloads explicitly even if the view/matrix has not changed.\n } else if (this.needsReload) {\n this._selectedTiles = this._selectedTiles!.map(tile => this._getTile(tile.index, true));\n }\n\n // Update tile states\n const changed = this.updateTileStates();\n this._pruneRequests();\n\n if (this._dirty) {\n // cache size is either the user defined maxSize or 5 * number of current tiles in the viewport.\n this._resizeCache();\n }\n\n if (changed) {\n this._frameNumber++;\n }\n\n return this._frameNumber;\n }\n\n // eslint-disable-next-line complexity\n isTileVisible(\n tile: Tile2DHeader,\n cullRect?: {x: number; y: number; width: number; height: number}\n ): boolean {\n if (!tile.isVisible) {\n return false;\n }\n\n if (cullRect && this._viewport) {\n const boundsArr = this._getCullBounds({\n viewport: this._viewport,\n z: this._zRange,\n cullRect\n });\n const {bbox} = tile;\n for (const [minX, minY, maxX, maxY] of boundsArr) {\n let overlaps;\n if ('west' in bbox) {\n overlaps = bbox.west < maxX && bbox.east > minX && bbox.south < maxY && bbox.north > minY;\n } else {\n // top/bottom could be swapped depending on the indexing system\n const y0 = Math.min(bbox.top, bbox.bottom);\n const y1 = Math.max(bbox.top, bbox.bottom);\n overlaps = bbox.left < maxX && bbox.right > minX && y0 < maxY && y1 > minY;\n }\n if (overlaps) {\n return true;\n }\n }\n return false;\n }\n return true;\n }\n\n /* Public interface for subclassing */\n\n /** Returns array of tile indices in the current viewport */\n getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n modelMatrix,\n modelMatrixInverse\n }: {\n viewport: Viewport;\n maxZoom?: number;\n minZoom?: number;\n zRange: ZRange | undefined;\n tileSize?: number;\n modelMatrix?: Matrix4;\n modelMatrixInverse?: Matrix4;\n zoomOffset?: number;\n }): TileIndex[] {\n const {tileSize, extent, zoomOffset} = this.opts;\n return getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n tileSize,\n extent: extent as Bounds | undefined,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset\n });\n }\n\n /** Returns unique string key for a tile index */\n getTileId(index: TileIndex) {\n return `${index.x}-${index.y}-${index.z}`;\n }\n\n /** Returns a zoom level for a tile index */\n getTileZoom(index: TileIndex) {\n return index.z;\n }\n\n /** Returns additional metadata to add to tile, bbox by default */\n getTileMetadata(index: TileIndex): Record {\n const {tileSize} = this.opts;\n // @ts-expect-error\n return {bbox: tileToBoundingBox(this._viewport, index.x, index.y, index.z, tileSize)};\n }\n\n /** Returns index of the parent tile */\n getParentIndex(index: TileIndex) {\n const x = Math.floor(index.x / 2);\n const y = Math.floor(index.y / 2);\n const z = index.z - 1;\n return {x, y, z};\n }\n\n // Returns true if any tile's visibility changed\n private updateTileStates() {\n const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;\n\n const visibilities = new Array(this._cache.size);\n let i = 0;\n // Reset state\n for (const tile of this._cache.values()) {\n // save previous state\n visibilities[i++] = tile.isVisible;\n tile.isSelected = false;\n tile.isVisible = false;\n }\n // @ts-expect-error called only when _selectedTiles is already defined\n for (const tile of this._selectedTiles) {\n tile.isSelected = true;\n tile.isVisible = true;\n }\n\n // Strategy-specific state logic\n (typeof refinementStrategy === 'function'\n ? refinementStrategy\n : STRATEGIES[refinementStrategy])(Array.from(this._cache.values()));\n\n i = 0;\n // Check if any visibility has changed\n for (const tile of this._cache.values()) {\n if (visibilities[i++] !== tile.isVisible) {\n return true;\n }\n }\n\n return false;\n }\n\n /* Private methods */\n\n private _getCullBounds = memoize(getCullBounds);\n\n private _pruneRequests(): void {\n const {maxRequests = 0} = this.opts;\n\n const abortCandidates: Tile2DHeader[] = [];\n let ongoingRequestCount = 0;\n for (const tile of this._cache.values()) {\n // Keep track of all the ongoing requests\n if (tile.isLoading) {\n ongoingRequestCount++;\n if (!tile.isSelected && !tile.isVisible) {\n abortCandidates.push(tile);\n }\n }\n }\n\n while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {\n // There are too many ongoing requests, so abort some that are unselected\n const tile = abortCandidates.shift()!;\n tile.abort();\n ongoingRequestCount--;\n }\n }\n\n // This needs to be called every time some tiles have been added/removed from cache\n private _rebuildTree() {\n const {_cache} = this;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.parent = null;\n if (tile.children) {\n tile.children.length = 0;\n }\n }\n\n // Rebuild tree\n for (const tile of _cache.values()) {\n const parent = this._getNearestAncestor(tile);\n tile.parent = parent;\n if (parent?.children) {\n parent.children.push(tile);\n }\n }\n }\n\n /**\n * Clear tiles that are not visible when the cache is full\n */\n /* eslint-disable complexity */\n private _resizeCache() {\n const {_cache, opts} = this;\n\n const maxCacheSize =\n opts.maxCacheSize ||\n // @ts-expect-error called only when selectedTiles is initialized\n (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);\n const maxCacheByteSize = opts.maxCacheByteSize || Infinity;\n\n const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;\n\n if (overflown) {\n for (const [id, tile] of _cache) {\n if (!tile.isVisible && !tile.isSelected) {\n // delete tile\n this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;\n _cache.delete(id);\n this.opts.onTileUnload?.(tile);\n }\n if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {\n break;\n }\n }\n this._rebuildTree();\n this._dirty = true;\n }\n if (this._dirty) {\n // sort by zoom level so that smaller tiles are displayed on top\n this._tiles = Array.from(this._cache.values()).sort((t1, t2) => t1.zoom - t2.zoom);\n\n this._dirty = false;\n }\n }\n /* eslint-enable complexity */\n\n private _getTile(index: TileIndex, create: true): Tile2DHeader;\n private _getTile(index: TileIndex, create?: false): Tile2DHeader | undefined;\n private _getTile(index: TileIndex, create?: boolean): Tile2DHeader | undefined {\n const id = this.getTileId(index);\n let tile = this._cache.get(id);\n let needsReload = false;\n\n if (!tile && create) {\n tile = new Tile2DHeader(index);\n Object.assign(tile, this.getTileMetadata(tile.index));\n Object.assign(tile, {id, zoom: this.getTileZoom(tile.index)});\n needsReload = true;\n this._cache.set(id, tile);\n this._dirty = true;\n } else if (tile && tile.needsReload) {\n needsReload = true;\n }\n if (tile && needsReload) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tile.loadData({\n getData: this.opts.getTileData,\n requestScheduler: this._requestScheduler,\n onLoad: this.onTileLoad,\n onError: this.opts.onTileError\n });\n }\n\n return tile;\n }\n\n _getNearestAncestor(tile: Tile2DHeader): Tile2DHeader | null {\n const {_minZoom = 0} = this;\n\n let index = tile.index;\n while (this.getTileZoom(index) > _minZoom) {\n index = this.getParentIndex(index);\n const parent = this._getTile(index);\n if (parent) {\n return parent;\n }\n }\n return null;\n }\n}\n\n/* -- Refinement strategies --*/\n/* eslint-disable max-depth */\n\n// For all the selected && pending tiles:\n// - pick the closest ancestor as placeholder\n// - if no ancestor is visible, pick the closest children as placeholder\nfunction updateTileStateDefault(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected && !getPlaceholderInAncestors(tile)) {\n getPlaceholderInChildren(tile);\n }\n }\n for (const tile of allTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n }\n}\n\n// Until a selected tile and all its selected siblings are loaded, use the closest ancestor as placeholder\nfunction updateTileStateReplace(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected) {\n getPlaceholderInAncestors(tile);\n }\n }\n // Always process parents first\n const sortedTiles = Array.from(allTiles).sort((t1, t2) => t1.zoom - t2.zoom);\n for (const tile of sortedTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n\n if (tile.children && (tile.isVisible || tile.state! & TILE_STATE_VISITED)) {\n // If the tile is rendered, or if the tile has been explicitly hidden, hide all of its children\n for (const child of tile.children) {\n child.state = TILE_STATE_VISITED;\n }\n } else if (tile.isSelected) {\n getPlaceholderInChildren(tile);\n }\n }\n}\n\n// Walk up the tree until we find one ancestor that is loaded. Returns true if successful.\nfunction getPlaceholderInAncestors(startTile: Tile2DHeader) {\n let tile: Tile2DHeader | null = startTile;\n while (tile) {\n if (tile.isLoaded || tile.content) {\n tile.state! |= TILE_STATE_VISIBLE;\n return true;\n }\n tile = tile.parent;\n }\n return false;\n}\n\n// Recursively set children as placeholder\nfunction getPlaceholderInChildren(tile) {\n for (const child of tile.children) {\n if (child.isLoaded || child.content) {\n child.state |= TILE_STATE_VISIBLE;\n } else {\n getPlaceholderInChildren(child);\n }\n }\n}\n","import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n UpdateParameters,\n PickingInfo,\n GetPickingInfoParams,\n DefaultProps,\n FilterContext,\n _flatten as flatten\n} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {LayersList} from '@deck.gl/core';\n\nimport type {TileLoadProps, ZRange} from '../tileset-2d';\nimport {\n Tileset2D,\n Tile2DHeader,\n RefinementStrategy,\n STRATEGY_DEFAULT,\n Tileset2DProps\n} from '../tileset-2d';\nimport {urlType, URLTemplate, getURLFromTemplate} from '../tileset-2d';\n\nconst defaultProps: DefaultProps = {\n TilesetClass: Tileset2D,\n data: {type: 'data', value: []},\n dataComparator: urlType.equal,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props)},\n getTileData: {type: 'function', optional: true, value: null},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null},\n onTileLoad: {type: 'function', value: tile => {}},\n onTileUnload: {type: 'function', value: tile => {}},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err)},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\n/** All props supported by the TileLayer */\nexport type TileLayerProps = CompositeLayerProps & _TileLayerProps;\n\n/** Props added by the TileLayer */\ntype _TileLayerProps = {\n data: URLTemplate;\n /**\n * Optionally implement a custom indexing scheme.\n */\n TilesetClass?: typeof Tileset2D;\n /**\n * Renders one or an array of Layer instances.\n */\n renderSubLayers?: (\n props: TileLayerProps & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader;\n }\n ) => Layer | null | LayersList;\n /**\n * If supplied, `getTileData` is called to retrieve the data of each tile.\n */\n getTileData?: ((props: TileLoadProps) => Promise | DataT) | null;\n\n /** Called when all tiles in the current viewport are loaded. */\n onViewportLoad?: ((tiles: Tile2DHeader[]) => void) | null;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader) => void;\n\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader) => void;\n\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile?) => void;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n\n /** The max zoom level of the layer's data.\n * @default null\n */\n maxZoom?: number | null;\n\n /** The min zoom level of the layer's data.\n * @default 0\n */\n minZoom?: number | null;\n\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n\n /**\n * The maximum memory used for caching tiles.\n *\n * @default null\n */\n maxCacheByteSize?: number | null;\n\n /**\n * How the tile layer refines the visibility of tiles.\n *\n * @default 'best-available'\n */\n refinementStrategy?: RefinementStrategy;\n\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n\n /**\n * The maximum number of concurrent getTileData calls.\n *\n * @default 6\n */\n maxRequests?: number;\n\n /**\n * This offset changes the zoom level at which the tiles are fetched.\n *\n * Needs to be an integer.\n *\n * @default 0\n */\n zoomOffset?: number;\n};\n\nexport type TiledPickingInfo = PickingInfo & {\n tile?: Tile2DHeader;\n};\n\n/**\n * The TileLayer is a composite layer that makes it possible to visualize very large datasets.\n *\n * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.\n */\nexport default class TileLayer extends CompositeLayer<\n ExtraPropsT & Required<_TileLayerProps>\n> {\n static defaultProps: DefaultProps = defaultProps;\n static layerName = 'TileLayer';\n\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state?.tileset?.finalize();\n }\n\n get isLoaded(): boolean {\n return this.state?.tileset?.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({changeFlags}: UpdateParameters) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new this.props.TilesetClass(this._getTilesetOptions());\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions());\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = this.props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n private _updateTileset(): void {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad(): void {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile: Tile2DHeader): void {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileError(error: any, tile: Tile2DHeader) {\n this.props.onTileError(error);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tile: Tile2DHeader) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile: TileLoadProps): Promise | DataT | null {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (fetch && tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader;\n }\n ): Layer | null | LayersList {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader): Partial | null {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams): TiledPickingInfo {\n const sourceTile = (sourceLayer as any).props.tile;\n if (info.picked) {\n (info as any).tile = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n return info;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile as Tile2DHeader;\n if (sourceTile && sourceTile.layers) {\n for (const layer of sourceTile.layers) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n return this.state.tileset.tiles.map((tile: Tile2DHeader) => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n id: `${this.id}-${tile.id}`,\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = (flatten(layers, Boolean) as Layer<{tile?: Tile2DHeader}>[]).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers![0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer, cullRect}: FilterContext) {\n const {tile} = (layer as Layer<{tile: Tile2DHeader}>).props;\n return this.state.tileset.isTileVisible(tile, cullRect);\n }\n}\n","import { Logger } from './Logger'\n\ntype Listener = (...args: any[]) => void\n\nexport class EventEmitter {\n private _events: { [key: string]: Listener[] } = {}\n\n public on(event: string, listener: Listener): void {\n if (!this._events[event]) {\n this._events[event] = []\n }\n\n this._events[event].push(listener)\n }\n\n public emit(event: string, ...args: any[]): void {\n if (!this._events[event]) {\n Logger.debug(`No listeners registered for event: \"${event}\"`)\n return\n }\n\n for (const listener of this._events[event]) {\n listener(...args)\n }\n }\n\n public off(event: string, listener: Listener): void {\n if (!this._events[event]) {\n throw new Error(`No listeners registered for event: \"${event}\"`)\n }\n\n this._events[event] = this._events[event].filter((l) => l !== listener)\n\n if (this._events[event].length === 0) {\n delete this._events[event]\n }\n }\n}\n","import { handleRequest } from '../../api'\nimport { BackendNetworkTypes, ValueOf } from '../../services/NetworkType.service'\nimport { EventEmitter } from '../../utils/EventEmitter'\nimport type { BinaryFeatures } from '@loaders.gl/schema'\nimport type { Feature } from 'geojson'\nimport { BinSize } from '../../services/Bin.service'\n\nexport interface GeoJsonRecord {\n type: string\n geometry: {\n type: string\n coordinates: number[][][]\n }\n properties: {\n tileZ?: number\n carrier_id: string\n carrier_name: string\n network_performance: number\n network_type: string\n network_type_id: ValueOf\n resolution: ValueOf\n }\n}\n\nexport interface MvtPayload {\n carrierId: string\n networkType: number\n zoomLevel: number\n tile_x: string\n tile_y: string\n tile_z: number\n}\n\nexport interface GeoPayload {\n carrierId: string\n geojson: {\n type: string\n coordinates: number[][][]\n }\n zoomLevel: number\n networkType: number\n}\n\nexport interface LoadOptions {\n payload: MvtPayload\n signal?: AbortSignal\n}\n\nexport const GeoEvent = {\n changeLoadingState: 'changeLoadingState'\n}\n\nexport type ParsedMvtTile = Feature[] | BinaryFeatures\n\nexport type GeoDataSource = {\n load: (options: LoadOptions) => Promise\n}\n\nexport class FCCDataSource implements GeoDataSource {\n async load(options: LoadOptions) {\n const payload = options.payload\n\n return handleRequest(\n `/mvt/fcc/signals/${payload.tile_z}/${payload.tile_x}/${payload.tile_y}?network_type_id=${payload.networkType}&carrier_id=${payload.carrierId}`,\n {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json'\n },\n signal: options.signal\n }\n )\n }\n}\n\nexport class GeodataService extends EventEmitter {\n private loadingCount = 0\n\n private finalizeTask() {\n if (this.loadingCount > 0) {\n this.loadingCount--\n }\n if (this.loadingCount === 0) {\n this.emit(GeoEvent.changeLoadingState, false)\n }\n }\n\n constructor(public dataSource: GeoDataSource) {\n super()\n }\n\n async load(loadOptions: LoadOptions): Promise {\n const promise = this.dataSource.load(loadOptions)\n\n if (this.loadingCount === 0) {\n this.emit(GeoEvent.changeLoadingState, true)\n }\n this.loadingCount++\n\n const ABORTED_MESSAGE = 'deck manager: request aborted'\n const data = await promise\n .then((response) => {\n this.finalizeTask()\n return response.blob()\n })\n .catch((e) => {\n if (e.message !== ABORTED_MESSAGE) {\n this.finalizeTask()\n throw e\n }\n })\n\n return data || new Blob()\n }\n}\n","function getZ5BasedTile(coord: number, z: number) {\n return coord >> (z - 5)\n}\n\nexport function withinBbox(tile: { x: number; y: number; z: number }, bbox: Bbox) {\n const x = getZ5BasedTile(tile.x, tile.z)\n const y = getZ5BasedTile(tile.y, tile.z)\n return x >= bbox.xmin && x <= bbox.xmax && y >= bbox.ymin && y <= bbox.ymax\n}\n\ntype Bbox = {\n xmin: number\n xmax: number\n ymin: number\n ymax: number\n}\n\nconst usBbox = {\n xmin: 4,\n xmax: 10,\n ymin: 10,\n ymax: 13\n} as const\n\nconst alaskaBbox = {\n xmin: 1,\n xmax: 3,\n ymin: 6,\n ymax: 9\n} as const\n\nconst puertoRicoBbox = {\n xmin: 10,\n xmax: 10,\n ymin: 14,\n ymax: 14\n}\n\nconst hawaiiBbox = {\n xmin: 1,\n xmax: 2,\n ymin: 13,\n ymax: 14\n}\n\nexport const bboxes = [usBbox, alaskaBbox, puertoRicoBbox, hawaiiBbox]\n","import { WebMercatorViewport } from '@deck.gl/core/typed'\nimport { _Tileset2D as Tileset2D } from '@deck.gl/geo-layers/typed'\nimport { ZRange } from '@deck.gl/geo-layers/typed/tileset-2d'\nimport { TileIndex } from '@deck.gl/geo-layers/typed/tileset-2d/types'\nimport { Matrix4 } from '@math.gl/core'\nimport { bboxes, withinBbox } from './utils/bbox-calculations'\n\nfunction getParentTileAt(tile: TileIndex, z: number): TileIndex {\n const x = Math.floor(tile.x / 2 ** (tile.z - z))\n const y = Math.floor(tile.y / 2 ** (tile.z - z))\n\n return { x, y, z }\n}\n\nfunction getChildTilesAt(tile: TileIndex, z: number): TileIndex[] {\n const childTiles: TileIndex[] = []\n const tilesPerAxis = 2 ** (z - tile.z)\n\n const xHigherZoom = tile.x * tilesPerAxis\n const yHigherZoom = tile.y * tilesPerAxis\n\n for (let i = 0; i < tilesPerAxis; i++) {\n for (let j = 0; j < tilesPerAxis; j++) {\n childTiles.push({\n x: xHigherZoom + i,\n y: yHigherZoom + j,\n z\n })\n }\n }\n\n return childTiles\n}\n\nexport const zLarge = 9\nexport const zSmall = 13\nfunction getTilesAtZoom(vIdx: TileIndex, z: number) {\n if (vIdx.z > z) {\n return [getParentTileAt(vIdx, z)]\n } else if (vIdx.z < z) {\n return getChildTilesAt(vIdx, z)\n }\n return [vIdx]\n}\n\nexport interface ZoomMapperItem {\n minZoom: number\n tileSizes: { z: number; binSize: number }[]\n opacity?: number\n}\n\nexport type CustomTileIndex = TileIndex & {\n binSize: number\n}\n\nexport function getCurrentZoomMapperItem(zoom: number, zoomMapper: ZoomMapperItem[]) {\n const availableZooms = zoomMapper.filter(({ minZoom }) => Math.floor(zoom) >= minZoom)\n const largestZoom = availableZooms.reduce((acc: null | ZoomMapperItem, item) => {\n if (!acc) {\n return item\n }\n\n if (item.minZoom > acc.minZoom) {\n return item\n }\n return acc\n }, null)\n return largestZoom\n}\n\nexport class CustomTileset extends Tileset2D {\n zoomMapper: ZoomMapperItem[] = []\n\n getTileIndices(opts: {\n viewport: WebMercatorViewport\n maxZoom?: number | undefined\n minZoom?: number | undefined\n zRange: ZRange | undefined\n tileSize?: number | undefined\n modelMatrix?: Matrix4 | undefined\n modelMatrixInverse?: Matrix4 | undefined\n zoomOffset?: number | undefined\n }): TileIndex[] {\n const zoom = Math.round(opts.viewport.zoom)\n\n const zoomMaxDiff = (opts.maxZoom ?? Infinity) - zoom\n const zoomMinDiff = zoom - (opts.minZoom || 0)\n\n if (zoomMaxDiff <= 0 || zoomMinDiff < 0) {\n return []\n }\n\n // User is now visualizing this tile.\n const viewportIndexes = super.getTileIndices(opts)\n\n const newIndexes = viewportIndexes.flatMap((vIdx) => {\n const zoomMapperItem = getCurrentZoomMapperItem(zoom, this.zoomMapper)\n\n const resultTiles = (zoomMapperItem?.tileSizes ?? []).flatMap((tileSize) => {\n const tiles = getTilesAtZoom(vIdx, tileSize.z)\n return tiles.filter((tile) => {\n ;(tile as CustomTileIndex).binSize = tileSize.binSize\n return bboxes.some((bbox) => withinBbox(tile, bbox))\n })\n })\n return resultTiles\n })\n\n return newIndexes\n }\n\n getParentIndex(_index: TileIndex): { x: number; y: number; z: number } {\n return { x: 0, y: 0, z: 0 }\n }\n getTileZoom(index: TileIndex): number {\n return index.z\n }\n}\n\nexport function generateTilesetForZoom(zoomMapper: ZoomMapperItem[]) {\n return class ZoomTileSet extends CustomTileset {\n zoomMapper = zoomMapper\n }\n}\n","export const hexToRGB = (hex: string) => {\n const r = parseInt(hex.slice(1, 3), 16)\n const g = parseInt(hex.slice(3, 5), 16)\n const b = parseInt(hex.slice(5, 7), 16)\n\n return [r, g, b] as const\n}\n","import { GeoBoundingBox, TileIndex, TileLoadProps } from '@deck.gl/geo-layers/typed/tileset-2d/types'\nimport { GeoJsonRecord } from './Geodata.service'\nimport { zLarge, zSmall } from './CustomTileset'\n\nexport type TileGeojsonRecord = Omit & { properties: { tileIdx: TileIndex } }\nfunction isTileRecord(item: Omit & { properties: any }): item is TileGeojsonRecord {\n return item.properties?.tileIdx\n}\n\nexport function getTileGeojson(tile: TileLoadProps) {\n const { east, west, north, south } = tile.bbox as GeoBoundingBox\n\n return {\n type: 'Feature',\n geometry: {\n type: 'Polygon',\n coordinates: [\n [\n [west, north],\n [east, north],\n [east, south],\n [west, south],\n [west, north]\n ]\n ]\n },\n properties: {\n tileIdx: tile.index\n }\n }\n}\n\nexport const DeckDebugger = {\n enabled: () => false,\n debugLineWidth(item: GeoJsonRecord | TileGeojsonRecord) {\n if (isTileRecord(item)) {\n return item.properties.tileIdx.z === zLarge ? 300 : 20\n }\n\n return 1\n },\n getLineColor(item: GeoJsonRecord | TileGeojsonRecord): [number, number, number, number] {\n if (isTileRecord(item)) {\n return item.properties.tileIdx.z === zSmall ? [255, 0, 0, 255] : [0, 0, 255, 255]\n }\n return [255, 255, 255, 255 / 2]\n }\n}\n","export const BinSize = {\n s9: 9,\n s8: 8,\n s7: 7,\n s6: 6,\n US: 5\n} as const\n\nexport const usBoundary = 0\nexport const largeBoundary2 = BinSize.s6 + 2\nexport const largeBoundary = BinSize.s7 + 2\nexport const mediumBoundary = BinSize.s8 + 2\nexport const smallBoundary = BinSize.s9 + 3\n\nexport const loadPairs = {\n smallBin: { z: BinSize.s9, binSize: BinSize.s9 },\n mediumBin: { z: BinSize.s8, binSize: BinSize.s8 },\n largeBin: { z: BinSize.s7, binSize: BinSize.s7 },\n largeBin2: { z: BinSize.s6, binSize: BinSize.s6 },\n usBin: { z: BinSize.US, binSize: BinSize.US }\n}\n","import { parse } from '@loaders.gl/core'\nimport { binaryToGeojson } from '@loaders.gl/gis'\nimport { MVTWorkerLoader } from '@loaders.gl/mvt'\nimport { GoogleMapsOverlay, GoogleMapsOverlayProps } from '@deck.gl/google-maps/typed'\nimport { TileLayer } from '@deck.gl/geo-layers/typed'\nimport { getNetworkTypeId, NetworkTypeValue } from '../../services/NetworkType.service'\nimport { FCCDataSource, GeodataService, GeoJsonRecord, MvtPayload } from './Geodata.service'\nimport { Logger } from '../../utils/Logger'\nimport { CustomTileIndex, generateTilesetForZoom, getCurrentZoomMapperItem, ZoomMapperItem } from './CustomTileset'\nimport { hexToRGB } from '../../utils/colors'\nimport { DeckDebugger, getTileGeojson, TileGeojsonRecord } from './DeckDebugger'\nimport { getGridColor, noSignalColor } from '../../utils/signalStrength'\nimport { TileLoadProps } from '@deck.gl/geo-layers/typed/tileset-2d'\nimport {\n largeBoundary,\n largeBoundary2,\n loadPairs,\n mediumBoundary,\n smallBoundary,\n usBoundary\n} from '../../services/Bin.service'\nimport { GeoJsonLayer } from '@deck.gl/layers/typed'\n\nexport const SignalStrengths = [-100, -90, -80]\nexport const SignalQualities = [-20, -15, -10]\n\nexport async function processMvt(result: Blob, tile: TileLoadProps) {\n const parsed = await parse(result, MVTWorkerLoader, {\n mvt: {\n coordinates: 'wgs84',\n tileIndex: tile.index,\n shape: 'binary'\n }\n })\n\n if (DeckDebugger.enabled()) {\n const geojson = binaryToGeojson(parsed) as any[]\n geojson.push(getTileGeojson(tile))\n return geojson\n }\n\n return parsed\n}\n\nexport class CustomMvtLayer extends TileLayer {\n private deckManager: DeckManager\n\n constructor(props: ConstructorParameters[0], deckManager: DeckManager) {\n super(props)\n this.deckManager = deckManager\n }\n\n async getTileData(tile: TileLoadProps) {\n if (!this.deckManager.carrierId) {\n return null\n }\n const reqBody: MvtPayload = {\n carrierId: this.deckManager.carrierId,\n zoomLevel: (tile.index as CustomTileIndex).binSize,\n networkType: this.deckManager.networkType,\n // TODO: this should be a backend fix. In the database x and y are inside a json, so it uses strings\n tile_x: String(tile.index.x),\n tile_y: String(tile.index.y),\n tile_z: tile.index.z\n }\n\n try {\n if (tile.signal?.aborted) {\n return null\n }\n\n const mvt = await this.deckManager.geodataService.load({\n signal: tile.signal,\n payload: reqBody\n })\n\n if (tile.signal?.aborted) {\n return null\n }\n\n return await processMvt(mvt, tile)\n } catch (error) {\n Logger.error(error)\n return null\n }\n }\n}\nCustomMvtLayer.layerName = 'CustomMvtLayer'\n\nexport type DeckManagerOptions = {\n map: google.maps.Map\n carrierId: string\n geodataService?: GeodataService\n}\nexport class DeckManager {\n geodataService: GeodataService\n\n public map: google.maps.Map\n public carrierId: string\n\n constructor(options: DeckManagerOptions) {\n this.map = options.map\n this.carrierId = options.carrierId\n this.geodataService = options.geodataService ?? new GeodataService(new FCCDataSource())\n }\n\n networkType: number = 4\n\n setNetworkType(networkType: NetworkTypeValue) {\n this.networkType = getNetworkTypeId(networkType)\n }\n\n setCarrierId(carrierId: string) {\n this.carrierId = carrierId\n }\n\n generateTileLayer({\n layerOptions,\n zoomMapper\n }: {\n layerOptions: ConstructorParameters[0] & ConstructorParameters[0]\n zoomMapper: ZoomMapperItem[]\n }) {\n const getFillColor = (item: GeoJsonRecord) => {\n if (!(item?.properties as any)?.network_performance) {\n return hexToRGB(noSignalColor)\n }\n\n const hex = getGridColor(item.properties.network_performance)\n const rgb = hexToRGB(hex)\n\n return [...rgb, 255]\n }\n\n const getOpacity = () => {\n const gmapZoom = this.map.getZoom()\n if (gmapZoom === undefined) {\n return 0\n }\n\n const deckZoom = gmapZoom - 1\n const zoomMapperItem = getCurrentZoomMapperItem(deckZoom, zoomMapper)\n if (!zoomMapperItem) {\n return 0\n }\n\n return zoomMapperItem.opacity === undefined ? 0 : zoomMapperItem.opacity\n }\n const opacity = getOpacity()\n\n const tileLayer = new CustomMvtLayer(\n {\n opacity,\n maxCacheSize: 10,\n parameters: {\n depthTest: false\n },\n maxZoom: 18,\n tileSize: 512,\n TilesetClass: generateTilesetForZoom(zoomMapper),\n getFillColor,\n getLineWidth: (item: GeoJsonRecord | TileGeojsonRecord) => {\n return DeckDebugger.enabled() ? DeckDebugger.debugLineWidth(item) : 1\n },\n getLineColor: (item: GeoJsonRecord | TileGeojsonRecord) => {\n return DeckDebugger.enabled() ? DeckDebugger.getLineColor(item) : [0, 0, 0, 255]\n },\n updateTriggers: {\n getTileData: { carrierId: this.carrierId, networkType: this.networkType }\n },\n ...layerOptions\n },\n this\n )\n\n return tileLayer\n }\n\n private overlay?: GoogleMapsOverlay = undefined\n\n private generateLayers(): GoogleMapsOverlayProps {\n const tileLayerUS = this.generateTileLayer({\n layerOptions: { id: 'layer_us', minZoom: usBoundary, maxZoom: largeBoundary2 },\n zoomMapper: [\n {\n minZoom: usBoundary,\n tileSizes: [loadPairs.usBin],\n opacity: 0.3333\n }\n ]\n })\n\n const tileLayerLarge2 = this.generateTileLayer({\n layerOptions: { id: 'layer_large2', minZoom: largeBoundary2, maxZoom: largeBoundary },\n zoomMapper: [\n {\n minZoom: largeBoundary2,\n tileSizes: [loadPairs.largeBin2],\n opacity: 0.3333\n }\n ]\n })\n\n const tileLayerLarge = this.generateTileLayer({\n layerOptions: { id: 'layer_large', minZoom: largeBoundary, maxZoom: mediumBoundary },\n zoomMapper: [\n {\n minZoom: largeBoundary,\n tileSizes: [loadPairs.largeBin],\n opacity: 0.3333\n }\n ]\n })\n\n const tileLayerMedium = this.generateTileLayer({\n layerOptions: { id: 'layer_medium', minZoom: mediumBoundary, maxZoom: smallBoundary },\n zoomMapper: [\n {\n minZoom: mediumBoundary,\n tileSizes: [loadPairs.mediumBin],\n opacity: 0.3333\n }\n ]\n })\n\n const tileLayerSmall = this.generateTileLayer({\n layerOptions: { id: 'layer_small', minZoom: smallBoundary },\n zoomMapper: [\n {\n minZoom: smallBoundary,\n tileSizes: [loadPairs.smallBin],\n opacity: 0.3333\n }\n ]\n })\n\n return { layers: [tileLayerUS, tileLayerLarge, tileLayerLarge2, tileLayerMedium, tileLayerSmall] }\n }\n\n applyLayers() {\n const layers = this.generateLayers()\n\n requestAnimationFrame(() => {\n this.overlay?.setProps(layers)\n })\n }\n\n centerAt(map: google.maps.Map, point: google.maps.LatLng) {\n const SELECT_ZOOM = 16\n\n map.setCenter(point)\n map.setZoom(SELECT_ZOOM)\n\n this.applyLayers()\n }\n\n async updateData() {\n const layers = this.generateLayers()\n\n // TODO: find better way to do this\n const forceLayerReinit = () => {\n this.overlay?.setProps({ layers: [] })\n window.requestAnimationFrame(() => {\n this.overlay?.setProps(layers)\n })\n }\n\n forceLayerReinit()\n }\n\n async setup() {\n const layers = this.generateLayers()\n this.overlay = new GoogleMapsOverlay(layers || {})\n if (process.env.NODE_ENV !== 'test') {\n this.overlay.setMap(this.map)\n }\n\n // Do we need to remove this listener?\n this.map.addListener('zoom_changed', () => {\n this.applyLayers()\n })\n }\n}\n","import { cx } from '@emotion/css'\nimport React from 'react'\nimport { NetworkTypeValue } from '../../../services/NetworkType.service'\nimport { useGeneralStore } from '../../../store'\nimport { Address } from '../../../store/address'\nimport { Carrier } from '../../../store/carrierSelector'\nimport MapComponent from '../../Map/Map'\nimport { useMarkers } from '../../Marker'\nimport { DeckManager } from '../DeckManager'\nimport { FCCDataSource, GeodataService } from '../Geodata.service'\n\nconst US_CENTER = {\n latitude: 40.116386,\n longitude: -101.299591\n}\n\nfunction getInitialCenter(\n selectedAddressFromStore: Address | undefined,\n addresses: Address[]\n): { latitude: number; longitude: number } {\n if (selectedAddressFromStore && addresses.find((address) => address.placeId === selectedAddressFromStore.placeId)) {\n return selectedAddressFromStore\n }\n\n if (addresses.length > 0) {\n return addresses[0]\n }\n\n return US_CENTER\n}\n\nconst InnerCoverageMap = ({\n className,\n markerIcon,\n markerIconActive,\n googleMap,\n ...props\n}: {\n className?: string\n deckManagerRef: React.MutableRefObject\n googleMap: google.maps.Map | undefined\n setGoogleMap: React.Dispatch>\n networkType: NetworkTypeValue\n selectedCarrier: Carrier | undefined\n onClickMarker: (address: Address) => void\n addresses: Address[]\n zoom: number\n minZoom?: number\n gestureHandling?: string\n markerIcon?: string\n markerIconActive?: string\n restriction?: google.maps.MapRestriction\n highlightedRegionPlaceId?: string\n disableMarkers?: boolean\n}) => {\n const [selectedAddress, map] = useGeneralStore((state) => [state.selectedAddress, state.map])\n const initialCenter = React.useMemo(() => {\n const initialCenterAddr = getInitialCenter(selectedAddress, props.addresses)\n const latlng: google.maps.LatLngLiteral = {\n lat: initialCenterAddr.latitude,\n lng: initialCenterAddr.longitude\n }\n return latlng\n }, [props.addresses, selectedAddress])\n const { deckManagerRef, setGoogleMap, networkType, selectedCarrier } = props\n\n React.useEffect(() => {\n if (!deckManagerRef.current) {\n return\n }\n\n deckManagerRef.current.setCarrierId(selectedCarrier?.id ?? '')\n deckManagerRef.current.setNetworkType(networkType)\n\n deckManagerRef.current.updateData()\n }, [selectedCarrier, networkType, deckManagerRef])\n\n const customizeMap = React.useCallback(\n (map: google.maps.Map) => {\n deckManagerRef.current = new DeckManager({\n map,\n carrierId: selectedCarrier?.id ?? '',\n geodataService: new GeodataService(new FCCDataSource())\n })\n deckManagerRef.current.setNetworkType(networkType)\n deckManagerRef.current.setup()\n\n setGoogleMap(map)\n },\n [deckManagerRef, networkType, selectedCarrier?.id, setGoogleMap]\n )\n\n const markerLocations = React.useMemo(() => {\n if (props.disableMarkers) {\n return []\n }\n return props.addresses.map((address) => ({ address, active: selectedAddress?.placeId === address.placeId }))\n }, [props.addresses, selectedAddress?.placeId, props.disableMarkers])\n\n useMarkers({\n onClick: props.onClickMarker,\n locations: markerLocations,\n map: googleMap,\n icon: markerIcon,\n iconActive: markerIconActive\n })\n\n return (\n \n )\n}\n\nexport default React.memo(InnerCoverageMap)\n","import { Position } from '@capacitor/geolocation'\nimport React from 'react'\nimport shallow from 'zustand/shallow'\nimport { UseCarrier } from '../../../services/Carrier.service'\nimport { NetworkTypeValue } from '../../../services/NetworkType.service'\nimport { useGeneralStore } from '../../../store'\nimport { Carrier } from '../../../store/carrierSelector'\nimport useNavigationStore from '../../../store/navigation'\nimport { getBoundsFromAddresses, getAddressFromGeolocation } from '../../../utils/Address'\nimport { DeckManager } from '../DeckManager'\nimport { trackAmplitudeEvent } from '../../../utils/amplitude'\nimport { MinimapEventController, useMinimapStore } from '../BottomTray/MinimapEventController'\nimport { Address } from '../../../store/address'\nimport { useIsMobileSize } from '../../../utils/hooks/useWindowSize'\n\nexport const useOnSelectedAddressChange = (deckManagerRef: React.MutableRefObject) => {\n const [selectedAddress] = useGeneralStore((state) => [state.selectedAddress])\n const setOwner = useMinimapStore((state) => state.setOwner)\n\n const deckManager = deckManagerRef.current\n React.useEffect(() => {\n if (deckManager?.map && selectedAddress) {\n setOwner(MinimapEventController.parentMapId)\n deckManager.map.setZoom(12)\n deckManager.map.panTo(new google.maps.LatLng(selectedAddress.latitude, selectedAddress.longitude))\n }\n }, [selectedAddress, deckManager, setOwner])\n}\n\nconst useCenterAddr = () => {\n const [addresses, currentAddress] = useGeneralStore((state) => [state.addresses, state.currentAddress])\n const userAddress = currentAddress ? addresses.find((addr) => addr.placeId === currentAddress.placeId) : undefined\n\n if (userAddress) {\n return userAddress\n }\n\n return addresses[0]\n}\n\nconst useCenterAtFirstLoad = () => {\n const [addresses, selectedAddress, setSelectedAddress] = useGeneralStore(\n (state) => [state.addresses, state.selectedAddress, state.setSelectedAddress],\n shallow\n )\n\n const centerAddr = useCenterAddr()\n\n React.useEffect(() => {\n if (!selectedAddress || !addresses.map((addr) => addr.placeId).includes(selectedAddress.placeId)) {\n setSelectedAddress(centerAddr)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n\nfunction useTrackMapInteraction() {\n const hasUserInteractedWithMap = React.useRef(false)\n\n const trackMapInteraction = React.useCallback(() => {\n if (!hasUserInteractedWithMap.current) {\n trackAmplitudeEvent('Network Map Interaction')\n hasUserInteractedWithMap.current = true\n }\n }, [])\n\n return trackMapInteraction\n}\n\nexport function useBestCarrierOrDefault(): Carrier | undefined {\n const [addresses, networkType] = useGeneralStore((state) => [state.addresses, state.networkType])\n\n const allCarriers = UseCarrier.useAvailableInMyRegion(UseCarrier.useCarriersWithRecords())\n const carriers = UseCarrier.useCarriersSplit(allCarriers)\n const defaultCarrier = carriers.data?.defaultCarriers[0]\n\n const bestCarriers = UseCarrier.useBestCarriers({ addresses, technology: networkType })\n const bestCarrier = bestCarriers.data?.[0]\n\n if (!allCarriers.data) {\n return undefined\n }\n\n if (bestCarriers.isFetched && !bestCarriers.data?.length) {\n return defaultCarrier\n }\n\n return allCarriers.data.find((carrier) => carrier.id === bestCarrier?.carrierId)\n}\n\nconst hasBeenWelcomedStorageValue = localStorage.getItem('hasBeenWelcomed')\n\ntype UseCoverageMapLogicOptions = {\n carrierId?: string\n}\nexport const useCoverageMapLogic = (options: UseCoverageMapLogicOptions) => {\n const deckManagerRef = React.useRef()\n const [googleMap, setGoogleMap] = React.useState()\n const isMobile = useIsMobileSize()\n\n const hasBeenWelcomed = React.useRef(hasBeenWelcomedStorageValue)\n\n const [isWelcomeModalOpen, setWelcomeModalOpen] = React.useState(!isMobile && !hasBeenWelcomed)\n\n const [addresses, setNetworkType, selectedAddress, setSelectedAddress] = useGeneralStore((state) => [\n state.addresses,\n state.setNetworkType,\n state.selectedAddress,\n state.setSelectedAddress\n ])\n\n const operatorId = UseCarrier.useBestCarrierOperatorId({ carrierId: options.carrierId, addresses })\n const carrierIdOperator = operatorId ?? options.carrierId\n\n React.useEffect(() => {\n if (carrierIdOperator) {\n deckManagerRef.current?.setCarrierId(carrierIdOperator ?? '')\n deckManagerRef.current?.updateData()\n }\n }, [carrierIdOperator])\n\n const [appExperience] = useNavigationStore((state) => [state.appExperience], shallow)\n\n useCenterAtFirstLoad()\n\n const bounds = React.useMemo(() => {\n return getBoundsFromAddresses(addresses)\n }, [addresses])\n\n const onSwitchNetworkType = React.useCallback(\n (newTechnology: NetworkTypeValue) => {\n setNetworkType(newTechnology)\n deckManagerRef.current?.setNetworkType(newTechnology)\n deckManagerRef.current?.updateData()\n },\n [setNetworkType]\n )\n\n const focusMarker = React.useCallback(\n (address: Address) => {\n const isAlreadySelected = address.placeId === selectedAddress?.placeId\n setSelectedAddress(address)\n\n if (isAlreadySelected) {\n deckManagerRef.current?.map.panTo(new google.maps.LatLng(selectedAddress.latitude, selectedAddress.longitude))\n }\n },\n [selectedAddress, setSelectedAddress]\n )\n\n const onCurrentPositionAdded = React.useCallback(\n async (position: Position) => {\n if (!position) {\n return\n }\n\n const address = await getAddressFromGeolocation(position)\n if (!address) {\n return\n }\n\n setSelectedAddress(address)\n },\n [setSelectedAddress]\n )\n\n const onCloseWelcomeModal = React.useCallback(() => {\n setWelcomeModalOpen(false)\n hasBeenWelcomed.current = 'true'\n localStorage.setItem('hasBeenWelcomed', hasBeenWelcomed.current)\n }, [])\n\n const trackMapInteraction = useTrackMapInteraction()\n return {\n deckManagerRef,\n googleMap,\n setGoogleMap,\n appExperience,\n bounds,\n onSwitchNetworkType,\n focusMarker,\n onCurrentPositionAdded,\n onCloseWelcomeModal,\n trackMapInteraction,\n isWelcomeModalOpen\n }\n}\n","import React from 'react'\nimport TModal from '../TModal/TModal'\nimport { css } from '@emotion/css'\nimport { IonButton, IonImg, IonText } from '@ionic/react'\nimport CloseButton from '../CloseButton/CloseButton'\nimport { applyGeneralStoreToEditStore } from '../../store/editStoreManagement'\nimport { MainNavigationPaths, RoutePaths } from '../../paths'\n\nconst DesktopWelcomeMapModalStyles = css`\n width: 692px;\n padding-top: 60px;\n\n .close-button {\n height: 13px;\n width: 13px;\n color: var(--ion-color-medium);\n position: absolute;\n top: 25px;\n right: 29px;\n }\n\n ion-text {\n margin-bottom: 12px;\n }\n\n ion-button {\n width: 100%;\n margin-top: 12px;\n text-transform: uppercase;\n height: 52px;\n }\n`\n\nexport const DesktopWelcomeMapModal: React.FC<{ onClose: () => void; isOpen: boolean }> = (props) => {\n return (\n \n
\n \n \n

Welcome to the Coverage Map

\n \n Want to see how good a carrier’s network performance really is? Add some of your favorite locations to find\n out!\n \n \n Continue to map\n \n }) => {\n const isMobile = useIsMobileSize()\n const [isLoading, setIsLoading] = React.useState(false)\n\n React.useEffect(() => {\n const evtName = 'changeLoadingState'\n const listener = (loadingState: boolean) => {\n setIsLoading(loadingState)\n }\n\n props.deckManagerRef.current?.geodataService.on(evtName, listener)\n return () => {\n try {\n props.deckManagerRef.current?.geodataService.off(evtName, listener)\n } catch (error) {\n Logger.error(error)\n }\n }\n }, [props.deckManagerRef])\n\n if (!isLoading) {\n return null\n }\n\n return (\n
\n \n
\n )\n}\n\nexport default LoadingPopup\n","import { css } from '@emotion/css'\nimport { IonItem } from '@ionic/react'\nimport { UseCarrier } from '../../../services/Carrier.service'\nimport { NetworkType, NetworkTypeValue } from '../../../services/NetworkType.service'\nimport { Carrier, CarrierPerformance } from '../../../store/carrierSelector'\n\nconst BestChipStyles = css`\n background-color: var(--ion-color-success);\n color: var(--ion-color-success-contrast);\n padding: 2px 8px;\n font-size: 14px;\n border-radius: 2px;\n margin-left: 8px;\n font-weight: 600;\n`\nconst BestChip = ({ networkType }: { networkType: NetworkTypeValue }) => {\n return
Best {networkType === NetworkType['4G'] ? '4G' : '5G'}
\n}\nconst ListStyles = css`\n margin-top: 4px;\n min-height: 250px;\n max-height: 50vh;\n @media (max-height: 750px) {\n max-height: 40vh;\n }\n\n .divider {\n border-top: 1px solid var(--ion-color-light);\n margin: 8px 0 16px 0;\n }\n`\nconst ListTitleStyles = css`\n font-size: 16px;\n font-weight: 700;\n margin: 0;\n padding: 16px 0 8px 14px;\n background-color: var(--ion-card-background);\n`\n\nconst carrierItem = (\n carrier: Carrier,\n bestCarrier: CarrierPerformance | undefined,\n selectedTechnology: NetworkTypeValue,\n onClick: (carrier: Carrier) => void\n) => (\n {\n onClick(carrier)\n }}\n button\n detail={false}\n lines='none'\n >\n {carrier.name}\n {carrier.id && carrier.id === bestCarrier?.carrierId ? : ''}\n \n)\n\nexport function SplitCarrierListScaffolding(props: {\n majorCarriersSlot: React.ReactNode | React.ReactNode[]\n otherCarriersSlot?: React.ReactNode | React.ReactNode[]\n}) {\n return (\n
\n
Major Carriers
\n {props.majorCarriersSlot}\n {props.otherCarriersSlot ? (\n <>\n
\n
Other Carriers
\n \n ) : null}\n {props.otherCarriersSlot}\n
\n )\n}\n\nexport const SplitCarrierList = ({\n carriers,\n onClick,\n selectedTechnology\n}: {\n carriers: Carrier[]\n onClick: (carrier: Carrier) => void\n selectedTechnology: NetworkTypeValue\n}) => {\n const bestCarriers = UseCarrier.useBestCarriers({ technology: selectedTechnology }).data\n const bestCarrier = bestCarriers?.[0]\n\n const { defaultCarriers, otherCarriers } = carriers.reduce<{ defaultCarriers: Carrier[]; otherCarriers: Carrier[] }>(\n (acc, carrier) => {\n carrier.has_data ? acc.defaultCarriers.push(carrier) : acc.otherCarriers.push(carrier)\n return acc\n },\n { defaultCarriers: [], otherCarriers: [] }\n )\n\n return (\n \n carrierItem(carrier, bestCarrier, selectedTechnology, onClick)\n )}\n otherCarriersSlot={\n otherCarriers.length\n ? otherCarriers.map((carrier) => carrierItem(carrier, bestCarrier, selectedTechnology, onClick))\n : undefined\n }\n />\n )\n}\n","import shallow from 'zustand/shallow'\nimport { useGeneralStore } from '../../../store'\nimport { Address } from '../../../store/address'\n\nexport function useUnsavedAddresses() {\n const [generalStoreAddresses, setAddress, setSelectedAddress] = useGeneralStore(\n (state) => [state.addresses, state.setAddress, state.setSelectedAddress],\n shallow\n )\n\n function toggleAddressSaved(address: Address) {\n setAddress({ ...address, localMemory: !address.localMemory }, getAddressIndex(address))\n }\n\n function getAddressIndex(address: Address) {\n return generalStoreAddresses.findIndex((addr) => addr.placeId === address.placeId)\n }\n\n function setLocalAddress(address: Address, index?: number) {\n setAddress({ ...address, localMemory: true }, index)\n setSelectedAddress(address)\n }\n\n return {\n setLocalAddress,\n toggleAddressSaved\n }\n}\n","import { css } from '@emotion/css'\n\nexport const EllipseHeading = css`\n top: -90px;\n`\n\nexport const EllipseBackgroundStyles = css`\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n width: 100%;\n z-index: -1;\n display: flex;\n justify-content: center;\n max-height: 300px;\n min-height: 300px;\n min-width: 370px;\n\n svg {\n width: 100%;\n max-height: 300px;\n min-height: 300px;\n color: #e5e832;\n }\n`\n","import { cx } from '@emotion/css'\nimport { EllipseBackgroundStyles } from './EllipseBackground.styles'\n\nexport function EllipseBackground(props: { className?: string }) {\n return (\n
\n \n \n \n
\n )\n}\n","import { cx } from '@emotion/css'\nimport { EllipseBackgroundStyles } from './EllipseBackground.styles'\n\nexport function EllipseBackgroundDesktop({ className }: { className?: string }) {\n return (\n
\n \n \n \n
\n )\n}\n","import { cx } from '@emotion/css'\nimport { EllipseBackgroundStyles } from './EllipseBackground.styles'\n\nexport function EllipseBackgroundLong({ className }: { className?: string }) {\n return (\n
\n \n \n \n
\n )\n}\n","import { css, cx } from '@emotion/css'\nimport { IonButton, IonIcon, IonRouterLink } from '@ionic/react'\nimport { arrowBack } from 'ionicons/icons'\nimport { useLocation } from 'react-router'\nimport { useOpenFrom } from './Header'\n\nconst BackButtonStyles = css`\n &::part(native) {\n padding: 0;\n }\n\n height: 32px;\n width: 32px;\n ion-icon {\n width: 32px;\n height: 32px;\n }\n`\n\nexport function BackButton({ onClick }: { onClick: React.MouseEventHandler }) {\n return (\n \n \n \n )\n}\n\nexport function BackButtonLink({ backTo }: { backTo: string }) {\n const location = useLocation()\n const openFrom = useOpenFrom()\n\n if (backTo && typeof backTo !== 'string') {\n return <>{backTo}\n }\n\n return (\n \n \n \n )\n}\n","import { css, cx } from '@emotion/css'\nimport { IonHeader, IonToolbar } from '@ionic/react'\nimport * as React from 'react'\nimport { MOBILE_BREAKPOINT } from '../../utils/hooks/useWindowSize'\n\nconst HeaderTitleStyles = css`\n margin-bottom: 0;\n`\nexport function HeaderTitle(props: { children?: React.ReactNode[] | React.ReactNode; className?: string }) {\n return

{props.children}

\n}\n\nconst BaseHeaderStyles = css`\n background-color: var(--goji-primary-lime);\n\n h3 {\n margin-top: 0;\n }\n\n &.remove-border {\n border-bottom: none;\n }\n\n &.add-border-radius {\n border-bottom-left-radius: 16px;\n border-bottom-right-radius: 16px;\n\n ion-toolbar {\n border-bottom-left-radius: 16px;\n border-bottom-right-radius: 16px;\n }\n }\n\n ion-toolbar {\n --background: var(--goji-primary-lime);\n position: relative;\n }\n\n color: var(--ion-color-dark);\n\n @media screen and (min-width: ${MOBILE_BREAKPOINT}px) {\n display: none !important;\n }\n`\n\ninterface BaseHeaderToolbarProps {\n children?: React.ReactNode\n className?: string\n headerClassName?: string\n border?: boolean\n noBorder?: boolean\n}\nexport function BaseHeaderToolbar(props: BaseHeaderToolbarProps) {\n return (\n \n \n {props.children}\n \n \n )\n}\n\nexport function BaseHeader({ children, className, ...props }: BaseHeaderToolbarProps) {\n return (\n \n
{children}
\n
\n )\n}\n","import { css } from '@emotion/css'\n\nexport const HeaderButton = css`\n height: 48px !important;\n width: 48px;\n margin: 0 !important;\n border-radius: 5px;\n\n ion-icon {\n width: 24px;\n height: 24px;\n }\n`\n\nexport const HeaderStyles = css`\n h1 {\n margin: 0;\n margin-left: 4px;\n }\n\n ion-title {\n cursor: pointer;\n }\n .reset-placeholder {\n width: 35.59px;\n }\n`\n","import * as React from 'react'\nimport {\n IonHeader,\n IonToolbar,\n IonButtons,\n IonBackButton,\n IonButton,\n IonIcon,\n IonTitle,\n IonRow,\n IonImg,\n IonRouterLink\n} from '@ionic/react'\nimport { useBoundStore } from '../../store'\nimport { useHistory, useLocation } from 'react-router'\nimport { cx } from '@emotion/css'\nimport { HeaderButton, HeaderStyles } from './HeaderStyles'\nimport { arrowBack } from 'ionicons/icons'\nimport { useSafeLocation } from '../../utils/hooks/useSafeLocation'\nimport { RoutePaths } from '../../paths'\n\nconst BackButton: React.FC<{ backTo?: string | React.ReactNode }> = ({ backTo }) => {\n const location = useLocation()\n\n if (backTo && typeof backTo !== 'string') {\n return <>{backTo}\n }\n\n return backTo ? (\n \n \n \n ) : (\n \n )\n}\n\nexport function useOpenFrom() {\n const location = useSafeLocation()\n const queryParams = new URLSearchParams(location?.search)\n const openFrom = queryParams.get('open-from')\n return openFrom\n}\n\nexport function useFinishOnOpenFrom() {\n const location = useSafeLocation()\n const queryParams = new URLSearchParams(location?.search)\n const finishOnOpenFrom = queryParams.has('finish-on-open-from')\n return finishOnOpenFrom\n}\n\ninterface HeaderProps {\n backTo?: string | React.ReactNode\n hideReset?: boolean\n}\nconst Header: React.FC = ({ backTo, hideReset }) => {\n const history = useHistory()\n const reset = useBoundStore((state) => state.reset)\n const openFrom = useOpenFrom()\n\n const onClickTitle = () => {\n history.replace('/')\n }\n\n return (\n \n \n \n \n \n\n \n \n \n \n \n\n \n {hideReset || openFrom ? (\n
\n ) : (\n {\n reset()\n history.replace(RoutePaths.carrierSelector)\n }}\n color='dark'\n >\n \n \n )}\n \n \n \n )\n}\n\nexport default Header\n","import { css, cx } from '@emotion/css'\nimport { IonIcon } from '@ionic/react'\nimport { caretDown } from 'ionicons/icons'\n\nexport const ControlChipStyles = css`\n cursor: pointer;\n height: 34px;\n font-size: 14px;\n color: var(--ion-text-color) !important;\n display: flex;\n align-items: center;\n gap: 4px;\n background-color: #eff6e7;\n border-radius: 10px;\n padding: 5px 8px 5px 12px;\n white-space: nowrap;\n\n ion-select {\n padding-inline-start: 0;\n\n &::part(icon) {\n position: relative;\n right: 0;\n opacity: 0.6;\n }\n\n &::part(text) {\n justify-content: flex-start;\n }\n }\n\n ion-icon {\n opacity: 0.6;\n font-size: 20px;\n }\n`\n\nexport const customIconStyles = css`\n height: 18px;\n`\n\ninterface ControlChipProps {\n id?: string\n icon?: string | JSX.Element\n text: string\n title?: string\n endIcon?: string | JSX.Element\n onClick?: (e: React.MouseEvent) => void\n className?: string\n}\n\nfunction ControlChipIcon(props: { icon: ControlChipProps['icon'] }) {\n if (!props.icon) {\n return null\n }\n return typeof props.icon === 'string' ? (\n \n ) : (\n
{props.icon}
\n )\n}\n\nfunction ControlChip(props: ControlChipProps) {\n return (\n \n \n {props.text}\n {props.endIcon ? (\n typeof props.endIcon === 'string' ? (\n \n ) : (\n props.endIcon\n )\n ) : (\n \n )}\n \n )\n}\n\nexport default ControlChip\n","import { css } from '@emotion/css'\n\nconst drawerStyles = css`\n color: var(--ion-text-color);\n display: flex;\n gap: 24px;\n flex-direction: column;\n align-items: start;\n\n padding: 24px 30px;\n\n .section {\n .section-title {\n font-size: 18px;\n font-weight: 900;\n }\n\n .chips-container {\n margin-top: 12px;\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n\n .chip {\n width: fit-content;\n white-space: nowrap;\n padding: 5px 10px;\n border-radius: 8px;\n border: 1px solid rgba(0, 0, 0, 0.12);\n cursor: pointer;\n }\n }\n }\n`\n\ninterface DrawerSectionsProps {\n sections?: { title: string; chips: string[] }[]\n onSearch: (search: string) => void\n}\n\nexport function DrawerSections(props: DrawerSectionsProps) {\n return (\n
\n {props.sections?.map(\n (section) =>\n section.chips.length > 0 && (\n
\n {section.title}\n
\n {section.chips.map((search, index) => (\n {\n props.onSearch(search)\n }}\n >\n {search}\n
\n ))}\n
\n
\n )\n )}\n
\n )\n}\n","import { css } from '@emotion/css'\nimport { MOBILE_BREAKPOINT_MAX } from '../../../../utils/hooks/useWindowSize'\n\nexport const PlanSearchbarStyles = css`\n --border-radius: 42px;\n --color: var(--ion-text-color);\n --placeholder-color: var(--ion-text-color);\n --placeholder-font-weight: 500;\n --box-shadow: none;\n\n .searchbar-input {\n padding-inline-start: 42px;\n }\n\n height: 40px;\n min-height: 40px;\n opacity: 0.8;\n\n transition: transform 0.3s, opacity 0.3s visibility 0.3s;\n &.state-collapsed {\n transform: translateY(-40px);\n }\n &.state-only-tabs {\n transform: translateY(-100%);\n opacity: 0 !important;\n visibility: hidden;\n transition: transform 0.3s, opacity 0.3s, visibility 0;\n transition-delay: 0, 0, 0.3s;\n }\n\n &.searchbar-has-focus,\n &.searchbar-has-value {\n opacity: 1;\n }\n`\n\nexport const PlanHeaderSearchbarStyles = css`\n margin-bottom: 10px;\n\n @media screen and (max-width: ${MOBILE_BREAKPOINT_MAX}px) {\n width: 90%;\n margin-left: 5%;\n }\n`\n","import { css, cx } from '@emotion/css'\nimport { IonButton, IonContent, IonModal, IonSearchbar } from '@ionic/react'\nimport * as React from 'react'\nimport 'swiper/css'\nimport { HideDesktopStyles } from '../../../utils/styles/ViewportUtils.styles'\nimport { DrawerSections } from './DrawerSections'\nimport { PlanSearchbarStyles } from './styles/toolbar.styles'\n\nconst searchBarWrapperStyles = css`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: calc(15px + env(safe-area-inset-top)) 20px 15px;\n height: fit-content;\n border-bottom: 2px solid rgba(0, 0, 0, 0.5);\n`\n\ninterface PlansHeaderSearchDrawerProps {\n initValue: string\n isOpen: boolean\n onDismiss: () => void\n onSearch: (search: string) => void\n clearSearch?: () => void\n sections?: { title: string; chips: string[] }[]\n}\n\nexport function PlansHeaderSearchDrawer(props: PlansHeaderSearchDrawerProps) {\n const ref = React.useRef(null)\n\n return (\n ref.current?.setFocus()}\n className={HideDesktopStyles}\n >\n \n
\n {\n if (e.key === 'Enter') {\n props.onSearch(e.currentTarget.value!)\n props.onDismiss()\n }\n }}\n />\n \n Cancel\n \n
\n {\n props.onSearch(search)\n props.onDismiss()\n }}\n />\n
\n \n )\n}\n","export function EditIcon(props?: { className?: string }): JSX.Element {\n return (\n \n \n \n \n \n \n \n \n \n \n )\n}\n","import { IonContent, IonIcon, IonItem, IonList, IonPopover } from '@ionic/react'\nimport { ControlChipStyles, customIconStyles } from './ControlChip'\nimport React from 'react'\nimport { caretDown } from 'ionicons/icons'\nimport { css } from '@emotion/css'\n\nconst DropdownSelectorStyle = css`\n ion-item {\n --inner-border-width: 0px;\n }\n`\n\ninterface DropdownOption {\n value: number | string\n label: string\n}\n\ninterface DropdownOptionsProps {\n value: number | string\n onValueChange: (value: any) => void\n icon: string | JSX.Element\n text?: string\n options: DropdownOption[]\n endIcon?: string | JSX.Element\n}\n\nexport const DropdownSelector = ({ value, onValueChange, icon, text, endIcon, options }: DropdownOptionsProps) => {\n const popover = React.useRef(null)\n const [popoverOpen, setPopoverOpen] = React.useState(false)\n\n const openPopover = (e: React.MouseEvent) => {\n popover.current!.event = e\n setPopoverOpen(true)\n }\n return (\n <>\n
\n {typeof icon === 'string' ? :
{icon}
}\n {text}\n {options.find((option) => option.value === value)?.label}\n {endIcon ? (\n typeof endIcon === 'string' ? (\n \n ) : (\n endIcon\n )\n ) : (\n \n )}\n
\n setPopoverOpen(false)}\n className={DropdownSelectorStyle}\n >\n \n \n {options.map((option) => (\n {\n onValueChange(option.value)\n setPopoverOpen(false)\n }}\n className=''\n >\n {option.label}\n \n ))}\n \n \n \n \n )\n}\n","import React from 'react'\nimport { css, cx } from '@emotion/css'\nimport { peopleOutline, swapVerticalOutline } from 'ionicons/icons'\nimport ControlChip from './ControlChip'\nimport { EditIcon } from '../../CoverageMap/MobileMapAddressesHeader'\nimport { useHistory } from 'react-router'\nimport { MOBILE_BREAKPOINT, MOBILE_BREAKPOINT_MAX } from '../../../utils/hooks/useWindowSize'\nimport { MainNavigationPaths, RoutePaths } from '../../../paths'\nimport { RECOMMENDED_TAB } from '../../../pages/plans/tabs/PlanTab'\nimport { DropdownSelector } from './DropdownSelector'\nimport { applyGeneralStoreToEditStore } from '../../../store/editStoreManagement'\nimport { getFilterDiff } from '../../../pages/plan-filters/components/utils/filters-diff'\nimport { getInitialPreferencesV3 } from '../../../store/standalone/filters-store/filter-plans'\nimport useFiltersStore from '../../../store/standalone/filters-store/filters-store'\nimport { HideDesktopStyles } from '../../../utils/styles/ViewportUtils.styles'\nimport { SortingOption, SortingOptions } from './SortingOption'\n\nconst chipsStyles = css`\n position: absolute;\n z-index: 9;\n background-color: transparent;\n padding-bottom: 8px;\n width: 100%;\n display: flex;\n gap: 8px;\n overflow-x: auto;\n ::-webkit-scrollbar {\n display: none; // Safari and Chrome\n }\n -ms-overflow-style: none; // IE and Edge\n scrollbar-width: none; // Firefox\n scroll-behavior: smooth;\n\n > * {\n margin-right: 8px;\n }\n > *:first-child {\n margin-left: 16px;\n }\n > *:last-child {\n margin-right: 16px;\n }\n\n @media screen and (max-width: ${MOBILE_BREAKPOINT_MAX}px) {\n top: calc(134px + env(safe-area-inset-top));\n }\n\n --toolbar-size: 108px;\n\n @media screen and (min-width: ${MOBILE_BREAKPOINT}px) {\n left: var(--plans-tab-horizontal-padding);\n top: calc(\n var(--toolbar-size) + env(safe-area-inset-top) + var(--desktop-header-size) + var(--plans-header-padding-top)\n );\n }\n\n transition: opacity 0.3s, transform 0.3s, border-bottom 0.3s;\n &.collapsed {\n transform: translateY(-100%);\n opacity: 0;\n pointer-events: none;\n }\n\n border-bottom: 2px solid var(--ion-color-light);\n &.borderless {\n border-bottom: 2px solid transparent;\n }\n`\n\ninterface PlansHeaderChipsProps {\n className?: string\n collapsed?: boolean\n showFiltersChip: boolean\n nLinesFilter: number\n onNLinesFilterChange: (nLines: number) => void\n sortBy: string\n onSortByChange: (sortBy: SortingOption) => void\n editPreferences?: boolean\n onEditPreferencesClick?: () => void\n isOnTop?: boolean\n}\n\nexport function PlansHeaderChips(props: PlansHeaderChipsProps) {\n const history = useHistory()\n const { nLinesFilter, sortBy, onNLinesFilterChange, onSortByChange } = props\n\n const filters = useFiltersStore()\n const diffCount = React.useMemo(() => {\n const diff = getFilterDiff(filters, getInitialPreferencesV3())\n return Object.keys(diff).length\n }, [filters])\n\n return (\n <>\n \n {props.showFiltersChip ? (\n {\n const search = new URLSearchParams(history.location.search)\n search.set('filters-open', 'true')\n history.push({ ...history.location, pathname: window.location.pathname, search: search.toString() })\n }}\n icon='/assets/icons/ic_baseline-tune.svg'\n text={diffCount > 0 ? '+' + diffCount : ''}\n />\n ) : null}\n \n\n \n\n {props.editPreferences && (\n {\n applyGeneralStoreToEditStore()\n history.replace(\n RoutePaths.carrierSelector + '?open-from=' + MainNavigationPaths.plans + '/' + RECOMMENDED_TAB\n )\n }}\n />\n )}\n
\n \n )\n}\n","import { css, cx } from '@emotion/css'\nimport { PlansHeaderStates } from './PlansHeader'\nimport { DrawerSections } from './DrawerSections'\nimport { useIsMobileSize } from '../../../utils/hooks/useWindowSize'\n\nconst PlansHeaderSearchDrawerDesktopStyles = css`\n position: absolute;\n width: 100vw;\n top: 0;\n z-index: 100;\n color: var(--ion-color-dark);\n transition: transform 0.3s;\n background-color: #fff;\n padding: 0 var(--plans-tab-horizontal-padding);\n\n display: none;\n &.is-open {\n display: block;\n &.state-expanded {\n transform: translateY(184px);\n }\n &.state-collapsed {\n transform: translateY(144px);\n }\n &.state-only-tabs {\n transform: translateY(132px);\n }\n }\n`\n\nconst backdropStyles = css`\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n z-index: 8;\n background-color: rgba(0, 0, 0, 0.5);\n display: none;\n &.is-open {\n display: block;\n }\n`\n\ninterface PlansHeaderSearchDrawerDesktopProps {\n isOpen: boolean\n expandState: PlansHeaderStates\n onSearch: (search: string) => void\n onDismiss: () => void\n sections?: { title: string; chips: string[] }[]\n}\n\nexport function PlansHeaderSearchDrawerDesktop(props: PlansHeaderSearchDrawerDesktopProps) {\n const isMobile = useIsMobileSize()\n if (isMobile) {\n return null\n }\n return (\n <>\n
\n {\n props.onSearch(search)\n props.onDismiss()\n }}\n />\n
\n
props.onDismiss()}>
\n \n )\n}\n","import { css, cx } from '@emotion/css'\nimport { IonHeader, IonSearchbar, IonToolbar } from '@ionic/react'\nimport * as React from 'react'\nimport 'swiper/css'\nimport { FreeMode } from 'swiper'\nimport { Swiper, SwiperRef, SwiperSlide } from 'swiper/react'\nimport { PlansHeaderSearchDrawer } from './PlansHeaderSearchDrawer'\nimport { PlansHeaderChips } from './PlansHeaderChips'\nimport { PlansHeaderSearchDrawerDesktop } from './PlansHeaderSearchDrawerDesktop'\nimport { MOBILE_BREAKPOINT, useIsMobileSize } from '../../../utils/hooks/useWindowSize'\nimport { HideDesktopStyles, HideMobileStyles } from '../../../utils/styles/ViewportUtils.styles'\nimport { useRecentPlanSearch } from '../../../utils/hooks/useRecentPlanSearch'\nimport { useBoundStore } from '../../../store'\nimport { TitlesWrapperStyles } from '../../../pages/profile/SavedPlans.styles'\nimport { PlanHeaderSearchbarStyles, PlanSearchbarStyles } from './styles/toolbar.styles'\nimport { SortingOption, SortingOptions } from './SortingOption'\n\nexport const plansHeaderStyles = css`\n --background: var(--goji-primary-lime);\n --border-width: 0 !important;\n --padding-start: 0;\n --padding-end: 0;\n\n box-shadow: 0px 4px 4px 0px #0000000d;\n\n color: var(--ion-color-dark);\n transition: height 0.3s;\n &.state-collapsed {\n height: var(--plans-header-collapsed-height);\n }\n &.state-only-tabs {\n height: var(--plans-header-only-tabs-height);\n }\n\n .titles-wrapper {\n width: 100%;\n padding: 0 45px;\n &.state-collapsed {\n transform: translateY(-100%);\n opacity: 0;\n }\n margin-top: 16px;\n margin-bottom: 14px;\n transition: font-size 0.3s, opacity 0.3s, font-weight 0.3s, transform 0.3s, opacity 0.3s;\n align-items: end;\n\n .swiper-wrapper > .swiper-slide {\n width: fit-content;\n height: 26px;\n display: flex;\n }\n\n &.desktop {\n display: flex;\n height: 26px;\n }\n }\n`\n\nconst headerTitleStyles = css`\n @media screen and (min-width: ${MOBILE_BREAKPOINT}px) {\n padding: 0 25px;\n }\n text-wrap: nowrap;\n display: flex;\n align-items: flex-end;\n transition: font-size 0.3s, opacity 0.3s, transform 0.3s;\n cursor: pointer;\n overflow: visible;\n`\n\nexport enum PlansHeaderStates {\n EXPANDED = 'state-expanded',\n COLLAPSED = 'state-collapsed',\n ONLY_TABS = 'state-only-tabs'\n}\n\ninterface PlansHeaderTitleProps {\n title: string\n selected?: boolean\n onClick?: () => void\n}\n\nfunction PlansHeaderTitle(props: PlansHeaderTitleProps) {\n return (\n \n {props.title}\n
\n )\n}\n\nconst MAX_SEARCH_LENGTH = 40\n\ninterface PlansHeaderProps {\n className?: string\n tabs: string[]\n onTabChange?: (tab: number) => void\n tab: number\n expandedState: PlansHeaderStates\n isOnTop?: boolean\n search?: string\n nLinesFilter: number\n onSearch?: (search: string) => void\n onFilter?: (nLines: number) => void\n sortByPerTab: { [key: number]: SortingOption }\n onSort?: (sortBy: SortingOption, tab: number) => void\n children?: React.ReactNode\n headerChipsClassName?: string\n}\n\nexport const PlansHeader = React.forwardRef(function PlansHeader(\n props: PlansHeaderProps,\n swiperRef: React.ForwardedRef\n) {\n const isMobile = useIsMobileSize()\n const state = props.expandedState || PlansHeaderStates.EXPANDED\n const discover = ['AT&T', 'T-Mobile', 'Verizon', 'U.S. Cellular', 'Mint Mobile', 'Unlimited']\n\n const [isSearchDrawerOpen, setIsSearchDrawerOpen] = React.useState(false)\n\n const recentPlans = useBoundStore((state) => state.searchedPlansHistory)\n const { handleSearch } = useRecentPlanSearch()\n\n const handleSearchWrapper = async (search: string) => {\n props.onSearch?.(search)\n setIsSearchDrawerOpen(false)\n await handleSearch(search)\n }\n\n return (\n <>\n \n \n {props.children}\n setIsSearchDrawerOpen(false)}\n >\n {props.tabs.map((child, index) => (\n \n props.onTabChange?.(index)}\n />\n \n ))}\n \n \n {props.tabs.map((child, index) => (\n props.onTabChange?.(index)}\n />\n ))}\n \n {\n if (e.key === 'Enter') {\n handleSearchWrapper(e.currentTarget.value!)\n ;(e.nativeEvent.target as HTMLInputElement).blur()\n }\n }}\n onIonFocus={() => {\n setIsSearchDrawerOpen(true)\n }}\n onIonClear={() => {\n handleSearchWrapper('')\n }}\n />\n \n \n {\n props.onFilter?.(nLines)\n }}\n sortBy={props.sortByPerTab[props.tab] ?? SortingOptions[0].value}\n onSortByChange={(sortBy) => {\n props.onSort?.(sortBy, props.tab)\n }}\n showFiltersChip={props.tab === 0}\n editPreferences={false}\n isOnTop={props.isOnTop}\n />\n {isMobile && (\n {\n handleSearchWrapper(search)\n }}\n clearSearch={() => {\n handleSearchWrapper('')\n }}\n onDismiss={() => setIsSearchDrawerOpen(false)}\n sections={[\n { title: 'History', chips: recentPlans || [] },\n { title: 'Discover', chips: discover }\n ]}\n />\n )}\n {\n handleSearchWrapper(search)\n }}\n onDismiss={() => setIsSearchDrawerOpen(false)}\n expandState={state}\n />\n \n )\n})\n","import { RecentSearchService } from '../../services/RecentSearch.service'\nimport { useBoundStore } from '../../store'\n\nexport const useRecentPlanSearch = () => {\n const setRecentPlanSearch = useBoundStore((state) => state.setSearchedPlansHistory)\n\n const handleSearch = async (search: string) => {\n const newSearchHistory = await RecentSearchService.addRecentPlanSearch(search)\n if (!newSearchHistory) return\n setRecentPlanSearch(newSearchHistory)\n }\n\n return { handleSearch }\n}\n","export enum SortingOption {\n Featured = 'Featured',\n Recommended = 'Recommended',\n Carrier = 'Carrier',\n PriceLowToHigh = 'Price low',\n PriceHighToLow = 'Price high',\n Popularity = 'Popularity',\n\n // Is present in the new UI?\n NetworkPerformance = 'network-performance'\n}\n\nexport const SortingOptions = [\n { label: 'Featured', value: 'Featured' },\n { label: 'Carrier', value: 'Carrier' },\n { label: 'Price low', value: 'Price low' },\n { label: 'Price high', value: 'Price high' },\n { label: 'Popularity', value: 'Popularity' }\n]\n","import * as React from 'react'\nimport throttle from 'lodash/throttle'\nimport { PlansHeaderStates } from './PlansHeader'\nimport { useAutoChatStorage } from '../../../pages/llm/hooks/useChatStorage'\n\nfunction getHeaderState(direction: 'up' | 'down'): PlansHeaderStates {\n if (direction === 'up') {\n return PlansHeaderStates.EXPANDED\n }\n\n return PlansHeaderStates.COLLAPSED\n}\n\nfunction getPlanHeaderState(direction: 'up' | 'down', selectedTab: number, wizardState: WizardState) {\n if (selectedTab === 1 && wizardState !== 'completed') {\n return PlansHeaderStates.ONLY_TABS\n }\n\n return getHeaderState(direction)\n}\n\nexport function useHeaderExpandedState() {\n const [headerState, setHeaderState] = React.useState(PlansHeaderStates.EXPANDED)\n const [isOnTop, setIsOnTop] = React.useState(true)\n\n const handleMove = throttle((direction: 'up' | 'down') => {\n setHeaderState(getHeaderState(direction))\n }, 300)\n\n const handleReachTop = React.useCallback(() => {\n setIsOnTop(true)\n }, [])\n\n return {\n isOnTop,\n headerState,\n setHeaderState,\n handleMove,\n handleReachTop\n }\n}\n\nexport type WizardState = 'stale' | 'in-progress' | 'completed'\nexport function usePlanFinderState(): WizardState {\n const { chatStorage } = useAutoChatStorage()\n\n if (!chatStorage.data) {\n return 'stale'\n }\n\n if (chatStorage.data.chatStatus === 'ended') {\n return 'completed'\n }\n\n if (chatStorage.data.chatTimeline.length > 1) {\n return 'in-progress'\n }\n return 'stale'\n}\n\nexport function usePlansPageExpandedState(selectedTab: number) {\n const { headerState, setHeaderState, isOnTop, handleReachTop } = useHeaderExpandedState()\n const planFinderState = usePlanFinderState()\n\n const handleMove = React.useCallback(\n (direction: 'up' | 'down') => {\n setHeaderState(getPlanHeaderState(direction, selectedTab, planFinderState))\n },\n [setHeaderState, selectedTab, planFinderState]\n )\n\n const onSlideChange = React.useCallback(\n (tabIndex: number) => {\n if (tabIndex !== 1) {\n setHeaderState(PlansHeaderStates.EXPANDED)\n } else if (planFinderState !== 'completed') {\n setHeaderState(PlansHeaderStates.ONLY_TABS)\n } else {\n setHeaderState(PlansHeaderStates.EXPANDED)\n }\n },\n [setHeaderState, planFinderState]\n )\n\n return {\n isOnTop,\n headerState,\n handleMove,\n handleReachTop,\n onSlideChange\n }\n}\n","import { css } from '@emotion/css'\n\nexport const BackButtonStyles = css`\n height: 32px;\n width: 32px;\n ion-icon {\n width: 32px;\n height: 32px;\n }\n`\n\nexport const FavoriteButtonStyles = css`\n background-color: transparent;\n color: var(--ion-color-dark);\n margin-top: 8px;\n width: 24px;\n height: 24px;\n .heart-icon {\n object-fit: contain;\n width: 20px;\n height: 20px;\n }\n justify-self: end;\n`\n\nexport const InnerHeaderStyles = css`\n font-weight: 900;\n width: 100%;\n padding: 0 16px;\n display: flex;\n\n justify-content: space-between;\n align-items: center;\n\n .title {\n font-size: 18px;\n text-align: center;\n }\n\n .close-button {\n width: 40px;\n height: 40px;\n }\n`\n","import { cx } from '@emotion/css'\nimport { IonIcon, IonRouterLink } from '@ionic/react'\nimport { arrowBack } from 'ionicons/icons'\nimport { BaseHeader } from './BaseHeader'\nimport { BackButtonStyles, FavoriteButtonStyles, InnerHeaderStyles } from './SummaryHeaderStyles'\n\nconst heart = 'assets/icons/heart.svg'\nconst heartOutline = 'assets/icons/heartOutline.svg'\n\nconst BackButton = ({ onClick }: { onClick: React.MouseEventHandler }) => {\n return (\n \n \n \n )\n}\n\nexport const FavoriteButton = ({\n isFavorite,\n onClick,\n className\n}: {\n isFavorite?: boolean\n onClick: React.MouseEventHandler\n className?: string\n}) => {\n return (\n \n )\n}\n\nexport const SummaryHeader = ({\n isFavorite,\n onFavoriteClick,\n onBackClick\n}: {\n isFavorite?: boolean\n onFavoriteClick: React.MouseEventHandler\n onBackClick: () => void\n}) => {\n return (\n \n \n
Plan Summary
\n \n
\n )\n}\n","import { css } from '@emotion/css'\nimport { IonButton, IonIcon, IonModal } from '@ionic/react'\nimport { close } from 'ionicons/icons'\nimport React from 'react'\n\nconst InfoDialogStyles = css`\n --width: fit-content;\n --max-width: 280px;\n --height: fit-content;\n --border-radius: 10px;\n --box-shadow: 0 28px 48px rgba(0, 0, 0, 0.4) !important;\n --backdrop-opacity: var(--ion-backdrop-opacity, 0.32) !important;\n\n .ion-delegate-host {\n padding: 16px;\n color: var(--ion-color-dark);\n\n .close-top-right-button {\n position: absolute;\n top: 0;\n right: 0;\n width: 40px;\n height: 40px;\n margin: 16px;\n --padding-start: 0;\n --padding-end: 0;\n }\n\n .close-bottom-button {\n border-radius: 30px;\n border: 2px solid var(--ion-color-primary);\n width: 100%;\n margin-top: 24px;\n font-weight: 700;\n font-size: 16px;\n }\n\n .content-wrapper {\n margin-top: 48px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n .title {\n margin: 0;\n text-align: start;\n font-size: 22px;\n font-weight: 900;\n color: var(--goji-primary-black);\n }\n\n > p {\n text-align: start;\n font-size: 16px;\n font-weight: 500;\n color: var(--goji-primary-black);\n margin: 0;\n }\n }\n }\n`\n\ninterface InfoDialogProps {\n isOpen: boolean\n onClose: () => void\n title?: string\n content?: string | JSX.Element\n}\n\nconst stopPropagation = (e: React.MouseEvent) => e.stopPropagation()\n\nconst InfoDialog = (props: InfoDialogProps) => {\n const modalRef = React.useRef(null)\n\n return (\n \n modalRef.current?.dismiss()} className='close-top-right-button'>\n \n \n
\n

{props.title}

\n

{props.content}

\n
\n modalRef.current?.dismiss()} className='close-bottom-button'>\n CLOSE\n \n \n )\n}\n\nexport default InfoDialog\n","import { css, cx } from '@emotion/css'\n\nconst BaseBannerStyles = css`\n display: flex;\n flex-direction: column;\n align-items: start;\n text-align: start;\n\n gap: 4px;\n padding: 8px 8px 8px 16px;\n margin: 8px 16px;\n\n border-radius: 10px;\n border-left: 4px solid;\n\n .title {\n font-size: 14px;\n font-weight: 600;\n }\n\n .content {\n font-size: 13px;\n font-weight: 500;\n }\n`\n\ninterface BaseBannerProps {\n title: string\n content: string\n className?: string\n bgColor?: string\n accentColor?: string\n textColor?: string\n}\n\nconst BaseBanner = (props: BaseBannerProps) => {\n return (\n \n
{props.title}
\n
{props.content}
\n \n )\n}\n\nexport interface ListBannerProps {\n title: string\n content: string\n className?: string\n}\n\nexport const WarningBanner = (props: ListBannerProps) => {\n return \n}\n\n// * Info: Other banners like Success, Info, Error, etc. can be added here just like WarningBanner\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst isLatLngLiteral = (obj) => obj != null &&\n typeof obj === \"object\" &&\n Number.isFinite(obj.lat) &&\n Number.isFinite(obj.lng);\nconst isLatLngOrLatLngLiteral = (obj) => obj instanceof google.maps.LatLng || isLatLngLiteral(obj);\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst isMapDirectionsOptionsLiteral = (obj) => obj != null && typeof obj === \"object\" && isLatLngOrLatLngLiteral(obj.origin);\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isMapDirectionsOptionsLiteral: isMapDirectionsOptionsLiteral\n});\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst isCircleLiteral = (obj) => obj != null &&\n typeof obj === \"object\" &&\n isLatLngOrLatLngLiteral(obj.center) &&\n Number.isFinite(obj.radius);\nconst isCircleOrCircleLiteral = (obj) => obj instanceof google.maps.Circle || isCircleLiteral(obj);\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst isLatLngBoundsLiteral = (obj) => obj != null &&\n typeof obj === \"object\" &&\n Number.isFinite(obj.east) &&\n Number.isFinite(obj.north) &&\n Number.isFinite(obj.south) &&\n Number.isFinite(obj.west);\nconst isLatLngBoundsOrLatLngBoundsLiteral = (obj) => obj instanceof google.maps.LatLngBounds || isLatLngBoundsLiteral(obj);\n\nexport { isCircleLiteral, isCircleOrCircleLiteral, isLatLngBoundsLiteral, isLatLngBoundsOrLatLngBoundsLiteral, isLatLngLiteral, isLatLngOrLatLngLiteral, index as localContext };\n","import * as React from 'react'\nimport { createCustomEqual, deepEqual } from 'fast-equals'\nimport { isLatLngLiteral } from '@googlemaps/typescript-guards'\n\nconst deepCompareEqualsForMaps = createCustomEqual((): any => (a: any, b: any) => {\n if (isLatLngLiteral(a) || a instanceof google.maps.LatLng || isLatLngLiteral(b) || b instanceof google.maps.LatLng) {\n return new google.maps.LatLng(a).equals(new google.maps.LatLng(b))\n }\n\n // TODO extend to other types\n\n // use fast-equals for other objects\n return deepEqual(a, b)\n})\n\nfunction useDeepCompareMemoize(value: any) {\n const ref = React.useRef()\n\n if (!deepCompareEqualsForMaps(value, ref.current)) {\n ref.current = value\n }\n\n return ref.current\n}\n\nexport function useDeepCompareEffectForMaps(callback: React.EffectCallback, dependencies: any[]) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(callback, dependencies.map(useDeepCompareMemoize))\n}\n","import * as React from 'react'\nimport { useDeepCompareEffectForMaps } from '../../utils'\nimport useHighlightRegion from './useHighlightRegion'\n\nconst MAP_ID = process.env.REACT_APP_MAP_ID\n\ninterface MapProps extends google.maps.MapOptions {\n hideRecenterButton?: boolean\n center?: google.maps.LatLng | google.maps.LatLngLiteral\n zoom: number\n children?: React.ReactNode\n bounds?: google.maps.LatLngBounds\n customizeMap?: (map: google.maps.Map) => void\n className?: string\n highlightedRegionPlaceId?: string\n}\n\nexport const USA_BOUNDS = {\n west: -180,\n south: -20,\n east: -40,\n north: 80\n}\n\nconst MapComponent: React.FC = ({\n center,\n zoom,\n children,\n bounds,\n hideRecenterButton,\n customizeMap,\n className,\n highlightedRegionPlaceId,\n ...options\n}) => {\n const [map, setMap] = React.useState()\n\n // because React does not do deep comparisons, a custom hook is used\n // see discussion in https://github.com/googlemaps/js-samples/issues/946\n useDeepCompareEffectForMaps(() => {\n if (map) {\n map.setOptions(options)\n if (bounds) map.fitBounds(bounds)\n }\n }, [map, options])\n\n const initializeMap = React.useCallback((mapElement: HTMLDivElement) => {\n if (!mapElement) {\n return\n }\n const newMap = new google.maps.Map(mapElement, {\n center: center || new google.maps.LatLng(39.833333, -98.585522),\n zoom,\n minZoom: options.minZoom ?? 4,\n mapId: MAP_ID,\n disableDefaultUI: true,\n gestureHandling: options.gestureHandling\n })\n customizeMap?.(newMap)\n setMap(newMap)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n useHighlightRegion(map, highlightedRegionPlaceId)\n\n return (\n <>\n
\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n // set the map prop on the child component\n // @ts-ignore\n return React.cloneElement(child, { map })\n }\n })}\n \n )\n}\n\nexport default MapComponent\n","import React from 'react'\n\nexport enum GeocoderTypes {\n COUNTRY = 'country',\n ADMINISTRATIVE_AREA_LEVEL_1 = 'administrative_area_level_1',\n ADMINISTRATIVE_AREA_LEVEL_2 = 'administrative_area_level_2',\n LOCALITY = 'locality',\n POSTAL_CODE = 'postal_code',\n SCHOOL_DISTRICT = 'school_district'\n}\n\nconst mapGeocoderTypesToFeatureType = {\n [GeocoderTypes.COUNTRY]: 'COUNTRY' as google.maps.FeatureType,\n [GeocoderTypes.ADMINISTRATIVE_AREA_LEVEL_1]: 'ADMINISTRATIVE_AREA_LEVEL_1' as google.maps.FeatureType,\n [GeocoderTypes.ADMINISTRATIVE_AREA_LEVEL_2]: 'ADMINISTRATIVE_AREA_LEVEL_2' as google.maps.FeatureType,\n [GeocoderTypes.LOCALITY]: 'LOCALITY' as google.maps.FeatureType,\n [GeocoderTypes.POSTAL_CODE]: 'POSTAL_CODE' as google.maps.FeatureType,\n [GeocoderTypes.SCHOOL_DISTRICT]: 'SCHOOL_DISTRICT' as google.maps.FeatureType\n}\n\nexport const isGeocoderType = (type: string) => Object.values(GeocoderTypes).includes(type as GeocoderTypes)\n\nlet styleFill: google.maps.FeatureStyleOptions = {\n fillColor: '#090c9b',\n fillOpacity: 0.1,\n strokeColor: '#090c9b',\n strokeOpacity: 0.5,\n strokeWeight: 1\n}\n\nconst highlightPlaceIdFunc = async (map: google.maps.Map, placeId: string) => {\n const { results } = await new google.maps.Geocoder().geocode({ placeId })\n if (!map || !placeId || !results.length || !results[0].types.length) return\n\n let geocodeType = results[0].types.find((type) => isGeocoderType(type)) as GeocoderTypes | undefined\n if (!geocodeType) return\n const featureType = mapGeocoderTypesToFeatureType[geocodeType as GeocoderTypes]\n const featureLayer = map.getFeatureLayer(featureType)\n\n const featureStyle = (params: any) => {\n if (params?.feature?.placeId === placeId) {\n return styleFill\n }\n }\n\n featureLayer.style = featureStyle\n}\n\nconst useHighlightRegion = (map?: google.maps.Map, placeId?: string) => {\n React.useEffect(() => {\n if (!map || !placeId) {\n return\n }\n\n highlightPlaceIdFunc(map, placeId)\n }, [map, placeId])\n}\n\nexport default useHighlightRegion\n","import * as React from 'react'\nimport { Address } from '../store/address'\n\nexport type LatLngAddr = Pick\n\ninterface MarkerProps\n extends Omit {\n map?: google.maps.Map\n active: boolean\n icon?: string\n onClick: (address: A) => void\n address: A\n}\n\nexport type UseMarkerOptions = Omit, 'address' | 'active' | 'onClick'> & {\n icon?: string\n iconActive?: string\n onClick: (address: A) => void\n locations: {\n address: A\n active?: boolean\n }[]\n}\nexport function useMarkers({\n iconActive: iconActiveParam,\n icon: iconParam,\n onClick,\n map,\n locations\n}: UseMarkerOptions) {\n const icon = iconParam || '/assets/icons/map-marker.svg'\n const iconActive = iconActiveParam || '/assets/icons/map-marker-active.svg' || icon\n\n const markersRef = React.useRef([])\n const listeners = React.useRef([])\n const initializeMarkers = React.useCallback(() => {\n markersRef.current = locations.map((location) => {\n const iconImg = document.createElement('img')\n iconImg.src = location.active ? iconActive : icon\n\n const marker = new google.maps.marker.AdvancedMarkerElement({\n map,\n position: new google.maps.LatLng(location.address.latitude, location.address.longitude),\n content: iconImg\n })\n\n listeners.current.push(marker.addListener('gmp-click', () => onClick(location.address)))\n return marker\n })\n }, [icon, iconActive, map, locations, onClick])\n\n React.useEffect(() => {\n const markersValue = markersRef.current\n\n removeMarkers()\n\n function removeMarkers() {\n markersValue.forEach((marker) => {\n marker.map = null\n })\n }\n initializeMarkers()\n }, [map, icon, initializeMarkers, markersRef])\n}\n\nconst Marker: React.FC = ({ address, active, ...props }) => {\n const locations = React.useMemo(() => {\n return [{ address, active }]\n }, [address, active])\n\n useMarkers({ ...props, locations })\n return <>\n}\n\nexport default Marker\n","import * as React from 'react'\nimport { css } from '@emotion/css'\nimport { range } from 'lodash'\nimport { getTitleForNetworkPerformance } from '../../utils/signalStrength'\n\nconst NetworkPerformanceDiagramStyles = css`\n --square-width: 18px;\n --square-height: 16px;\n --square-gap: 2px;\n\n display: flex;\n justify-content: end;\n gap: var(--square-gap);\n justify-content: flex-end;\n\n .square {\n display: block;\n height: var(--square-height);\n width: var(--square-width);\n\n &:first-of-type {\n border-radius: calc(var(--square-height) / 2) 0 0 calc(var(--square-height) / 2);\n }\n &:last-of-type {\n border-radius: 0 calc(var(--square-height) / 2) calc(var(--square-height) / 2) 0;\n }\n }\n\n .gray {\n background-color: lightgray;\n }\n .red {\n background-color: #ff4f58;\n }\n .orange {\n background-color: #fbc02d;\n }\n .green {\n background-color: var(--ion-color-primary);\n }\n`\n\nconst NetworkPerformanceDiagram: React.FC<{ performance: number; networkType: string }> = ({\n performance,\n networkType\n}) => {\n let squareColors =\n performance <= 0\n ? []\n : performance < 0.25\n ? ['red']\n : performance < 0.5\n ? ['orange', 'orange']\n : performance < 0.75\n ? ['green', 'green', 'green']\n : ['green', 'green', 'green', 'green']\n\n return (\n \n {range(4).map((_color, index) => (\n
\n ))}\n \n )\n}\n\nexport default NetworkPerformanceDiagram\n","import { css } from '@emotion/css'\nimport { IonRouterLink } from '@ionic/react'\nimport { MainNavigationPaths } from '../../paths'\nimport useAuthStore from '../../store/auth'\nimport { CarouselLink } from './carouselOnboardingData'\n\nconst CarouselLinkComponentStyles = css`\n text-align: center;\n line-height: 24px;\n`\n\nconst BtnDismissStyles = css`\n background: none;\n color: var(--ion-text-color);\n font-weight: 500;\n font-size: 16px;\n line-height: 24px;\n text-decoration: underline;\n`\nexport function CarouselLinkComponent(props: {\n onClickSignin?: () => void\n link: CarouselLink\n onDismiss?: () => void\n}) {\n const currentUser = useAuthStore((state) => state.currentUser)\n\n if (props.link.action === 'dismiss') {\n return (\n
\n \n
\n )\n }\n\n return currentUser ? null : (\n
\n \n {props.link.text}\n \n
\n )\n}\n","import * as React from 'react'\nimport { css } from '@emotion/css'\nimport { IonButton, IonIcon } from '@ionic/react'\nimport { useLocation } from 'react-router'\n\nconst NextButtonDesktopStyles = css`\n text-transform: uppercase;\n width: 335px;\n font-size: 16px;\n font-weight: 700;\n height: 52px;\n`\n\nconst NextArrowStyles = css`\n margin-left: 16px;\n`\n\nexport interface NextButtonProps {\n hideArrow?: boolean\n desktop?: boolean\n}\nconst NextButton: React.ForwardRefRenderFunction<\n HTMLIonButtonElement,\n React.ComponentPropsWithoutRef & NextButtonProps\n> = ({ routerLink, children, hideArrow, ...props }, ref) => {\n const location = useLocation()\n\n return (\n \n {children}\n {hideArrow ? null : }\n \n )\n}\n\nexport default React.forwardRef(NextButton)\n","import { IonButton, IonSpinner } from '@ionic/react'\nimport { css } from '@emotion/css'\nimport NextButton from '../NextButton/NextButton'\nimport 'swiper/css'\nimport { CarouselButton } from './carouselOnboardingData'\nimport { useSetUserLocation } from '../../pages/network-quality/hooks/useSetUserLocation'\n\nconst LocationButtonStyles = css`\n width: 100%;\n max-width: 320px;\n font-weight: 700;\n font-size: 16px;\n line-height: 20px;\n\n &::part(native) {\n padding: 16px;\n height: 56px;\n }\n`\nconst NextButtonStyles = css`\n width: 100%;\n max-width: 320px;\n font-weight: 700;\n font-size: 16px;\n line-height: 20px;\n\n &::part(native) {\n padding: 16px;\n height: 56px;\n }\n`\nconst LocationSpinnerStyles = css`\n width: 16px;\n height: 16px;\n`\nfunction LocationMessage(props: { text: string }) {\n const userLocation = useSetUserLocation()\n if (userLocation.loadingLocation) {\n return \n }\n\n if (userLocation.locationError) {\n return Error. Please try again.\n }\n\n return <>{props.text}\n}\n\nexport function CarouselNextButton(props: { button: CarouselButton; onClickNext: () => void }) {\n const userLocation = useSetUserLocation()\n\n function setLocation() {\n userLocation.setUserLocation().then((addr) => {\n if (addr) {\n props.onClickNext()\n }\n })\n }\n\n if (!userLocation.currentAddress && props.button.action === 'enable-location') {\n return (\n \n \n \n )\n }\n\n return (\n \n {props.button.text}\n \n )\n}\n","export type CarouselButton = {\n text: string\n action: 'next' | 'enable-location'\n showArrow?: boolean\n}\nexport type CarouselLink = {\n text: string\n action: 'dismiss' | 'sign-in'\n}\n\ntype CarouselSlide = {\n id: number\n imageSrc: string\n imageAlt: string\n title: string\n paragraph: string\n\n buttonDesktop?: CarouselButton\n buttonMobile?: CarouselButton\n link?: CarouselLink\n}\n\nexport const carouselOnboardingData: CarouselSlide[] = [\n {\n id: 0,\n imageSrc: 'assets/images/home/barry_flying.svg',\n imageAlt: 'Barry with a map',\n title: 'We do the searching. You do the saving.',\n paragraph: 'We’ll find you a plan that’s way less expensive with better coverage. Switch today.'\n },\n {\n id: 1,\n imageSrc: 'assets/images/home/barry_coins.svg',\n imageAlt: 'Barry getting coins',\n title: 'Get the latest deals and promotions.',\n paragraph: 'We’ve scoured all the carrier websites to pull together the latest cell phone and plan deals.'\n },\n {\n id: 2,\n imageSrc: 'assets/images/home/barry_juice.svg',\n imageAlt: 'Barry holding juice',\n title: 'Plan finding made easy.',\n paragraph:\n 'Ever wondered which plans bundle in Netflix? Yeah, you can do that with Goji. Browse, filter, and compare over 1,000 plans.',\n buttonMobile: {\n text: 'Get started',\n action: 'next'\n }\n },\n {\n id: 3,\n imageSrc: 'assets/images/home/barry_walking.svg',\n imageAlt: 'Barry walking and talking on the phone',\n title: 'Can you hear me now?',\n paragraph:\n \"Make sure there's coverage BEFORE you switch. Add your favorite addresses or even better, enable your location so Goji can give you pinpoint, real-time information on network coverage and speed.\",\n buttonMobile: {\n text: 'Enable location settings',\n action: 'enable-location'\n },\n buttonDesktop: {\n text: 'Get started',\n action: 'next'\n },\n link: {\n action: 'dismiss',\n text: 'No thanks'\n }\n }\n]\n","import { css } from '@emotion/css'\n\nexport const TextButtonStyles = css`\n background-color: transparent;\n color: inherit;\n font-size: inherit;\n`\n\nexport const PlanInfoStyles = css`\n font-size: 16px;\n line-height: 24px;\n\n .split-in-two {\n display: flex;\n justify-content: space-between;\n margin-bottom: 8px;\n }\n\n ion-col {\n margin-bottom: 8px;\n line-height: 24px;\n }\n\n color: var(--ion-text-color);\n .plan-info ion-img {\n width: fit-content;\n }\n\n .addon-puzzle {\n margin-right: 3px;\n width: 30px;\n & > ion-img {\n width: 19.5px;\n }\n }\n\n .perk-first-col {\n display: flex;\n align-items: center;\n\n .underline {\n text-decoration: underline;\n }\n }\n\n .perk-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 8px;\n width: 24px;\n height: 24px;\n }\n\n .expand-collapse-btn {\n margin-top: 10px;\n margin-bottom: -2px;\n }\n\n .plan-property ion-col:first-child {\n color: #878787;\n }\n\n h2 {\n font-size: 20px;\n font-weight: 600;\n margin-top: 20px;\n }\n\n ul {\n padding-left: 24px;\n font-size: 16px;\n &.perks {\n display: inline-block;\n margin: 0;\n }\n\n li {\n margin-bottom: 8px;\n > span.perk {\n margin-bottom: 0;\n text-align: left;\n display: -webkit-box;\n &.clamp {\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n }\n }\n }\n\n .more-perks {\n margin-left: 24px;\n }\n`\n\nexport const PlanPropertyStyles = css`\n .children-wrapper {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`\n\nexport const IconWrapper = css`\n display: flex;\n justify-content: center;\n width: 30px;\n`\n\nexport const PlanInfoSummaryStyles = css`\n .section-header {\n font-size: 18px;\n font-weight: 700;\n line-height: 27px;\n display: flex;\n align-items: center;\n }\n\n .underline {\n background-color: transparent;\n text-decoration: underline;\n }\n\n .divider {\n width: 100%;\n height: 0px;\n margin: 0 0 16px;\n border-bottom: 1px solid var(--ion-color-light);\n content: '';\n }\n\n ul {\n margin: 8px 0;\n padding-left: 32px;\n }\n\n li {\n font-size: 16px;\n line-height: 22px;\n text-wrap: balance;\n }\n\n .clarification-streaming-services {\n font-size: 14px;\n color: var(--goji-color-description);\n }\n\n .streaming-service {\n span {\n margin-right: 4px;\n }\n }\n\n .service-price {\n font-size: 14px;\n font-weight: 700;\n color: var(--ion-color-secondary-background);\n background-color: var(--goji-color-secondary-blue);\n padding: 4px 8px;\n border-radius: 4px;\n }\n`\n","export const IconSignalVoice = ({ color, className }: { color?: string; className?: string }) => {\n return (\n
\n \n \n \n
\n )\n}\n","export const IconSignalCellular = ({ color, className }: { color?: string; className?: string }) => {\n return (\n
\n \n \n \n
\n )\n}\n","export const IconText = ({ color, className }: { color?: string; className?: string }) => {\n return (\n
\n \n \n \n
\n )\n}\n","export const IconHotspot = ({ color, className }: { color?: string; className?: string }) => {\n return (\n
\n \n \n \n
\n )\n}\n","export const IconPremiumData = ({ color, className }: { color?: string; className?: string }) => {\n return (\n
\n \n \n \n \n
\n )\n}\n","export const IconPerks = ({ color, className }: { color?: string; className?: string }) => {\n return (\n
\n \n \n \n \n \n
\n )\n}\n","export const IconPlan = ({ color, className }: { color?: string; className?: string }) => {\n return (\n
\n \n \n \n
\n )\n}\n","export const IconAddons = ({ color, className }: { color?: string; className?: string }) => {\n return (\n
\n \n \n \n
\n )\n}\n","import { cx } from '@emotion/css'\nimport { IonCol, IonIcon, IonRow } from '@ionic/react'\nimport * as React from 'react'\nimport { DATA_UNLIMITED, SMS_UNLIMITED, VOICE_UNLIMITED } from '../../services/planService/Preferences'\nimport { PlanInfoStyles, PlanInfoSummaryStyles, TextButtonStyles } from './PlanInfoStyles'\nimport { chevronDownOutline, chevronUpOutline } from 'ionicons/icons'\nimport { useBoundStore } from '../../store'\nimport { Plan } from '../../services/planService/Plan'\nimport { IconSignalVoice } from '../icons/IconSignalVoice'\nimport { IconSignalCellular } from '../icons/IconSignalCellular'\nimport { IconText } from '../icons/IconText'\nimport { IconHotspot } from '../icons/IconHotspot'\nimport { IconPremiumData } from '../icons/IconPremiumData'\nimport { IconPerks } from '../icons/IconPerks'\nimport { IconPlan } from '../icons/IconPlan'\nimport { IconAddons } from '../icons/IconAddons'\nimport InfoDialog from '../InfoDialog'\n\nexport const PremiumDataAlert = ({\n isOpen,\n setIsOpen\n}: {\n isOpen: boolean\n setIsOpen: (open: boolean) => void\n className?: string\n}) => {\n return (\n setIsOpen(false)}\n title='What is Premium Data?'\n content='Premium data means your data will not be subject to deprioritization and slowdown when network traffic is high.'\n />\n )\n}\n\nexport const PlanExtraData = ({\n plan,\n isSummary,\n className\n}: {\n plan: Plan\n isSummary?: boolean\n className?: string\n prepend?: React.ReactNode\n}) => {\n const [isPremiumDataDialogOpen, setIsPremiumDataDialogOpen] = React.useState(false)\n\n const planData = {\n hotspotData: plan.hotspotDataLimit,\n hotspotDataUnits: plan.hotspotDataLimitUnits,\n isHotspotUnlimited: plan.isHotspotUnlimited,\n premiumData: plan.premiumData,\n premiumDataUnits: plan.premiumDataUnits,\n isPremiumDataUnlimited: plan.isPremiumDataUnlimited,\n perksString: [\n ...(plan.streamingServices || []).map((service) => service.serviceName),\n ...(plan.roamingCountries?.length ? [`Roaming in ${plan.roamingCountries.length} countries`] : [])\n ]\n }\n\n return (\n
\n \n \n \n Hotspot:\n \n \n \n {planData.isHotspotUnlimited\n ? 'Unlimited'\n : planData.hotspotData\n ? planData.hotspotData + ' ' + (planData.hotspotDataUnits || '')\n : 'Not included'}\n \n \n \n \n \n \n {\n e.stopPropagation()\n setIsPremiumDataDialogOpen(true)\n }}\n >\n Premium Data:\n \n \n \n \n {planData.isPremiumDataUnlimited\n ? 'Unlimited'\n : (planData.premiumData || 0) + ' ' + (planData.premiumDataUnits || '')}\n \n \n \n {planData.perksString.length > 0 && (\n <>\n \n \n \n Perks:\n \n {planData.perksString.length ? (\n
    \n {planData.perksString.slice(0, !isSummary ? 2 : planData.perksString.length).map((perk) => (\n
  • \n \n {perk}\n \n
  • \n ))}\n
\n ) : null}\n
\n {!isSummary && planData.perksString.length > 2 && (\n \n \n +{planData.perksString.length - 2} more \n \n \n )}\n \n )}\n \n
\n )\n}\n\nfunction getDataText(data: number): string {\n if (data === DATA_UNLIMITED) {\n return 'Unlimited'\n } else if (data < 1) {\n return `${Math.round(data * 1000)} MB`\n }\n return `${data} GB`\n}\n\nfunction getVoiceText(voice: number): string {\n if (voice === VOICE_UNLIMITED) {\n return 'Unlimited'\n }\n return voice + ' min'\n}\n\nfunction getSmsText(sms: number): string {\n if (sms === SMS_UNLIMITED) {\n return 'Unlimited'\n }\n return sms + ' msg'\n}\n\ninterface PlanInfoProps {\n plan: Plan\n alwaysExpanded?: boolean\n isSummary?: boolean\n className?: string\n}\n\nfunction getHotspotText(plan: Plan): { value: string; text: string } {\n if (plan.isHotspotUnlimited) return { value: 'Unlimited', text: 'Hotspot' }\n if (plan.hotspotDataLimit) return { value: `${plan.hotspotDataLimit} ${plan.hotspotDataLimitUnits}`, text: 'Hotspot' }\n return { value: 'Not included', text: 'Hotspot' }\n}\n\nfunction getPremiumDataText(plan: Plan): { value: string; text: string } {\n if (plan.isPremiumDataUnlimited) return { value: 'Unlimited', text: 'Premium/Prioritized Data' }\n return { value: `${plan.premiumData} ${plan.premiumDataUnits}`, text: 'Premium/Prioritized Data' }\n}\n\nfunction getGroupedPlanDetailsText(group: string, value: string): string {\n if (group === 'Data') {\n return `${value} data`\n } else if (group === 'Talk') {\n return `${value} min of calling`\n } else if (group === 'Text') {\n return `${value} texts`\n }\n return `${value} ${group}`\n}\n\nconst PlanInfo: React.FC = ({ plan, className, alwaysExpanded, isSummary }) => {\n const [allExpanded] = useBoundStore((state) => [state.allExpanded])\n const [expanded, setExpanded] = React.useState(false)\n const [isPremiumDataDialogOpen, setIsPremiumDataDialogOpen] = React.useState(false)\n const planDetails = {\n ...(plan.data && { Data: getDataText(plan.data) }),\n ...(plan.voice && { Talk: getVoiceText(plan.voice) }),\n ...(plan.sms && { Text: getSmsText(plan.sms) })\n }\n const groupedPlanDetails: Record = {}\n let repeated: [string, string] | undefined\n Object.entries(planDetails).forEach(([key, value]) => {\n if ((repeated = Object.entries(groupedPlanDetails).find(([_, val]) => val === value))) {\n groupedPlanDetails[\n `${repeated[0].includes('&') ? repeated[0].replace(' &', ', ') : repeated[0]}${\n repeated[0].includes('&') ? ', ' : ' & '\n }${key}`\n ] = repeated[1]\n delete groupedPlanDetails[repeated[0]]\n } else groupedPlanDetails[key] = value\n })\n\n const PlanBasics = {\n hotspot: getHotspotText(plan),\n premiumData: getPremiumDataText(plan)\n }\n\n React.useEffect(() => setExpanded(allExpanded), [allExpanded])\n\n return (\n
\n {(expanded || alwaysExpanded) && !isSummary ? (\n <>\n {Object.entries(groupedPlanDetails)\n .sort((a) => (a[0] === 'Data' ? -1 : 0))\n .map(([group, value]) => (\n
\n
\n {group === 'Data' ? (\n \n ) : group === 'Talk' ? (\n \n ) : group === 'Text' ? (\n \n ) : null}\n {group}:\n
\n
{value}
\n
\n ))}\n \n \n ) : null}\n\n {Object.values(planDetails).length && !alwaysExpanded && !isSummary ? (\n {\n event.stopPropagation()\n setExpanded(!expanded)\n }}\n >\n {expanded ? 'Show less' : 'Show more'}\n \n \n ) : null}\n\n {isSummary ? (\n
\n \n \n Plan Basics\n \n \n
    \n {Object.entries(groupedPlanDetails).map(([group, value]) => (\n
  • {getGroupedPlanDetailsText(group, value)}
  • \n ))}\n {PlanBasics.hotspot.value ? (\n
  • \n {PlanBasics.hotspot.value} {PlanBasics.hotspot.text}\n
  • \n ) : (\n
  • No included hotspot
  • \n )}\n\n {PlanBasics.premiumData.value ? (\n
  • \n {PlanBasics.premiumData.value}{' '}\n {\n e.stopPropagation()\n setIsPremiumDataDialogOpen(true)\n }}\n >\n {PlanBasics.premiumData.text}\n \n
  • \n ) : (\n
  • \n {\n e.stopPropagation()\n setIsPremiumDataDialogOpen(true)\n }}\n className={cx('underline', TextButtonStyles)}\n >\n No included premium data\n \n
  • \n )}\n
\n
\n {plan.streamingServices?.length || plan.roamingCountries?.length ? (\n <>\n
\n \n \n Perks & Benefits\n \n \n
    \n {plan.streamingServices?.map((service) => (\n
  • \n {service.serviceName}*\n ${service.marketValue} value\n
  • \n ))}\n {plan.streamingServices?.length === 1 && (\n

    \n * See carrier website for additional details around streaming duration\n

    \n )}\n\n {plan.roamingCountries?.length ? (\n
  • {`Roaming in ${plan.roamingCountries.length} countries`}
  • \n ) : null}\n\n {plan.streamingServices?.length! > 1 && (\n

    \n * See carrier website for additional details around streaming duration\n

    \n )}\n
\n
\n \n ) : null}\n {plan.addons.length ? (\n <>\n
\n \n \n Add-ons\n \n \n
    \n {plan.addons?.map((addon) => (\n
  • {addon.addonDescription}
  • \n ))}\n
\n
\n \n ) : null}\n
\n ) : null}\n \n
\n )\n}\n\nexport default PlanInfo\n","import { css } from '@emotion/css'\nimport { IonRow, IonCol, useIonRouter } from '@ionic/react'\nimport React from 'react'\nimport NetworkPerformanceDiagram from '../NetworkPerformanceDiagram/NetworkPerformanceDiagram'\nimport { useBoundStore } from '../../store'\nimport { RoutePaths } from '../../paths'\nimport InfoDialog from '../InfoDialog'\n\nconst checkCoverageSvg = '/assets/icons/check-coverage.svg'\nconst noCoverageSvg = '/assets/icons/no-coverage.svg'\nconst alertSvg = '/assets/icons/alert.svg'\n\nconst NetworkStyles = css`\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: end;\n gap: 4px;\n color: var(--goji-primary-black);\n\n span {\n text-decoration: underline;\n text-wrap: nowrap;\n }\n\n img {\n width: 16px !important;\n }\n`\n\nconst CheckCoverageStyles = css`\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--goji-primary-black);\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 32px;\n padding: 4px 16px;\n gap: 4px;\n margin: 4px 0;\n\n span {\n text-wrap: nowrap;\n }\n\n img {\n width: 16px !important;\n }\n`\n\nexport function UnsupportedNetwork(props: {\n networkPerformanceState: NetworkPerformanceState\n setNetworkPerformanceState: (state: NetworkPerformanceState) => void\n}) {\n return (\n {\n e.stopPropagation()\n props.setNetworkPerformanceState('unsupported-alert')\n }}\n >\n Unsupported carrier\n Unsupported\n {\n props.setNetworkPerformanceState('stale')\n }}\n title='Unsupported carrier'\n content={`Pardon the dust, Goji currently doesn't support this carrier.\\n\\nBut if you happen to be on this carrier, try running a speed test using our handy Network Meter.`}\n />\n
\n )\n}\n\nexport function NoCoverage(props: {\n networkPerformanceState: NetworkPerformanceState\n setNetworkPerformanceState: (state: NetworkPerformanceState) => void\n}) {\n return (\n {\n e.stopPropagation()\n props.setNetworkPerformanceState('no-coverage-alert')\n }}\n >\n No coverage\n No coverage\n {\n props.setNetworkPerformanceState('stale')\n }}\n title='No coverage for this location'\n content={`Looks like you've discovered a \"dead zone\" or no coverage from this carrier for this location.`}\n />\n
\n )\n}\n\nexport function NoDataNetwork(props: {\n networkPerformanceState: NetworkPerformanceState\n setNetworkPerformanceState: (state: NetworkPerformanceState) => void\n networkType: '4G' | '5G' | '4G/5G'\n}) {\n return (\n {\n e.stopPropagation()\n props.setNetworkPerformanceState(`no-data-alert-${props.networkType}`)\n }}\n >\n No data\n No data\n {\n props.setNetworkPerformanceState('stale')\n }}\n title='No data for this location'\n content={`We don't have ${props.networkType} data for this location, but there may still be a signal for this carrier.\\n\\nIf you're at the location now, try running a speed test to see if there's coverage.`}\n />\n \n )\n}\n\nexport const UncontrolledNoDataNetwork = ({ networkType }: { networkType: '4G' | '5G' | '4G/5G' }) => {\n const [networkPerformanceState, setNetworkPerformanceState] = React.useState('stale')\n\n return (\n \n )\n}\n\nexport function CheckCoverage() {\n const ionRouter = useIonRouter()\n return (\n {\n e.stopPropagation()\n ionRouter.push(`${RoutePaths.addressBook}?back-to=${ionRouter.routeInfo.pathname}`)\n }}\n >\n Check coverage\n Check Coverage\n \n )\n}\n\nexport type NetworkPerformanceState =\n | 'stale'\n | 'no-coverage-alert'\n | 'unsupported-alert'\n | 'no-data-alert-4G'\n | 'no-data-alert-5G'\n | 'no-data-alert-4G/5G'\ntype NetworkPerformanceProps = {\n networkPerformance4G?: number\n networkPerformance5G?: number\n noCoverage?: boolean\n unsupported?: boolean\n}\n\nconst JustifyEndStyles = css`\n display: flex;\n justify-content: end;\n`\n\nexport const NetworkPerformance = (props: NetworkPerformanceProps) => {\n const [networkPerformanceState, setNetworkPerformanceState] = React.useState('stale')\n\n const [addresses] = useBoundStore((state) => [state.addresses])\n const hasAddress = addresses.length > 0\n\n if (props.unsupported) {\n return (\n \n Coverage:\n \n
\n \n
\n
\n
\n )\n }\n\n if (props.noCoverage) {\n return (\n \n Coverage:\n \n \n \n \n )\n }\n\n return (\n <>\n {hasAddress ? (\n <>\n \n 4G Coverage:\n \n
\n {props.networkPerformance4G === undefined ? (\n \n ) : (\n \n )}\n
\n
\n
\n \n 5G Coverage:\n \n
\n {props.networkPerformance5G === undefined ? (\n \n ) : (\n \n )}\n
\n
\n
\n \n ) : (\n \n 5G/4G Coverage:\n \n
\n \n
\n
\n
\n )}\n \n )\n}\n","import { css } from '@emotion/css'\n\nexport const PlanResultCardStyles = css`\n .card-content-md {\n font-size: 16px;\n line-height: 24px;\n }\n .card-content-ios {\n font-size: 16px;\n line-height: 24px;\n padding: 16px;\n }\n\n margin-left: 0;\n margin-right: 0;\n border: 1px solid var(--ion-color-light);\n box-shadow: 0px 0px 54px 0px #3c71b21a, 0px 8px 8px 0px #122e500f, 0px 1px 6px 0px #1823302e;\n\n border-radius: 10px;\n max-width: 1300px;\n\n .plan-result-card-content {\n height: 100%;\n }\n\n .plan-result-card-grid {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .favorite-button-row {\n justify-content: space-between;\n margin-top: auto;\n }\n\n ion-col {\n text-align: left;\n &.extra-margin {\n margin-bottom: 16px;\n }\n margin-bottom: 8px;\n }\n\n .best-plans-logo {\n max-height: 24px;\n &::part(image) {\n width: initial;\n max-height: inherit;\n }\n margin-bottom: 8px;\n }\n\n .plan-name {\n margin-top: 4px;\n }\n\n .network-performance {\n color: #878787;\n }\n\n .top-bar {\n display: flex;\n align-items: center;\n justify-content: end;\n width: 100%;\n height: 8px;\n padding-right: 8px;\n background-color: var(--goji-color-light-blue);\n &.saved {\n height: 34px;\n }\n ion-icon {\n font-size: 22px;\n }\n }\n\n .plan-price,\n .plan-price + h6 {\n text-align: right;\n margin: 0;\n color: var(--ion-color-dark);\n font-weight: bold;\n margin-bottom: 5px;\n font-size: 16px;\n }\n .plan-price {\n font-weight: 700 !important;\n font-size: 32px;\n color: var(--ion-color-dark);\n word-wrap: normal;\n }\n .short-plan-name {\n font-weight: 500;\n max-width: 250px;\n }\n\n .divider {\n width: 100%;\n height: 8px;\n border-bottom: 1px solid var(--ion-color-light);\n content: '';\n }\n\n @media screen and (max-width: 430px) {\n .plan-price {\n font-size: 24px;\n }\n }\n\n @media screen and (max-width: 310px) {\n .plan-price {\n font-size: 18px;\n }\n }\n\n @media screen and (min-width: 768px) {\n cursor: pointer;\n }\n`\n","export const usdOnlyNumberFormatter = Intl.NumberFormat('en-US', {\n minimumIntegerDigits: 1,\n maximumFractionDigits: 2,\n minimumFractionDigits: 2\n})\n\nexport const usdCurrencyFormatter = Intl.NumberFormat('en-US', {\n minimumIntegerDigits: 1,\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n currency: 'USD',\n style: 'currency'\n})\n\nexport const usdIntegerCurrencyFormatter = Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: 0\n})\n\nexport const formatAsCurrency = (value: string | number | undefined, formatter: Intl.NumberFormat) => {\n if (!value) {\n return ''\n }\n\n const strValue = String(value)\n const numericValue =\n strValue.slice(0, -2).padStart(2, '0') + '.' + strValue.slice(-2, strValue.length).padStart(2, '0')\n\n return formatter.format(Number(numericValue))\n}\n","import { css } from '@emotion/css'\nimport { Deal } from '../../pages/deals/deal.service'\nimport IconTag from '../icons/IconTag'\n\nconst DealTagStyles = css`\n background-color: var(--goji-color-accent);\n\n &,\n .tag-image {\n color: var(--ion-color-dark-contrast);\n }\n font-size: 14px;\n font-weight: 700;\n\n border-radius: 4px;\n padding: 6.5px 8px;\n\n width: 212px;\n height: 32px;\n display: flex;\n align-items: center;\n gap: 8px;\n\n .description {\n display: block;\n width: 100%;\n text-align: start;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`\n\nexport function DealTag(props: { deal: Pick }) {\n return (\n
\n \n {props.deal.description}\n
\n )\n}\n","import { cx } from '@emotion/css'\nimport { IonCard, IonCardContent, IonCol, IonGrid, IonRow, IonText } from '@ionic/react'\nimport * as React from 'react'\nimport { UseCarrier } from '../../services/Carrier.service'\nimport CarrierDisplay from '../CarrierDisplay/CarrierDisplay'\nimport PlanInfo from '../Plan/PlanInfo'\nimport { PlanResultCardStyles } from './PlanResultCard.styles'\nimport { usdIntegerCurrencyFormatter } from '../../utils/usdFormatter'\nimport { useBoundStore } from '../../store'\nimport { useHistory } from 'react-router'\nimport { MainNavigationPaths } from '../../paths'\nimport { Plan } from '../../services/planService/Plan'\nimport { NetworkPerformance } from './NetworkPerformance'\nimport { FavoriteButton } from '../Header/SummaryHeader'\nimport useAuthStore from '../../store/auth'\nimport { DealTag } from './DealTag'\n\nexport interface PlanResultCardProps {\n ref?: React.Ref\n plan: Plan\n afterLogo?: React.ReactNode\n gridEnd?: React.ReactNode\n className?: string\n hidePerformance?: boolean\n hideFavoriteButton?: boolean\n alwaysExpanded?: boolean\n isSummary?: boolean\n isCarrierUnsupported?: boolean\n routerLink?: string\n onPlanClick?: (plan: Plan) => void\n}\nconst PlanResultCard: React.FC = ({\n ref,\n plan,\n // TODO: where should this value come from?\n gridEnd,\n className,\n hidePerformance,\n hideFavoriteButton,\n alwaysExpanded,\n isSummary: showIncludesSection,\n isCarrierUnsupported,\n onPlanClick\n}) => {\n const carrier = UseCarrier.useCarrier(plan.carrierId).data\n\n const onClickCard = () => {\n onPlanClick?.(plan)\n }\n\n const history = useHistory()\n const [favoritePlanIds, addFavoritePlanId, removeFavoritePlanId] = useBoundStore((state) => [\n state.favoritePlanIds,\n state.addFavoritePlanId,\n state.removeFavoritePlanId\n ])\n const isFavorite = favoritePlanIds.some((id) => id === plan.planId)\n const currentUser = useAuthStore((state) => state.currentUser)\n\n const onFavoriteClick = () => {\n if (!currentUser) {\n history.push(MainNavigationPaths.signIn)\n return\n }\n if (!isFavorite) {\n addFavoritePlanId(plan.planId)\n } else {\n removeFavoritePlanId(plan.planId)\n }\n }\n\n const getPlanName = () => {\n if (plan.shortPlanName.includes(plan.carrierName)) {\n return plan.shortPlanName\n }\n return `${plan.carrierName} ${plan.shortPlanName}`\n }\n\n const deals = plan.deals.filter((deal) => deal.planSpecific)\n\n return (\n \n \n \n \n \n {carrier ? (\n \n \n \n ) : (\n \n )}\n \n {getPlanName()}\n \n \n \n

{usdIntegerCurrencyFormatter.format(plan.costPerLine)}

\n
/mo. per line
\n
\n
\n\n {hidePerformance === true ? null : (\n <>\n \n
\n \n )}\n \n\n {hideFavoriteButton ? null : (\n \n {deals.length ? :
}\n {\n e.stopPropagation()\n onFavoriteClick()\n }}\n className='favorite-button'\n />\n \n )}\n\n {gridEnd}\n \n \n \n )\n}\n\nexport default PlanResultCard\n","import { css } from '@emotion/css'\nimport { IonItem, IonLabel, IonList, IonListHeader, IonSkeletonText, IonThumbnail } from '@ionic/react'\nimport { Separator } from '../Separator/Separator'\n\nconst PlanResultCardSkeletonV2Styles = css`\n padding: 16px;\n border: 2px solid var(--goji-primary-black);\n border-radius: 10px;\n width: var(--plan-card-width);\n height: var(--plan-card-height);\n\n .separator-wrapper {\n padding-top: 12px;\n }\n`\nexport function PlanResultCardSkeletonV2() {\n return (\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n )\n}\n\nexport function PlanResultCardSkeleton({ className }: { className?: string }) {\n return (\n \n \n \n \n \n \n \n \n \n

\n \n

\n

\n \n

\n

\n \n

\n
\n
\n
\n )\n}\n","import { css } from '@emotion/css'\n\nexport const SeparatorStyles = (color: string, size = 2) => {\n return css`\n border-top: ${size}px solid ${color};\n z-index: 2;\n position: absolute;\n left: 0;\n width: 100%;\n `\n}\n\nexport const SeparatorContainerStyles = css`\n z-index: 20;\n position: relative;\n`\n","import { cx } from '@emotion/css'\nimport * as React from 'react'\nimport { SeparatorContainerStyles, SeparatorStyles } from './Separator.styles'\n\ninterface SeparatorProps {\n color: string\n size?: number\n className?: string\n}\nexport const Separator: React.FC = (props) => {\n return
\n}\n\nexport const SeparatorContainer: React.FC<{ children: React.ReactNode; className?: string }> = ({\n children,\n className\n}) => {\n return
{children}
\n}\n","import { css } from '@emotion/css'\n\nexport const MeasurementStyles = css`\n background-color: var(--goji-color-secondary-blue);\n min-height: 65px;\n min-width: 0;\n border-radius: 8px;\n padding: 8px 0;\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .suffix {\n font-size: 12px;\n color: var(--ion-color-medium);\n }\n\n .measurement-title {\n flex-wrap: wrap-reverse;\n color: var(--ion-color-medium);\n display: flex;\n align-items: center;\n justify-content: center;\n\n ion-icon {\n margin-right: 4px;\n }\n\n &.isLatency {\n text-decoration: underline;\n }\n }\n\n .measurement-title {\n font-size: 14px;\n }\n\n .measurement-value {\n &.suffixed {\n margin-top: 8px;\n }\n margin-top: 2px;\n font-weight: 600;\n font-size: 22px;\n color: var(--ion-color-dark);\n }\n\n &.lower-measurement .measurement-value {\n font-weight: 500;\n margin-top: 6px;\n font-size: 18px;\n }\n`\n","import { cx } from '@emotion/css'\nimport { MeasurementStyles } from './MeasurementStyles'\nimport { IonIcon } from '@ionic/react'\nimport InfoDialog from '../../../InfoDialog'\nimport React from 'react'\n\nexport const Measurement: React.FC<{\n title: string\n icon?: string\n iconSrc?: string\n children?: React.ReactNode\n suffix?: React.ReactNode\n className?: string\n isLatency?: boolean\n}> = (props) => {\n const [isLatencyInfoOpen, setIsLatencyInfoOpen] = React.useState(false)\n\n return (\n
\n setIsLatencyInfoOpen(true)}\n >\n {props.icon && }\n {props.iconSrc && }\n {props.title}\n
\n
{props.children}
\n
{props.suffix}
\n {!!props.isLatency && (\n setIsLatencyInfoOpen(false)}\n title='What is Latency?'\n content={\n <>\n Latency is the delay between sending and receiving data in a network.\n
\n
\n High latency can lead to noticeable delays in video streaming or even loading web pages. Generally, the\n lower the latency, the better the experience.\n \n }\n />\n )}\n
\n )\n}\n","import { css } from '@emotion/css'\n\nexport const MeasurementsStyles = css`\n .lower-measurement .measurement-value {\n font-size: 20px;\n }\n\n .upper-row,\n .lower-row {\n display: grid;\n gap: 8px;\n }\n .upper-row {\n grid-template-columns: 1fr 1fr 1fr;\n }\n\n .lower-row {\n padding-top: 8px;\n grid-template-columns: 1fr 1fr;\n }\n`\n","import { timeOutline } from 'ionicons/icons'\nimport { Measurement } from '../Measurement/Measurement'\nimport { MeasurementsStyles } from './MeasurementsStyles'\n\nexport const formatValue = (value: number) => {\n if (!value) return '--'\n return value < 100 ? value.toFixed(1) : value.toFixed(0)\n}\n\nexport const Measurements: React.FC<{ speed: number; uploadSpeed: number; avgLatency: number }> = ({\n speed,\n uploadSpeed,\n avgLatency\n}) => {\n return (\n
\n
\n \n {speed ?
{formatValue(speed)}
: null}\n \n \n {uploadSpeed ?
{formatValue(uploadSpeed)}
: null}\n \n\n \n {avgLatency ?
{formatValue(avgLatency)}
: null}\n
\n
\n
\n )\n}\n","import { css } from '@emotion/css'\nimport { NetworkMeterRecord } from '../../../services/NetworkMeter.service'\nimport { Measurements } from './Measurements/Measurements'\nimport { IonButton, IonIcon } from '@ionic/react'\nimport { SpeedResult } from './SpeedResult/SpeedResult'\nimport { informationCircleOutline, locationOutline, resize } from 'ionicons/icons'\nimport MapComponent from '../../Map/Map'\nimport Marker from '../../Marker'\nimport React from 'react'\nimport { MainNavigationPaths } from '../../../paths'\nimport { useUnsavedAddresses } from '../../CoverageMap/hooks/useUnsavedAddresses'\nimport { useHistory } from 'react-router'\nimport { createRoot } from 'react-dom/client'\nimport { useGeneralStore } from '../../../store'\nimport { UseCarrier } from '../../../services/Carrier.service'\nimport { Address, LabelType } from '../../../store/address'\n\nconst MeterResultCardStyles = css`\n max-width: 600px;\n background: #fff;\n\n border-radius: 10px;\n border: 2px solid var(--ion-color-dark);\n\n margin: 24px 18px;\n padding: 16px;\n\n .divider {\n height: 1px;\n background: var(--ion-color-light);\n margin: 16px 0;\n }\n\n .section {\n display: flex;\n flex-direction: column;\n gap: 16px;\n .section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 18px;\n font-weight: 700;\n color: var(--ion-color-dark);\n\n > ion-icon {\n width: 24px;\n height: 24px;\n color: var(--ion-color-medium);\n }\n }\n\n .grid-info {\n display: grid;\n grid-template-columns: 2fr 3fr;\n padding: 0 32px;\n\n .label {\n color: var(--ion-color-medium);\n }\n }\n\n .map {\n height: 130px;\n border-radius: 10px;\n }\n }\n\n .date-time {\n display: flex;\n align-items: end;\n gap: 16px;\n\n .date {\n font-weight: 900;\n font-size: 22px;\n color: var(--ion-color-dark);\n }\n .time {\n font-size: 16px;\n color: var(--ion-color-medium);\n }\n }\n`\n\nconst noPadding = css`\n padding: 0 !important;\n --padding-start: 0 !important;\n --padding-end: 0 !important;\n --padding-top: 0 !important;\n --padding-bottom: 0 !important;\n`\n\nconst MapControlStyles = css`\n --background: #fff;\n --border-radius: 100%;\n height: 40px;\n width: 40px;\n --padding-start: 8px;\n --padding-end: 8px;\n margin: 12px;\n`\n\ninterface MeterResultCardProps {\n record: NetworkMeterRecord\n onDismiss: () => void\n}\n\nfunction formatDate(date: Date) {\n return date.toLocaleDateString('en-US', {\n month: '2-digit',\n day: '2-digit',\n year: '2-digit'\n })\n}\n\nfunction formatTime(date: Date) {\n return date.toLocaleTimeString('en-US', {\n hour: '2-digit',\n minute: '2-digit'\n })\n}\n\nfunction MeterResultCardToAddress(record: NetworkMeterRecord): Address | undefined {\n if (!record.latitude || !record.longitude) {\n return undefined\n }\n\n return {\n placeId: record.placeId,\n latitude: record.latitude,\n longitude: record.longitude,\n addressName: record.address,\n label: record.address,\n labelType: LabelType.Other\n }\n}\n\nconst MeterResultCard = ({ record, onDismiss }: MeterResultCardProps) => {\n const date = new Date(record.capturedOn)\n const mapRef = React.useRef(null)\n\n const history = useHistory()\n const { setLocalAddress } = useUnsavedAddresses()\n const [setSelectedAddress] = useGeneralStore((state) => [state.setSelectedAddress])\n\n const { data: carrier } = UseCarrier.useCarrier(record.carrier)\n\n const topRightControlDiv = document.createElement('div')\n createRoot(topRightControlDiv).render(\n {\n const address = MeterResultCardToAddress(record)\n if (!address) {\n return\n }\n setLocalAddress(address)\n setSelectedAddress(address)\n onDismiss()\n history.push(MainNavigationPaths.map)\n }}\n fill='clear'\n className={MapControlStyles}\n >\n \n \n )\n\n React.useEffect(() => {\n if (!mapRef.current || mapRef.current.controls[google.maps.ControlPosition.TOP_RIGHT].getLength()) return\n mapRef.current.controls[google.maps.ControlPosition.TOP_RIGHT].push(topRightControlDiv)\n }, [topRightControlDiv])\n\n return (\n
\n
\n {formatDate(date)}\n {formatTime(date)}\n
\n
\n
\n
\n \n Speed\n
\n \n \n
\n
\n
\n
\n \n Location\n
\n {record.address ? (\n
\n Address\n {record.address}\n
\n ) : null}\n
\n Latitude\n {record.latitude !== null ? record.latitude.toFixed(4) : 'None'}\n
\n
\n Longitude\n {record.longitude !== null ? record.longitude.toFixed(4) : 'None'}\n
\n\n {record.latitude !== null && record.longitude !== null ? (\n {\n mapRef.current = map\n }}\n >\n {\n if (mapRef.current && record.latitude !== null) {\n mapRef.current.panTo(new google.maps.LatLng(record.latitude, record.longitude))\n }\n }}\n active={true}\n />\n \n ) : null}\n
\n
\n
\n
\n \n Info\n
\n {!!record.connectionType && (\n
\n Network\n {record.connectionType}\n
\n )}\n {!!carrier?.name && (\n
\n Carrier\n {carrier?.name}\n
\n )}\n {!!record.device && (\n
\n Device\n {record.device}\n
\n )}\n
\n
\n )\n}\n\nexport default MeterResultCard\n","import { css, cx } from '@emotion/css'\nimport { IonButton, IonContent, IonHeader, IonIcon, IonModal, IonPage, IonSpinner } from '@ionic/react'\nimport { arrowBack } from 'ionicons/icons'\nimport { NetworkMeterRecord, NetworkMeterService } from '../../../services/NetworkMeter.service'\nimport { EllipseBackgroundLong } from '../../EllipseBackground/EllipseBackgroundLong'\nimport MeterResultCard from './MeterResultCard'\nimport { useState } from 'react'\nimport { MobileHeaderStyles } from '../../../pages/address-book/AddressBookStyles'\nimport { useIsMobileSize } from '../../../utils/hooks/useWindowSize'\nimport { EllipseBackgroundDesktop } from '../../EllipseBackground/EllipseBackgroundDesktop'\n\nconst RecordSummaryPageStyles = css`\n .side-element {\n height: 32px;\n width: 32px;\n ion-icon {\n width: 32px;\n height: 32px;\n }\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n .remove-button {\n > ion-icon {\n width: 20px;\n }\n }\n }\n\n .ellipse-background {\n top: calc(env(safe-area-inset-top) - 48px);\n z-index: -1;\n }\n\n .content {\n --background: transparent;\n .content-wrapper {\n display: flex;\n justify-content: center;\n }\n }\n`\n\nconst ModalStyles = css`\n --width: 100%;\n --height: 100%;\n`\n\ninterface MeterResultSummaryModalProps {\n isOpen: boolean\n record?: NetworkMeterRecord\n onDismiss: () => void\n}\n\nconst MeterResultSummaryModal = ({ isOpen, record, onDismiss }: MeterResultSummaryModalProps) => {\n const [isDeleting, setIsDeleting] = useState(false)\n const isMobileSize = useIsMobileSize()\n async function handleDelete() {\n if (!record) return\n setIsDeleting(true)\n await NetworkMeterService.deleteNetworkMeterRecord(record.id)\n setIsDeleting(false)\n onDismiss()\n }\n\n return (\n \n \n {isMobileSize ? (\n \n ) : (\n \n )}\n \n
\n \n \n \n
\n Result Details\n
\n {isDeleting ? (\n \n ) : (\n \n \n \n )}\n
\n
\n \n
\n {record ? : No Record Found}\n
\n
\n
\n
\n )\n}\n\nexport default MeterResultSummaryModal\n","import { IonCol, IonGrid, IonIcon, IonRow } from '@ionic/react'\nimport { arrowForward, wifi } from 'ionicons/icons'\nimport { NetworkMeterRecord } from '../../../services/NetworkMeter.service'\nimport { formatValue } from './Measurements/Measurements'\nimport { MeterHistoryTableStyles } from './MobileBrowserNetworkMeter.styles'\nimport MeterResultSummaryModal from './MeterResultSummaryModal'\nimport React from 'react'\n\nconst getDateFormat = (date?: string) => {\n if (!date) return ''\n const dateObj = new Date(date)\n return dateObj.toLocaleDateString('en-US', {\n month: '2-digit',\n day: '2-digit',\n year: '2-digit',\n hour: '2-digit',\n minute: '2-digit'\n })\n}\n\ninterface MeterHistoryTableProps {\n history: NetworkMeterRecord[]\n}\n\nexport const MeterHistoryTable = ({ history }: MeterHistoryTableProps) => {\n const [isRecordSummaryOpen, setIsRecordSummaryOpen] = React.useState(false)\n const [selectedRecord, setSelectedRecord] = React.useState(undefined)\n const openRecordSummary = (record: NetworkMeterRecord) => {\n setSelectedRecord(record)\n setIsRecordSummaryOpen(true)\n }\n\n const reversedHistory = Array.from(history).reverse()\n return (\n <>\n
\n \n \n \n Type\n \n \n Date\n \n \n \n \n \n \n \n \n Location\n \n \n \n {reversedHistory.map((record) => (\n openRecordSummary(record)}\n >\n \n {record.connectionType === 'Wi-Fi' ? (\n \n ) : (\n \n )}\n \n \n {getDateFormat(record.capturedOn).replace('/', '/\\u200B')}\n \n \n {formatValue(record.downloadSpeedMbps)}\n \n \n {formatValue(record.uploadSpeedMbps)}\n \n \n {record.address ?? 'None'}\n \n \n \n \n \n ))}\n \n
\n {\n setIsRecordSummaryOpen(false)\n setSelectedRecord(undefined)\n }}\n />\n \n )\n}\n","import { css } from '@emotion/css'\n\nexport const WifiPopupStyles = css`\n h1 {\n margin-top: 0;\n }\n .description {\n margin-bottom: 40px;\n }\n\n .close-wrapper {\n display: flex;\n justify-content: end;\n }\n\n ion-button {\n text-transform: uppercase;\n font-weight: 700;\n height: 52px;\n &::part(native) {\n font-size: 16px;\n letter-spacing: 0.3px;\n }\n }\n`\n\nexport const MobileBrowserNetworkMeterStyles = css`\n h2,\n h1,\n h4 {\n margin: 0;\n }\n\n h1 {\n font-size: 28px;\n margin-bottom: 10px;\n }\n h4 {\n font-weight: 400;\n }\n\n .lower-measurement .measurement-value {\n font-size: 20px;\n }\n\n .upper-row,\n .lower-row {\n display: grid;\n gap: 8px;\n }\n .upper-row {\n grid-template-columns: 1fr 1fr 1fr;\n }\n\n .download-icon {\n display: inline-block;\n margin-top: 16px;\n }\n .lower-row {\n padding-top: 8px;\n grid-template-columns: 1fr 1fr;\n }\n\n .speed-measurement {\n white-space: nowrap;\n }\n .network-meter {\n position: relative;\n margin-top: 30px;\n }\n\n .network-meter-value {\n width: 100%;\n }\n\n .network-meter-value,\n .indicators {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n .indicators {\n display: flex;\n justify-content: center;\n align-items: center;\n color: var(--ion-color-medium);\n }\n\n .indicators > * {\n position: absolute;\n }\n .mbps-description {\n font-size: 14px;\n font-weight: 500;\n color: var(--ion-color-medium);\n }\n\n .main-heading {\n margin-top: 12px;\n margin-bottom: 24px;\n }\n .wifi-description {\n padding-top: 12px;\n font-size: 14px;\n font-weight: 500;\n text-align: center;\n color: var(--ion-color-medium);\n }\n .measurements {\n margin-top: 20px;\n }\n .button-md {\n height: 52px;\n text-transform: uppercase;\n &::part(native) {\n letter-spacing: 0.3px;\n font-size: 16px;\n }\n }\n .network-type {\n text-align: center;\n margin: 24px 0;\n color: var(--ion-color-medium);\n span {\n color: var(--goji-primary-black);\n font-size: 18px;\n line-height: 27px;\n }\n }\n`\n\nexport const NetworkMeterHistoryStyles = css`\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n .history-title {\n font-size: 20px;\n font-weight: 900;\n }\n\n .spinner-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 200px;\n }\n`\n\nexport const MeterHistoryTableStyles = css`\n overflow: auto;\n display: flex;\n .table {\n --ion-grid-columns: 18;\n display: flex;\n flex-direction: column;\n color: var(--ion-color-dark);\n\n > * {\n border-bottom: 1px solid var(--ion-color-light);\n }\n > *:last-child {\n border-bottom: none;\n }\n\n font-size: 16px;\n\n .row {\n padding: 6px 4px !important;\n &.header {\n padding: 12px 0;\n background-color: var(--ion-color-light);\n border-radius: 10px 10px 0 0;\n font-size: 14px;\n\n ion-icon {\n width: 17px;\n height: 17px;\n }\n }\n &:not(.header) {\n cursor: pointer;\n :hover {\n background-color: var(--goji-color-secondary-blue);\n }\n }\n }\n .column {\n padding: 8px !important;\n display: flex;\n align-items: center;\n padding: 8px 0;\n text-align: left;\n\n &.address {\n display: inline-block;\n align-self: center;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n &.date {\n font-size: 12px;\n }\n &.speed-metric,\n &.speed-metric-header {\n display: flex;\n align-items: center;\n text-align: center;\n justify-content: center;\n }\n &.arrow {\n justify-content: center;\n }\n\n .metric-icon {\n color: var(--ion-color-medium);\n width: 20px;\n height: 20px;\n }\n .type-icon {\n color: var(--ion-color-dark);\n width: 20px;\n height: 20px;\n }\n .arrow-icon {\n color: var(--ion-color-medium);\n width: 16px;\n height: 16px;\n }\n }\n }\n`\n","import { SignalMeterStrength } from '../../SignalMeterStrength'\nimport { cx } from '@emotion/css'\n\nconst EXCELLENT_QUALITY = 8192\n\nexport const SpeedResult: React.FC<{ downloadSpeed: number; className?: string }> = ({ downloadSpeed, className }) => {\n const normalizedQuality = Math.min((downloadSpeed * 1024) / EXCELLENT_QUALITY, 1)\n\n return (\n
\n
\n Your current network performance should be able to handle the following activities:\n
\n \n
\n )\n}\n","import { css } from '@emotion/css'\n\nexport const ProgressBarStyles = (color: string) => css`\n height: 16px;\n border-radius: 2px;\n --buffer-background: var(--ion-color-light);\n --progress-background: ${color};\n\n &.ion-color-success-tint {\n --ion-color-base: var(--ion-color-success-tint);\n }\n\n &::part(track) {\n background-color: var(--buffer-background);\n }\n &::part(progress) {\n background: ${color};\n }\n`\n\nexport const SignalMeterStrengthStyles = css`\n display: flex;\n width: 100%;\n\n .tier-text {\n font-family: Aktifo-A, Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: 600;\n font-size: 14px;\n line-height: 12px;\n margin: 0;\n margin-top: 8px;\n height: 100%;\n color: var(--ion-color-medium-tint);\n overflow: hidden;\n white-space: break-spaces;\n }\n\n .tier-bar {\n position: absolute;\n background-color: var(--ion-background-color);\n width: 2px;\n height: 16px;\n top: -16px;\n }\n\n .dark-text {\n color: var(--ion-color-dark);\n }\n\n .signal-meter-tier {\n margin-right: 2px;\n min-width: 40px;\n position: relative;\n }\n`\n\nexport const SignalMeterStyles = css`\n .signal-meter-container {\n position: relative;\n display: flex;\n justify-content: center;\n margin-top: 33px;\n margin-bottom: 2em;\n }\n\n .center-icon {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n z-index: 4;\n }\n\n .map-crop-container {\n position: relative;\n width: 50vmin;\n max-width: 300px;\n padding: 5px;\n }\n .map-crop {\n position: relative;\n margin: auto;\n border-radius: 100%;\n max-height: 30vh;\n overflow: hidden;\n aspect-ratio: 1;\n z-index: 2;\n\n #map {\n border-radius: 100%;\n height: 100%;\n min-height: initial;\n }\n }\n\n .round-progress-bar {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 2;\n }\n\n .signal-meter-title {\n margin-top: 8px;\n }\n\n .signal-label {\n position: absolute;\n color: var(--ion-color-medium);\n font-weight: 400;\n letter-spacing: 0.15px;\n }\n\n .signal-label-poor {\n left: 0;\n bottom: 0;\n transform: translateX(-50%);\n }\n .signal-label-fair {\n left: 0;\n top: 0;\n transform: translateX(-50%);\n }\n .signal-label-good {\n right: 0;\n top: 0;\n transform: translateX(50%);\n }\n .signal-label-excellent {\n bottom: 0;\n right: 0;\n transform: translateX(50%);\n }\n`\n","import { IonProgressBar } from '@ionic/react'\nimport { getGridColor } from '../../utils/signalStrength'\nimport { ProgressBarStyles, SignalMeterStrengthStyles } from './SignalMeter.styles'\n\ninterface SignalTier {\n name: string\n breadth: number\n lowerBoundary: number\n}\n\nconst getSignalTiers = () => {\n return [\n { name: 'Text', breadth: 0.333 },\n { name: 'Phone Calls', breadth: 0.333 },\n { name: 'High resolution video', breadth: 0.333 }\n ]\n}\n\nconst getAccumulatedTiers = (): SignalTier[] => {\n const tiers = getSignalTiers()\n let lowerBoundary = 0\n tiers.forEach((tier) => {\n ;(tier as SignalTier).lowerBoundary = lowerBoundary\n lowerBoundary += tier.breadth\n })\n\n return tiers as SignalTier[]\n}\nconst signalTiers = getAccumulatedTiers()\n\ninterface SignalMeterStrengthProps {\n normalizedQuality: number\n color?: string\n}\nexport const SignalMeterStrength = (props: SignalMeterStrengthProps) => {\n const newColor = props.color ?? getGridColor(props.normalizedQuality)\n\n return (\n <>\n \n
\n {signalTiers.map((tier, idx) => {\n return (\n \n {idx > 0 ?
: null}\n \n {tier.name}\n \n
\n )\n })}\n
\n \n )\n}\n","import { css, cx } from '@emotion/css'\nimport { IonButton, IonText } from '@ionic/react'\nimport { UseCarrier } from '../services/Carrier.service'\nimport { NetworkType, NetworkTypeValue } from '../services/NetworkType.service'\nimport { PerformanceAverages } from '../services/planService/Plan.service'\nimport { getGridColor, getTitleForNetworkPerformance } from '../utils/signalStrength'\n\nexport function getNetworkTypeValue(networkType: NetworkTypeValue, averages: PerformanceAverages | undefined): number {\n if (!averages) {\n return 0\n }\n\n if (networkType === NetworkType['4G']) {\n return averages.average4GPerformance ?? 0\n }\n\n if (networkType === NetworkType['5G']) {\n return averages.average5GPerformance ?? 0\n }\n\n throw new Error('Invalid network type', { cause: { networkType } })\n}\n\nconst SignalStrenghtErrorStyles = css`\n display: inline-flex;\n align-items: center;\n flex\n`\nconst NetworkPerformanceQueryLabel = ({\n qualityQuery,\n networkType\n}: {\n qualityQuery: ReturnType<(typeof UseCarrier)['useCarrierWithPerformance']>\n networkType: NetworkTypeValue\n}) => {\n if (qualityQuery.isFetching || qualityQuery.isIdle) {\n return <>...\n }\n\n if (qualityQuery.isError) {\n return (\n
\n Error while fetching.\n qualityQuery.refetch()} size='small'>\n Try again\n \n
\n )\n }\n\n return (\n \n )\n}\n\nconst NetworkPerformanceLabelStyles = (color: string) => css`\n border: 2px solid ${color};\n border-radius: 100px !important;\n`\nexport const NetworkPerformanceLabel = ({ networkPerformance }: { networkPerformance: number }) => {\n const color = getGridColor(networkPerformance)\n\n return (\n \n {getTitleForNetworkPerformance(networkPerformance)}\n \n )\n}\n\nexport default NetworkPerformanceQueryLabel\n","import * as React from 'react'\nimport { css } from '@emotion/css'\nconst SwiperContentStyles = css`\n padding-bottom: 20px;\n`\n\nexport const FreeBulletsStyles = (paddingTop: number) => css`\n .swiper-pagination {\n position: relative;\n top: 0 !important;\n padding-top: var(--bullets-padding-top, ${paddingTop}px);\n }\n`\n\nexport function SwiperContent(props: { children?: React.ReactNode | React.ReactNode[] }) {\n return
{props.children}
\n}\n","import { css, cx } from '@emotion/css'\nimport { createPortal } from 'react-dom'\n\nconst TModalStyles = css`\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n width: 368px;\n max-width: 90%;\n background-color: var(--ion-card-background);\n border-radius: 10px;\n color: var(--ion-text-color);\n padding: 30px;\n`\n\nconst BackdropStyles = css`\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n background-color: var(--ion-color-medium);\n`\n\ninterface TModalProps {\n isOpen?: boolean\n onClose?: () => void\n children?: React.ReactNode\n className?: string\n}\nconst TModal: React.FC = (props) => {\n if (props.isOpen === false) {\n return null\n }\n return createPortal(\n <>\n
\n
{props.children}
\n ,\n document.body\n )\n}\n\nexport const ModalHeadingStyles = css`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 21px;\n gap: 20px;\n\n .close-button {\n align-self: end;\n color: #777;\n }\n .title {\n align-self: start;\n }\n`\n\nconst TModalHeadingStyles = css`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 21px;\n`\nexport function TModalHeading(props: { children?: React.ReactNode | React.ReactNode[] }) {\n return
{props.children}
\n}\n\nexport default TModal\n","function IconTag(props: { className?: string }) {\n return (\n \n \n \n \n )\n}\nexport default IconTag\n","export const GOOGLE_PLAY_URL = 'https://play.google.com/store/apps/details?id=com.gojimobile.app'\nexport const APPSTORE_URL = 'https://apps.apple.com/us/app/goji-mobile/id6471450350'\n","import { css } from '@emotion/css'\nimport { MOBILE_BREAKPOINT } from '../../utils/hooks/useWindowSize'\n\nexport const AddressBookPageStyles = css`\n color: var(--ion-color-dark);\n height: 100%;\n\n .content {\n &::part(scroll) {\n padding: 30px;\n\n @media (max-width: 450px) {\n padding: 16px;\n }\n padding-top: 32px;\n\n @media (min-width: ${MOBILE_BREAKPOINT}px) {\n padding-left: 8.5%;\n padding-right: 8.5%;\n }\n }\n }\n\n .section-container-description {\n display: inline-block;\n padding-bottom: 16px;\n font-size: 18px;\n font-weight: 500;\n line-height: 27px;\n }\n`\n\nexport const MobileHeaderStyles = css`\n width: 100%;\n background-color: var(--goji-primary-lime);\n height: var(--header-full-size);\n padding: 0 16px;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: calc(env(safe-area-inset-top));\n // Start / End icons\n .side-element {\n width: 32px;\n }\n\n // Title\n span {\n font-size: 18px;\n font-weight: 900;\n }\n`\n\nexport const DesktopHeaderStyles = css`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 24px 16px;\n\n .back-button {\n width: 20px;\n height: 20px;\n ion-icon {\n width: 20px;\n height: 20px;\n }\n }\n`\n\nexport const addressBookListStyles = css`\n height: 100%;\n overflow-y: auto;\n\n .address-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin: 16px 0;\n\n &:first-child {\n border-top: 1px solid var(--ion-color-light);\n }\n border-bottom: 1px solid var(--ion-color-light);\n .address {\n width: 100%;\n .address-info {\n display: flex;\n flex-direction: column;\n padding: 16px 0;\n .address-label {\n font-size: 16px;\n font-weight: 500;\n }\n .address-detail {\n font-size: 14px;\n color: var(--ion-color-medium);\n }\n }\n }\n }\n\n .remove-button {\n height: 50px;\n width: 50px;\n }\n`\n\nexport const PopoverListStyles = css`\n .remove-item {\n color: var(--ion-color-danger);\n }\n\n ::part(content) {\n box-shadow: 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n }\n`\n\nexport const BarryContainerStyles = css`\n margin-top: 80px;\n @media (max-height: 700px) {\n margin-top: 40px;\n }\n text-align: center;\n\n display: flex;\n flex-direction: column;\n align-items: center;\n\n ion-img::part(image) {\n height: 196px;\n }\n\n h2 {\n color: var(--ion-color-medium);\n font-size: 18px;\n font-weight: 900;\n margin-bottom: 8px;\n }\n\n span.subheading {\n color: rgba(0, 0, 0, 0.87);\n font-size: 14px;\n margin-bottom: 8px;\n }\n\n span.paragraph {\n color: var(--ion-color-medium);\n font-size: 12px;\n }\n`\n\nexport const AddressBookModalStyles = css`\n --width: fit-content;\n --max-width: 400px;\n --height: fit-content;\n --border-radius: 10px;\n\n @media (max-width: ${MOBILE_BREAKPOINT}px) {\n --max-width: 300px;\n }\n\n @media (max-width: 320px) {\n --max-width: 280px;\n }\n`\n","import { Plan } from '../../services/planService/Plan'\n\nexport const PlanNotFound: Plan = {\n carrierId: '',\n carrierName: '',\n totogiCarrierName: '',\n video_streaming_quality: '',\n priceMultiLine: '',\n priceCurrency: '',\n planLink: '',\n data: undefined,\n telcoType: 'MNO',\n sms: undefined,\n voice: undefined,\n price: -1,\n networkPerformance4G: 0,\n addons: [],\n deals: [],\n planId: 'plan-not-found',\n planName: 'Can’t find my plan in the list',\n shortPlanName: 'Can’t find my plan in the list',\n costPerLine: -1\n}\n","import { css, cx } from '@emotion/css'\nimport React from 'react'\nimport CarrierDisplay from '../../components/CarrierDisplay/CarrierDisplay'\nimport { getCarrierLogoUrl } from '../../services/carrier/get-logo-url'\nimport { trackAmplitudeEvent } from '../../utils/amplitude'\nimport { Deal } from './deal.service'\nimport DealExpirationText from './DealExpirationText'\nimport { DealModalSingleton } from './DealModalSingleton'\n\nconst DealCardStyles = css`\n background-color: var(--ion-background-color);\n color: inherit;\n text-decoration: none;\n cursor: pointer;\n border: 1px solid var(--ion-color-light);\n border-radius: 10px;\n padding: 16px;\n overflow: hidden;\n box-shadow: 0px 0px 54px 0px rgba(178, 119, 60, 0.1), 0px 8px 8px 0px rgba(18, 46, 80, 0.06),\n 0px 1px 6px 0px rgba(24, 35, 48, 0.18);\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n .deal-image {\n max-width: 38%;\n min-width: fit-content;\n display: flex;\n justify-content: center;\n }\n\n .deal-card-content {\n display: flex;\n flex-direction: column;\n gap: 8px;\n max-height: 100%;\n }\n\n .deal-card-title {\n color: var(--ion-color-medium);\n font-size: 14px;\n }\n\n .description {\n overflow: hidden;\n }\n`\n\ntype DealCardProps = {\n deal: Deal\n onClick: (deal: Deal) => void\n className?: string\n}\nexport function DealCard(props: DealCardProps) {\n return (\n {\n if (!DealModalSingleton.hasSeenModal) {\n trackAmplitudeEvent('Deals - show deal modal', { deal: props.deal })\n DealModalSingleton.hasSeenModal = true\n evt.preventDefault()\n props.onClick(props.deal)\n } else {\n trackAmplitudeEvent('Deals - navigated to carrier website', { deal: props.deal, from: 'deals page' })\n }\n }}\n href={props.deal.url}\n target='_blank'\n rel='noreferrer'\n className={cx(DealCardStyles, props.className)}\n >\n
\n \n
\n
\n {props.deal.carrierName}\n
{props.deal.description}
\n\n \n
\n
\n )\n}\n","import { css } from '@emotion/css'\n\nconst ExpirationTextStyles = css`\n color: var(--ion-color-medium);\n font-size: 14px;\n\n padding-top: 8px;\n display: flex;\n align-items: center;\n gap: 4px;\n`\nconst formatter = new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n})\n\nfunction getFormattedDateString(dateStr: string): string | undefined {\n const expirationDate = dateStr ? new Date(dateStr) : undefined\n return expirationDate ? formatter.format(expirationDate) : undefined\n}\n\nfunction DealExpirationText(props: { dealExpiration: string }) {\n const expirationDate = getFormattedDateString(props.dealExpiration)\n\n return expirationDate ? (\n
\n clock\n Expires {expirationDate}\n
\n ) : null\n}\n\nexport default DealExpirationText\n","export const DealModalSingleton = {\n hasSeenModal: false\n}\n","import { css, cx } from '@emotion/css'\nimport { IonButton } from '@ionic/react'\nimport React from 'react'\nimport CloseButton from '../../components/CloseButton/CloseButton'\nimport TModal, { ModalHeadingStyles } from '../../components/TModal/TModal'\nimport { trackAmplitudeEvent } from '../../utils/amplitude'\nimport { ResetMargin } from '../../utils/styles/MarginUtils.styles'\nimport { Deal, PlanDeal } from './deal.service'\n\nconst DescriptionStyles = css`\n margin-bottom: 32px;\n`\n\ntype DealsRedirectionModalProps = {\n selectedDeal: Deal | PlanDeal | null\n onDidDismiss: () => void\n}\nexport function DealsRedirectionModal(props: DealsRedirectionModalProps) {\n const { onDidDismiss, selectedDeal } = props\n\n const onDismiss = React.useCallback(() => {\n trackAmplitudeEvent('Deals - navigated to carrier website', { deal: selectedDeal, from: 'warning modal' })\n onDidDismiss()\n }, [onDidDismiss, selectedDeal])\n\n if (!props.selectedDeal) {\n return null\n }\n\n return (\n \n
\n
\n \n
\n

Before we redirect you...

\n
\n
\n Be sure to find the corresponding promotion and review the carrier's terms and conditions to apply the deal.\n
\n \n \n Go to carrier site\n \n \n
\n )\n}\n","export type Deal = {\n dealId: number\n description: string\n url: string\n carrierId: string\n carrierName: string\n carrierLogoName: string\n creationDate: string\n lastUpdatedDate: string\n expirationDate: string\n planSpecific: boolean\n dealType: string\n}\n\nexport type PlanDeal = {\n dealId: number\n description: string\n url: string\n creationDate: string\n lastUpdatedDate: string\n expirationDate: string\n planSpecific: boolean\n}\n\nexport type DealOfTheDay = {\n platform: 'android' | 'ios' | 'desktop'\n url: string\n bannerName: string\n}\n\nexport function getSortingText(sortBy: DealSort): string {\n switch (sortBy) {\n case 'expiring_soon':\n return 'Expiring soon'\n case 'carrier':\n return 'Carrier'\n case 'newest':\n return 'Newest'\n }\n}\n\nexport type DealSort = 'expiring_soon' | 'carrier' | 'newest'\nexport const DealSortOptionsDict: Record = {\n expiringSoon: 'expiring_soon',\n carrier: 'carrier',\n newest: 'newest'\n}\nexport const dealSortOptions: DealSort[] = ['expiring_soon', 'carrier', 'newest']\n","import { useQuery } from 'react-query'\nimport API from '../../../api'\nimport { Deal } from '../deal.service'\n\nexport function useDeals() {\n return useQuery({\n queryKey: ['deals'],\n queryFn: async () => {\n const data = await API.get('/deals')\n return data\n }\n })\n}\n","import { css, cx } from '@emotion/css'\nimport { IonRouterLink } from '@ionic/react'\nimport { MainNavigationPaths, ProfilePaths, RoutePaths } from '../../../paths'\nimport { UsePlan } from '../../../services/planService/Plan.service'\nimport { ResetMargin } from '../../../utils/styles/MarginUtils.styles'\nimport { DealSortOptionsDict } from '../../deals/deal.service'\n\nconst socialMedias: { imageUrl: string; imageAlt: string; link: string }[] = [\n {\n imageUrl: '/assets/images/home/footer/facebook.svg',\n link: 'https://www.facebook.com/gojimobile',\n imageAlt: 'Facebook logo'\n },\n {\n imageUrl: '/assets/images/home/footer/instagram.svg',\n link: 'https://www.instagram.com/gojimobile',\n imageAlt: 'Instragram logo'\n },\n {\n imageUrl: '/assets/images/home/footer/x.svg',\n link: 'https://x.com/goji_mobile',\n imageAlt: 'X logo'\n },\n {\n imageUrl: '/assets/images/home/footer/tiktok.svg',\n link: 'https://www.tiktok.com/@gojimobile',\n imageAlt: 'Tiktok logo'\n }\n]\nconst DesktopFooterUpperStyles = css`\n margin-bottom: 64px;\n display: flex;\n gap: 10%;\n\n .social-medias {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n margin-top: 32px;\n }\n\n & > * {\n width: 50%;\n }\n\n .description {\n padding-top: 8px;\n font-size: 14px;\n }\n\n .upper-left {\n padding: 27.5px 0;\n }\n`\nexport function DesktopFooterUpper() {\n return (\n
\n
\n

Don't miss out!

\n

\n Hit that follow button on our social media channels for the latest deals along with tips and tricks to save\n you money.\n

\n
\n {socialMedias.map((socialMedia) => {\n return (\n \n {socialMedia.imageAlt}\n \n )\n })}\n
\n
\n \n
\n )\n}\n\nconst LinkSectionStyles = css`\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n & > h3 {\n font-size: 18px;\n }\n`\nfunction LinkSection(props: { title: string; children: React.ReactNode }) {\n return (\n
\n

{props.title}

\n {props.children}\n
\n )\n}\n\nconst LinkListStyles = css`\n list-style: none;\n padding: 0;\n margin: 0;\n\n a,\n ion-router-link {\n font-size: 12px;\n text-decoration: none;\n color: var(--ion-text-color);\n }\n\n display: flex;\n flex-direction: column;\n`\nfunction LinkList(props: { children: React.ReactNode }) {\n return
    {props.children}
\n}\n\nconst FooterLinkStyles = css`\n padding: 8px 0;\n`\nfunction FooterLink(props: { children: React.ReactNode; link: string }) {\n return (\n
  • \n {props.children}\n
  • \n )\n}\n\nconst DesktopFooterLinksStyles = css`\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n gap: 16px 40px;\n\n .mid-section {\n display: flex;\n flex-direction: column;\n gap: 24px;\n }\n`\nfunction DesktopFooterLinks() {\n const topPicks = UsePlan.useTopPicks()\n const topPickUrls = topPicks.data\n ?.map((topPick) => {\n return {\n title: topPick.toolbarText,\n url: MainNavigationPaths.plans + '/' + topPick.id\n }\n })\n .slice(0, 2)\n\n return (\n
    \n \n All plans\n Recommended\n {topPickUrls?.map((topPickUrl) => (\n \n {topPickUrl.title}\n \n ))}\n Saved plans\n \n
    \n \n All promotions\n \n Coverage map\n Address book\n \n
    \n \n
  • \n \n Why Goji?\n \n
  • \n
  • \n \n How it works\n \n
  • \n
  • \n \n Blog\n \n
  • \n Profile\n
    \n
    \n )\n}\n","import { css, cx } from '@emotion/css'\nimport { IonRow, IonText, IonToolbar } from '@ionic/react'\nimport { useIsMobileSize } from '../../../utils/hooks/useWindowSize'\nimport { DesktopFooterUpper } from './desktop-footer-upper'\n\nconst LowerFooterStyles = css`\n background-color: var(--ion-color-secondary-tint);\n border-top: 1px solid var(--ion-color-light);\n height: 51px;\n display: flex;\n justify-content: space-between;\n align-items: end;\n padding-top: 16px;\n padding-bottom: 16px;\n\n .privacy-tos {\n display: flex;\n gap: 24px;\n text-transform: uppercase;\n color: var(--ion-text-color);\n font-weight: 700;\n }\n font-size: 12px;\n\n .rights {\n color: var(--ion-color-medium);\n }\n`\n\nfunction LowerFooter(props: { className?: string }) {\n const currentYear = new Date().getFullYear()\n\n return (\n \n @{currentYear} Goji Mobile. All rights reserved.\n \n \n )\n}\n\nconst LowerFooterStandaloneStyles = css`\n padding: 16px 8.5%;\n`\nexport function LowerFooterStandalone(props: { className?: string }) {\n return \n}\n\nconst DesktopFooterStyles = (options: { resetHorizontal?: boolean }) => css`\n overflow: visible;\n width: 100%;\n min-height: 465px;\n display: flex;\n padding: 60px ${options.resetHorizontal ? '0' : '8.5%'} 100px;\n z-index: 5;\n\n --background: var(--ion-color-secondary-tint);\n`\n\nexport const DesktopFooter = (props: { className?: string; resetHorizontal?: boolean }) => {\n const isMobileSize = useIsMobileSize()\n if (isMobileSize) {\n return null\n }\n return (\n \n \n \n \n )\n}\n","import { css } from '@emotion/css'\n\nexport const DesktopHeaderStyles = css`\n display: flex;\n padding: 0 8.5%;\n color: var(--goji-primary-black);\n box-shadow: 0px 1px 0px 0px #00000040;\n background-color: var(--goji-primary-lime);\n height: 76px;\n\n ion-row {\n gap: 32px;\n }\n\n @media screen and (max-width: 1080px) {\n padding: 0 5%;\n ion-row {\n gap: 14px;\n font-size: 14px;\n }\n\n .unessential-when-tight {\n display: none;\n }\n }\n\n .btn-download {\n text-transform: uppercase;\n font-size: 12px;\n height: 44px;\n }\n`\n\nexport const HeaderLinkStyles = css`\n color: var(--goji-primary-black);\n cursor: pointer;\n\n &.active {\n font-weight: 900;\n }\n`\nexport const ProfileLinkStyles = css`\n height: 24px;\n`\n","import React from 'react'\nimport { cx } from '@emotion/css'\nimport { useHistory } from 'react-router'\nimport { IonButton, IonHeader, IonImg, IonRouterLink, IonRow } from '@ionic/react'\nimport { DesktopHeaderStyles, HeaderLinkStyles, ProfileLinkStyles } from './DesktopHeader.styles'\nimport useAuthStore from '../../../store/auth'\nimport { MainNavigationPaths } from '../../../paths'\n\ninterface HeaderLinkProps {\n path: string\n children: React.ReactNode\n className?: string\n}\nconst HeaderLink: React.FC = ({ children, path, className }) => {\n const history = useHistory()\n const isCurrentPath = history.location.pathname.includes(path)\n\n return (\n \n {children}\n \n )\n}\n\nexport const DesktopHeader = (props: { className?: string }) => {\n const [currentUser] = useAuthStore((state) => [state.currentUser])\n const isUserLoggedIn = Boolean(currentUser?.token)\n\n return (\n <>\n \n \n \n \n \n Plans\n Promotions\n Coverage Map\n Network Meter\n \n \n {isUserLoggedIn ? (\n \n profile\n \n ) : (\n Sign In\n )}\n \n Download \n Goji Mobile\n \n \n \n \n )\n}\n","import { css, cx } from '@emotion/css'\nimport { IonFabButton, IonIcon } from '@ionic/react'\nimport { arrowBack, arrowForward } from 'ionicons/icons'\nimport { MOBILE_BREAKPOINT } from '../../../utils/hooks/useWindowSize'\n\nconst ArrowControlsStyles = css`\n z-index: 2;\n pointer-events: none;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n width: 100%;\n\n display: none;\n @media screen and (min-width: ${MOBILE_BREAKPOINT}px) {\n display: flex;\n justify-content: space-between;\n }\n\n .fab-show-arrow {\n pointer-events: all;\n &.hidden {\n visibility: hidden;\n }\n\n &.left {\n left: -24px;\n }\n\n &.right {\n right: -24px;\n }\n\n ion-fab-button {\n width: 32px;\n height: 32px;\n }\n }\n`\n\ninterface ArrowControlsProps {\n onForward: () => void\n onBackward: () => void\n swiperPosition?: number\n className?: string\n}\nexport function ArrowControls(props: ArrowControlsProps) {\n return (\n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n )\n}\n","import * as React from 'react'\nimport { css, cx } from '@emotion/css'\nimport { Swiper, SwiperRef, SwiperSlide } from 'swiper/react'\nimport { Pagination } from 'swiper'\nimport { FreeBulletsStyles } from '../../../components/Swiper/SwiperContent'\nimport { ArrowControls } from '../ArrowControls/ArrowControls'\nimport { PlanResultCardSkeletonV2 } from '../../../components/PlanResult/PlanResultCardSkeleton'\nimport { MOBILE_BREAKPOINT, useIsMobileSize } from '../../../utils/hooks/useWindowSize'\n\nconst HomeCaroulselStyles = css`\n position: relative;\n\n .swiper {\n @media screen and (min-width: ${MOBILE_BREAKPOINT}px) {\n --bullets-padding-top: 24px;\n --swiper-pagination-bullet-width: 11px;\n --swiper-pagination-bullet-height: 11px;\n }\n overflow: var(--carousel-overflow, visible);\n }\n\n .swiper-slide {\n display: flex;\n justify-content: center;\n width: fit-content;\n }\n`\nexport function HomeCaroulsel(props: {\n className?: string\n loading?: boolean\n children: React.ReactNode | React.ReactNode[]\n showArrows?: boolean\n arrowControlsStyles?: string\n}) {\n const swiperRef = React.useRef(null)\n const [swiperPosition, setSwiperPosition] = React.useState(0)\n const isMobile = useIsMobileSize()\n\n return (\n
    \n setSwiperPosition(swiperRef.current?.swiper.progress)}\n >\n {props.loading ? (\n <>\n \n \n \n \n \n \n \n \n \n \n ) : null}\n {props.children}\n \n {props.showArrows ? (\n swiperRef.current?.swiper.slideNext()}\n onBackward={() => swiperRef.current?.swiper.slidePrev()}\n swiperPosition={swiperPosition}\n />\n ) : null}\n
    \n )\n}\n","import { ContractType, ReasonForSwitch } from '../../services/wizard/reason-for-switch'\nimport { DeepMutable } from '../../utils/types/DeepMutable'\nimport { ValidatedResults } from './ServerResponse'\nimport { CoverageMapBackendInput } from './tools/handlers/CoverageMapToolHandler'\nimport {\n BotTextMessage,\n ChatInteraction,\n IChatFlow,\n MessageType,\n outOfContextTemplate,\n getInvalidResponseParams\n} from './types/ChatStep'\nimport { FreeChatMessageRecord } from './types/free-chat.types'\nimport { SuggestionType, ToolCallSuggestion } from './types/Suggestion'\n\nexport type PredefinedChatBotMessageRecord = { message: BotTextMessage }\n\nexport type PredefinedChatKeyRecord = {\n key: keyof T\n}\n\nexport type PredefinedChatMessageRecord = FreeChatMessageRecord | PredefinedChatKeyRecord\n\nconst ChatFlowConst = {\n entrypoint: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: 'empty',\n question: [\n {\n text: 'First, let’s check the coverage for your favorite address or your current location.'\n }\n ],\n outOfContextResponse: `${outOfContextTemplate}your address input?`,\n subtitle: 'You can change this or add more locations later.',\n suggestions: [\n {\n type: SuggestionType.CURRENT_LOCATION,\n text: 'Current location',\n value: {\n parsedAnswer: 'Current location'\n }\n }\n ],\n interactions: [ChatInteraction.ADDRESS],\n nextPaths: {\n $default: 'current_plan__transition__few_more_questions'\n }\n },\n\n current_plan__transition__few_more_questions: {\n type: MessageType.TRANSITION,\n from: 'bot',\n imageUrl: '/assets/images/barry/barry_icon_thinking.svg',\n imageAlt: 'goji barry thinking',\n text: 'Great! Let’s start by figuring out your current plan...',\n subtext: '...so we can recommend a better one.',\n nextMessageKey: 'current_plan__current_carrier'\n },\n\n current_plan__current_carrier: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: '/llm/current-carrier',\n question: [\n {\n text: 'Who is your current carrier?'\n }\n ],\n outOfContextResponse: `${outOfContextTemplate}who your current carrier is?`,\n suggestions: [\n {\n type: SuggestionType.TEXT,\n text: 'Verizon',\n value: {\n parsedAnswer: {\n carrierId: '12a6a718-a734-4a77-9ba5-9a3b09835592',\n carrierName: 'Verizon'\n }\n }\n },\n {\n type: SuggestionType.TEXT,\n text: 'AT&T',\n value: {\n parsedAnswer: {\n carrierId: '2b9efb82-eece-48fd-af34-71c28592a014',\n carrierName: 'AT&T'\n }\n }\n },\n {\n type: SuggestionType.TEXT,\n text: 'T-Mobile',\n value: {\n parsedAnswer: {\n carrierId: 'a932774b-f6a7-4352-a747-e498fb0959cc',\n carrierName: 'T-Mobile'\n }\n }\n }\n ],\n interactions: [ChatInteraction.FREE_TEXT],\n nextPaths: {\n $default: 'current_plan__num_lines'\n }\n },\n\n current_plan__num_lines: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: '/llm/num-lines-current-plan',\n question: [\n {\n text: 'How many lines do you have with your current plan?'\n }\n ],\n outOfContextResponse: `${outOfContextTemplate}how many lines you have with your current plan?`,\n getInvalidResponse: (validation?: getInvalidResponseParams) => {\n return `Could you tell a value between ${validation?.min} and ${validation?.max} lines?`\n },\n subtitle: 'Make sure to include yourself in this number.',\n interactions: [ChatInteraction.FREE_TEXT],\n suggestions: [\n { type: SuggestionType.TEXT, text: '1 Line', value: { parsedAnswer: 1 } },\n { type: SuggestionType.TEXT, text: '2 Lines', value: { parsedAnswer: 2 } },\n { type: SuggestionType.TEXT, text: '3 Lines', value: { parsedAnswer: 3 } }\n ],\n nextPaths: {\n $default: 'current_plan__plan_type'\n }\n },\n\n current_plan__plan_type: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: '/llm/plan-type',\n // TODO: should plan type be used in the recommendations algorithm?\n question: [\n {\n text: 'Do you pay a bill each month or do you pay for minutes and data in advance?'\n }\n ],\n outOfContextResponse: `${outOfContextTemplate}if you have a prepaid or postpaid plan?`,\n getInvalidResponse: (validation?: getInvalidResponseParams) => {\n return `Could you tell me if you have a ${validation?.options?.join(' or ')} plan?`\n },\n suggestions: [\n {\n type: SuggestionType.TEXT,\n text: 'Pay in advance (prepaid)',\n value: { parsedAnswer: 'Prepaid' }\n },\n {\n type: SuggestionType.TEXT,\n text: 'Pay each month (postpaid)',\n value: { parsedAnswer: ContractType.Postpaid }\n }\n ],\n interactions: [ChatInteraction.FREE_TEXT],\n nextPaths: {\n $default: 'current_plan__target_budget'\n }\n },\n\n current_plan__switch_to_prepaid: {\n from: 'bot',\n type: MessageType.STEP,\n // TODO: is this the same as plan-type?\n // If user answered they have a prepaid plan, how do we know we should not show this?\n endpoint: '/llm/switch-to-prepaid',\n question: [\n {\n text: 'To save money, would you consider switching to a prepaid plan?'\n }\n ],\n outOfContextResponse: `${outOfContextTemplate}if you would consider switching to a prepaid plan to save money?`,\n getInvalidResponse: (validation?: getInvalidResponseParams) => {\n return `Options you can tell me are ${validation?.options\n ?.slice(0, -1)\n .join(', ')} or ${validation?.options?.slice(-1)}.`\n },\n subtitle: 'Some of these carriers include Cricket Wireless, Mint Mobile, Metro by T-Mobile, and more.',\n suggestions: [\n { type: SuggestionType.TEXT, text: 'Yes', value: { parsedAnswer: 'Yes' } },\n { type: SuggestionType.TEXT, text: 'No', value: { parsedAnswer: 'No' } },\n {\n type: SuggestionType.TEXT,\n text: 'I’m not sure / No preference',\n value: { parsedAnswer: null, resultStatus: ValidatedResults.UNKNOWN }\n }\n ],\n interactions: [ChatInteraction.FREE_TEXT],\n nextPaths: {\n $default: 'current_plan__target_budget'\n }\n },\n\n current_plan__target_budget: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: '/llm/monthly-bill',\n subtitle: \"If you don't know it, go ahead and type in the most you want to spend per month.\",\n question: [\n {\n text: 'What is your total monthly bill for your current plan?'\n }\n ],\n outOfContextResponse: `${outOfContextTemplate}how much you pay for your current plan (per month)?`,\n getInvalidResponse: (validation?: getInvalidResponseParams) => {\n return `Could you tell me a value between $${validation?.min} and $${validation?.max}?`\n },\n suggestions: [],\n interactions: [ChatInteraction.FREE_TEXT],\n nextPaths: {\n $default: 'current_plan__transition__basics_message'\n }\n },\n\n current_plan__transition__basics_message: {\n type: MessageType.TRANSITION,\n from: 'bot',\n imageUrl: '/assets/images/barry/barry_icon_thinking.svg',\n imageAlt: 'goji barry talking on the phone',\n text: 'Great! Now that we have the basics about your current plan...',\n subtext: \"Let's move on to finding an even better one!\",\n nextMessageKey: 'all__data_allowance'\n },\n\n current_plan__unhappy_reasons: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: '/llm/unhappy-reasons',\n question: [\n {\n text: \"What's the main reason you're looking for a new plan?\"\n }\n ],\n outOfContextResponse: `${outOfContextTemplate}the main reason you're looking for a new plan?`,\n getInvalidResponse: (validation?: getInvalidResponseParams) => {\n return `Options you can tell me are ${validation?.options?.join(', ')}.`\n },\n interactions: [ChatInteraction.FREE_TEXT],\n suggestions: [\n {\n type: SuggestionType.TEXT,\n text: 'I want a less expensive plan',\n value: { parsedAnswer: [ReasonForSwitch.Cost] }\n },\n { type: SuggestionType.TEXT, text: 'I have bad coverage', value: { parsedAnswer: [ReasonForSwitch.Network] } },\n {\n type: SuggestionType.TEXT,\n text: 'Both of the above',\n value: { parsedAnswer: [ReasonForSwitch.Cost, ReasonForSwitch.Network] }\n }\n ],\n nextPaths: {\n $default: 'all__data_allowance'\n }\n },\n\n all__data_allowance: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: '/llm/data-allowance',\n question: [\n {\n text: 'How much data will you need per month?'\n }\n ],\n outOfContextResponse: `${outOfContextTemplate}how much data you will need per month?`,\n getInvalidResponse: (validation?: getInvalidResponseParams) => {\n return `Options you can tell me are ${validation?.options\n ?.slice(0, -1)\n .join(', ')} or ${validation?.options?.slice(-1)}.`\n },\n interactions: [ChatInteraction.FREE_TEXT],\n suggestions: [\n { type: SuggestionType.TEXT, text: 'Unlimited', value: { parsedAnswer: 'Unlimited' } },\n // TODO: line breaks support\n { type: SuggestionType.TEXT, text: \"At least 15GB (you're mainly on cellular)\", value: { parsedAnswer: 15 } },\n { type: SuggestionType.TEXT, text: \"At least 5GB (you're mainly on Wi-Fi)\", value: { parsedAnswer: 5 } },\n { type: SuggestionType.TEXT, text: 'Barely any', value: { parsedAnswer: 0 } }\n ],\n nextPaths: { $default: 'all__transition__final_message' }\n },\n\n all__plan_needs: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: '/llm/must-haves',\n question: [\n {\n text: 'Last question! Are any of the following options a must have?'\n }\n ],\n outOfContextResponse: `${outOfContextTemplate}which of the following options are must haves?`,\n getInvalidResponse: (validation?: getInvalidResponseParams) => {\n return `Options you can tell me are ${validation?.options?.join(', ')}.`\n },\n interactions: [ChatInteraction.FREE_TEXT],\n suggestions: [\n {\n type: SuggestionType.TEXT,\n text: 'Bundled streaming service (like Netflix)',\n value: { parsedAnswer: ['StreamingServices'] }\n },\n { type: SuggestionType.TEXT, text: 'Hotspot', value: { parsedAnswer: ['Hotspot'] } },\n { type: SuggestionType.TEXT, text: 'Roaming', value: { parsedAnswer: ['Roaming'] } },\n { type: SuggestionType.TEXT, text: 'Premium/Prioritized Data', value: { parsedAnswer: ['PremiumData'] } },\n { type: SuggestionType.TEXT, text: 'None of the above', value: { parsedAnswer: [] } }\n ],\n nextPaths: { $default: 'all__transition__final_message' }\n },\n\n all__transition__final_message: {\n type: MessageType.TRANSITION,\n from: 'bot',\n imageUrl: '/assets/images/barry/barry_icon_swipe.svg',\n imageAlt: 'goji barry swiping plans',\n text: 'Ok, before we make our final recommendations, let’s see if we’re on the right track.',\n subtext: 'We’re going to show you 5 potential plans. Swipe to tell us which ones you like (or don’t like).',\n nextMessageKey: undefined\n }\n} as const\n\nexport const ChatFlow = ChatFlowConst as unknown as DeepMutable\n\nconst toolSuggestions = [\n {\n type: SuggestionType.TOOL_CALL,\n toolCall: {\n name: 'PlanFinder',\n input: {\n action: 'menuSelection'\n }\n },\n text: 'Plans',\n src: '/assets/icons/footer/plans.svg',\n size: 'large'\n } as ToolCallSuggestion,\n {\n type: SuggestionType.TOOL_CALL,\n toolCall: {\n name: 'CoverageMap',\n input: {\n action: 'menuSelection'\n }\n },\n text: 'Coverage',\n src: '/assets/icons/footer/map.svg',\n size: 'large'\n } as ToolCallSuggestion,\n {\n type: SuggestionType.TOOL_CALL,\n toolCall: {\n name: 'NetworkMeter',\n input: {\n action: 'menuSelection'\n }\n },\n text: 'Network Meter',\n src: '/assets/icons/footer/meter.svg',\n size: 'large'\n } as ToolCallSuggestion\n] as const\n\nconst ChatFlowSelectorConst = {\n entrypoint: {\n type: MessageType.TRANSITION,\n from: 'bot',\n imageUrl: '/assets/images/barry/barry_icon_ok_hand.svg',\n imageAlt: 'goji barry signaling ok with his hand',\n text: 'Hi there, I’m Barry!',\n subtext: 'What can I help you with?',\n nextMessageKey: 'question__start_plan_finder'\n },\n\n question__start_plan_finder: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: 'empty',\n question: [],\n outOfContextResponse: `${outOfContextTemplate}what I can help you with?`,\n interactions: [ChatInteraction.FREE_TEXT],\n suggestions: toolSuggestions,\n nextPaths: {\n $default: undefined\n }\n },\n\n question__start_plan_finder_free: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: 'empty',\n question: [],\n outOfContextResponse: `${outOfContextTemplate}what I can help you with?`,\n interactions: [ChatInteraction.FREE_TEXT],\n suggestions: toolSuggestions,\n nextPaths: {\n $default: undefined\n }\n },\n\n coverage__start: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: 'empty',\n question: [\n {\n text: 'Sure! Here are some suggestions...'\n }\n ],\n outOfContextResponse: `${outOfContextTemplate}what do you want to know about your coverage?`,\n interactions: [ChatInteraction.FREE_TEXT],\n suggestions: [\n {\n type: SuggestionType.TOOL_CALL,\n text: 'What does my coverage look like?',\n toolCall: {\n name: 'CoverageMap',\n input: {\n action: 'currentLocationSuggestionClick',\n currentLocationText: 'What does my coverage look like?',\n address: null,\n knownLocation: null,\n isCurrentLocation: true,\n isMissingLocation: true,\n networkType: '5g',\n carrier: null,\n carrierId: null,\n carrierStatus: 'valid',\n wantsBestCarrier: false\n } as CoverageMapBackendInput\n }\n } as ToolCallSuggestion,\n {\n type: SuggestionType.TEXT,\n text: \"What's the best carrier for my location?\",\n value: {\n parsedAnswer: 'What is the best carrier for my location?'\n }\n }\n ],\n nextPaths: {\n $default: undefined\n }\n },\n\n meter__start: {\n from: 'bot',\n type: MessageType.STEP,\n endpoint: 'empty',\n question: [\n {\n text: 'Sure! Here are some suggestions...'\n }\n ],\n outOfContextResponse: `${outOfContextTemplate}what do you want to know about your coverage?`,\n interactions: [ChatInteraction.FREE_TEXT],\n suggestions: [\n {\n type: SuggestionType.TEXT,\n text: 'Run a speed test',\n value: {\n parsedAnswer: 'Run a speed test'\n }\n },\n {\n type: SuggestionType.TEXT,\n text: 'Show my most recent network tests',\n value: {\n parsedAnswer: 'Show my most recent network tests'\n }\n }\n ],\n nextPaths: { $default: undefined }\n }\n} as const\n\nexport const ChatFlowSelector = ChatFlowSelectorConst as DeepMutable\n\nconst QuickQuestionsConst = {\n what_can_i_help_you_with: {\n from: 'bot',\n type: MessageType.TEXT,\n text: 'Is there anything else I can help with?'\n }\n} as const\n\nexport const QuickQuestions = QuickQuestionsConst as DeepMutable\n","import { ToolName } from './tools/const/tool.const'\n\nexport type ValidatedResult = 'valid' | 'failed' | 'unknown' | 'outOfContext' | 'invalid' | 'cancelled'\n\nexport const ValidatedResults = {\n VALID: 'valid',\n FAILED: 'failed',\n UNKNOWN: 'unknown',\n OUT_OF_CONTEXT: 'outOfContext',\n INVALID: 'invalid',\n\n //front-end only\n CANCELLED: 'cancelled'\n} as const\n\nexport type ServerResponse = {\n resultStatus: ValidatedResult\n parsedAnswer?: any\n validation?: {\n options?: string[]\n min?: number | string\n max?: number | string\n }\n}\n\nexport type ToolCall> = {\n name: ToolName\n input: I\n}\n\nexport type ConversationalResponse = {\n validation?: null\n resultStatus: ValidatedResult\n message: string | null\n toolCalls: ToolCall[]\n}\n","import React from 'react'\nimport { UseMutationResult } from 'react-query'\n\nexport function useMutationBuffer(getState: () => T[], mutation: UseMutationResult) {\n const mutationQueue = React.useRef<(() => Promise)[]>([])\n const mutationBuffer = React.useRef<{ action: 'push' | 'replace'; state: T[] }[]>([])\n const timeout = React.useRef()\n\n const pushToBuffer = React.useCallback(\n (options: { action: 'push' | 'replace'; state: T[] }) => {\n if (timeout.current !== undefined) {\n clearTimeout(timeout.current)\n }\n\n mutationBuffer.current.push(options)\n\n return new Promise((res) => {\n timeout.current = window.setTimeout(async () => {\n const result = await readBuffer()\n res(result)\n }, 0)\n })\n\n function readBuffer() {\n let newState = Array.from(getState())\n\n mutationBuffer.current.forEach((options) => {\n if (options.action === 'push') {\n newState.push(...options.state)\n } else if (options.action === 'replace') {\n newState = options.state\n }\n })\n\n mutationBuffer.current = []\n\n const mutationCaller = async () => {\n await mutation.mutateAsync(newState)\n mutationQueue.current.shift()\n mutationQueue.current[0]?.()\n }\n\n mutationQueue.current.push(mutationCaller)\n if (mutationQueue.current.length === 1) {\n return mutationCaller()\n }\n }\n },\n [getState, mutation]\n )\n\n return { pushToBuffer }\n}\n","import React from 'react'\nimport { useMutation, useQuery, useQueryClient } from 'react-query'\nimport API from '../../../../api'\nimport useAuthStore from '../../../../store/auth'\nimport { Logger } from '../../../../utils/Logger'\nimport { ChatTimelineProps } from '../../components/ChatTimeline'\nimport { ConversationalResponse, ValidatedResults } from '../../ServerResponse'\nimport { ToolName } from '../../tools/const/tool.const'\nimport { MessageType } from '../../types/ChatStep'\nimport { ChatStorageSource } from '../../types/ChatStorageSource'\nimport { FreeChat, getDefaultTimeline } from '../../utils/chatApiSource'\nimport { FreeChatSourceSet } from '../../utils/source-sets'\nimport { useMutationBuffer } from './useMutationBuffer'\n\ninterface ServerChatPayload {\n answer: string\n context: (\n | {\n userAnswer: string\n }\n | { assistantAnswer: string; suggestions?: string[] }\n | {\n toolCall: {\n name: ToolName\n input: Record\n }\n }\n )[]\n}\nexport function useSendAnswerToLLM() {\n return useMutation(\n 'sendAnswerToLLM',\n async (options: { userAnswer: string; timeline: ChatTimelineProps['timeline'] }) => {\n const serverPayload: ServerChatPayload = {\n answer: options.userAnswer,\n context: options.timeline.map((message) => {\n if (message.type === MessageType.STEP) {\n return {\n assistantAnswer: message.question.map((q) => q.text).join(''),\n suggestions: message.suggestions?.map((s) => s.text)\n }\n }\n\n if (message.type === MessageType.TOOL) {\n return {\n toolCall: {\n name: message.tool,\n input: message.backendInput\n }\n }\n }\n\n if (message.from === 'bot') {\n return { assistantAnswer: message.text }\n }\n\n return { userAnswer: message.text }\n })\n }\n try {\n const response: ConversationalResponse = await API.post('/llm/chat', serverPayload as Record)\n return response\n } catch (error) {\n return { resultStatus: ValidatedResults.FAILED, error }\n }\n }\n )\n}\n\nexport const freeChatQueryKey = ['free-chat']\n\nexport const FreeChatSourceContext = React.createContext | undefined>(undefined)\n\nfunction useDataSource(hasUser: boolean): ChatStorageSource {\n const DataSourceContext = React.useContext(FreeChatSourceContext)\n if (DataSourceContext) {\n return DataSourceContext\n }\n\n return hasUser ? FreeChatSourceSet.remoteSource : FreeChatSourceSet.localSource\n}\n\nexport function useFreeChat() {\n const user = useAuthStore((state) => state.currentUser)\n const dataSource = useDataSource(!!user)\n\n const queryClient = useQueryClient()\n function updateCache(timeline: ChatTimelineProps['timeline']) {\n const freeChat: FreeChat = {\n chatTimeline: timeline\n }\n queryClient.setQueryData(freeChatQueryKey, freeChat)\n }\n\n const mutation = useMutation({\n mutationKey: ['free-chat'],\n mutationFn: async (timeline: ChatTimelineProps['timeline']) => {\n const freeChat: FreeChat = {\n chatTimeline: timeline\n }\n\n const response = await dataSource.setStorage(freeChat)\n return response\n },\n onMutate: async (freeChat) => {\n await queryClient.cancelQueries('free-chat')\n updateCache(freeChat)\n },\n onError: (error) => {\n Logger.error('cannot persist chat', error)\n },\n onSettled: (result) => {\n if (result) {\n updateCache(result.chatTimeline)\n }\n }\n })\n\n const getState = React.useCallback(() => {\n return queryClient.getQueryData(freeChatQueryKey)?.chatTimeline || []\n }, [queryClient])\n\n const { pushToBuffer } = useMutationBuffer(getState, mutation)\n\n const query = useQuery({\n queryKey: freeChatQueryKey,\n keepPreviousData: true,\n staleTime: 60 * 1000 * 3,\n queryFn: async () => {\n const response = await dataSource.getStorage()\n return response || ({ chatTimeline: getDefaultTimeline() } as FreeChat)\n }\n })\n\n return {\n query,\n mutate: pushToBuffer\n }\n}\n","import React from 'react'\nimport { useFreeChat } from '../free/hooks/useFreeChat'\nimport { MessageType } from '../types/ChatStep'\nimport { trackPlanFinder } from '../utils/track-plan-finder'\n\nexport function usePushPlanFinder() {\n const { mutate: mutateFreeChat, query: freeChatQuery } = useFreeChat()\n\n const lastFreeChatQuestion = freeChatQuery.data?.chatTimeline.at(-1)\n const isPlanfinding = lastFreeChatQuestion?.type === MessageType.TOOL && lastFreeChatQuestion.tool === 'PlanFinder'\n\n return React.useCallback(() => {\n if (isPlanfinding || freeChatQuery.isLoading) {\n return\n }\n\n mutateFreeChat({\n action: 'push',\n state: [\n {\n from: 'bot',\n type: MessageType.TOOL,\n tool: 'PlanFinder',\n backendInput: {},\n toolComponent: 'PlanFinderToolComponent',\n footerComponent: 'PlanFinderFooterComponent'\n }\n ]\n })\n\n trackPlanFinder()\n }, [mutateFreeChat, isPlanfinding, freeChatQuery.isLoading])\n}\n","import { PredefinedChatMessageRecord } from '../ChatFlow'\nimport { IChatFlow, MessageType } from '../types/ChatStep'\nimport { ChatStatus } from '../types/ChatStorageSource'\n\nfunction isLastStepFinishing(lastMessage: T[keyof T]): boolean {\n return (\n lastMessage.type === MessageType.STEP &&\n '$default' in lastMessage.nextPaths &&\n lastMessage.nextPaths.$default === undefined\n )\n}\n\nfunction isLastMessageFinishing(lastMessage: T[keyof T]): boolean {\n return (\n (lastMessage.type === MessageType.TEXT || lastMessage.type === MessageType.TRANSITION) &&\n lastMessage.nextMessageKey === undefined\n )\n}\n\nexport function getChatStatus(chatFlow: T, chatTimeline: PredefinedChatMessageRecord[]): ChatStatus {\n const lastRecord = chatTimeline[chatTimeline.length - 1]\n if ('key' in lastRecord && chatFlow[lastRecord.key]) {\n const lastMessage = chatFlow[lastRecord.key]\n if (isLastStepFinishing(lastMessage) || isLastMessageFinishing(lastMessage)) {\n return 'ended'\n }\n }\n return 'active'\n}\n","import React from 'react'\nimport { useMutation, useQuery } from 'react-query'\nimport { Logger } from '../../../utils/Logger'\nimport { ChatFlow, PredefinedChatMessageRecord } from '../ChatFlow'\nimport { IChatFlow, MessageType } from '../types/ChatStep'\nimport { chatAnswersToPreference } from '../utils/chatToRecommendedPayload'\nimport useAuthStore from '../../../store/auth'\nimport { ChatStorageSource, PredefinedChatStorage, PredefinedChatStorageSource } from '../types/ChatStorageSource'\nimport { queryClient } from '../../../queryClient'\nimport { getChatStatus } from './getChatStatus'\nimport { PlanChatSourceSet, SourceSet } from '../utils/source-sets'\nimport { OnMessagePayload } from '../utils/chatFlowIdentify'\n\nexport const CHAT_STORAGE_QUERY_KEY = ['chatStorage']\nexport function updateChatCache(newState: PredefinedChatStorage | undefined) {\n if (newState) {\n queryClient.setQueryData(CHAT_STORAGE_QUERY_KEY, applyBackwardsCompatibility(newState, ChatFlow as any))\n } else if (process.env.NODE_ENV !== 'test') {\n Logger.warn('updateStorageQueryData called with undefined newState')\n }\n}\n\nexport function getChatCache() {\n return queryClient.getQueryData>(CHAT_STORAGE_QUERY_KEY)\n}\n\nfunction getInitialMessages(chatFlow: T) {\n const messages: (keyof T)[] = []\n let currentKey: keyof T = 'entrypoint'\n\n while (currentKey) {\n const currentStep = chatFlow[currentKey]\n\n if (!currentStep) {\n break\n }\n\n if (currentStep.type === MessageType.STEP) {\n messages.push(currentKey)\n break\n }\n\n if (!currentStep.nextMessageKey) {\n break\n }\n\n messages.push(currentKey)\n currentKey = currentStep.nextMessageKey\n }\n\n return messages\n}\n\nexport function getInitialTimeline(chatFlow: T) {\n return getInitialMessages(chatFlow).map((key) => ({ key }))\n}\n\nfunction useInitialTimeline(chatFlow: T) {\n const initialTimeline = React.useMemo(() => {\n return getInitialTimeline(chatFlow)\n }, [chatFlow])\n\n return initialTimeline\n}\n\nexport function isInitialTimeline(timeline: PredefinedChatMessageRecord[] | undefined) {\n if (!timeline) {\n return false\n }\n\n const lastMessage = timeline.at(-1)\n if (!lastMessage || !('key' in lastMessage)) {\n return false\n }\n\n const initialTimeline = getInitialTimeline(ChatFlow)\n return lastMessage.key === initialTimeline.at(-1)?.key\n}\n\nexport function useIsInitialTimeline() {\n const { chatStorage } = useAutoChatStorage()\n\n if (!chatStorage.data) {\n return false\n }\n\n return isInitialTimeline(chatStorage.data.chatTimeline)\n}\n\nfunction applyBackwardsCompatibility(chatStorage: PredefinedChatStorage, chatFlow: T) {\n if ((chatStorage.chatStatus as string) === 'filled') {\n chatStorage.chatStatus = 'ended'\n }\n\n // Reset every storage with the old branching\n\n if (chatStorage.chatTimeline?.some((record) => 'key' in record && record.key === 'all_new_or_replacement')) {\n chatStorage.chatTimeline = getInitialTimeline(chatFlow)\n }\n\n return chatStorage\n}\n\nexport function useChatStorage(chatFlow: T, chatSource: PredefinedChatStorageSource) {\n const persistChatMutation = useMutation({\n mutationKey: 'chatStorageMutation',\n mutationFn: async (newStorage: PredefinedChatStorage) => {\n await chatSource.setStorage(newStorage)\n return newStorage\n },\n onSuccess: (newStorage) => {\n updateChatCache(newStorage)\n }\n })\n\n const persistChat = React.useCallback(\n (setter: (oldData: PredefinedChatStorage) => PredefinedChatStorage) => {\n // A setter function is needed because storage.data is not guaranteed to be up-to-date,\n // while queryClient.getQueryData(CHAT_STORAGE_QUERY_KEY) is.\n const newStorage = setter(getChatCache()!)\n\n updateChatCache(newStorage)\n persistChatMutation.mutate(newStorage)\n },\n [persistChatMutation]\n )\n\n const initialTimeline = useInitialTimeline(chatFlow)\n\n const initialStorage = React.useRef>({\n chatTimeline: initialTimeline,\n chatAnswers: {} as Record,\n chatStatus: 'active'\n })\n\n const chatStorage = useQuery({\n queryKey: CHAT_STORAGE_QUERY_KEY,\n staleTime: chatSource.staleTime,\n queryFn: async () => {\n const result = await chatSource.getStorage()\n if (result) {\n // Recover from incompatible chat flow saved in storage\n if (Object.keys(result.chatAnswers).some((key) => !(key in chatFlow))) {\n return initialStorage.current\n }\n\n return applyBackwardsCompatibility(result, chatFlow)\n }\n\n return { ...initialStorage.current, chatStatus: getChatStatus(chatFlow, initialTimeline) }\n },\n initialData: initialStorage.current\n })\n\n const restartChat = React.useCallback(() => {\n persistChat(() => ({\n chatTimeline: initialTimeline,\n chatAnswers: {} as Record,\n chatStatus: 'active'\n }))\n }, [persistChat, initialTimeline])\n\n const onMessage = React.useCallback(\n (payload: OnMessagePayload>) => {\n persistChat((oldStorage) => ({\n chatTimeline: [...oldStorage.chatTimeline, payload.messageRecord],\n chatAnswers: oldStorage.chatAnswers,\n chatStatus: getChatStatus(chatFlow, [...oldStorage.chatTimeline, payload.messageRecord])\n }))\n },\n [chatFlow, persistChat]\n )\n\n const onServerResponse = React.useCallback(\n (parsedAnswer: any, lastQuestionKey?: keyof T) => {\n if (!lastQuestionKey || !chatStorage.data) {\n Logger.error('lastQuestionKey or chatStorage is undefined', lastQuestionKey, chatStorage.data)\n return\n }\n\n persistChat((oldStorage) => ({\n chatAnswers: { ...oldStorage.chatAnswers, [lastQuestionKey]: parsedAnswer },\n chatTimeline: oldStorage.chatTimeline,\n chatStatus: 'active'\n }))\n },\n [persistChat, chatStorage]\n )\n\n const userPreferences = React.useMemo(() => {\n return chatStorage.data?.chatStatus === 'ended' ? chatAnswersToPreference(chatStorage.data!.chatAnswers) : undefined\n }, [chatStorage.data])\n\n return {\n onMessage,\n chatStorage,\n restartChat,\n onServerResponse,\n userPreferences,\n persistChat\n }\n}\n\nexport const PlanFinderChatStorageContext = React.createContext<\n undefined | ChatStorageSource>\n>(undefined)\n\nfunction useDataSource(\n sourceSet: SourceSet>,\n hasUser: boolean\n): ChatStorageSource> {\n const DataSourceContext = React.useContext(PlanFinderChatStorageContext)\n if (DataSourceContext) {\n return DataSourceContext as ChatStorageSource>\n }\n\n return hasUser ? sourceSet.remoteSource : sourceSet.localSource\n}\n\nexport function useAutoChatStorage(\n // TODO: how to fix this type?\n chatFlow: T = ChatFlow as any,\n sourceSet = PlanChatSourceSet\n) {\n const currentUser = useAuthStore((state) => state.currentUser)\n const chatSource = useDataSource(sourceSet, !!currentUser)\n return useChatStorage(chatFlow, chatSource)\n}\n","import { PlanResponse } from '../../../services/planService/Plan'\nimport { ValueOf } from '../../../utils/types/ValueOf'\nimport { FooterToolComponents, ToolName } from '../tools/const/tool.const'\nimport { Suggestion } from './Suggestion'\nimport { ToolComponents } from '../tools/const/tool.const'\n\nexport type QuestionPiece = {\n color?: string\n text: string\n}\n\nexport const MessageType = {\n TEXT: 0,\n STEP: 1,\n TRANSITION: 2,\n TOOL: 3\n} as const\n\nexport const ChatInteraction = {\n FREE_TEXT: 0,\n ADDRESS: 1\n} as const\n\nexport type PlanSpecs = Partial\n\nexport const outOfContextTemplate =\n \"I'm having trouble understanding. Could you rephrase your response to help me understand \"\n\nexport const invalidTemplate = \"Sorry, I don't understand. 🧐\"\n\nexport interface getInvalidResponseParams {\n min?: number | string\n max?: number | string\n options?: string[]\n}\n\nexport type ChatStep = {\n from: 'bot'\n type: (typeof MessageType)['STEP']\n question: QuestionPiece[]\n subtitle?: string\n interactions: ValueOf[]\n suggestions: Suggestion[]\n}\n\nexport type PredefinedChatStep = ChatStep & {\n outOfContextResponse: string\n getInvalidResponse?: (validation?: getInvalidResponseParams) => string\n endpoint: string\n nextPaths: Record\n}\n\nexport type UserTextMessage = {\n type: (typeof MessageType)['TEXT']\n text: string\n from: 'user'\n}\n\nexport type BotTextMessage = {\n type: (typeof MessageType)['TEXT']\n text: string\n from: 'bot'\n nextMessageKey?: string\n}\n\nexport type TransitionMessage = {\n type: (typeof MessageType)['TRANSITION']\n text: string\n subtext: string\n imageUrl: string\n imageAlt: string\n from: 'bot'\n nextMessageKey: string | undefined\n}\n\nexport type BotToolMessage = {\n type: (typeof MessageType)['TOOL']\n from: 'bot'\n tool: ToolName\n toolComponent: keyof typeof ToolComponents\n footerComponent?: keyof typeof FooterToolComponents\n backendInput: B\n}\n\nexport type ChatTextMessage = UserTextMessage | BotTextMessage\n\nexport type ChatMessage = PredefinedChatStep | ChatTextMessage\n\nexport type BotMessage = BotTextMessage | TransitionMessage | C\n\nexport type IChatFlow = Record> & { entrypoint: BotMessage }\n","import { Address } from '../../../store/address'\nimport { FeatureFlagType } from '../../../utils/FeatureFlags'\nimport { ServerResponse, ToolCall, ValidatedResult } from '../ServerResponse'\nimport { ToolName } from '../tools/const/tool.const'\n\nexport const SuggestionType = {\n TEXT: 0,\n TEXT_WITH_IMAGE: 1,\n TEXT_WITH_ICON: 2,\n MULTISELECT: 3,\n CURRENT_LOCATION: 4,\n LOCATION: 5,\n LINK: 6,\n LINK_WITH_ICON: 7,\n DEPRECATED__TOOL_SELECTION: 8,\n TOOL_CALL: 9\n} as const\n\nexport type TextSuggestion = {\n type: typeof SuggestionType.TEXT\n} & SelectableSuggestion\n\nexport type TextWithImageSuggestion = {\n type: typeof SuggestionType.TEXT_WITH_IMAGE\n imageUrl: string\n} & SelectableSuggestion\n\nexport type TextWithIconSuggestion = {\n type: typeof SuggestionType.TEXT_WITH_ICON\n icon?: string\n src?: string\n size?: 'inline' | 'large'\n} & SelectableSuggestion\n\nexport type CurrentLocationSuggestion = {\n type: typeof SuggestionType.CURRENT_LOCATION\n icon?: string\n} & SelectableSuggestion\n\nexport type LocationSuggestion = {\n type: typeof SuggestionType.LOCATION\n location: Address\n} & SelectableSuggestion\n\nexport type LinkSuggestion = {\n type: typeof SuggestionType.LINK\n routerLink: string\n} & Omit\n\nexport type LinkWithIconSuggestion = {\n type: typeof SuggestionType.LINK_WITH_ICON\n routerLink: string\n icon?: string\n src?: string\n size?: 'inline' | 'large'\n mode?: 'button' | 'suggestion'\n} & SelectableSuggestion\n\nexport type DEPRECATED__ToolSelectionSuggestion = {\n type: typeof SuggestionType.DEPRECATED__TOOL_SELECTION\n toolName: ToolName\n icon?: string\n src?: string\n size?: 'inline' | 'large'\n} & SelectableSuggestion\n\nexport type ToolCallSuggestion = {\n type: typeof SuggestionType.TOOL_CALL\n toolCall: ToolCall\n text: string\n icon?: string\n src?: string\n size?: 'inline' | 'large'\n featureFlag?: FeatureFlagType\n}\n\nexport type Suggestion =\n | TextSuggestion\n | TextWithImageSuggestion\n | TextWithIconSuggestion\n | CurrentLocationSuggestion\n | LocationSuggestion\n | LinkSuggestion\n | LinkWithIconSuggestion\n | DEPRECATED__ToolSelectionSuggestion\n | ToolCallSuggestion\n\ntype SelectableSuggestion = {\n text: string\n value: {\n parsedAnswer: ServerResponse['parsedAnswer']\n resultStatus?: ValidatedResult\n }\n featureFlag?: FeatureFlagType\n}\n","import debounce from 'lodash/debounce'\nimport API from '../../../api'\nimport { ProfileService } from '../../../services/backend-sync/profile.service'\nimport chatService from '../../../services/chat/Chat.service'\nimport { ChatFlowSelector } from '../ChatFlow'\nimport { ChatTimelineProps } from '../components/ChatTimeline'\nimport { IChatFlow } from '../types/ChatStep'\nimport { PredefinedChatStorage, PredefinedChatStorageSource } from '../types/ChatStorageSource'\n\nexport type FreeChat = {\n chatTimeline: ChatTimelineProps['timeline']\n timestamp?: number\n}\n\nexport function getDefaultTimeline() {\n return [ChatFlowSelector.entrypoint, ChatFlowSelector.question__start_plan_finder_free]\n}\n\nexport function getFreeChatApiSource() {\n return {\n staleTime: Infinity,\n getStorage: async (): Promise => {\n const response: { free_chat_state: FreeChat } = await API.get('/profile/free-chat-state')\n if (!response?.free_chat_state?.chatTimeline || response.free_chat_state.chatTimeline.length === 0) {\n return { chatTimeline: getDefaultTimeline() }\n }\n return response.free_chat_state\n },\n setStorage: async (freeChat: FreeChat | undefined): Promise => {\n if (freeChat) {\n freeChat.timestamp = Date.now()\n }\n const response: { free_chat_state: FreeChat } = await API.put('/profile/free-chat-state', freeChat as any)\n return response.free_chat_state\n }\n }\n}\n\nexport function getPlanChatApiSource(): PredefinedChatStorageSource {\n return {\n staleTime: Infinity,\n getStorage: async () => {\n const profile = await ProfileService.get().getBackendUser()\n return profile.chat_state as PredefinedChatStorage\n },\n setStorage: debounce(\n async (value) => {\n await chatService.uploadChatStorage(value)\n },\n 100,\n { trailing: true, leading: false }\n ) as (value: PredefinedChatStorage | undefined) => Promise\n }\n}\n","import { PlanPreferencesV2 } from '../../../services/planService/getRecommendedPlans'\nimport { DATA_UNLIMITED } from '../../../services/planService/Preferences'\nimport { ContractType } from '../../../services/wizard/reason-for-switch'\nimport { ChatFlow } from '../ChatFlow'\n\nfunction getMinData(chatAnswers: Record): number {\n return chatAnswers.all__data_allowance === 'Unlimited' ? DATA_UNLIMITED : chatAnswers.all__data_allowance\n}\n\nfunction getCurrentPlanFlowPreferences(chatAnswers: Record): PlanPreferencesV2 {\n return {\n reasonsForSwitch: [],\n minData: getMinData(chatAnswers),\n maxPrice: chatAnswers.current_plan__target_budget,\n numLines: chatAnswers.current_plan__num_lines,\n // TODO: score postpaid plans higher\n contractType: chatAnswers.current_plan__plan_type === 'Prepaid' ? ContractType.Both : ContractType.Postpaid,\n carrierId: chatAnswers.current_plan__current_carrier?.carrierId\n }\n}\n\nfunction getNewPlanFlowPreferences(chatAnswers: Record): PlanPreferencesV2 {\n return {\n reasonsForSwitch: [],\n minData: getMinData(chatAnswers),\n maxPrice: (chatAnswers as any).new_plan__max_budget,\n numLines: (chatAnswers as any).new_plan__num_lines,\n contractType:\n (chatAnswers as any).new_plan__save_with_prepaid === ContractType.Postpaid\n ? ContractType.Postpaid\n : ContractType.Both,\n carrierId: undefined\n }\n}\n\nexport function chatAnswersToPreference(chatAnswers: Record): PlanPreferencesV2 {\n // keeping for backwards compatibility\n if ((chatAnswers as any).all_new_or_replacement === 'New') {\n return getNewPlanFlowPreferences(chatAnswers)\n } else {\n return getCurrentPlanFlowPreferences(chatAnswers)\n }\n}\n","import React from 'react'\n\ntype GMAPS_CONTEXT = {\n autocompleteService: google.maps.places.AutocompleteService | undefined\n geocoder: typeof google.maps.Geocoder | undefined\n}\n\nexport const GmapsContext = React.createContext({\n geocoder: undefined,\n autocompleteService: undefined\n})\n","import { Logger } from '../../../utils/Logger'\n\nexport function createLocalStorageSource(lsKey: string) {\n return {\n staleTime: Infinity,\n getStorage: async () => {\n const lsItem = localStorage.getItem(lsKey)\n if (lsItem) {\n try {\n return JSON.parse(lsItem) as T\n } catch (e) {\n Logger.error('Error parsing chat storage from local storage', e)\n }\n }\n },\n setStorage: async (value: T | undefined) => {\n if (!value) {\n localStorage.removeItem(lsKey)\n } else {\n //@ts-expect-error\n value.timestamp = Date.now()\n localStorage.setItem(lsKey, JSON.stringify(value))\n }\n }\n }\n}\n","import { IChatFlow } from '../types/ChatStep'\nimport { ChatStorageSource, PredefinedChatStorage } from '../types/ChatStorageSource'\nimport { FreeChat, getFreeChatApiSource, getPlanChatApiSource } from './chatApiSource'\nimport { createLocalStorageSource } from './chatStorageSource'\n\nexport class SourceSet {\n constructor(public localSource: ChatStorageSource, public remoteSource: ChatStorageSource) {}\n}\nconst CHAT_LS_KEY = 'chatStorage'\nexport const getPlanChatLocalStorageSource = () =>\n createLocalStorageSource>(CHAT_LS_KEY)\n\nconst getFreeChatLocalStorageSource = () => createLocalStorageSource('freeChatStorage')\n\nexport const PlanChatSourceSet = new SourceSet(getPlanChatLocalStorageSource(), getPlanChatApiSource())\n\nexport const FreeChatSourceSet = new SourceSet(getFreeChatLocalStorageSource(), getFreeChatApiSource())\n\nconst DefaultSourceSets = [PlanChatSourceSet]\n\nexport default DefaultSourceSets\n","import { queryClient } from '../../../queryClient'\nimport { trackAmplitudeEvent } from '../../../utils/amplitude'\nimport { PredefinedChatMessageRecord } from '../ChatFlow'\nimport { CHAT_STORAGE_QUERY_KEY, isInitialTimeline } from '../hooks/useChatStorage'\nimport { IChatFlow } from '../types/ChatStep'\n\nexport function trackPlanFinder() {\n const chatData = queryClient.getQueryData(CHAT_STORAGE_QUERY_KEY) as\n | { chatTimeline: PredefinedChatMessageRecord[] }\n | undefined\n if (!chatData) {\n return\n }\n const isInitial = isInitialTimeline(chatData.chatTimeline)\n\n if (isInitial) {\n trackAmplitudeEvent('ChatBarry - Start Plan Finding')\n } else {\n trackAmplitudeEvent('ChatBarry - Resume Plan Finding')\n }\n}\n","import { Geolocation } from '@capacitor/geolocation'\nimport { useQuery } from 'react-query'\n\nexport const locationKey = 'shouldShowRationale'\nexport function useLocationPermission() {\n const hasLocation = useQuery({\n queryKey: locationKey,\n queryFn: async () => {\n return { isGranted: (await Geolocation.checkPermissions()).location === 'granted' }\n }\n })\n\n async function requestLocation() {\n const pluginResult = await Geolocation.requestPermissions({ permissions: ['location'] })\n return { isGranted: pluginResult.location === 'granted', shouldShowRationale: pluginResult.location === 'prompt' }\n }\n\n return { hasLocation, requestLocation }\n}\n\nexport function useRefetchPermissions() {\n const { hasLocation } = useLocationPermission()\n\n async function refetch() {\n hasLocation.refetch()\n }\n\n return refetch\n}\n","import { Capacitor, PluginListenerHandle } from '@capacitor/core'\nimport {\n registerSignalStrengthPlugin,\n SignalStrengthChangedEvent,\n SignalStrengthPluginMethods\n} from '../plugin/SignalStrengthPlugin'\nimport { Logger } from '../utils/Logger'\n\nconst isNativeAndroid = Capacitor.getPlatform() === 'android'\nconst nativeAndroidGuard = (cb: Function) => {\n if (isNativeAndroid) {\n cb()\n } else {\n Logger.warn('Cannot call function: not on native android')\n }\n}\n\nlet plugin: null | SignalStrengthPluginMethods = null\nif (isNativeAndroid) {\n plugin = registerSignalStrengthPlugin()\n}\n\nexport const SignalStrengthService = {\n isListening: false,\n plugin,\n\n async shouldShowPermissionRationale() {\n if (!this.plugin) {\n Logger.warn('plugin is not defined')\n }\n const result = await this.plugin?.shouldShowPermissionRationale()\n return result?.shouldShowRationale\n },\n async hasPermissions() {\n if (!this.plugin) {\n Logger.warn('plugin is not defined')\n }\n const result = await this.plugin?.checkSignalStrengthPermissions()\n return !!result?.isGranted\n },\n\n listener: null as PluginListenerHandle | null,\n init(onStrengthChanged: (evt: SignalStrengthChangedEvent) => void) {\n if (!SignalStrengthService.plugin) {\n return\n }\n\n if (this.listener) {\n this.listener.remove()\n }\n\n this.listener = SignalStrengthService.plugin.addListener('signalStrengthChanged', onStrengthChanged)\n },\n\n async goToSettings() {\n return this.plugin?.goToSettings()\n },\n requestPermissions() {\n if (!SignalStrengthService.plugin) {\n return Promise.reject('SignalStrengthService: cannot start: plugin not registered')\n }\n\n return SignalStrengthService.plugin.requestSignalStrengthPermissions()\n },\n listenForChanges() {\n nativeAndroidGuard(() => {\n if (!SignalStrengthService.plugin) {\n Logger.warn('SignalStrengthService: cannot start: plugin not registered')\n return\n }\n\n SignalStrengthService.isListening = true\n SignalStrengthService.plugin?.listenForSignalStrengthChanges()\n })\n },\n stop() {\n nativeAndroidGuard(() => {\n SignalStrengthService.isListening = false\n SignalStrengthService.plugin?.unlistenForSignalStrengthChanges()\n })\n },\n destroy() {\n this.listener?.remove()\n this.listener = null\n SignalStrengthService.stop()\n }\n}\n","import { PluginListenerHandle, registerPlugin } from '@capacitor/core'\n\nexport interface SignalStrengthPluginMethods {\n checkSignalStrengthPermissions(): Promise<{ isGranted: boolean }>\n shouldShowPermissionRationale(): Promise<{ shouldShowRationale: boolean }>\n goToSettings(): Promise<{ isGranted: boolean }>\n requestSignalStrengthPermissions(): Promise\n listenForSignalStrengthChanges(): void\n unlistenForSignalStrengthChanges(): void\n addListener(\n eventName: 'signalStrengthChanged',\n listenerFunc: (signalStrengthInfo: SignalStrengthChangedEvent) => void\n ): Promise & PluginListenerHandle\n}\n\nexport interface SignalStrengthChangedEvent {\n signalStrength: number\n}\n\nexport function registerSignalStrengthPlugin() {\n return registerPlugin('SignalStrengthPlugin')\n}\n","import { css } from '@emotion/css'\nimport { IonButton, IonImg } from '@ionic/react'\nimport React from 'react'\nimport { useQueryClient } from 'react-query'\nimport CloseButton from '../../components/CloseButton/CloseButton'\nimport TModal, { TModalHeading } from '../../components/TModal/TModal'\nimport { SignalStrengthService } from '../../services/SignalStrengthService'\nimport { BarryWrapperStyles } from './MapPermissionsPopup'\nimport { locationKey, useLocationPermission, useRefetchPermissions } from './useLocationPermissions'\n\nexport const MapPermissionsPopupStyles = css`\n .barry-sitting {\n width: 110.667px;\n height: 116px;\n }\n`\n\nexport function LocationModal(props: { onClose: () => void; body?: React.ReactNode | React.ReactNode[] }) {\n const queryClient = useQueryClient()\n const { requestLocation } = useLocationPermission()\n\n const [showSettingsButton, setShowSettingsButton] = React.useState(false)\n const refetchPermissions = useRefetchPermissions()\n\n async function onClickConfigure() {\n const result = await requestLocation()\n queryClient.setQueryData(locationKey, { isGranted: result.isGranted })\n\n if (!result.isGranted) {\n if (!result.shouldShowRationale) {\n setShowSettingsButton(true)\n return\n }\n props.onClose()\n }\n }\n\n return (\n \n \n
    \n \n \n
    \n
    \n \n
    \n

    Allow Goji to access your device’s location?

    \n
    \n {props.body ??\n 'Granting Goji Mobile access to precise location will allow us to display your current location on the map and be used for signal strength results. Only you will be able to see your current location.'}\n
    \n
    \n {showSettingsButton ? (\n {\n props.onClose()\n await SignalStrengthService.goToSettings()\n refetchPermissions()\n }}\n size='large'\n shape='round'\n expand='block'\n >\n Go to Settings\n \n ) : (\n \n Configure Access\n \n )}\n
    \n \n )\n}\n","import * as React from 'react'\nimport { css } from '@emotion/css'\nimport { useLocationPermission } from './useLocationPermissions'\nimport { LocationModal } from './LocationPermissionModal'\n\nexport const BarryWrapperStyles = css`\n display: flex;\n justify-content: center;\n`\n\nexport function MapPermissionsPopup(props: {\n bgModalBody?: React.ReactNode | React.ReactNode[]\n locationModalBody?: React.ReactNode | React.ReactNode[]\n onClose: () => void\n}) {\n const { hasLocation } = useLocationPermission()\n\n const permissionState = getPermissionState()\n function getPermissionState() {\n if (hasLocation.isLoading) {\n return 'loading'\n }\n\n if (hasLocation.data?.isGranted) {\n return 'granted'\n }\n\n return 'show-location'\n }\n\n if (permissionState === 'granted' || permissionState === 'loading') {\n return null\n }\n\n return \n}\n","import { IonButton, IonIcon, IonInput, IonItem, IonLabel, IonList, useIonModal, useIonPopover } from '@ionic/react'\nimport { css, cx } from '@emotion/css'\nimport React from 'react'\nimport { briefcaseSharp, caretDown, closeSharp, homeSharp } from 'ionicons/icons'\nimport { Address, LabelType } from '../../store/address'\nimport { useGeneralStore } from '../../store'\nimport shallow from 'zustand/shallow'\n\nconst MODAL_WIDTH = 360\nexport const AddressLabelModalStyles = css`\n --height: auto;\n --max-width: ${MODAL_WIDTH}px;\n --border-radius: 10px;\n`\n\nconst modalWrapperStyles = css`\n color: var(--goji-primary-black);\n\n .close-button {\n position: absolute;\n top: 16px;\n right: 16px;\n --padding-start: 0;\n --padding-end: 0;\n }\n\n ion-icon {\n color: var(--ion-color-medium);\n }\n padding: 30px;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n .modal-content {\n display: flex;\n flex-direction: column;\n h2 {\n margin-top: 26px;\n }\n p {\n margin-top: 8px;\n }\n\n > ion-item {\n --padding-start: 0;\n --inner-padding-end: 0;\n\n .address-label-input {\n width: 100%;\n display: flex;\n align-items: center;\n height: 48px;\n border: 2px solid var(--goji-primary-black);\n &.active {\n border: 2px solid var(--ion-color-primary);\n }\n border-radius: 10px;\n padding: 0 16px;\n }\n }\n .address-label-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 12px;\n color: var(--ion-color-medium);\n margin-top: 8px;\n }\n }\n .button-container {\n margin-top: 16px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n\n ion-button {\n height: 52px;\n font-size: 16px;\n flex: 1;\n --border-radius: 30px;\n --border-width: 2px;\n --border-color: var(--ion-color-primary);\n }\n }\n\n ion-icon [slot='start'] {\n margin-right: 8px;\n }\n`\n\nconst itemIconStyles = css`\n margin-inline-end: 8px;\n color: var(--ion-color-medium);\n`\n\nconst popoverStyles = css`\n --offset-y: -2px;\n --width: calc(${MODAL_WIDTH}px - 60px);\n\n ::part(content) {\n box-shadow: 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n }\n`\n\nconst startIconLabelStyles = css`\n padding-right: 8px;\n padding-bottom: 2px; // adjust icon position to align with capital letters in input\n`\n\nconst StartIconLabel: React.FC<{ labelType: LabelType }> = ({ labelType }) => {\n const icon = labelType === 'HOME' ? homeSharp : labelType === 'WORK' ? briefcaseSharp : ''\n\n return \n}\n\nconst PopoverList: React.FC<{\n currentlySelectedLabelType: LabelType\n setLabelType: (labelType: LabelType) => void\n}> = ({ currentlySelectedLabelType, setLabelType }) => {\n const addresses = useGeneralStore((state) => state.addresses, shallow)\n\n return (\n \n address.labelType === LabelType.Home)\n }\n button\n lines='none'\n onClick={(evt) => setLabelType(LabelType.Home)}\n >\n \n Home\n \n address.labelType === LabelType.Work)\n }\n button\n lines='none'\n onClick={(evt) => setLabelType(LabelType.Work)}\n >\n \n Work\n \n \n )\n}\n\ninterface AddressLabelDialogProps {\n isRenaming?: boolean\n address?: Address\n onDismiss?: () => void\n onSubmit?: (labelType: LabelType, label: string) => void\n}\n\nexport const AddressLabelDialog: React.FC = (props) => {\n const [isExpanded, setIsExpanded] = React.useState(false)\n const ionInputRef = React.useRef(null)\n const [value, setValue] = React.useState(props.address?.label || '')\n const [labelType, setLabelType] = React.useState(props.address?.labelType || LabelType.Other)\n\n const [present, dismiss] = useIonPopover(PopoverList, {\n labelType: labelType,\n setLabelType: (labelType: LabelType) => {\n setLabelType(labelType)\n setValue('')\n dismiss()\n }\n })\n\n function openPopover() {\n setIsExpanded(true)\n present({\n onDidDismiss: () => setIsExpanded(false),\n side: 'top',\n event: undefined,\n reference: 'trigger',\n trigger: 'input-address-label',\n cssClass: popoverStyles,\n alignment: 'center',\n showBackdrop: false,\n keyboardClose: false,\n arrow: false\n })\n }\n\n const toggleInputFocus = () => {\n const inputElement = ionInputRef.current?.children[0] as HTMLInputElement | undefined\n if (isExpanded) {\n dismiss()\n inputElement?.blur()\n return\n }\n\n openPopover()\n }\n\n const handleSubmit = (isSkip: boolean = false) => {\n if (props.onSubmit) {\n if (isSkip) {\n props.onSubmit(LabelType.Other, props.address?.addressName.split(',')[0] || '')\n } else {\n props.onSubmit(\n labelType,\n labelType === 'OTHER' ? value.trim() : labelType.charAt(0) + labelType.slice(1).toLowerCase()\n )\n }\n }\n }\n\n return (\n {\n if (e.key === 'Enter') {\n handleSubmit()\n }\n }}\n >\n \n \n \n
    \n

    {props.isRenaming ? 'Rename your address' : 'Name your address'}

    \n

    You can always name this address later using your Address Book in your profile.

    \n \n isExpanded && evt.stopPropagation()}\n >\n {labelType !== 'OTHER' && }\n {\n setValue(String(e.target.value))\n setLabelType(LabelType.Other)\n }}\n maxlength={50}\n onKeyUp={(e) => {\n setLabelType(LabelType.Other)\n if (e.key === 'Enter') {\n toggleInputFocus()\n }\n }}\n ref={ionInputRef}\n placeholder={props.address?.addressName.split(',')[0]}\n />\n \n
    \n \n \n {props.address?.addressName}\n \n
    \n
    \n {!props.isRenaming && (\n {\n handleSubmit(true)\n }}\n >\n SKIP\n \n )}\n {\n handleSubmit()\n }}\n >\n DONE\n \n
    \n
    \n )\n}\n\nexport const useAddressLabelDialog = ({\n isRenaming,\n address,\n onDismiss,\n onSubmit,\n onDidDismiss\n}: AddressLabelDialogProps & { onDidDismiss?: () => void }) => {\n const [present, dismiss] = useIonModal(AddressLabelDialog, {\n isRenaming,\n address,\n onDismiss: () => {\n onDismiss?.()\n dismiss()\n },\n onSubmit: (labelType: LabelType, label: string) => {\n onSubmit?.(labelType, label)\n dismiss()\n }\n })\n\n const openModal = () => {\n present({\n cssClass: AddressLabelModalStyles,\n mode: 'md',\n showBackdrop: true,\n backdropDismiss: true,\n onDidDismiss: onDidDismiss\n })\n }\n\n return { openModal, dismiss }\n}\n","import { css, cx } from '@emotion/css'\nimport { IonButton, IonIcon, IonModal, IonSpinner } from '@ionic/react'\nimport * as React from 'react'\nimport Autocomplete from '../../components/Autocomplete'\nimport { isNativeAndroid } from '../../store/standalone/permission-store'\nimport { MapPermissionsPopup } from '../map/MapPermissionsPopup'\nimport { Address, LabelType } from '../../store/address'\nimport { useAddressLabelDialog } from './AddressLabelDialog'\nimport { useBoundStore } from '../../store'\nimport { autoLabelAddress } from './autolabel-address'\nimport { MapsWrapper } from '../../components/BackendSyncLoader/MapsWrapper'\nimport { MOBILE_BREAKPOINT_MAX, useIsMobileSize } from '../../utils/hooks/useWindowSize'\nimport { useSetUserLocation } from './hooks/useSetUserLocation'\nimport { Geolocation } from '@capacitor/geolocation'\n\nconst SearchbarInputStyles = css`\n background-color: var(--ion-background-color);\n box-shadow: 0px -1px 0px 0px #00000033, 0px 2px 4px 0px #00000033;\n\n border: none;\n border-radius: 42px;\n padding-left: 46px;\n\n --mobile-header-input-size: 51px;\n height: var(--mobile-header-input-size);\n max-height: 100%;\n width: 100%;\n\n font-size: 18px;\n`\n\nconst dismissButtonSize = '57.8px'\nconst SearchbarWrapperStyles = css`\n position: relative;\n margin-bottom: 8px;\n\n .buttons-container {\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%);\n\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .search-icon {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 16px;\n }\n\n &.populated {\n grid-template-columns: 1fr ${dismissButtonSize};\n .location {\n position: relative;\n }\n }\n\n ion-button.location,\n ion-spinner.location {\n text-transform: none;\n position: absolute;\n top: 0;\n right: 12px;\n }\n\n ion-spinner.location {\n top: 50%;\n margin-top: -8px;\n }\n\n ion-button.location,\n ion-button.location-button {\n --icon-size: 24px;\n\n width: var(--icon-size);\n height: var(--icon-size);\n\n @media screen and (max-width: ${MOBILE_BREAKPOINT_MAX}) {\n --icon-size: 20px;\n }\n\n --color: var(--goji-primary-black);\n margin: 0;\n\n &::part(native) {\n padding: 0;\n }\n }\n`\n\ninterface AddressSearchbarProps {\n searchBarPlaceholder?: string\n addresses: Address[]\n onAddressSelected: (address: Address) => void\n onMap?: boolean\n buttonsSlot?: React.ReactNode | React.ReactNode[]\n className?: string\n}\n\nexport function AddressesSearchbar(props: AddressSearchbarProps) {\n const loadingLocation = useBoundStore((state) => state.loadingLocation)\n const searchBar = React.useRef(null)\n const isMobile = useIsMobileSize()\n const onDidPresent = React.useCallback(() => {\n searchBar.current?.setFocus()\n }, [])\n\n const currentAddress = useBoundStore((state) => state.currentAddress)\n\n const [editingAddress, setEditingAddress] = React.useState
    (undefined)\n\n function onAddressSelected(address: Address) {\n if (props.onMap) {\n props.onAddressSelected(autoLabelAddress(address))\n return\n }\n\n setEditingAddress(address)\n openModal()\n }\n\n const { openModal } = useAddressLabelDialog({\n address: editingAddress,\n onSubmit: (labelType: LabelType, label: string) => {\n if (editingAddress) {\n props.onAddressSelected({ ...editingAddress, labelType, label })\n }\n },\n onDidDismiss: () => {\n setEditingAddress(undefined)\n }\n })\n\n const [searchbarState, setSearchbarState] = React.useState<'idle' | 'showPermissionModal' | 'showAutocompleteModal'>(\n 'idle'\n )\n\n const currentAddressIncluded = currentAddress\n ? props.addresses.find((addr) => addr.placeId === currentAddress.placeId)\n : false\n\n const onModalDismiss = () => {\n setSearchbarState('idle')\n }\n\n const { setUserLocation } = useSetUserLocation()\n\n async function onClickLocationButton() {\n if (!isNativeAndroid || (await Geolocation.checkPermissions()).location !== 'granted' ) {\n const geolocationAddress = await setUserLocation()\n geolocationAddress && onAddressSelected(geolocationAddress)\n } else {\n setSearchbarState('showPermissionModal')\n }\n }\n\n return (\n \n {searchbarState === 'showPermissionModal' ? (\n setSearchbarState('idle')}\n locationModalBody={\n <>\n Granting Goji Mobile access to precise location will allow us to recommend better plan results as\n well as display your current location on the Coverage Map. Only you will be able to see your current\n location.\n \n }\n bgModalBody={\n <>\n
    \n Setting your location access to Allow all the Time will allow Goji to access your location even\n when the app is closed.\n
    \n
    \n
    \n This setting will help us improve our Coverage Map data, which in turn will ensure that Goji is able to\n give you the best plan recommendations possible.\n
    \n \n }\n />\n ) : null}\n
    \n magnifying glass icon\n setSearchbarState('showAutocompleteModal')}\n className={cx(props.onMap && !isMobile ? 'on-map' : '', SearchbarInputStyles)}\n />\n
    \n {!currentAddressIncluded ? (\n \n {loadingLocation ? (\n \n ) : (\n \n )}\n \n ) : null}\n {props.buttonsSlot}\n
    \n
    \n \n \n \n \n )\n}\n","import * as React from 'react'\nimport { IonButton, IonCol, IonFooter, IonRow, IonText, IonToolbar } from '@ionic/react'\n\nimport './results.css'\nimport { useBoundStore } from '../../store'\nimport shallow from 'zustand/shallow'\nimport { RoutePaths } from '../../paths'\n\ninterface CompareFooterProps {\n setCompareView: (val: boolean) => void\n}\nexport const CompareFooter: React.FC = ({ setCompareView }) => {\n const [compareSelection, clearComparisons] = useBoundStore(\n (state) => [state.compareSelection, state.clearComparisons],\n shallow\n )\n const closeCompare = () => {\n clearComparisons()\n setCompareView(false)\n }\n\n return (\n \n \n \n \n Select up to 4 plans to compare\n \n \n \n Close\n \n \n \n \n \n \n Compare Plans {compareSelection.size ? `(${compareSelection.size})` : null}\n \n \n \n \n \n )\n}\n\nexport const API_KEY = process.env.REACT_APP_MAPS_API_KEY\n","import { Address, LabelType } from '../../store/address'\n\nexport function autoLabelAddress(address: Omit): Address {\n return {\n ...address,\n labelType: LabelType.Other,\n label: address.addressName.split(',')[0]\n }\n}\n","import React from 'react'\nimport shallow from 'zustand/shallow'\nimport { useBoundStore } from '../../../store'\nimport { Logger } from '../../../utils/Logger'\n\nexport function useSetUserLocation() {\n const [currentAddress, setUserLocationAndAddress, loadingLocation, locationError] = useBoundStore(\n (state) => [state.currentAddress, state.setUserLocationAndAddress, state.loadingLocation, state.locationError],\n shallow\n )\n\n const setUserLocation = React.useCallback(async () => {\n try {\n const result = await setUserLocationAndAddress()\n return result?.address\n } catch (e) {\n Logger.error(e)\n }\n }, [setUserLocationAndAddress])\n\n return {\n currentAddress,\n setUserLocation,\n loadingLocation,\n locationError\n }\n}\n","function isValueDifferent(a: T, b: T) {\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length !== b.length || a.some((item) => !b.includes(item))\n }\n return a !== b\n}\n\nexport function getFilterDiff(storePreferences: T, newPreferences: T) {\n const diff: Partial> = {}\n for (const _key in newPreferences) {\n const key = _key as keyof T\n\n if (isValueDifferent(storePreferences[key], newPreferences[key])) {\n diff[key] = true\n }\n }\n return diff\n}\n","import { css } from '@emotion/css'\nimport { MOBILE_BREAKPOINT } from '../../utils/hooks/useWindowSize'\n\nexport const PlansPageHeaderStyles = css`\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n\n @media screen and (min-width: ${MOBILE_BREAKPOINT}px) {\n padding: 0 var(--plans-tab-horizontal-padding);\n }\n`\n\nexport const PlansPageFooterWrapper = css`\n z-index: 6;\n`\n\nexport const CompareButtonsStyles = css`\n @media screen and (min-width: ${MOBILE_BREAKPOINT}px) {\n transform: translateX(calc(-1 * var(--plans-tab-horizontal-padding)));\n }\n\n transition: opacity 0.3s;\n &.hide {\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.3s, visibility 0s;\n transition-delay: 0s, 0.3s;\n }\n`\n\nexport const PlansPageDesktopHeaderStyles = css`\n border-bottom: 1px solid var(--ion-color-light-shade);\n`\n\nexport const PlansPageStyles = css`\n --overflow: hidden;\n text-align: center;\n position: relative;\n padding: calc(env(safe-area-inset-top)) 50px;\n .custom-width-limiter {\n height: 100%;\n }\n\n .barry {\n align: center;\n width: 35vw;\n max-width: 200px;\n margin-top: 80px;\n }\n`\n\nexport const SwiperStyles = css`\n height: 100% !important;\n .swiper-wrapper {\n .swiper-slide {\n &.is-barry {\n overflow-y: auto;\n touch-action: pan-y;\n }\n @media screen and (max-width: ${MOBILE_BREAKPOINT}px) {\n height: calc(100vh - 57px);\n }\n @media screen and (min-width: ${MOBILE_BREAKPOINT}px) {\n // 76px is the height of the header\n height: calc(100vh - 76px);\n }\n }\n }\n`\n","import { css } from '@emotion/css'\n\nconst EmptyListStateStyles = css`\n height: 100%;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n padding: 0 var(--empty-list-padding, --plans-tab-horizontal-padding);\n\n h3 {\n font-weight: 900;\n }\n\n p {\n font-size: 18px;\n }\n`\n\nexport function EmptyListState() {\n return (\n
    \n Barry thinking\n

    No matches found for your criteria

    \n

    Try changing the number of lines or exploring other search terms.

    \n
    \n )\n}\n","export const ALL_PLANS_TAB = 'all-plans'\nexport const RECOMMENDED_TAB = 'recommended'\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nconst PUBLISH = 0;\nconst SUBSCRIBE = 1;\nconst RESET = 2;\nconst VALUE = 4;\nfunction compose(a, b) {\n return (arg) => a(b(arg));\n}\nfunction thrush(arg, proc) {\n return proc(arg);\n}\nfunction curry2to1(proc, arg1) {\n return (arg2) => proc(arg1, arg2);\n}\nfunction curry1to0(proc, arg) {\n return () => proc(arg);\n}\nfunction tap(arg, proc) {\n proc(arg);\n return arg;\n}\nfunction tup(...args) {\n return args;\n}\nfunction call(proc) {\n proc();\n}\nfunction always(value) {\n return () => value;\n}\nfunction joinProc(...procs) {\n return () => {\n procs.map(call);\n };\n}\nfunction noop() {\n}\nfunction subscribe(emitter, subscription) {\n return emitter(SUBSCRIBE, subscription);\n}\nfunction publish(publisher, value) {\n publisher(PUBLISH, value);\n}\nfunction reset(emitter) {\n emitter(RESET);\n}\nfunction getValue(depot) {\n return depot(VALUE);\n}\nfunction connect(emitter, publisher) {\n return subscribe(emitter, curry2to1(publisher, PUBLISH));\n}\nfunction handleNext(emitter, subscription) {\n const unsub = emitter(SUBSCRIBE, (value) => {\n unsub();\n subscription(value);\n });\n return unsub;\n}\nfunction stream() {\n const subscriptions = [];\n return (action, arg) => {\n switch (action) {\n case RESET:\n subscriptions.splice(0, subscriptions.length);\n return;\n case SUBSCRIBE:\n subscriptions.push(arg);\n return () => {\n const indexOf = subscriptions.indexOf(arg);\n if (indexOf > -1) {\n subscriptions.splice(indexOf, 1);\n }\n };\n case PUBLISH:\n subscriptions.slice().forEach((subscription) => {\n subscription(arg);\n });\n return;\n default:\n throw new Error(`unrecognized action ${action}`);\n }\n };\n}\nfunction statefulStream(initial) {\n let value = initial;\n const innerSubject = stream();\n return (action, arg) => {\n switch (action) {\n case SUBSCRIBE:\n const subscription = arg;\n subscription(value);\n break;\n case PUBLISH:\n value = arg;\n break;\n case VALUE:\n return value;\n }\n return innerSubject(action, arg);\n };\n}\nfunction eventHandler(emitter) {\n let unsub;\n let currentSubscription;\n const cleanup = () => unsub && unsub();\n return function(action, subscription) {\n switch (action) {\n case SUBSCRIBE:\n if (subscription) {\n if (currentSubscription === subscription) {\n return;\n }\n cleanup();\n currentSubscription = subscription;\n unsub = subscribe(emitter, subscription);\n return unsub;\n } else {\n cleanup();\n return noop;\n }\n case RESET:\n cleanup();\n currentSubscription = null;\n return;\n default:\n throw new Error(`unrecognized action ${action}`);\n }\n };\n}\nfunction streamFromEmitter(emitter) {\n return tap(stream(), (stream2) => connect(emitter, stream2));\n}\nfunction statefulStreamFromEmitter(emitter, initial) {\n return tap(statefulStream(initial), (stream2) => connect(emitter, stream2));\n}\nfunction combineOperators(...operators) {\n return (subscriber) => {\n return operators.reduceRight(thrush, subscriber);\n };\n}\nfunction pipe(source, ...operators) {\n const project = combineOperators(...operators);\n return (action, subscription) => {\n switch (action) {\n case SUBSCRIBE:\n return subscribe(source, project(subscription));\n case RESET:\n reset(source);\n return;\n }\n };\n}\nfunction defaultComparator(previous, next) {\n return previous === next;\n}\nfunction distinctUntilChanged(comparator = defaultComparator) {\n let current;\n return (done) => (next) => {\n if (!comparator(current, next)) {\n current = next;\n done(next);\n }\n };\n}\nfunction filter(predicate) {\n return (done) => (value) => {\n predicate(value) && done(value);\n };\n}\nfunction map(project) {\n return (done) => compose(done, project);\n}\nfunction mapTo(value) {\n return (done) => () => done(value);\n}\nfunction scan(scanner, initial) {\n return (done) => (value) => done(initial = scanner(initial, value));\n}\nfunction skip(times) {\n return (done) => (value) => {\n times > 0 ? times-- : done(value);\n };\n}\nfunction throttleTime(interval) {\n let currentValue;\n let timeout;\n return (done) => (value) => {\n currentValue = value;\n if (timeout) {\n return;\n }\n timeout = setTimeout(() => {\n timeout = void 0;\n done(currentValue);\n }, interval);\n };\n}\nfunction debounceTime(interval) {\n let currentValue;\n let timeout;\n return (done) => (value) => {\n currentValue = value;\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n done(currentValue);\n }, interval);\n };\n}\nfunction withLatestFrom(...sources) {\n const values = new Array(sources.length);\n let called = 0;\n let pendingCall = null;\n const allCalled = Math.pow(2, sources.length) - 1;\n sources.forEach((source, index) => {\n const bit = Math.pow(2, index);\n subscribe(source, (value) => {\n const prevCalled = called;\n called = called | bit;\n values[index] = value;\n if (prevCalled !== allCalled && called === allCalled && pendingCall) {\n pendingCall();\n pendingCall = null;\n }\n });\n });\n return (done) => (value) => {\n const call2 = () => done([value].concat(values));\n if (called === allCalled) {\n call2();\n } else {\n pendingCall = call2;\n }\n };\n}\nfunction merge(...sources) {\n return function(action, subscription) {\n switch (action) {\n case SUBSCRIBE:\n return joinProc(...sources.map((source) => subscribe(source, subscription)));\n case RESET:\n return;\n default:\n throw new Error(`unrecognized action ${action}`);\n }\n };\n}\nfunction duc(source, comparator = defaultComparator) {\n return pipe(source, distinctUntilChanged(comparator));\n}\nfunction combineLatest(...emitters) {\n const innerSubject = stream();\n const values = new Array(emitters.length);\n let called = 0;\n const allCalled = Math.pow(2, emitters.length) - 1;\n emitters.forEach((source, index) => {\n const bit = Math.pow(2, index);\n subscribe(source, (value) => {\n values[index] = value;\n called = called | bit;\n if (called === allCalled) {\n publish(innerSubject, values);\n }\n });\n });\n return function(action, subscription) {\n switch (action) {\n case SUBSCRIBE:\n if (called === allCalled) {\n subscription(values);\n }\n return subscribe(innerSubject, subscription);\n case RESET:\n return reset(innerSubject);\n default:\n throw new Error(`unrecognized action ${action}`);\n }\n };\n}\nfunction system(constructor, dependencies = [], { singleton } = { singleton: true }) {\n return {\n id: id(),\n constructor,\n dependencies,\n singleton\n };\n}\nconst id = () => Symbol();\nfunction init(systemSpec) {\n const singletons = /* @__PURE__ */ new Map();\n const _init = ({ id: id2, constructor, dependencies, singleton }) => {\n if (singleton && singletons.has(id2)) {\n return singletons.get(id2);\n }\n const system2 = constructor(dependencies.map((e) => _init(e)));\n if (singleton) {\n singletons.set(id2, system2);\n }\n return system2;\n };\n return _init(systemSpec);\n}\nfunction omit(keys, obj) {\n const result = {};\n const index = {};\n let idx = 0;\n const len = keys.length;\n while (idx < len) {\n index[keys[idx]] = 1;\n idx += 1;\n }\n for (const prop in obj) {\n if (!index.hasOwnProperty(prop)) {\n result[prop] = obj[prop];\n }\n }\n return result;\n}\nconst useIsomorphicLayoutEffect$2 = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction systemToComponent(systemSpec, map2, Root) {\n const requiredPropNames = Object.keys(map2.required || {});\n const optionalPropNames = Object.keys(map2.optional || {});\n const methodNames = Object.keys(map2.methods || {});\n const eventNames = Object.keys(map2.events || {});\n const Context = React.createContext({});\n function applyPropsToSystem(system2, props) {\n if (system2[\"propsReady\"]) {\n publish(system2[\"propsReady\"], false);\n }\n for (const requiredPropName of requiredPropNames) {\n const stream2 = system2[map2.required[requiredPropName]];\n publish(stream2, props[requiredPropName]);\n }\n for (const optionalPropName of optionalPropNames) {\n if (optionalPropName in props) {\n const stream2 = system2[map2.optional[optionalPropName]];\n publish(stream2, props[optionalPropName]);\n }\n }\n if (system2[\"propsReady\"]) {\n publish(system2[\"propsReady\"], true);\n }\n }\n function buildMethods(system2) {\n return methodNames.reduce((acc, methodName) => {\n acc[methodName] = (value) => {\n const stream2 = system2[map2.methods[methodName]];\n publish(stream2, value);\n };\n return acc;\n }, {});\n }\n function buildEventHandlers(system2) {\n return eventNames.reduce((handlers, eventName) => {\n handlers[eventName] = eventHandler(system2[map2.events[eventName]]);\n return handlers;\n }, {});\n }\n const Component = React.forwardRef((propsWithChildren, ref) => {\n const { children, ...props } = propsWithChildren;\n const [system2] = React.useState(() => {\n return tap(init(systemSpec), (system22) => applyPropsToSystem(system22, props));\n });\n const [handlers] = React.useState(curry1to0(buildEventHandlers, system2));\n useIsomorphicLayoutEffect$2(() => {\n for (const eventName of eventNames) {\n if (eventName in props) {\n subscribe(handlers[eventName], props[eventName]);\n }\n }\n return () => {\n Object.values(handlers).map(reset);\n };\n }, [props, handlers, system2]);\n useIsomorphicLayoutEffect$2(() => {\n applyPropsToSystem(system2, props);\n });\n React.useImperativeHandle(ref, always(buildMethods(system2)));\n return React.createElement(\n Context.Provider,\n { value: system2 },\n Root ? React.createElement(\n Root,\n omit([...requiredPropNames, ...optionalPropNames, ...eventNames], props),\n children\n ) : children\n );\n });\n const usePublisher2 = (key) => {\n return React.useCallback(curry2to1(publish, React.useContext(Context)[key]), [key]);\n };\n const useEmitterValue2 = (key) => {\n const system2 = React.useContext(Context);\n const source = system2[key];\n const [value, setValue] = React.useState(curry1to0(getValue, source));\n useIsomorphicLayoutEffect$2(\n () => subscribe(source, (next) => {\n if (next !== value) {\n setValue(always(next));\n }\n }),\n [source, value]\n );\n return value;\n };\n const useEmitter2 = (key, callback) => {\n const context = React.useContext(Context);\n const source = context[key];\n useIsomorphicLayoutEffect$2(() => subscribe(source, callback), [callback, source]);\n };\n return {\n Component,\n usePublisher: usePublisher2,\n useEmitterValue: useEmitterValue2,\n useEmitter: useEmitter2\n };\n}\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nconst useIsomorphicLayoutEffect$1 = useIsomorphicLayoutEffect;\nvar LogLevel = /* @__PURE__ */ ((LogLevel2) => {\n LogLevel2[LogLevel2[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel2[LogLevel2[\"INFO\"] = 1] = \"INFO\";\n LogLevel2[LogLevel2[\"WARN\"] = 2] = \"WARN\";\n LogLevel2[LogLevel2[\"ERROR\"] = 3] = \"ERROR\";\n return LogLevel2;\n})(LogLevel || {});\nconst CONSOLE_METHOD_MAP = {\n [0]: \"debug\",\n [1]: \"log\",\n [2]: \"warn\",\n [3]: \"error\"\n};\nconst getGlobalThis = () => typeof globalThis === \"undefined\" ? window : globalThis;\nconst loggerSystem = system(\n () => {\n const logLevel = statefulStream(3);\n const log = statefulStream((label, message, level = 1) => {\n const currentLevel = getGlobalThis()[\"VIRTUOSO_LOG_LEVEL\"] ?? getValue(logLevel);\n if (level >= currentLevel) {\n console[CONSOLE_METHOD_MAP[level]](\n \"%creact-virtuoso: %c%s %o\",\n \"color: #0253b3; font-weight: bold\",\n \"color: initial\",\n label,\n message\n );\n }\n });\n return {\n log,\n logLevel\n };\n },\n [],\n { singleton: true }\n);\nfunction useSizeWithElRef(callback, enabled = true) {\n const ref = React.useRef(null);\n let callbackRef = (_el) => {\n };\n if (typeof ResizeObserver !== \"undefined\") {\n const observer = new ResizeObserver((entries) => {\n const element = entries[0].target;\n if (element.offsetParent !== null) {\n callback(element);\n }\n });\n callbackRef = (elRef) => {\n if (elRef && enabled) {\n observer.observe(elRef);\n ref.current = elRef;\n } else {\n if (ref.current) {\n observer.unobserve(ref.current);\n }\n ref.current = null;\n }\n };\n }\n return { ref, callbackRef };\n}\nfunction useSize(callback, enabled = true) {\n return useSizeWithElRef(callback, enabled).callbackRef;\n}\nfunction useChangedListContentsSizes(callback, itemSize, enabled, scrollContainerStateCallback, log, gap, customScrollParent) {\n return useSizeWithElRef((el) => {\n const ranges = getChangedChildSizes(el.children, itemSize, \"offsetHeight\", log);\n let scrollableElement = el.parentElement;\n while (!scrollableElement.dataset[\"virtuosoScroller\"]) {\n scrollableElement = scrollableElement.parentElement;\n }\n const windowScrolling = scrollableElement.lastElementChild.dataset[\"viewportType\"] === \"window\";\n const scrollTop = customScrollParent ? customScrollParent.scrollTop : windowScrolling ? window.pageYOffset || document.documentElement.scrollTop : scrollableElement.scrollTop;\n const scrollHeight = customScrollParent ? customScrollParent.scrollHeight : windowScrolling ? document.documentElement.scrollHeight : scrollableElement.scrollHeight;\n const viewportHeight = customScrollParent ? customScrollParent.offsetHeight : windowScrolling ? window.innerHeight : scrollableElement.offsetHeight;\n scrollContainerStateCallback({\n scrollTop: Math.max(scrollTop, 0),\n scrollHeight,\n viewportHeight\n });\n gap == null ? void 0 : gap(resolveGapValue$1(\"row-gap\", getComputedStyle(el).rowGap, log));\n if (ranges !== null) {\n callback(ranges);\n }\n }, enabled);\n}\nfunction getChangedChildSizes(children, itemSize, field, log) {\n const length = children.length;\n if (length === 0) {\n return null;\n }\n const results = [];\n for (let i = 0; i < length; i++) {\n const child = children.item(i);\n if (!child || child.dataset.index === void 0) {\n continue;\n }\n const index = parseInt(child.dataset.index);\n const knownSize = parseFloat(child.dataset.knownSize);\n const size = itemSize(child, field);\n if (size === 0) {\n log(\"Zero-sized element, this should not happen\", { child }, LogLevel.ERROR);\n }\n if (size === knownSize) {\n continue;\n }\n const lastResult = results[results.length - 1];\n if (results.length === 0 || lastResult.size !== size || lastResult.endIndex !== index - 1) {\n results.push({ startIndex: index, endIndex: index, size });\n } else {\n results[results.length - 1].endIndex++;\n }\n }\n return results;\n}\nfunction resolveGapValue$1(property, value, log) {\n if (value !== \"normal\" && !(value == null ? void 0 : value.endsWith(\"px\"))) {\n log(`${property} was not resolved to pixel value correctly`, value, LogLevel.WARN);\n }\n if (value === \"normal\") {\n return 0;\n }\n return parseInt(value ?? \"0\", 10);\n}\nfunction correctItemSize(el, dimension) {\n return Math.round(el.getBoundingClientRect()[dimension]);\n}\nfunction approximatelyEqual(num1, num2) {\n return Math.abs(num1 - num2) < 1.01;\n}\nfunction useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, scrollerElement, scrollerRefCallback = noop, customScrollParent) {\n const scrollerRef = React.useRef(null);\n const scrollTopTarget = React.useRef(null);\n const timeoutRef = React.useRef(null);\n const handler = React.useCallback(\n (ev) => {\n const el = ev.target;\n const windowScroll = el === window || el === document;\n const scrollTop = windowScroll ? window.pageYOffset || document.documentElement.scrollTop : el.scrollTop;\n const scrollHeight = windowScroll ? document.documentElement.scrollHeight : el.scrollHeight;\n const viewportHeight = windowScroll ? window.innerHeight : el.offsetHeight;\n const call2 = () => {\n scrollContainerStateCallback({\n scrollTop: Math.max(scrollTop, 0),\n scrollHeight,\n viewportHeight\n });\n };\n if (ev.suppressFlushSync) {\n call2();\n } else {\n ReactDOM.flushSync(call2);\n }\n if (scrollTopTarget.current !== null) {\n if (scrollTop === scrollTopTarget.current || scrollTop <= 0 || scrollTop === scrollHeight - viewportHeight) {\n scrollTopTarget.current = null;\n smoothScrollTargetReached(true);\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n }\n }\n },\n [scrollContainerStateCallback, smoothScrollTargetReached]\n );\n React.useEffect(() => {\n const localRef = customScrollParent ? customScrollParent : scrollerRef.current;\n scrollerRefCallback(customScrollParent ? customScrollParent : scrollerRef.current);\n handler({ target: localRef, suppressFlushSync: true });\n localRef.addEventListener(\"scroll\", handler, { passive: true });\n return () => {\n scrollerRefCallback(null);\n localRef.removeEventListener(\"scroll\", handler);\n };\n }, [scrollerRef, handler, scrollerElement, scrollerRefCallback, customScrollParent]);\n function scrollToCallback(location) {\n const scrollerElement2 = scrollerRef.current;\n if (!scrollerElement2 || \"offsetHeight\" in scrollerElement2 && scrollerElement2.offsetHeight === 0) {\n return;\n }\n const isSmooth = location.behavior === \"smooth\";\n let offsetHeight;\n let scrollHeight;\n let scrollTop;\n if (scrollerElement2 === window) {\n scrollHeight = Math.max(correctItemSize(document.documentElement, \"height\"), document.documentElement.scrollHeight);\n offsetHeight = window.innerHeight;\n scrollTop = document.documentElement.scrollTop;\n } else {\n scrollHeight = scrollerElement2.scrollHeight;\n offsetHeight = correctItemSize(scrollerElement2, \"height\");\n scrollTop = scrollerElement2.scrollTop;\n }\n const maxScrollTop = scrollHeight - offsetHeight;\n location.top = Math.ceil(Math.max(Math.min(maxScrollTop, location.top), 0));\n if (approximatelyEqual(offsetHeight, scrollHeight) || location.top === scrollTop) {\n scrollContainerStateCallback({ scrollTop, scrollHeight, viewportHeight: offsetHeight });\n if (isSmooth) {\n smoothScrollTargetReached(true);\n }\n return;\n }\n if (isSmooth) {\n scrollTopTarget.current = location.top;\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = setTimeout(() => {\n timeoutRef.current = null;\n scrollTopTarget.current = null;\n smoothScrollTargetReached(true);\n }, 1e3);\n } else {\n scrollTopTarget.current = null;\n }\n scrollerElement2.scrollTo(location);\n }\n function scrollByCallback(location) {\n scrollerRef.current.scrollBy(location);\n }\n return { scrollerRef, scrollByCallback, scrollToCallback };\n}\nconst domIOSystem = system(\n () => {\n const scrollContainerState = stream();\n const scrollTop = stream();\n const deviation = statefulStream(0);\n const smoothScrollTargetReached = stream();\n const statefulScrollTop = statefulStream(0);\n const viewportHeight = stream();\n const scrollHeight = stream();\n const headerHeight = statefulStream(0);\n const fixedHeaderHeight = statefulStream(0);\n const fixedFooterHeight = statefulStream(0);\n const footerHeight = statefulStream(0);\n const scrollTo = stream();\n const scrollBy = stream();\n const scrollingInProgress = statefulStream(false);\n connect(\n pipe(\n scrollContainerState,\n map(({ scrollTop: scrollTop2 }) => scrollTop2)\n ),\n scrollTop\n );\n connect(\n pipe(\n scrollContainerState,\n map(({ scrollHeight: scrollHeight2 }) => scrollHeight2)\n ),\n scrollHeight\n );\n connect(scrollTop, statefulScrollTop);\n return {\n scrollContainerState,\n scrollTop,\n viewportHeight,\n headerHeight,\n fixedHeaderHeight,\n fixedFooterHeight,\n footerHeight,\n scrollHeight,\n smoothScrollTargetReached,\n scrollTo,\n scrollBy,\n statefulScrollTop,\n deviation,\n scrollingInProgress\n };\n },\n [],\n { singleton: true }\n);\nconst NIL_NODE = { lvl: 0 };\nfunction newAANode(k, v, lvl, l = NIL_NODE, r = NIL_NODE) {\n return { k, v, lvl, l, r };\n}\nfunction empty(node) {\n return node === NIL_NODE;\n}\nfunction newTree() {\n return NIL_NODE;\n}\nfunction remove(node, key) {\n if (empty(node))\n return NIL_NODE;\n const { k, l, r } = node;\n if (key === k) {\n if (empty(l)) {\n return r;\n } else if (empty(r)) {\n return l;\n } else {\n const [lastKey, lastValue] = last(l);\n return adjust(clone(node, { k: lastKey, v: lastValue, l: deleteLast(l) }));\n }\n } else if (key < k) {\n return adjust(clone(node, { l: remove(l, key) }));\n } else {\n return adjust(clone(node, { r: remove(r, key) }));\n }\n}\nfunction findMaxKeyValue(node, value, field = \"k\") {\n if (empty(node)) {\n return [-Infinity, void 0];\n }\n if (node[field] === value) {\n return [node.k, node.v];\n }\n if (node[field] < value) {\n const r = findMaxKeyValue(node.r, value, field);\n if (r[0] === -Infinity) {\n return [node.k, node.v];\n } else {\n return r;\n }\n }\n return findMaxKeyValue(node.l, value, field);\n}\nfunction insert(node, k, v) {\n if (empty(node)) {\n return newAANode(k, v, 1);\n }\n if (k === node.k) {\n return clone(node, { k, v });\n } else if (k < node.k) {\n return rebalance(clone(node, { l: insert(node.l, k, v) }));\n } else {\n return rebalance(clone(node, { r: insert(node.r, k, v) }));\n }\n}\nfunction walkWithin(node, start, end) {\n if (empty(node)) {\n return [];\n }\n const { k, v, l, r } = node;\n let result = [];\n if (k > start) {\n result = result.concat(walkWithin(l, start, end));\n }\n if (k >= start && k <= end) {\n result.push({ k, v });\n }\n if (k <= end) {\n result = result.concat(walkWithin(r, start, end));\n }\n return result;\n}\nfunction walk(node) {\n if (empty(node)) {\n return [];\n }\n return [...walk(node.l), { k: node.k, v: node.v }, ...walk(node.r)];\n}\nfunction last(node) {\n return empty(node.r) ? [node.k, node.v] : last(node.r);\n}\nfunction deleteLast(node) {\n return empty(node.r) ? node.l : adjust(clone(node, { r: deleteLast(node.r) }));\n}\nfunction clone(node, args) {\n return newAANode(\n args.k !== void 0 ? args.k : node.k,\n args.v !== void 0 ? args.v : node.v,\n args.lvl !== void 0 ? args.lvl : node.lvl,\n args.l !== void 0 ? args.l : node.l,\n args.r !== void 0 ? args.r : node.r\n );\n}\nfunction isSingle(node) {\n return empty(node) || node.lvl > node.r.lvl;\n}\nfunction rebalance(node) {\n return split(skew(node));\n}\nfunction adjust(node) {\n const { l, r, lvl } = node;\n if (r.lvl >= lvl - 1 && l.lvl >= lvl - 1) {\n return node;\n } else if (lvl > r.lvl + 1) {\n if (isSingle(l)) {\n return skew(clone(node, { lvl: lvl - 1 }));\n } else {\n if (!empty(l) && !empty(l.r)) {\n return clone(l.r, {\n l: clone(l, { r: l.r.l }),\n r: clone(node, {\n l: l.r.r,\n lvl: lvl - 1\n }),\n lvl\n });\n } else {\n throw new Error(\"Unexpected empty nodes\");\n }\n }\n } else {\n if (isSingle(node)) {\n return split(clone(node, { lvl: lvl - 1 }));\n } else {\n if (!empty(r) && !empty(r.l)) {\n const rl = r.l;\n const rlvl = isSingle(rl) ? r.lvl - 1 : r.lvl;\n return clone(rl, {\n l: clone(node, {\n r: rl.l,\n lvl: lvl - 1\n }),\n r: split(clone(r, { l: rl.r, lvl: rlvl })),\n lvl: rl.lvl + 1\n });\n } else {\n throw new Error(\"Unexpected empty nodes\");\n }\n }\n }\n}\nfunction rangesWithin(node, startIndex, endIndex) {\n if (empty(node)) {\n return [];\n }\n const adjustedStart = findMaxKeyValue(node, startIndex)[0];\n return toRanges(walkWithin(node, adjustedStart, endIndex));\n}\nfunction arrayToRanges(items, parser) {\n const length = items.length;\n if (length === 0) {\n return [];\n }\n let { index: start, value } = parser(items[0]);\n const result = [];\n for (let i = 1; i < length; i++) {\n const { index: nextIndex, value: nextValue } = parser(items[i]);\n result.push({ start, end: nextIndex - 1, value });\n start = nextIndex;\n value = nextValue;\n }\n result.push({ start, end: Infinity, value });\n return result;\n}\nfunction toRanges(nodes) {\n return arrayToRanges(nodes, ({ k: index, v: value }) => ({ index, value }));\n}\nfunction split(node) {\n const { r, lvl } = node;\n return !empty(r) && !empty(r.r) && r.lvl === lvl && r.r.lvl === lvl ? clone(r, { l: clone(node, { r: r.l }), lvl: lvl + 1 }) : node;\n}\nfunction skew(node) {\n const { l } = node;\n return !empty(l) && l.lvl === node.lvl ? clone(l, { r: clone(node, { l: l.r }) }) : node;\n}\nfunction findIndexOfClosestSmallerOrEqual(items, value, comparator, start = 0) {\n let end = items.length - 1;\n while (start <= end) {\n const index = Math.floor((start + end) / 2);\n const item = items[index];\n const match = comparator(item, value);\n if (match === 0) {\n return index;\n }\n if (match === -1) {\n if (end - start < 2) {\n return index - 1;\n }\n end = index - 1;\n } else {\n if (end === start) {\n return index;\n }\n start = index + 1;\n }\n }\n throw new Error(`Failed binary finding record in array - ${items.join(\",\")}, searched for ${value}`);\n}\nfunction findClosestSmallerOrEqual(items, value, comparator) {\n return items[findIndexOfClosestSmallerOrEqual(items, value, comparator)];\n}\nfunction findRange(items, startValue, endValue, comparator) {\n const startIndex = findIndexOfClosestSmallerOrEqual(items, startValue, comparator);\n const endIndex = findIndexOfClosestSmallerOrEqual(items, endValue, comparator, startIndex);\n return items.slice(startIndex, endIndex + 1);\n}\nconst recalcSystem = system(\n () => {\n const recalcInProgress = statefulStream(false);\n return { recalcInProgress };\n },\n [],\n { singleton: true }\n);\nfunction rangeIncludes(refRange) {\n const { size, startIndex, endIndex } = refRange;\n return (range) => {\n return range.start === startIndex && (range.end === endIndex || range.end === Infinity) && range.value === size;\n };\n}\nfunction insertRanges(sizeTree, ranges) {\n let syncStart = empty(sizeTree) ? 0 : Infinity;\n for (const range of ranges) {\n const { size, startIndex, endIndex } = range;\n syncStart = Math.min(syncStart, startIndex);\n if (empty(sizeTree)) {\n sizeTree = insert(sizeTree, 0, size);\n continue;\n }\n const overlappingRanges = rangesWithin(sizeTree, startIndex - 1, endIndex + 1);\n if (overlappingRanges.some(rangeIncludes(range))) {\n continue;\n }\n let firstPassDone = false;\n let shouldInsert = false;\n for (const { start: rangeStart, end: rangeEnd, value: rangeValue } of overlappingRanges) {\n if (!firstPassDone) {\n shouldInsert = rangeValue !== size;\n firstPassDone = true;\n } else {\n if (endIndex >= rangeStart || size === rangeValue) {\n sizeTree = remove(sizeTree, rangeStart);\n }\n }\n if (rangeEnd > endIndex && endIndex >= rangeStart) {\n if (rangeValue !== size) {\n sizeTree = insert(sizeTree, endIndex + 1, rangeValue);\n }\n }\n }\n if (shouldInsert) {\n sizeTree = insert(sizeTree, startIndex, size);\n }\n }\n return [sizeTree, syncStart];\n}\nfunction initialSizeState() {\n return {\n offsetTree: [],\n sizeTree: newTree(),\n groupOffsetTree: newTree(),\n lastIndex: 0,\n lastOffset: 0,\n lastSize: 0,\n groupIndices: []\n };\n}\nfunction indexComparator({ index: itemIndex }, index) {\n return index === itemIndex ? 0 : index < itemIndex ? -1 : 1;\n}\nfunction offsetComparator({ offset: itemOffset }, offset) {\n return offset === itemOffset ? 0 : offset < itemOffset ? -1 : 1;\n}\nfunction offsetPointParser(point) {\n return { index: point.index, value: point };\n}\nfunction rangesWithinOffsets(tree, startOffset, endOffset, minStartIndex = 0) {\n if (minStartIndex > 0) {\n startOffset = Math.max(startOffset, findClosestSmallerOrEqual(tree, minStartIndex, indexComparator).offset);\n }\n return arrayToRanges(findRange(tree, startOffset, endOffset, offsetComparator), offsetPointParser);\n}\nfunction createOffsetTree(prevOffsetTree, syncStart, sizeTree, gap) {\n let offsetTree = prevOffsetTree;\n let prevIndex = 0;\n let prevSize = 0;\n let prevOffset = 0;\n let startIndex = 0;\n if (syncStart !== 0) {\n startIndex = findIndexOfClosestSmallerOrEqual(offsetTree, syncStart - 1, indexComparator);\n const offsetInfo = offsetTree[startIndex];\n prevOffset = offsetInfo.offset;\n const kv = findMaxKeyValue(sizeTree, syncStart - 1);\n prevIndex = kv[0];\n prevSize = kv[1];\n if (offsetTree.length && offsetTree[startIndex].size === findMaxKeyValue(sizeTree, syncStart)[1]) {\n startIndex -= 1;\n }\n offsetTree = offsetTree.slice(0, startIndex + 1);\n } else {\n offsetTree = [];\n }\n for (const { start: startIndex2, value } of rangesWithin(sizeTree, syncStart, Infinity)) {\n const indexOffset = startIndex2 - prevIndex;\n const aOffset = indexOffset * prevSize + prevOffset + indexOffset * gap;\n offsetTree.push({\n offset: aOffset,\n size: value,\n index: startIndex2\n });\n prevIndex = startIndex2;\n prevOffset = aOffset;\n prevSize = value;\n }\n return {\n offsetTree,\n lastIndex: prevIndex,\n lastOffset: prevOffset,\n lastSize: prevSize\n };\n}\nfunction sizeStateReducer(state, [ranges, groupIndices, log, gap]) {\n if (ranges.length > 0) {\n log(\"received item sizes\", ranges, LogLevel.DEBUG);\n }\n const sizeTree = state.sizeTree;\n let newSizeTree = sizeTree;\n let syncStart = 0;\n if (groupIndices.length > 0 && empty(sizeTree) && ranges.length === 2) {\n const groupSize = ranges[0].size;\n const itemSize = ranges[1].size;\n newSizeTree = groupIndices.reduce((tree, groupIndex) => {\n return insert(insert(tree, groupIndex, groupSize), groupIndex + 1, itemSize);\n }, newSizeTree);\n } else {\n [newSizeTree, syncStart] = insertRanges(newSizeTree, ranges);\n }\n if (newSizeTree === sizeTree) {\n return state;\n }\n const { offsetTree: newOffsetTree, lastIndex, lastSize, lastOffset } = createOffsetTree(state.offsetTree, syncStart, newSizeTree, gap);\n return {\n sizeTree: newSizeTree,\n offsetTree: newOffsetTree,\n lastIndex,\n lastOffset,\n lastSize,\n groupOffsetTree: groupIndices.reduce((tree, index) => {\n return insert(tree, index, offsetOf(index, newOffsetTree, gap));\n }, newTree()),\n groupIndices\n };\n}\nfunction offsetOf(index, tree, gap) {\n if (tree.length === 0) {\n return 0;\n }\n const { offset, index: startIndex, size } = findClosestSmallerOrEqual(tree, index, indexComparator);\n const itemCount = index - startIndex;\n const top = size * itemCount + (itemCount - 1) * gap + offset;\n return top > 0 ? top + gap : top;\n}\nfunction isGroupLocation(location) {\n return typeof location.groupIndex !== \"undefined\";\n}\nfunction originalIndexFromLocation(location, sizes, lastIndex) {\n if (isGroupLocation(location)) {\n return sizes.groupIndices[location.groupIndex] + 1;\n } else {\n const numericIndex = location.index === \"LAST\" ? lastIndex : location.index;\n let result = originalIndexFromItemIndex(numericIndex, sizes);\n result = Math.max(0, result, Math.min(lastIndex, result));\n return result;\n }\n}\nfunction originalIndexFromItemIndex(itemIndex, sizes) {\n if (!hasGroups(sizes)) {\n return itemIndex;\n }\n let groupOffset = 0;\n while (sizes.groupIndices[groupOffset] <= itemIndex + groupOffset) {\n groupOffset++;\n }\n return itemIndex + groupOffset;\n}\nfunction hasGroups(sizes) {\n return !empty(sizes.groupOffsetTree);\n}\nconst SIZE_MAP = {\n offsetHeight: \"height\",\n offsetWidth: \"width\"\n};\nconst sizeSystem = system(\n ([{ log }, { recalcInProgress }]) => {\n const sizeRanges = stream();\n const totalCount = stream();\n const statefulTotalCount = statefulStreamFromEmitter(totalCount, 0);\n const unshiftWith = stream();\n const shiftWith = stream();\n const firstItemIndex = statefulStream(0);\n const groupIndices = statefulStream([]);\n const fixedItemSize = statefulStream(void 0);\n const defaultItemSize = statefulStream(void 0);\n const itemSize = statefulStream((el, field) => correctItemSize(el, SIZE_MAP[field]));\n const data = statefulStream(void 0);\n const gap = statefulStream(0);\n const initial = initialSizeState();\n const sizes = statefulStreamFromEmitter(\n pipe(sizeRanges, withLatestFrom(groupIndices, log, gap), scan(sizeStateReducer, initial), distinctUntilChanged()),\n initial\n );\n connect(\n pipe(\n groupIndices,\n filter((indexes) => indexes.length > 0),\n withLatestFrom(sizes, gap),\n map(([groupIndices2, sizes2, gap2]) => {\n const groupOffsetTree = groupIndices2.reduce((tree, index, idx) => {\n return insert(tree, index, offsetOf(index, sizes2.offsetTree, gap2) || idx);\n }, newTree());\n return {\n ...sizes2,\n groupIndices: groupIndices2,\n groupOffsetTree\n };\n })\n ),\n sizes\n );\n connect(\n pipe(\n totalCount,\n withLatestFrom(sizes),\n filter(([totalCount2, { lastIndex }]) => {\n return totalCount2 < lastIndex;\n }),\n map(([totalCount2, { lastIndex, lastSize }]) => {\n return [\n {\n startIndex: totalCount2,\n endIndex: lastIndex,\n size: lastSize\n }\n ];\n })\n ),\n sizeRanges\n );\n connect(fixedItemSize, defaultItemSize);\n const trackItemSizes = statefulStreamFromEmitter(\n pipe(\n fixedItemSize,\n map((size) => size === void 0)\n ),\n true\n );\n connect(\n pipe(\n defaultItemSize,\n filter((value) => {\n return value !== void 0 && empty(getValue(sizes).sizeTree);\n }),\n map((size) => [{ startIndex: 0, endIndex: 0, size }])\n ),\n sizeRanges\n );\n const listRefresh = streamFromEmitter(\n pipe(\n sizeRanges,\n withLatestFrom(sizes),\n scan(\n ({ sizes: oldSizes }, [_, newSizes]) => {\n return {\n changed: newSizes !== oldSizes,\n sizes: newSizes\n };\n },\n { changed: false, sizes: initial }\n ),\n map((value) => value.changed)\n )\n );\n subscribe(\n pipe(\n firstItemIndex,\n scan(\n (prev, next) => {\n return { diff: prev.prev - next, prev: next };\n },\n { diff: 0, prev: 0 }\n ),\n map((val) => val.diff)\n ),\n (offset) => {\n if (offset > 0) {\n publish(recalcInProgress, true);\n publish(unshiftWith, offset);\n } else if (offset < 0) {\n publish(shiftWith, offset);\n }\n }\n );\n subscribe(pipe(firstItemIndex, withLatestFrom(log)), ([index, log2]) => {\n if (index < 0) {\n log2(\n \"`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value\",\n { firstItemIndex },\n LogLevel.ERROR\n );\n }\n });\n const beforeUnshiftWith = streamFromEmitter(unshiftWith);\n connect(\n pipe(\n unshiftWith,\n withLatestFrom(sizes),\n map(([unshiftWith2, sizes2]) => {\n if (sizes2.groupIndices.length > 0) {\n throw new Error(\"Virtuoso: prepending items does not work with groups\");\n }\n return walk(sizes2.sizeTree).reduce(\n (acc, { k: index, v: size }) => {\n return {\n ranges: [...acc.ranges, { startIndex: acc.prevIndex, endIndex: index + unshiftWith2 - 1, size: acc.prevSize }],\n prevIndex: index + unshiftWith2,\n prevSize: size\n };\n },\n {\n ranges: [],\n prevIndex: 0,\n prevSize: sizes2.lastSize\n }\n ).ranges;\n })\n ),\n sizeRanges\n );\n const shiftWithOffset = streamFromEmitter(\n pipe(\n shiftWith,\n withLatestFrom(sizes, gap),\n map(([shiftWith2, { offsetTree }, gap2]) => {\n const newFirstItemIndex = -shiftWith2;\n return offsetOf(newFirstItemIndex, offsetTree, gap2);\n })\n )\n );\n connect(\n pipe(\n shiftWith,\n withLatestFrom(sizes, gap),\n map(([shiftWith2, sizes2, gap2]) => {\n if (sizes2.groupIndices.length > 0) {\n throw new Error(\"Virtuoso: shifting items does not work with groups\");\n }\n const newSizeTree = walk(sizes2.sizeTree).reduce((acc, { k, v }) => {\n return insert(acc, Math.max(0, k + shiftWith2), v);\n }, newTree());\n return {\n ...sizes2,\n sizeTree: newSizeTree,\n ...createOffsetTree(sizes2.offsetTree, 0, newSizeTree, gap2)\n };\n })\n ),\n sizes\n );\n return {\n data,\n totalCount,\n sizeRanges,\n groupIndices,\n defaultItemSize,\n fixedItemSize,\n unshiftWith,\n shiftWith,\n shiftWithOffset,\n beforeUnshiftWith,\n firstItemIndex,\n gap,\n sizes,\n listRefresh,\n statefulTotalCount,\n trackItemSizes,\n itemSize\n };\n },\n tup(loggerSystem, recalcSystem),\n { singleton: true }\n);\nconst SUPPORTS_SCROLL_TO_OPTIONS = typeof document !== \"undefined\" && \"scrollBehavior\" in document.documentElement.style;\nfunction normalizeIndexLocation(location) {\n const result = typeof location === \"number\" ? { index: location } : location;\n if (!result.align) {\n result.align = \"start\";\n }\n if (!result.behavior || !SUPPORTS_SCROLL_TO_OPTIONS) {\n result.behavior = \"auto\";\n }\n if (!result.offset) {\n result.offset = 0;\n }\n return result;\n}\nconst scrollToIndexSystem = system(\n ([\n { sizes, totalCount, listRefresh, gap },\n {\n scrollingInProgress,\n viewportHeight,\n scrollTo,\n smoothScrollTargetReached,\n headerHeight,\n footerHeight,\n fixedHeaderHeight,\n fixedFooterHeight\n },\n { log }\n ]) => {\n const scrollToIndex = stream();\n const topListHeight = statefulStream(0);\n let unsubscribeNextListRefresh = null;\n let cleartTimeoutRef = null;\n let unsubscribeListRefresh = null;\n function cleanup() {\n if (unsubscribeNextListRefresh) {\n unsubscribeNextListRefresh();\n unsubscribeNextListRefresh = null;\n }\n if (unsubscribeListRefresh) {\n unsubscribeListRefresh();\n unsubscribeListRefresh = null;\n }\n if (cleartTimeoutRef) {\n clearTimeout(cleartTimeoutRef);\n cleartTimeoutRef = null;\n }\n publish(scrollingInProgress, false);\n }\n connect(\n pipe(\n scrollToIndex,\n withLatestFrom(sizes, viewportHeight, totalCount, topListHeight, headerHeight, footerHeight, log),\n withLatestFrom(gap, fixedHeaderHeight, fixedFooterHeight),\n map(\n ([\n [location, sizes2, viewportHeight2, totalCount2, topListHeight2, headerHeight2, footerHeight2, log2],\n gap2,\n fixedHeaderHeight2,\n fixedFooterHeight2\n ]) => {\n const normalLocation = normalizeIndexLocation(location);\n const { align, behavior, offset } = normalLocation;\n const lastIndex = totalCount2 - 1;\n const index = originalIndexFromLocation(normalLocation, sizes2, lastIndex);\n let top = offsetOf(index, sizes2.offsetTree, gap2) + headerHeight2;\n if (align === \"end\") {\n top += fixedHeaderHeight2 + findMaxKeyValue(sizes2.sizeTree, index)[1] - viewportHeight2 + fixedFooterHeight2;\n if (index === lastIndex) {\n top += footerHeight2;\n }\n } else if (align === \"center\") {\n top += (fixedHeaderHeight2 + findMaxKeyValue(sizes2.sizeTree, index)[1] - viewportHeight2 + fixedFooterHeight2) / 2;\n } else {\n top -= topListHeight2;\n }\n if (offset) {\n top += offset;\n }\n const retry = (listChanged) => {\n cleanup();\n if (listChanged) {\n log2(\"retrying to scroll to\", { location }, LogLevel.DEBUG);\n publish(scrollToIndex, location);\n } else {\n log2(\"list did not change, scroll successful\", {}, LogLevel.DEBUG);\n }\n };\n cleanup();\n if (behavior === \"smooth\") {\n let listChanged = false;\n unsubscribeListRefresh = subscribe(listRefresh, (changed) => {\n listChanged = listChanged || changed;\n });\n unsubscribeNextListRefresh = handleNext(smoothScrollTargetReached, () => {\n retry(listChanged);\n });\n } else {\n unsubscribeNextListRefresh = handleNext(pipe(listRefresh, watchChangesFor(150)), retry);\n }\n cleartTimeoutRef = setTimeout(() => {\n cleanup();\n }, 1200);\n publish(scrollingInProgress, true);\n log2(\"scrolling from index to\", { index, top, behavior }, LogLevel.DEBUG);\n return { top, behavior };\n }\n )\n ),\n scrollTo\n );\n return {\n scrollToIndex,\n topListHeight\n };\n },\n tup(sizeSystem, domIOSystem, loggerSystem),\n { singleton: true }\n);\nfunction watchChangesFor(limit) {\n return (done) => {\n const timeoutRef = setTimeout(() => {\n done(false);\n }, limit);\n return (value) => {\n if (value) {\n done(true);\n clearTimeout(timeoutRef);\n }\n };\n };\n}\nconst UP = \"up\";\nconst DOWN = \"down\";\nconst NONE$1 = \"none\";\nconst INITIAL_BOTTOM_STATE = {\n atBottom: false,\n notAtBottomBecause: \"NOT_SHOWING_LAST_ITEM\",\n state: {\n offsetBottom: 0,\n scrollTop: 0,\n viewportHeight: 0,\n scrollHeight: 0\n }\n};\nconst DEFAULT_AT_TOP_THRESHOLD = 0;\nconst stateFlagsSystem = system(([{ scrollContainerState, scrollTop, viewportHeight, headerHeight, footerHeight, scrollBy }]) => {\n const isAtBottom = statefulStream(false);\n const isAtTop = statefulStream(true);\n const atBottomStateChange = stream();\n const atTopStateChange = stream();\n const atBottomThreshold = statefulStream(4);\n const atTopThreshold = statefulStream(DEFAULT_AT_TOP_THRESHOLD);\n const isScrolling = statefulStreamFromEmitter(\n pipe(\n merge(pipe(duc(scrollTop), skip(1), mapTo(true)), pipe(duc(scrollTop), skip(1), mapTo(false), debounceTime(100))),\n distinctUntilChanged()\n ),\n false\n );\n const isScrollingBy = statefulStreamFromEmitter(\n pipe(merge(pipe(scrollBy, mapTo(true)), pipe(scrollBy, mapTo(false), debounceTime(200))), distinctUntilChanged()),\n false\n );\n connect(\n pipe(\n combineLatest(duc(scrollTop), duc(atTopThreshold)),\n map(([top, atTopThreshold2]) => top <= atTopThreshold2),\n distinctUntilChanged()\n ),\n isAtTop\n );\n connect(pipe(isAtTop, throttleTime(50)), atTopStateChange);\n const atBottomState = streamFromEmitter(\n pipe(\n combineLatest(scrollContainerState, duc(viewportHeight), duc(headerHeight), duc(footerHeight), duc(atBottomThreshold)),\n scan((current, [{ scrollTop: scrollTop2, scrollHeight }, viewportHeight2, _headerHeight, _footerHeight, atBottomThreshold2]) => {\n const isAtBottom2 = scrollTop2 + viewportHeight2 - scrollHeight > -atBottomThreshold2;\n const state = {\n viewportHeight: viewportHeight2,\n scrollTop: scrollTop2,\n scrollHeight\n };\n if (isAtBottom2) {\n let atBottomBecause;\n let scrollTopDelta;\n if (scrollTop2 > current.state.scrollTop) {\n atBottomBecause = \"SCROLLED_DOWN\";\n scrollTopDelta = current.state.scrollTop - scrollTop2;\n } else {\n atBottomBecause = \"SIZE_DECREASED\";\n scrollTopDelta = current.state.scrollTop - scrollTop2 || current.scrollTopDelta;\n }\n return {\n atBottom: true,\n state,\n atBottomBecause,\n scrollTopDelta\n };\n }\n let notAtBottomBecause;\n if (state.scrollHeight > current.state.scrollHeight) {\n notAtBottomBecause = \"SIZE_INCREASED\";\n } else if (viewportHeight2 < current.state.viewportHeight) {\n notAtBottomBecause = \"VIEWPORT_HEIGHT_DECREASING\";\n } else if (scrollTop2 < current.state.scrollTop) {\n notAtBottomBecause = \"SCROLLING_UPWARDS\";\n } else {\n notAtBottomBecause = \"NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM\";\n }\n return {\n atBottom: false,\n notAtBottomBecause,\n state\n };\n }, INITIAL_BOTTOM_STATE),\n distinctUntilChanged((prev, next) => {\n return prev && prev.atBottom === next.atBottom;\n })\n )\n );\n const lastJumpDueToItemResize = statefulStreamFromEmitter(\n pipe(\n scrollContainerState,\n scan(\n (current, { scrollTop: scrollTop2, scrollHeight, viewportHeight: viewportHeight2 }) => {\n if (!approximatelyEqual(current.scrollHeight, scrollHeight)) {\n const atBottom = scrollHeight - (scrollTop2 + viewportHeight2) < 1;\n if (current.scrollTop !== scrollTop2 && atBottom) {\n return {\n scrollHeight,\n scrollTop: scrollTop2,\n jump: current.scrollTop - scrollTop2,\n changed: true\n };\n } else {\n return {\n scrollHeight,\n scrollTop: scrollTop2,\n jump: 0,\n changed: true\n };\n }\n } else {\n return {\n scrollTop: scrollTop2,\n scrollHeight,\n jump: 0,\n changed: false\n };\n }\n },\n { scrollHeight: 0, jump: 0, scrollTop: 0, changed: false }\n ),\n filter((value) => value.changed),\n map((value) => value.jump)\n ),\n 0\n );\n connect(\n pipe(\n atBottomState,\n map((state) => state.atBottom)\n ),\n isAtBottom\n );\n connect(pipe(isAtBottom, throttleTime(50)), atBottomStateChange);\n const scrollDirection = statefulStream(DOWN);\n connect(\n pipe(\n scrollContainerState,\n map(({ scrollTop: scrollTop2 }) => scrollTop2),\n distinctUntilChanged(),\n scan(\n (acc, scrollTop2) => {\n if (getValue(isScrollingBy)) {\n return { direction: acc.direction, prevScrollTop: scrollTop2 };\n }\n return { direction: scrollTop2 < acc.prevScrollTop ? UP : DOWN, prevScrollTop: scrollTop2 };\n },\n { direction: DOWN, prevScrollTop: 0 }\n ),\n map((value) => value.direction)\n ),\n scrollDirection\n );\n connect(pipe(scrollContainerState, throttleTime(50), mapTo(NONE$1)), scrollDirection);\n const scrollVelocity = statefulStream(0);\n connect(\n pipe(\n isScrolling,\n filter((value) => !value),\n mapTo(0)\n ),\n scrollVelocity\n );\n connect(\n pipe(\n scrollTop,\n throttleTime(100),\n withLatestFrom(isScrolling),\n filter(([_, isScrolling2]) => !!isScrolling2),\n scan(([_, prev], [next]) => [prev, next], [0, 0]),\n map(([prev, next]) => next - prev)\n ),\n scrollVelocity\n );\n return {\n isScrolling,\n isAtTop,\n isAtBottom,\n atBottomState,\n atTopStateChange,\n atBottomStateChange,\n scrollDirection,\n atBottomThreshold,\n atTopThreshold,\n scrollVelocity,\n lastJumpDueToItemResize\n };\n}, tup(domIOSystem));\nconst propsReadySystem = system(\n ([{ log }]) => {\n const propsReady = statefulStream(false);\n const didMount = streamFromEmitter(\n pipe(\n propsReady,\n filter((ready) => ready),\n distinctUntilChanged()\n )\n );\n subscribe(propsReady, (value) => {\n value && getValue(log)(\"props updated\", {}, LogLevel.DEBUG);\n });\n return { propsReady, didMount };\n },\n tup(loggerSystem),\n { singleton: true }\n);\nfunction getInitialTopMostItemIndexNumber(location, totalCount) {\n const lastIndex = totalCount - 1;\n const index = typeof location === \"number\" ? location : location.index === \"LAST\" ? lastIndex : location.index;\n return index;\n}\nconst initialTopMostItemIndexSystem = system(\n ([{ sizes, listRefresh, defaultItemSize }, { scrollTop }, { scrollToIndex }, { didMount }]) => {\n const scrolledToInitialItem = statefulStream(true);\n const initialTopMostItemIndex = statefulStream(0);\n connect(\n pipe(\n didMount,\n withLatestFrom(initialTopMostItemIndex),\n filter(([_, location]) => !!location),\n mapTo(false)\n ),\n scrolledToInitialItem\n );\n subscribe(\n pipe(\n combineLatest(listRefresh, didMount),\n withLatestFrom(scrolledToInitialItem, sizes, defaultItemSize),\n filter(([[, didMount2], scrolledToInitialItem2, { sizeTree }, defaultItemSize2]) => {\n return didMount2 && (!empty(sizeTree) || defaultItemSize2 !== void 0) && !scrolledToInitialItem2;\n }),\n withLatestFrom(initialTopMostItemIndex)\n ),\n ([, initialTopMostItemIndex2]) => {\n setTimeout(() => {\n handleNext(scrollTop, () => {\n publish(scrolledToInitialItem, true);\n });\n publish(scrollToIndex, initialTopMostItemIndex2);\n });\n }\n );\n return {\n scrolledToInitialItem,\n initialTopMostItemIndex\n };\n },\n tup(sizeSystem, domIOSystem, scrollToIndexSystem, propsReadySystem),\n { singleton: true }\n);\nfunction normalizeFollowOutput(follow) {\n if (!follow) {\n return false;\n }\n return follow === \"smooth\" ? \"smooth\" : \"auto\";\n}\nconst behaviorFromFollowOutput = (follow, isAtBottom) => {\n if (typeof follow === \"function\") {\n return normalizeFollowOutput(follow(isAtBottom));\n }\n return isAtBottom && normalizeFollowOutput(follow);\n};\nconst followOutputSystem = system(\n ([\n { totalCount, listRefresh },\n { isAtBottom, atBottomState },\n { scrollToIndex },\n { scrolledToInitialItem },\n { propsReady, didMount },\n { log },\n { scrollingInProgress }\n ]) => {\n const followOutput = statefulStream(false);\n const autoscrollToBottom = stream();\n let pendingScrollHandle = null;\n function scrollToBottom(followOutputBehavior) {\n publish(scrollToIndex, {\n index: \"LAST\",\n align: \"end\",\n behavior: followOutputBehavior\n });\n }\n subscribe(\n pipe(\n combineLatest(pipe(duc(totalCount), skip(1)), didMount),\n withLatestFrom(duc(followOutput), isAtBottom, scrolledToInitialItem, scrollingInProgress),\n map(([[totalCount2, didMount2], followOutput2, isAtBottom2, scrolledToInitialItem2, scrollingInProgress2]) => {\n let shouldFollow = didMount2 && scrolledToInitialItem2;\n let followOutputBehavior = \"auto\";\n if (shouldFollow) {\n followOutputBehavior = behaviorFromFollowOutput(followOutput2, isAtBottom2 || scrollingInProgress2);\n shouldFollow = shouldFollow && !!followOutputBehavior;\n }\n return { totalCount: totalCount2, shouldFollow, followOutputBehavior };\n }),\n filter(({ shouldFollow }) => shouldFollow)\n ),\n ({ totalCount: totalCount2, followOutputBehavior }) => {\n if (pendingScrollHandle) {\n pendingScrollHandle();\n pendingScrollHandle = null;\n }\n pendingScrollHandle = handleNext(listRefresh, () => {\n getValue(log)(\"following output to \", { totalCount: totalCount2 }, LogLevel.DEBUG);\n scrollToBottom(followOutputBehavior);\n pendingScrollHandle = null;\n });\n }\n );\n function trapNextSizeIncrease(followOutput2) {\n const cancel = handleNext(atBottomState, (state) => {\n if (followOutput2 && !state.atBottom && state.notAtBottomBecause === \"SIZE_INCREASED\" && !pendingScrollHandle) {\n getValue(log)(\"scrolling to bottom due to increased size\", {}, LogLevel.DEBUG);\n scrollToBottom(\"auto\");\n }\n });\n setTimeout(cancel, 100);\n }\n subscribe(\n pipe(\n combineLatest(duc(followOutput), totalCount, propsReady),\n filter(([follow, , ready]) => follow && ready),\n scan(\n ({ value }, [, next]) => {\n return { refreshed: value === next, value: next };\n },\n { refreshed: false, value: 0 }\n ),\n filter(({ refreshed }) => refreshed),\n withLatestFrom(followOutput, totalCount)\n ),\n ([, followOutput2]) => {\n trapNextSizeIncrease(followOutput2 !== false);\n }\n );\n subscribe(autoscrollToBottom, () => {\n trapNextSizeIncrease(getValue(followOutput) !== false);\n });\n subscribe(combineLatest(duc(followOutput), atBottomState), ([followOutput2, state]) => {\n if (followOutput2 && !state.atBottom && state.notAtBottomBecause === \"VIEWPORT_HEIGHT_DECREASING\") {\n scrollToBottom(\"auto\");\n }\n });\n return { followOutput, autoscrollToBottom };\n },\n tup(sizeSystem, stateFlagsSystem, scrollToIndexSystem, initialTopMostItemIndexSystem, propsReadySystem, loggerSystem, domIOSystem)\n);\nfunction groupCountsToIndicesAndCount(counts) {\n return counts.reduce(\n (acc, groupCount) => {\n acc.groupIndices.push(acc.totalCount);\n acc.totalCount += groupCount + 1;\n return acc;\n },\n {\n totalCount: 0,\n groupIndices: []\n }\n );\n}\nconst groupedListSystem = system(([{ totalCount, groupIndices, sizes }, { scrollTop, headerHeight }]) => {\n const groupCounts = stream();\n const topItemsIndexes = stream();\n const groupIndicesAndCount = streamFromEmitter(pipe(groupCounts, map(groupCountsToIndicesAndCount)));\n connect(\n pipe(\n groupIndicesAndCount,\n map((value) => value.totalCount)\n ),\n totalCount\n );\n connect(\n pipe(\n groupIndicesAndCount,\n map((value) => value.groupIndices)\n ),\n groupIndices\n );\n connect(\n pipe(\n combineLatest(scrollTop, sizes, headerHeight),\n filter(([_, sizes2]) => hasGroups(sizes2)),\n map(([scrollTop2, state, headerHeight2]) => findMaxKeyValue(state.groupOffsetTree, Math.max(scrollTop2 - headerHeight2, 0), \"v\")[0]),\n distinctUntilChanged(),\n map((index) => [index])\n ),\n topItemsIndexes\n );\n return { groupCounts, topItemsIndexes };\n}, tup(sizeSystem, domIOSystem));\nfunction tupleComparator(prev, current) {\n return !!(prev && prev[0] === current[0] && prev[1] === current[1]);\n}\nfunction rangeComparator(prev, next) {\n return !!(prev && prev.startIndex === next.startIndex && prev.endIndex === next.endIndex);\n}\nconst TOP = \"top\";\nconst BOTTOM = \"bottom\";\nconst NONE = \"none\";\nfunction getOverscan(overscan, end, direction) {\n if (typeof overscan === \"number\") {\n return direction === UP && end === TOP || direction === DOWN && end === BOTTOM ? overscan : 0;\n } else {\n if (direction === UP) {\n return end === TOP ? overscan.main : overscan.reverse;\n } else {\n return end === BOTTOM ? overscan.main : overscan.reverse;\n }\n }\n}\nfunction getViewportIncrease(value, end) {\n return typeof value === \"number\" ? value : value[end] || 0;\n}\nconst sizeRangeSystem = system(\n ([{ scrollTop, viewportHeight, deviation, headerHeight, fixedHeaderHeight }]) => {\n const listBoundary = stream();\n const topListHeight = statefulStream(0);\n const increaseViewportBy = statefulStream(0);\n const overscan = statefulStream(0);\n const visibleRange = statefulStreamFromEmitter(\n pipe(\n combineLatest(\n duc(scrollTop),\n duc(viewportHeight),\n duc(headerHeight),\n duc(listBoundary, tupleComparator),\n duc(overscan),\n duc(topListHeight),\n duc(fixedHeaderHeight),\n duc(deviation),\n duc(increaseViewportBy)\n ),\n map(\n ([\n scrollTop2,\n viewportHeight2,\n headerHeight2,\n [listTop, listBottom],\n overscan2,\n topListHeight2,\n fixedHeaderHeight2,\n deviation2,\n increaseViewportBy2\n ]) => {\n const top = scrollTop2 - deviation2;\n const stickyHeaderHeight = topListHeight2 + fixedHeaderHeight2;\n const headerVisible = Math.max(headerHeight2 - top, 0);\n let direction = NONE;\n const topViewportAddition = getViewportIncrease(increaseViewportBy2, TOP);\n const bottomViewportAddition = getViewportIncrease(increaseViewportBy2, BOTTOM);\n listTop -= deviation2;\n listTop += headerHeight2 + fixedHeaderHeight2;\n listBottom += headerHeight2 + fixedHeaderHeight2;\n listBottom -= deviation2;\n if (listTop > scrollTop2 + stickyHeaderHeight - topViewportAddition) {\n direction = UP;\n }\n if (listBottom < scrollTop2 - headerVisible + viewportHeight2 + bottomViewportAddition) {\n direction = DOWN;\n }\n if (direction !== NONE) {\n return [\n Math.max(top - headerHeight2 - getOverscan(overscan2, TOP, direction) - topViewportAddition, 0),\n top - headerVisible - fixedHeaderHeight2 + viewportHeight2 + getOverscan(overscan2, BOTTOM, direction) + bottomViewportAddition\n ];\n }\n return null;\n }\n ),\n filter((value) => value != null),\n distinctUntilChanged(tupleComparator)\n ),\n [0, 0]\n );\n return {\n listBoundary,\n overscan,\n topListHeight,\n increaseViewportBy,\n visibleRange\n };\n },\n tup(domIOSystem),\n { singleton: true }\n);\nfunction probeItemSet(index, sizes, data) {\n if (hasGroups(sizes)) {\n const itemIndex = originalIndexFromItemIndex(index, sizes);\n const groupIndex = findMaxKeyValue(sizes.groupOffsetTree, itemIndex)[0];\n return [\n { index: groupIndex, size: 0, offset: 0 },\n { index: itemIndex, size: 0, offset: 0, data: data && data[0] }\n ];\n }\n return [{ index, size: 0, offset: 0, data: data && data[0] }];\n}\nconst EMPTY_LIST_STATE = {\n items: [],\n topItems: [],\n offsetTop: 0,\n offsetBottom: 0,\n top: 0,\n bottom: 0,\n topListHeight: 0,\n totalCount: 0,\n firstItemIndex: 0\n};\nfunction transposeItems(items, sizes, firstItemIndex) {\n if (items.length === 0) {\n return [];\n }\n if (!hasGroups(sizes)) {\n return items.map((item) => ({ ...item, index: item.index + firstItemIndex, originalIndex: item.index }));\n }\n const startIndex = items[0].index;\n const endIndex = items[items.length - 1].index;\n const transposedItems = [];\n const groupRanges = rangesWithin(sizes.groupOffsetTree, startIndex, endIndex);\n let currentRange = void 0;\n let currentGroupIndex = 0;\n for (const item of items) {\n if (!currentRange || currentRange.end < item.index) {\n currentRange = groupRanges.shift();\n currentGroupIndex = sizes.groupIndices.indexOf(currentRange.start);\n }\n let transposedItem;\n if (item.index === currentRange.start) {\n transposedItem = {\n type: \"group\",\n index: currentGroupIndex\n };\n } else {\n transposedItem = {\n index: item.index - (currentGroupIndex + 1) + firstItemIndex,\n groupIndex: currentGroupIndex\n };\n }\n transposedItems.push({\n ...transposedItem,\n size: item.size,\n offset: item.offset,\n originalIndex: item.index,\n data: item.data\n });\n }\n return transposedItems;\n}\nfunction buildListState(items, topItems, totalCount, gap, sizes, firstItemIndex) {\n const { lastSize, lastOffset, lastIndex } = sizes;\n let offsetTop = 0;\n let bottom = 0;\n if (items.length > 0) {\n offsetTop = items[0].offset;\n const lastItem = items[items.length - 1];\n bottom = lastItem.offset + lastItem.size;\n }\n const itemCount = totalCount - lastIndex;\n const total = lastOffset + itemCount * lastSize + (itemCount - 1) * gap;\n const top = offsetTop;\n const offsetBottom = total - bottom;\n return {\n items: transposeItems(items, sizes, firstItemIndex),\n topItems: transposeItems(topItems, sizes, firstItemIndex),\n topListHeight: topItems.reduce((height, item) => item.size + height, 0),\n offsetTop,\n offsetBottom,\n top,\n bottom,\n totalCount,\n firstItemIndex\n };\n}\nconst listStateSystem = system(\n ([\n { sizes, totalCount, data, firstItemIndex, gap },\n groupedListSystem2,\n { visibleRange, listBoundary, topListHeight: rangeTopListHeight },\n { scrolledToInitialItem, initialTopMostItemIndex },\n { topListHeight },\n stateFlags,\n { didMount },\n { recalcInProgress }\n ]) => {\n const topItemsIndexes = statefulStream([]);\n const itemsRendered = stream();\n connect(groupedListSystem2.topItemsIndexes, topItemsIndexes);\n const listState = statefulStreamFromEmitter(\n pipe(\n combineLatest(\n didMount,\n recalcInProgress,\n duc(visibleRange, tupleComparator),\n duc(totalCount),\n duc(sizes),\n duc(initialTopMostItemIndex),\n scrolledToInitialItem,\n duc(topItemsIndexes),\n duc(firstItemIndex),\n duc(gap),\n data\n ),\n filter(([mount, recalcInProgress2, , totalCount2, , , , , , , data2]) => {\n const dataChangeInProgress = data2 && data2.length !== totalCount2;\n return mount && !recalcInProgress2 && !dataChangeInProgress;\n }),\n map(\n ([\n ,\n ,\n [startOffset, endOffset],\n totalCount2,\n sizes2,\n initialTopMostItemIndex2,\n scrolledToInitialItem2,\n topItemsIndexes2,\n firstItemIndex2,\n gap2,\n data2\n ]) => {\n const sizesValue = sizes2;\n const { sizeTree, offsetTree } = sizesValue;\n if (totalCount2 === 0 || startOffset === 0 && endOffset === 0) {\n return { ...EMPTY_LIST_STATE, totalCount: totalCount2 };\n }\n if (empty(sizeTree)) {\n return buildListState(\n probeItemSet(getInitialTopMostItemIndexNumber(initialTopMostItemIndex2, totalCount2), sizesValue, data2),\n [],\n totalCount2,\n gap2,\n sizesValue,\n firstItemIndex2\n );\n }\n const topItems = [];\n if (topItemsIndexes2.length > 0) {\n const startIndex = topItemsIndexes2[0];\n const endIndex = topItemsIndexes2[topItemsIndexes2.length - 1];\n let offset = 0;\n for (const range of rangesWithin(sizeTree, startIndex, endIndex)) {\n const size = range.value;\n const rangeStartIndex = Math.max(range.start, startIndex);\n const rangeEndIndex = Math.min(range.end, endIndex);\n for (let i = rangeStartIndex; i <= rangeEndIndex; i++) {\n topItems.push({ index: i, size, offset, data: data2 && data2[i] });\n offset += size;\n }\n }\n }\n if (!scrolledToInitialItem2) {\n return buildListState([], topItems, totalCount2, gap2, sizesValue, firstItemIndex2);\n }\n const minStartIndex = topItemsIndexes2.length > 0 ? topItemsIndexes2[topItemsIndexes2.length - 1] + 1 : 0;\n const offsetPointRanges = rangesWithinOffsets(offsetTree, startOffset, endOffset, minStartIndex);\n if (offsetPointRanges.length === 0) {\n return null;\n }\n const maxIndex = totalCount2 - 1;\n const items = tap([], (result) => {\n for (const range of offsetPointRanges) {\n const point = range.value;\n let offset = point.offset;\n let rangeStartIndex = range.start;\n const size = point.size;\n if (point.offset < startOffset) {\n rangeStartIndex += Math.floor((startOffset - point.offset + gap2) / (size + gap2));\n const itemCount = rangeStartIndex - range.start;\n offset += itemCount * size + itemCount * gap2;\n }\n if (rangeStartIndex < minStartIndex) {\n offset += (minStartIndex - rangeStartIndex) * size;\n rangeStartIndex = minStartIndex;\n }\n const endIndex = Math.min(range.end, maxIndex);\n for (let i = rangeStartIndex; i <= endIndex; i++) {\n if (offset >= endOffset) {\n break;\n }\n result.push({ index: i, size, offset, data: data2 && data2[i] });\n offset += size + gap2;\n }\n }\n });\n return buildListState(items, topItems, totalCount2, gap2, sizesValue, firstItemIndex2);\n }\n ),\n filter((value) => value !== null),\n distinctUntilChanged()\n ),\n EMPTY_LIST_STATE\n );\n connect(\n pipe(\n data,\n filter((data2) => data2 !== void 0),\n map((data2) => data2 == null ? void 0 : data2.length)\n ),\n totalCount\n );\n connect(\n pipe(\n listState,\n map((value) => value.topListHeight)\n ),\n topListHeight\n );\n connect(topListHeight, rangeTopListHeight);\n connect(\n pipe(\n listState,\n map((state) => [state.top, state.bottom])\n ),\n listBoundary\n );\n connect(\n pipe(\n listState,\n map((state) => state.items)\n ),\n itemsRendered\n );\n const endReached = streamFromEmitter(\n pipe(\n listState,\n filter(({ items }) => items.length > 0),\n withLatestFrom(totalCount, data),\n filter(([{ items }, totalCount2]) => items[items.length - 1].originalIndex === totalCount2 - 1),\n map(([, totalCount2, data2]) => [totalCount2 - 1, data2]),\n distinctUntilChanged(tupleComparator),\n map(([count]) => count)\n )\n );\n const startReached = streamFromEmitter(\n pipe(\n listState,\n throttleTime(200),\n filter(({ items, topItems }) => {\n return items.length > 0 && items[0].originalIndex === topItems.length;\n }),\n map(({ items }) => items[0].index),\n distinctUntilChanged()\n )\n );\n const rangeChanged = streamFromEmitter(\n pipe(\n listState,\n filter(({ items }) => items.length > 0),\n map(({ items }) => {\n let startIndex = 0;\n let endIndex = items.length - 1;\n while (items[startIndex].type === \"group\" && startIndex < endIndex) {\n startIndex++;\n }\n while (items[endIndex].type === \"group\" && endIndex > startIndex) {\n endIndex--;\n }\n return {\n startIndex: items[startIndex].index,\n endIndex: items[endIndex].index\n };\n }),\n distinctUntilChanged(rangeComparator)\n )\n );\n return { listState, topItemsIndexes, endReached, startReached, rangeChanged, itemsRendered, ...stateFlags };\n },\n tup(\n sizeSystem,\n groupedListSystem,\n sizeRangeSystem,\n initialTopMostItemIndexSystem,\n scrollToIndexSystem,\n stateFlagsSystem,\n propsReadySystem,\n recalcSystem\n ),\n { singleton: true }\n);\nconst initialItemCountSystem = system(\n ([{ sizes, firstItemIndex, data, gap }, { listState }, { didMount }]) => {\n const initialItemCount = statefulStream(0);\n connect(\n pipe(\n didMount,\n withLatestFrom(initialItemCount),\n filter(([, count]) => count !== 0),\n withLatestFrom(sizes, firstItemIndex, gap, data),\n map(([[, count], sizes2, firstItemIndex2, gap2, data2 = []]) => {\n let includedGroupsCount = 0;\n if (sizes2.groupIndices.length > 0) {\n for (const index of sizes2.groupIndices) {\n if (index - includedGroupsCount >= count) {\n break;\n }\n includedGroupsCount++;\n }\n }\n const adjustedCount = count + includedGroupsCount;\n const items = Array.from({ length: adjustedCount }).map((_, index) => ({ index, size: 0, offset: 0, data: data2[index] }));\n return buildListState(items, [], adjustedCount, gap2, sizes2, firstItemIndex2);\n })\n ),\n listState\n );\n return { initialItemCount };\n },\n tup(sizeSystem, listStateSystem, propsReadySystem),\n { singleton: true }\n);\nconst scrollSeekSystem = system(\n ([{ scrollVelocity }]) => {\n const isSeeking = statefulStream(false);\n const rangeChanged = stream();\n const scrollSeekConfiguration = statefulStream(false);\n connect(\n pipe(\n scrollVelocity,\n withLatestFrom(scrollSeekConfiguration, isSeeking, rangeChanged),\n filter(([_, config]) => !!config),\n map(([speed, config, isSeeking2, range]) => {\n const { exit, enter } = config;\n if (isSeeking2) {\n if (exit(speed, range)) {\n return false;\n }\n } else {\n if (enter(speed, range)) {\n return true;\n }\n }\n return isSeeking2;\n }),\n distinctUntilChanged()\n ),\n isSeeking\n );\n subscribe(\n pipe(combineLatest(isSeeking, scrollVelocity, rangeChanged), withLatestFrom(scrollSeekConfiguration)),\n ([[isSeeking2, velocity, range], config]) => isSeeking2 && config && config.change && config.change(velocity, range)\n );\n return { isSeeking, scrollSeekConfiguration, scrollVelocity, scrollSeekRangeChanged: rangeChanged };\n },\n tup(stateFlagsSystem),\n { singleton: true }\n);\nconst topItemCountSystem = system(([{ topItemsIndexes }]) => {\n const topItemCount = statefulStream(0);\n connect(\n pipe(\n topItemCount,\n filter((length) => length > 0),\n map((length) => Array.from({ length }).map((_, index) => index))\n ),\n topItemsIndexes\n );\n return { topItemCount };\n}, tup(listStateSystem));\nconst totalListHeightSystem = system(\n ([{ footerHeight, headerHeight, fixedHeaderHeight, fixedFooterHeight }, { listState }]) => {\n const totalListHeightChanged = stream();\n const totalListHeight = statefulStreamFromEmitter(\n pipe(\n combineLatest(footerHeight, fixedFooterHeight, headerHeight, fixedHeaderHeight, listState),\n map(([footerHeight2, fixedFooterHeight2, headerHeight2, fixedHeaderHeight2, listState2]) => {\n return footerHeight2 + fixedFooterHeight2 + headerHeight2 + fixedHeaderHeight2 + listState2.offsetBottom + listState2.bottom;\n })\n ),\n 0\n );\n connect(duc(totalListHeight), totalListHeightChanged);\n return { totalListHeight, totalListHeightChanged };\n },\n tup(domIOSystem, listStateSystem),\n { singleton: true }\n);\nfunction simpleMemoize(func) {\n let called = false;\n let result;\n return () => {\n if (!called) {\n called = true;\n result = func();\n }\n return result;\n };\n}\nconst isMobileSafari = simpleMemoize(() => {\n return /iP(ad|od|hone)/i.test(navigator.userAgent) && /WebKit/i.test(navigator.userAgent);\n});\nconst upwardScrollFixSystem = system(\n ([\n { scrollBy, scrollTop, deviation, scrollingInProgress },\n { isScrolling, isAtBottom, scrollDirection, lastJumpDueToItemResize },\n { listState },\n { beforeUnshiftWith, shiftWithOffset, sizes, gap },\n { log },\n { recalcInProgress }\n ]) => {\n const deviationOffset = streamFromEmitter(\n pipe(\n listState,\n withLatestFrom(lastJumpDueToItemResize),\n scan(\n ([, prevItems, prevTotalCount, prevTotalHeight], [{ items, totalCount, bottom, offsetBottom }, lastJumpDueToItemResize2]) => {\n const totalHeight = bottom + offsetBottom;\n let newDev = 0;\n if (prevTotalCount === totalCount) {\n if (prevItems.length > 0 && items.length > 0) {\n const atStart = items[0].originalIndex === 0 && prevItems[0].originalIndex === 0;\n if (!atStart) {\n newDev = totalHeight - prevTotalHeight;\n if (newDev !== 0) {\n newDev += lastJumpDueToItemResize2;\n }\n }\n }\n }\n return [newDev, items, totalCount, totalHeight];\n },\n [0, [], 0, 0]\n ),\n filter(([amount]) => amount !== 0),\n withLatestFrom(scrollTop, scrollDirection, scrollingInProgress, isAtBottom, log),\n filter(([, scrollTop2, scrollDirection2, scrollingInProgress2]) => {\n return !scrollingInProgress2 && scrollTop2 !== 0 && scrollDirection2 === UP;\n }),\n map(([[amount], , , , , log2]) => {\n log2(\"Upward scrolling compensation\", { amount }, LogLevel.DEBUG);\n return amount;\n })\n )\n );\n function scrollByWith(offset) {\n if (offset > 0) {\n publish(scrollBy, { top: -offset, behavior: \"auto\" });\n publish(deviation, 0);\n } else {\n publish(deviation, 0);\n publish(scrollBy, { top: -offset, behavior: \"auto\" });\n }\n }\n subscribe(pipe(deviationOffset, withLatestFrom(deviation, isScrolling)), ([offset, deviationAmount, isScrolling2]) => {\n if (isScrolling2 && isMobileSafari()) {\n publish(deviation, deviationAmount - offset);\n } else {\n scrollByWith(-offset);\n }\n });\n subscribe(\n pipe(\n combineLatest(statefulStreamFromEmitter(isScrolling, false), deviation, recalcInProgress),\n filter(([is, deviation2, recalc]) => !is && !recalc && deviation2 !== 0),\n map(([_, deviation2]) => deviation2),\n throttleTime(1)\n ),\n scrollByWith\n );\n connect(\n pipe(\n shiftWithOffset,\n map((offset) => {\n return { top: -offset };\n })\n ),\n scrollBy\n );\n subscribe(\n pipe(\n beforeUnshiftWith,\n withLatestFrom(sizes, gap),\n map(([offset, { lastSize }, gap2]) => offset * lastSize + offset * gap2)\n ),\n (offset) => {\n publish(deviation, offset);\n requestAnimationFrame(() => {\n publish(scrollBy, { top: offset });\n requestAnimationFrame(() => {\n publish(deviation, 0);\n publish(recalcInProgress, false);\n });\n });\n }\n );\n return { deviation };\n },\n tup(domIOSystem, stateFlagsSystem, listStateSystem, sizeSystem, loggerSystem, recalcSystem)\n);\nconst initialScrollTopSystem = system(\n ([{ totalListHeight }, { didMount }, { scrollTo }]) => {\n const initialScrollTop = statefulStream(0);\n subscribe(\n pipe(\n didMount,\n withLatestFrom(initialScrollTop),\n filter(([, offset]) => offset !== 0),\n map(([, offset]) => ({ top: offset }))\n ),\n (location) => {\n handleNext(\n pipe(\n totalListHeight,\n filter((val) => val !== 0)\n ),\n () => {\n setTimeout(() => {\n publish(scrollTo, location);\n });\n }\n );\n }\n );\n return {\n initialScrollTop\n };\n },\n tup(totalListHeightSystem, propsReadySystem, domIOSystem),\n { singleton: true }\n);\nconst alignToBottomSystem = system(\n ([{ viewportHeight }, { totalListHeight }]) => {\n const alignToBottom = statefulStream(false);\n const paddingTopAddition = statefulStreamFromEmitter(\n pipe(\n combineLatest(alignToBottom, viewportHeight, totalListHeight),\n filter(([enabled]) => enabled),\n map(([, viewportHeight2, totalListHeight2]) => {\n return Math.max(0, viewportHeight2 - totalListHeight2);\n }),\n distinctUntilChanged()\n ),\n 0\n );\n return { alignToBottom, paddingTopAddition };\n },\n tup(domIOSystem, totalListHeightSystem),\n { singleton: true }\n);\nconst windowScrollerSystem = system(([{ scrollTo, scrollContainerState }]) => {\n const windowScrollContainerState = stream();\n const windowViewportRect = stream();\n const windowScrollTo = stream();\n const useWindowScroll = statefulStream(false);\n const customScrollParent = statefulStream(void 0);\n connect(\n pipe(\n combineLatest(windowScrollContainerState, windowViewportRect),\n map(([{ viewportHeight, scrollTop: windowScrollTop, scrollHeight }, { offsetTop }]) => {\n return {\n scrollTop: Math.max(0, windowScrollTop - offsetTop),\n scrollHeight,\n viewportHeight\n };\n })\n ),\n scrollContainerState\n );\n connect(\n pipe(\n scrollTo,\n withLatestFrom(windowViewportRect),\n map(([scrollTo2, { offsetTop }]) => {\n return {\n ...scrollTo2,\n top: scrollTo2.top + offsetTop\n };\n })\n ),\n windowScrollTo\n );\n return {\n useWindowScroll,\n customScrollParent,\n windowScrollContainerState,\n windowViewportRect,\n windowScrollTo\n };\n}, tup(domIOSystem));\nconst defaultCalculateViewLocation = ({\n itemTop: itemTop2,\n itemBottom,\n viewportTop,\n viewportBottom,\n locationParams: { behavior, align, ...rest }\n}) => {\n if (itemTop2 < viewportTop) {\n return { ...rest, behavior, align: align ?? \"start\" };\n }\n if (itemBottom > viewportBottom) {\n return { ...rest, behavior, align: align ?? \"end\" };\n }\n return null;\n};\nconst scrollIntoViewSystem = system(\n ([\n { sizes, totalCount, gap },\n { scrollTop, viewportHeight, headerHeight, fixedHeaderHeight, fixedFooterHeight, scrollingInProgress },\n { scrollToIndex }\n ]) => {\n const scrollIntoView = stream();\n connect(\n pipe(\n scrollIntoView,\n withLatestFrom(sizes, viewportHeight, totalCount, headerHeight, fixedHeaderHeight, fixedFooterHeight, scrollTop),\n withLatestFrom(gap),\n map(([[viewLocation, sizes2, viewportHeight2, totalCount2, headerHeight2, fixedHeaderHeight2, fixedFooterHeight2, scrollTop2], gap2]) => {\n const { done, behavior, align, calculateViewLocation = defaultCalculateViewLocation, ...rest } = viewLocation;\n const actualIndex = originalIndexFromLocation(viewLocation, sizes2, totalCount2 - 1);\n const itemTop2 = offsetOf(actualIndex, sizes2.offsetTree, gap2) + headerHeight2 + fixedHeaderHeight2;\n const itemBottom = itemTop2 + findMaxKeyValue(sizes2.sizeTree, actualIndex)[1];\n const viewportTop = scrollTop2 + fixedHeaderHeight2;\n const viewportBottom = scrollTop2 + viewportHeight2 - fixedFooterHeight2;\n const location = calculateViewLocation({\n itemTop: itemTop2,\n itemBottom,\n viewportTop,\n viewportBottom,\n locationParams: { behavior, align, ...rest }\n });\n if (location) {\n done && handleNext(\n pipe(\n scrollingInProgress,\n filter((value) => value === false),\n skip(getValue(scrollingInProgress) ? 1 : 2)\n ),\n done\n );\n } else {\n done && done();\n }\n return location;\n }),\n filter((value) => value !== null)\n ),\n scrollToIndex\n );\n return {\n scrollIntoView\n };\n },\n tup(sizeSystem, domIOSystem, scrollToIndexSystem, listStateSystem, loggerSystem),\n { singleton: true }\n);\nconst featureGroup1System = system(\n ([\n sizeRange,\n initialItemCount,\n propsReady,\n scrollSeek,\n totalListHeight,\n initialScrollTopSystem2,\n alignToBottom,\n windowScroller,\n scrollIntoView\n ]) => {\n return {\n ...sizeRange,\n ...initialItemCount,\n ...propsReady,\n ...scrollSeek,\n ...totalListHeight,\n ...initialScrollTopSystem2,\n ...alignToBottom,\n ...windowScroller,\n ...scrollIntoView\n };\n },\n tup(\n sizeRangeSystem,\n initialItemCountSystem,\n propsReadySystem,\n scrollSeekSystem,\n totalListHeightSystem,\n initialScrollTopSystem,\n alignToBottomSystem,\n windowScrollerSystem,\n scrollIntoViewSystem\n )\n);\nconst listSystem = system(\n ([\n {\n totalCount,\n sizeRanges,\n fixedItemSize,\n defaultItemSize,\n trackItemSizes,\n itemSize,\n data,\n firstItemIndex,\n groupIndices,\n statefulTotalCount,\n gap\n },\n { initialTopMostItemIndex, scrolledToInitialItem },\n domIO,\n followOutput,\n { listState, topItemsIndexes, ...flags },\n { scrollToIndex },\n _,\n { topItemCount },\n { groupCounts },\n featureGroup1,\n log\n ]) => {\n connect(flags.rangeChanged, featureGroup1.scrollSeekRangeChanged);\n connect(\n pipe(\n featureGroup1.windowViewportRect,\n map((value) => value.visibleHeight)\n ),\n domIO.viewportHeight\n );\n return {\n totalCount,\n data,\n firstItemIndex,\n sizeRanges,\n initialTopMostItemIndex,\n scrolledToInitialItem,\n topItemsIndexes,\n topItemCount,\n groupCounts,\n fixedItemHeight: fixedItemSize,\n defaultItemHeight: defaultItemSize,\n gap,\n ...followOutput,\n statefulTotalCount,\n listState,\n scrollToIndex,\n trackItemSizes,\n itemSize,\n groupIndices,\n ...flags,\n ...featureGroup1,\n ...domIO,\n ...log\n };\n },\n tup(\n sizeSystem,\n initialTopMostItemIndexSystem,\n domIOSystem,\n followOutputSystem,\n listStateSystem,\n scrollToIndexSystem,\n upwardScrollFixSystem,\n topItemCountSystem,\n groupedListSystem,\n featureGroup1System,\n loggerSystem\n )\n);\nconst WEBKIT_STICKY = \"-webkit-sticky\";\nconst STICKY = \"sticky\";\nconst positionStickyCssValue = simpleMemoize(() => {\n if (typeof document === \"undefined\") {\n return STICKY;\n }\n const node = document.createElement(\"div\");\n node.style.position = WEBKIT_STICKY;\n return node.style.position === WEBKIT_STICKY ? WEBKIT_STICKY : STICKY;\n});\nfunction useWindowViewportRectRef(callback, customScrollParent) {\n const viewportInfo = React.useRef(null);\n const calculateInfo = React.useCallback(\n (element) => {\n if (element === null || !element.offsetParent) {\n return;\n }\n const rect = element.getBoundingClientRect();\n const visibleWidth = rect.width;\n let visibleHeight, offsetTop;\n if (customScrollParent) {\n const customScrollParentRect = customScrollParent.getBoundingClientRect();\n const deltaTop = rect.top - customScrollParentRect.top;\n visibleHeight = customScrollParentRect.height - Math.max(0, deltaTop);\n offsetTop = deltaTop + customScrollParent.scrollTop;\n } else {\n visibleHeight = window.innerHeight - Math.max(0, rect.top);\n offsetTop = rect.top + window.pageYOffset;\n }\n viewportInfo.current = {\n offsetTop,\n visibleHeight,\n visibleWidth\n };\n callback(viewportInfo.current);\n },\n [callback, customScrollParent]\n );\n const { callbackRef, ref } = useSizeWithElRef(calculateInfo);\n const scrollAndResizeEventHandler = React.useCallback(() => {\n calculateInfo(ref.current);\n }, [calculateInfo, ref]);\n React.useEffect(() => {\n if (customScrollParent) {\n customScrollParent.addEventListener(\"scroll\", scrollAndResizeEventHandler);\n const observer = new ResizeObserver(scrollAndResizeEventHandler);\n observer.observe(customScrollParent);\n return () => {\n customScrollParent.removeEventListener(\"scroll\", scrollAndResizeEventHandler);\n observer.unobserve(customScrollParent);\n };\n } else {\n window.addEventListener(\"scroll\", scrollAndResizeEventHandler);\n window.addEventListener(\"resize\", scrollAndResizeEventHandler);\n return () => {\n window.removeEventListener(\"scroll\", scrollAndResizeEventHandler);\n window.removeEventListener(\"resize\", scrollAndResizeEventHandler);\n };\n }\n }, [scrollAndResizeEventHandler, customScrollParent]);\n return callbackRef;\n}\nconst VirtuosoMockContext = React.createContext(void 0);\nconst VirtuosoGridMockContext = React.createContext(void 0);\nfunction identity(value) {\n return value;\n}\nconst listComponentPropsSystem = /* @__PURE__ */ system(() => {\n const itemContent = statefulStream((index) => `Item ${index}`);\n const context = statefulStream(null);\n const groupContent = statefulStream((index) => `Group ${index}`);\n const components = statefulStream({});\n const computeItemKey = statefulStream(identity);\n const headerFooterTag = statefulStream(\"div\");\n const scrollerRef = statefulStream(noop);\n const distinctProp = (propName, defaultValue = null) => {\n return statefulStreamFromEmitter(\n pipe(\n components,\n map((components2) => components2[propName]),\n distinctUntilChanged()\n ),\n defaultValue\n );\n };\n return {\n context,\n itemContent,\n groupContent,\n components,\n computeItemKey,\n headerFooterTag,\n scrollerRef,\n FooterComponent: distinctProp(\"Footer\"),\n HeaderComponent: distinctProp(\"Header\"),\n TopItemListComponent: distinctProp(\"TopItemList\"),\n ListComponent: distinctProp(\"List\", \"div\"),\n ItemComponent: distinctProp(\"Item\", \"div\"),\n GroupComponent: distinctProp(\"Group\", \"div\"),\n ScrollerComponent: distinctProp(\"Scroller\", \"div\"),\n EmptyPlaceholder: distinctProp(\"EmptyPlaceholder\"),\n ScrollSeekPlaceholder: distinctProp(\"ScrollSeekPlaceholder\")\n };\n});\nconst combinedSystem$2 = /* @__PURE__ */ system(([listSystem2, propsSystem]) => {\n return { ...listSystem2, ...propsSystem };\n}, tup(listSystem, listComponentPropsSystem));\nconst DefaultScrollSeekPlaceholder$1 = ({ height }) => /* @__PURE__ */ React.createElement(\"div\", { style: { height } });\nconst GROUP_STYLE = { position: positionStickyCssValue(), zIndex: 1, overflowAnchor: \"none\" };\nconst ITEM_STYLE = { overflowAnchor: \"none\" };\nconst Items$1 = /* @__PURE__ */ React.memo(function VirtuosoItems({ showTopList = false }) {\n const listState = useEmitterValue$2(\"listState\");\n const sizeRanges = usePublisher$2(\"sizeRanges\");\n const useWindowScroll = useEmitterValue$2(\"useWindowScroll\");\n const customScrollParent = useEmitterValue$2(\"customScrollParent\");\n const windowScrollContainerStateCallback = usePublisher$2(\"windowScrollContainerState\");\n const _scrollContainerStateCallback = usePublisher$2(\"scrollContainerState\");\n const scrollContainerStateCallback = customScrollParent || useWindowScroll ? windowScrollContainerStateCallback : _scrollContainerStateCallback;\n const itemContent = useEmitterValue$2(\"itemContent\");\n const context = useEmitterValue$2(\"context\");\n const groupContent = useEmitterValue$2(\"groupContent\");\n const trackItemSizes = useEmitterValue$2(\"trackItemSizes\");\n const itemSize = useEmitterValue$2(\"itemSize\");\n const log = useEmitterValue$2(\"log\");\n const listGap = usePublisher$2(\"gap\");\n const { callbackRef } = useChangedListContentsSizes(\n sizeRanges,\n itemSize,\n trackItemSizes,\n showTopList ? noop : scrollContainerStateCallback,\n log,\n listGap,\n customScrollParent\n );\n const [deviation, setDeviation] = React.useState(0);\n useEmitter$2(\"deviation\", (value) => {\n if (deviation !== value) {\n setDeviation(value);\n }\n });\n const EmptyPlaceholder = useEmitterValue$2(\"EmptyPlaceholder\");\n const ScrollSeekPlaceholder = useEmitterValue$2(\"ScrollSeekPlaceholder\") || DefaultScrollSeekPlaceholder$1;\n const ListComponent = useEmitterValue$2(\"ListComponent\");\n const ItemComponent = useEmitterValue$2(\"ItemComponent\");\n const GroupComponent = useEmitterValue$2(\"GroupComponent\");\n const computeItemKey = useEmitterValue$2(\"computeItemKey\");\n const isSeeking = useEmitterValue$2(\"isSeeking\");\n const hasGroups2 = useEmitterValue$2(\"groupIndices\").length > 0;\n const paddingTopAddition = useEmitterValue$2(\"paddingTopAddition\");\n const containerStyle = showTopList ? {} : {\n boxSizing: \"border-box\",\n paddingTop: listState.offsetTop + paddingTopAddition,\n paddingBottom: listState.offsetBottom,\n marginTop: deviation\n };\n if (!showTopList && listState.totalCount === 0 && EmptyPlaceholder) {\n return React.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context));\n }\n return React.createElement(\n ListComponent,\n {\n ...contextPropIfNotDomElement(ListComponent, context),\n ref: callbackRef,\n style: containerStyle,\n \"data-test-id\": showTopList ? \"virtuoso-top-item-list\" : \"virtuoso-item-list\"\n },\n (showTopList ? listState.topItems : listState.items).map((item) => {\n const index = item.originalIndex;\n const key = computeItemKey(index + listState.firstItemIndex, item.data, context);\n if (isSeeking) {\n return React.createElement(ScrollSeekPlaceholder, {\n ...contextPropIfNotDomElement(ScrollSeekPlaceholder, context),\n key,\n index: item.index,\n height: item.size,\n type: item.type || \"item\",\n ...item.type === \"group\" ? {} : { groupIndex: item.groupIndex }\n });\n }\n if (item.type === \"group\") {\n return React.createElement(\n GroupComponent,\n {\n ...contextPropIfNotDomElement(GroupComponent, context),\n key,\n \"data-index\": index,\n \"data-known-size\": item.size,\n \"data-item-index\": item.index,\n style: GROUP_STYLE\n },\n groupContent(item.index)\n );\n } else {\n return React.createElement(\n ItemComponent,\n {\n ...contextPropIfNotDomElement(ItemComponent, context),\n key,\n \"data-index\": index,\n \"data-known-size\": item.size,\n \"data-item-index\": item.index,\n \"data-item-group-index\": item.groupIndex,\n item: item.data,\n style: ITEM_STYLE\n },\n hasGroups2 ? itemContent(item.index, item.groupIndex, item.data, context) : itemContent(item.index, item.data, context)\n );\n }\n })\n );\n});\nconst scrollerStyle = {\n height: \"100%\",\n outline: \"none\",\n overflowY: \"auto\",\n position: \"relative\",\n WebkitOverflowScrolling: \"touch\"\n};\nconst viewportStyle = {\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n top: 0\n};\nconst topItemListStyle = {\n width: \"100%\",\n position: positionStickyCssValue(),\n top: 0,\n zIndex: 1\n};\nfunction contextPropIfNotDomElement(element, context) {\n if (typeof element === \"string\") {\n return void 0;\n }\n return { context };\n}\nconst Header$1 = /* @__PURE__ */ React.memo(function VirtuosoHeader() {\n const Header2 = useEmitterValue$2(\"HeaderComponent\");\n const headerHeight = usePublisher$2(\"headerHeight\");\n const headerFooterTag = useEmitterValue$2(\"headerFooterTag\");\n const ref = useSize((el) => headerHeight(correctItemSize(el, \"height\")));\n const context = useEmitterValue$2(\"context\");\n return Header2 ? React.createElement(headerFooterTag, { ref }, React.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null;\n});\nconst Footer$1 = /* @__PURE__ */ React.memo(function VirtuosoFooter() {\n const Footer2 = useEmitterValue$2(\"FooterComponent\");\n const footerHeight = usePublisher$2(\"footerHeight\");\n const headerFooterTag = useEmitterValue$2(\"headerFooterTag\");\n const ref = useSize((el) => footerHeight(correctItemSize(el, \"height\")));\n const context = useEmitterValue$2(\"context\");\n return Footer2 ? React.createElement(headerFooterTag, { ref }, React.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null;\n});\nfunction buildScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, useEmitterValue: useEmitterValue2 }) {\n const Scroller2 = React.memo(function VirtuosoScroller({ style, children, ...props }) {\n const scrollContainerStateCallback = usePublisher2(\"scrollContainerState\");\n const ScrollerComponent = useEmitterValue2(\"ScrollerComponent\");\n const smoothScrollTargetReached = usePublisher2(\"smoothScrollTargetReached\");\n const scrollerRefCallback = useEmitterValue2(\"scrollerRef\");\n const context = useEmitterValue2(\"context\");\n const { scrollerRef, scrollByCallback, scrollToCallback } = useScrollTop(\n scrollContainerStateCallback,\n smoothScrollTargetReached,\n ScrollerComponent,\n scrollerRefCallback\n );\n useEmitter2(\"scrollTo\", scrollToCallback);\n useEmitter2(\"scrollBy\", scrollByCallback);\n return React.createElement(\n ScrollerComponent,\n {\n ref: scrollerRef,\n style: { ...scrollerStyle, ...style },\n \"data-test-id\": \"virtuoso-scroller\",\n \"data-virtuoso-scroller\": true,\n tabIndex: 0,\n ...props,\n ...contextPropIfNotDomElement(ScrollerComponent, context)\n },\n children\n );\n });\n return Scroller2;\n}\nfunction buildWindowScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, useEmitterValue: useEmitterValue2 }) {\n const Scroller2 = React.memo(function VirtuosoWindowScroller({ style, children, ...props }) {\n const scrollContainerStateCallback = usePublisher2(\"windowScrollContainerState\");\n const ScrollerComponent = useEmitterValue2(\"ScrollerComponent\");\n const smoothScrollTargetReached = usePublisher2(\"smoothScrollTargetReached\");\n const totalListHeight = useEmitterValue2(\"totalListHeight\");\n const deviation = useEmitterValue2(\"deviation\");\n const customScrollParent = useEmitterValue2(\"customScrollParent\");\n const context = useEmitterValue2(\"context\");\n const { scrollerRef, scrollByCallback, scrollToCallback } = useScrollTop(\n scrollContainerStateCallback,\n smoothScrollTargetReached,\n ScrollerComponent,\n noop,\n customScrollParent\n );\n useIsomorphicLayoutEffect$1(() => {\n scrollerRef.current = customScrollParent ? customScrollParent : window;\n return () => {\n scrollerRef.current = null;\n };\n }, [scrollerRef, customScrollParent]);\n useEmitter2(\"windowScrollTo\", scrollToCallback);\n useEmitter2(\"scrollBy\", scrollByCallback);\n return React.createElement(\n ScrollerComponent,\n {\n style: { position: \"relative\", ...style, ...totalListHeight !== 0 ? { height: totalListHeight + deviation } : {} },\n \"data-virtuoso-scroller\": true,\n ...props,\n ...contextPropIfNotDomElement(ScrollerComponent, context)\n },\n children\n );\n });\n return Scroller2;\n}\nconst Viewport$2 = ({ children }) => {\n const ctx = React.useContext(VirtuosoMockContext);\n const viewportHeight = usePublisher$2(\"viewportHeight\");\n const fixedItemHeight = usePublisher$2(\"fixedItemHeight\");\n const viewportRef = useSize(compose(viewportHeight, (el) => correctItemSize(el, \"height\")));\n React.useEffect(() => {\n if (ctx) {\n viewportHeight(ctx.viewportHeight);\n fixedItemHeight(ctx.itemHeight);\n }\n }, [ctx, viewportHeight, fixedItemHeight]);\n return /* @__PURE__ */ React.createElement(\"div\", { style: viewportStyle, ref: viewportRef, \"data-viewport-type\": \"element\" }, children);\n};\nconst WindowViewport$2 = ({ children }) => {\n const ctx = React.useContext(VirtuosoMockContext);\n const windowViewportRect = usePublisher$2(\"windowViewportRect\");\n const fixedItemHeight = usePublisher$2(\"fixedItemHeight\");\n const customScrollParent = useEmitterValue$2(\"customScrollParent\");\n const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent);\n React.useEffect(() => {\n if (ctx) {\n fixedItemHeight(ctx.itemHeight);\n windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: 100 });\n }\n }, [ctx, windowViewportRect, fixedItemHeight]);\n return /* @__PURE__ */ React.createElement(\"div\", { ref: viewportRef, style: viewportStyle, \"data-viewport-type\": \"window\" }, children);\n};\nconst TopItemListContainer = ({ children }) => {\n const TopItemList = useEmitterValue$2(\"TopItemListComponent\");\n const headerHeight = useEmitterValue$2(\"headerHeight\");\n const style = { ...topItemListStyle, marginTop: `${headerHeight}px` };\n const context = useEmitterValue$2(\"context\");\n return React.createElement(TopItemList || \"div\", { style, context }, children);\n};\nconst ListRoot = /* @__PURE__ */ React.memo(function VirtuosoRoot(props) {\n const useWindowScroll = useEmitterValue$2(\"useWindowScroll\");\n const showTopList = useEmitterValue$2(\"topItemsIndexes\").length > 0;\n const customScrollParent = useEmitterValue$2(\"customScrollParent\");\n const TheScroller = customScrollParent || useWindowScroll ? WindowScroller$2 : Scroller$2;\n const TheViewport = customScrollParent || useWindowScroll ? WindowViewport$2 : Viewport$2;\n return /* @__PURE__ */ React.createElement(TheScroller, { ...props }, showTopList && /* @__PURE__ */ React.createElement(TopItemListContainer, null, /* @__PURE__ */ React.createElement(Items$1, { showTopList: true })), /* @__PURE__ */ React.createElement(TheViewport, null, /* @__PURE__ */ React.createElement(Header$1, null), /* @__PURE__ */ React.createElement(Items$1, null), /* @__PURE__ */ React.createElement(Footer$1, null)));\n});\nconst {\n Component: List,\n usePublisher: usePublisher$2,\n useEmitterValue: useEmitterValue$2,\n useEmitter: useEmitter$2\n} = /* @__PURE__ */ systemToComponent(\n combinedSystem$2,\n {\n required: {},\n optional: {\n context: \"context\",\n followOutput: \"followOutput\",\n firstItemIndex: \"firstItemIndex\",\n itemContent: \"itemContent\",\n groupContent: \"groupContent\",\n overscan: \"overscan\",\n increaseViewportBy: \"increaseViewportBy\",\n totalCount: \"totalCount\",\n topItemCount: \"topItemCount\",\n initialTopMostItemIndex: \"initialTopMostItemIndex\",\n components: \"components\",\n groupCounts: \"groupCounts\",\n atBottomThreshold: \"atBottomThreshold\",\n atTopThreshold: \"atTopThreshold\",\n computeItemKey: \"computeItemKey\",\n defaultItemHeight: \"defaultItemHeight\",\n fixedItemHeight: \"fixedItemHeight\",\n itemSize: \"itemSize\",\n scrollSeekConfiguration: \"scrollSeekConfiguration\",\n headerFooterTag: \"headerFooterTag\",\n data: \"data\",\n initialItemCount: \"initialItemCount\",\n initialScrollTop: \"initialScrollTop\",\n alignToBottom: \"alignToBottom\",\n useWindowScroll: \"useWindowScroll\",\n customScrollParent: \"customScrollParent\",\n scrollerRef: \"scrollerRef\",\n logLevel: \"logLevel\"\n },\n methods: {\n scrollToIndex: \"scrollToIndex\",\n scrollIntoView: \"scrollIntoView\",\n scrollTo: \"scrollTo\",\n scrollBy: \"scrollBy\",\n autoscrollToBottom: \"autoscrollToBottom\"\n },\n events: {\n isScrolling: \"isScrolling\",\n endReached: \"endReached\",\n startReached: \"startReached\",\n rangeChanged: \"rangeChanged\",\n atBottomStateChange: \"atBottomStateChange\",\n atTopStateChange: \"atTopStateChange\",\n totalListHeightChanged: \"totalListHeightChanged\",\n itemsRendered: \"itemsRendered\",\n groupIndices: \"groupIndices\"\n }\n },\n ListRoot\n);\nconst Scroller$2 = /* @__PURE__ */ buildScroller({ usePublisher: usePublisher$2, useEmitterValue: useEmitterValue$2, useEmitter: useEmitter$2 });\nconst WindowScroller$2 = /* @__PURE__ */ buildWindowScroller({ usePublisher: usePublisher$2, useEmitterValue: useEmitterValue$2, useEmitter: useEmitter$2 });\nconst Virtuoso = List;\nconst GroupedVirtuoso = List;\nconst INITIAL_GRID_STATE = {\n items: [],\n offsetBottom: 0,\n offsetTop: 0,\n top: 0,\n bottom: 0,\n itemHeight: 0,\n itemWidth: 0\n};\nconst PROBE_GRID_STATE = {\n items: [{ index: 0 }],\n offsetBottom: 0,\n offsetTop: 0,\n top: 0,\n bottom: 0,\n itemHeight: 0,\n itemWidth: 0\n};\nconst { round, ceil, floor, min, max } = Math;\nfunction buildProbeGridState(items) {\n return {\n ...PROBE_GRID_STATE,\n items\n };\n}\nfunction buildItems(startIndex, endIndex, data) {\n return Array.from({ length: endIndex - startIndex + 1 }).map(\n (_, i) => ({ index: i + startIndex, data: data == null ? void 0 : data[i + startIndex] })\n );\n}\nfunction gapComparator(prev, next) {\n return prev && prev.column === next.column && prev.row === next.row;\n}\nfunction dimensionComparator(prev, next) {\n return prev && prev.width === next.width && prev.height === next.height;\n}\nconst gridSystem = /* @__PURE__ */ system(\n ([\n { overscan, visibleRange, listBoundary },\n { scrollTop, viewportHeight, scrollBy, scrollTo, smoothScrollTargetReached, scrollContainerState, footerHeight, headerHeight },\n stateFlags,\n scrollSeek,\n { propsReady, didMount },\n { windowViewportRect, windowScrollTo, useWindowScroll, customScrollParent, windowScrollContainerState },\n log\n ]) => {\n const totalCount = statefulStream(0);\n const initialItemCount = statefulStream(0);\n const gridState = statefulStream(INITIAL_GRID_STATE);\n const viewportDimensions = statefulStream({ height: 0, width: 0 });\n const itemDimensions = statefulStream({ height: 0, width: 0 });\n const scrollToIndex = stream();\n const scrollHeight = stream();\n const deviation = statefulStream(0);\n const data = statefulStream(void 0);\n const gap = statefulStream({ row: 0, column: 0 });\n connect(\n pipe(\n combineLatest(didMount, initialItemCount, data),\n filter(([, count]) => count !== 0),\n map(([, count, data2]) => {\n return {\n items: buildItems(0, count - 1, data2),\n top: 0,\n bottom: 0,\n offsetBottom: 0,\n offsetTop: 0,\n itemHeight: 0,\n itemWidth: 0\n };\n })\n ),\n gridState\n );\n connect(\n pipe(\n combineLatest(\n duc(totalCount),\n visibleRange,\n duc(gap, gapComparator),\n duc(itemDimensions, dimensionComparator),\n duc(viewportDimensions, dimensionComparator),\n data\n ),\n map(([totalCount2, [startOffset, endOffset], gap2, item, viewport, data2]) => {\n const { row: rowGap, column: columnGap } = gap2;\n const { height: itemHeight, width: itemWidth } = item;\n const { width: viewportWidth } = viewport;\n if (totalCount2 === 0 || viewportWidth === 0) {\n return INITIAL_GRID_STATE;\n }\n if (itemWidth === 0) {\n return buildProbeGridState(buildItems(0, 0, data2));\n }\n const perRow = itemsPerRow(viewportWidth, itemWidth, columnGap);\n let startIndex = perRow * floor((startOffset + rowGap) / (itemHeight + rowGap));\n let endIndex = perRow * ceil((endOffset + rowGap) / (itemHeight + rowGap)) - 1;\n endIndex = min(totalCount2 - 1, max(endIndex, perRow - 1));\n startIndex = min(endIndex, max(0, startIndex));\n const items = buildItems(startIndex, endIndex, data2);\n const { top, bottom } = gridLayout(viewport, gap2, item, items);\n const rowCount = ceil(totalCount2 / perRow);\n const totalHeight = rowCount * itemHeight + (rowCount - 1) * rowGap;\n const offsetBottom = totalHeight - bottom;\n return { items, offsetTop: top, offsetBottom, top, bottom, itemHeight, itemWidth };\n })\n ),\n gridState\n );\n connect(\n pipe(\n data,\n filter((data2) => data2 !== void 0),\n map((data2) => data2.length)\n ),\n totalCount\n );\n connect(\n pipe(\n viewportDimensions,\n map(({ height }) => height)\n ),\n viewportHeight\n );\n connect(\n pipe(\n combineLatest(viewportDimensions, itemDimensions, gridState, gap),\n map(([viewportDimensions2, item, { items }, gap2]) => {\n const { top, bottom } = gridLayout(viewportDimensions2, gap2, item, items);\n return [top, bottom];\n }),\n distinctUntilChanged(tupleComparator)\n ),\n listBoundary\n );\n const endReached = streamFromEmitter(\n pipe(\n duc(gridState),\n filter(({ items }) => items.length > 0),\n withLatestFrom(totalCount),\n filter(([{ items }, totalCount2]) => items[items.length - 1].index === totalCount2 - 1),\n map(([, totalCount2]) => totalCount2 - 1),\n distinctUntilChanged()\n )\n );\n const startReached = streamFromEmitter(\n pipe(\n duc(gridState),\n filter(({ items }) => {\n return items.length > 0 && items[0].index === 0;\n }),\n mapTo(0),\n distinctUntilChanged()\n )\n );\n const rangeChanged = streamFromEmitter(\n pipe(\n duc(gridState),\n filter(({ items }) => items.length > 0),\n map(({ items }) => {\n return {\n startIndex: items[0].index,\n endIndex: items[items.length - 1].index\n };\n }),\n distinctUntilChanged(rangeComparator)\n )\n );\n connect(rangeChanged, scrollSeek.scrollSeekRangeChanged);\n connect(\n pipe(\n scrollToIndex,\n withLatestFrom(viewportDimensions, itemDimensions, totalCount, gap),\n map(([location, viewport, item, totalCount2, gap2]) => {\n const normalLocation = normalizeIndexLocation(location);\n const { align, behavior, offset } = normalLocation;\n let index = normalLocation.index;\n if (index === \"LAST\") {\n index = totalCount2 - 1;\n }\n index = max(0, index, min(totalCount2 - 1, index));\n let top = itemTop(viewport, gap2, item, index);\n if (align === \"end\") {\n top = round(top - viewport.height + item.height);\n } else if (align === \"center\") {\n top = round(top - viewport.height / 2 + item.height / 2);\n }\n if (offset) {\n top += offset;\n }\n return { top, behavior };\n })\n ),\n scrollTo\n );\n const totalListHeight = statefulStreamFromEmitter(\n pipe(\n gridState,\n map((gridState2) => {\n return gridState2.offsetBottom + gridState2.bottom;\n })\n ),\n 0\n );\n connect(\n pipe(\n windowViewportRect,\n map((viewportInfo) => ({ width: viewportInfo.visibleWidth, height: viewportInfo.visibleHeight }))\n ),\n viewportDimensions\n );\n return {\n data,\n totalCount,\n viewportDimensions,\n itemDimensions,\n scrollTop,\n scrollHeight,\n overscan,\n scrollBy,\n scrollTo,\n scrollToIndex,\n smoothScrollTargetReached,\n windowViewportRect,\n windowScrollTo,\n useWindowScroll,\n customScrollParent,\n windowScrollContainerState,\n deviation,\n scrollContainerState,\n footerHeight,\n headerHeight,\n initialItemCount,\n gap,\n ...scrollSeek,\n gridState,\n totalListHeight,\n ...stateFlags,\n startReached,\n endReached,\n rangeChanged,\n propsReady,\n ...log\n };\n },\n tup(sizeRangeSystem, domIOSystem, stateFlagsSystem, scrollSeekSystem, propsReadySystem, windowScrollerSystem, loggerSystem)\n);\nfunction gridLayout(viewport, gap, item, items) {\n const { height: itemHeight } = item;\n if (itemHeight === void 0 || items.length === 0) {\n return { top: 0, bottom: 0 };\n }\n const top = itemTop(viewport, gap, item, items[0].index);\n const bottom = itemTop(viewport, gap, item, items[items.length - 1].index) + itemHeight;\n return { top, bottom };\n}\nfunction itemTop(viewport, gap, item, index) {\n const perRow = itemsPerRow(viewport.width, item.width, gap.column);\n const rowCount = floor(index / perRow);\n const top = rowCount * item.height + max(0, rowCount - 1) * gap.row;\n return top > 0 ? top + gap.row : top;\n}\nfunction itemsPerRow(viewportWidth, itemWidth, gap) {\n return max(1, floor((viewportWidth + gap) / (itemWidth + gap)));\n}\nconst gridComponentPropsSystem = /* @__PURE__ */ system(() => {\n const itemContent = statefulStream((index) => `Item ${index}`);\n const components = statefulStream({});\n const context = statefulStream(null);\n const itemClassName = statefulStream(\"virtuoso-grid-item\");\n const listClassName = statefulStream(\"virtuoso-grid-list\");\n const computeItemKey = statefulStream(identity);\n const headerFooterTag = statefulStream(\"div\");\n const scrollerRef = statefulStream(noop);\n const distinctProp = (propName, defaultValue = null) => {\n return statefulStreamFromEmitter(\n pipe(\n components,\n map((components2) => components2[propName]),\n distinctUntilChanged()\n ),\n defaultValue\n );\n };\n return {\n context,\n itemContent,\n components,\n computeItemKey,\n itemClassName,\n listClassName,\n headerFooterTag,\n scrollerRef,\n FooterComponent: distinctProp(\"Footer\"),\n HeaderComponent: distinctProp(\"Header\"),\n ListComponent: distinctProp(\"List\", \"div\"),\n ItemComponent: distinctProp(\"Item\", \"div\"),\n ScrollerComponent: distinctProp(\"Scroller\", \"div\"),\n ScrollSeekPlaceholder: distinctProp(\"ScrollSeekPlaceholder\", \"div\")\n };\n});\nconst combinedSystem$1 = /* @__PURE__ */ system(([gridSystem2, gridComponentPropsSystem2]) => {\n return { ...gridSystem2, ...gridComponentPropsSystem2 };\n}, tup(gridSystem, gridComponentPropsSystem));\nconst GridItems = /* @__PURE__ */ React.memo(function GridItems2() {\n const gridState = useEmitterValue$1(\"gridState\");\n const listClassName = useEmitterValue$1(\"listClassName\");\n const itemClassName = useEmitterValue$1(\"itemClassName\");\n const itemContent = useEmitterValue$1(\"itemContent\");\n const computeItemKey = useEmitterValue$1(\"computeItemKey\");\n const isSeeking = useEmitterValue$1(\"isSeeking\");\n const scrollHeightCallback = usePublisher$1(\"scrollHeight\");\n const ItemComponent = useEmitterValue$1(\"ItemComponent\");\n const ListComponent = useEmitterValue$1(\"ListComponent\");\n const ScrollSeekPlaceholder = useEmitterValue$1(\"ScrollSeekPlaceholder\");\n const context = useEmitterValue$1(\"context\");\n const itemDimensions = usePublisher$1(\"itemDimensions\");\n const gridGap = usePublisher$1(\"gap\");\n const log = useEmitterValue$1(\"log\");\n const listRef = useSize((el) => {\n const scrollHeight = el.parentElement.parentElement.scrollHeight;\n scrollHeightCallback(scrollHeight);\n const firstItem = el.firstChild;\n if (firstItem) {\n itemDimensions(firstItem.getBoundingClientRect());\n }\n gridGap({\n row: resolveGapValue(\"row-gap\", getComputedStyle(el).rowGap, log),\n column: resolveGapValue(\"column-gap\", getComputedStyle(el).columnGap, log)\n });\n });\n return React.createElement(\n ListComponent,\n {\n ref: listRef,\n className: listClassName,\n ...contextPropIfNotDomElement(ListComponent, context),\n style: { paddingTop: gridState.offsetTop, paddingBottom: gridState.offsetBottom },\n \"data-test-id\": \"virtuoso-item-list\"\n },\n gridState.items.map((item) => {\n const key = computeItemKey(item.index, item.data, context);\n return isSeeking ? React.createElement(ScrollSeekPlaceholder, {\n key,\n ...contextPropIfNotDomElement(ScrollSeekPlaceholder, context),\n index: item.index,\n height: gridState.itemHeight,\n width: gridState.itemWidth\n }) : React.createElement(\n ItemComponent,\n { ...contextPropIfNotDomElement(ItemComponent, context), className: itemClassName, \"data-index\": item.index, key },\n itemContent(item.index, item.data, context)\n );\n })\n );\n});\nconst Header = React.memo(function VirtuosoHeader2() {\n const Header2 = useEmitterValue$1(\"HeaderComponent\");\n const headerHeight = usePublisher$1(\"headerHeight\");\n const headerFooterTag = useEmitterValue$1(\"headerFooterTag\");\n const ref = useSize((el) => headerHeight(correctItemSize(el, \"height\")));\n const context = useEmitterValue$1(\"context\");\n return Header2 ? React.createElement(headerFooterTag, { ref }, React.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null;\n});\nconst Footer = React.memo(function VirtuosoGridFooter() {\n const Footer2 = useEmitterValue$1(\"FooterComponent\");\n const footerHeight = usePublisher$1(\"footerHeight\");\n const headerFooterTag = useEmitterValue$1(\"headerFooterTag\");\n const ref = useSize((el) => footerHeight(correctItemSize(el, \"height\")));\n const context = useEmitterValue$1(\"context\");\n return Footer2 ? React.createElement(headerFooterTag, { ref }, React.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null;\n});\nconst Viewport$1 = ({ children }) => {\n const ctx = React.useContext(VirtuosoGridMockContext);\n const itemDimensions = usePublisher$1(\"itemDimensions\");\n const viewportDimensions = usePublisher$1(\"viewportDimensions\");\n const viewportRef = useSize((el) => {\n viewportDimensions(el.getBoundingClientRect());\n });\n React.useEffect(() => {\n if (ctx) {\n viewportDimensions({ height: ctx.viewportHeight, width: ctx.viewportWidth });\n itemDimensions({ height: ctx.itemHeight, width: ctx.itemWidth });\n }\n }, [ctx, viewportDimensions, itemDimensions]);\n return /* @__PURE__ */ React.createElement(\"div\", { style: viewportStyle, ref: viewportRef }, children);\n};\nconst WindowViewport$1 = ({ children }) => {\n const ctx = React.useContext(VirtuosoGridMockContext);\n const windowViewportRect = usePublisher$1(\"windowViewportRect\");\n const itemDimensions = usePublisher$1(\"itemDimensions\");\n const customScrollParent = useEmitterValue$1(\"customScrollParent\");\n const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent);\n React.useEffect(() => {\n if (ctx) {\n itemDimensions({ height: ctx.itemHeight, width: ctx.itemWidth });\n windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: ctx.viewportWidth });\n }\n }, [ctx, windowViewportRect, itemDimensions]);\n return /* @__PURE__ */ React.createElement(\"div\", { ref: viewportRef, style: viewportStyle }, children);\n};\nconst GridRoot = /* @__PURE__ */ React.memo(function GridRoot2({ ...props }) {\n const useWindowScroll = useEmitterValue$1(\"useWindowScroll\");\n const customScrollParent = useEmitterValue$1(\"customScrollParent\");\n const TheScroller = customScrollParent || useWindowScroll ? WindowScroller$1 : Scroller$1;\n const TheViewport = customScrollParent || useWindowScroll ? WindowViewport$1 : Viewport$1;\n return /* @__PURE__ */ React.createElement(TheScroller, { ...props }, /* @__PURE__ */ React.createElement(TheViewport, null, /* @__PURE__ */ React.createElement(Header, null), /* @__PURE__ */ React.createElement(GridItems, null), /* @__PURE__ */ React.createElement(Footer, null)));\n});\nconst {\n Component: Grid,\n usePublisher: usePublisher$1,\n useEmitterValue: useEmitterValue$1,\n useEmitter: useEmitter$1\n} = /* @__PURE__ */ systemToComponent(\n combinedSystem$1,\n {\n optional: {\n context: \"context\",\n totalCount: \"totalCount\",\n overscan: \"overscan\",\n itemContent: \"itemContent\",\n components: \"components\",\n computeItemKey: \"computeItemKey\",\n data: \"data\",\n initialItemCount: \"initialItemCount\",\n scrollSeekConfiguration: \"scrollSeekConfiguration\",\n headerFooterTag: \"headerFooterTag\",\n listClassName: \"listClassName\",\n itemClassName: \"itemClassName\",\n useWindowScroll: \"useWindowScroll\",\n customScrollParent: \"customScrollParent\",\n scrollerRef: \"scrollerRef\"\n },\n methods: {\n scrollTo: \"scrollTo\",\n scrollBy: \"scrollBy\",\n scrollToIndex: \"scrollToIndex\"\n },\n events: {\n isScrolling: \"isScrolling\",\n endReached: \"endReached\",\n startReached: \"startReached\",\n rangeChanged: \"rangeChanged\",\n atBottomStateChange: \"atBottomStateChange\",\n atTopStateChange: \"atTopStateChange\"\n }\n },\n GridRoot\n);\nconst Scroller$1 = /* @__PURE__ */ buildScroller({ usePublisher: usePublisher$1, useEmitterValue: useEmitterValue$1, useEmitter: useEmitter$1 });\nconst WindowScroller$1 = /* @__PURE__ */ buildWindowScroller({ usePublisher: usePublisher$1, useEmitterValue: useEmitterValue$1, useEmitter: useEmitter$1 });\nfunction resolveGapValue(property, value, log) {\n if (value !== \"normal\" && !(value == null ? void 0 : value.endsWith(\"px\"))) {\n log(`${property} was not resolved to pixel value correctly`, value, LogLevel.WARN);\n }\n if (value === \"normal\") {\n return 0;\n }\n return parseInt(value ?? \"0\", 10);\n}\nconst VirtuosoGrid = Grid;\nconst tableComponentPropsSystem = /* @__PURE__ */ system(() => {\n const itemContent = statefulStream((index) => /* @__PURE__ */ React.createElement(\"td\", null, \"Item $\", index));\n const context = statefulStream(null);\n const fixedHeaderContent = statefulStream(null);\n const fixedFooterContent = statefulStream(null);\n const components = statefulStream({});\n const computeItemKey = statefulStream(identity);\n const scrollerRef = statefulStream(noop);\n const distinctProp = (propName, defaultValue = null) => {\n return statefulStreamFromEmitter(\n pipe(\n components,\n map((components2) => components2[propName]),\n distinctUntilChanged()\n ),\n defaultValue\n );\n };\n return {\n context,\n itemContent,\n fixedHeaderContent,\n fixedFooterContent,\n components,\n computeItemKey,\n scrollerRef,\n TableComponent: distinctProp(\"Table\", \"table\"),\n TableHeadComponent: distinctProp(\"TableHead\", \"thead\"),\n TableFooterComponent: distinctProp(\"TableFoot\", \"tfoot\"),\n TableBodyComponent: distinctProp(\"TableBody\", \"tbody\"),\n TableRowComponent: distinctProp(\"TableRow\", \"tr\"),\n ScrollerComponent: distinctProp(\"Scroller\", \"div\"),\n EmptyPlaceholder: distinctProp(\"EmptyPlaceholder\"),\n ScrollSeekPlaceholder: distinctProp(\"ScrollSeekPlaceholder\"),\n FillerRow: distinctProp(\"FillerRow\")\n };\n});\nconst combinedSystem = /* @__PURE__ */ system(([listSystem2, propsSystem]) => {\n return { ...listSystem2, ...propsSystem };\n}, tup(listSystem, tableComponentPropsSystem));\nconst DefaultScrollSeekPlaceholder = ({ height }) => /* @__PURE__ */ React.createElement(\"tr\", null, /* @__PURE__ */ React.createElement(\"td\", { style: { height } }));\nconst DefaultFillerRow = ({ height }) => /* @__PURE__ */ React.createElement(\"tr\", null, /* @__PURE__ */ React.createElement(\"td\", { style: { height, padding: 0, border: 0 } }));\nconst Items = /* @__PURE__ */ React.memo(function VirtuosoItems2() {\n const listState = useEmitterValue(\"listState\");\n const sizeRanges = usePublisher(\"sizeRanges\");\n const useWindowScroll = useEmitterValue(\"useWindowScroll\");\n const customScrollParent = useEmitterValue(\"customScrollParent\");\n const windowScrollContainerStateCallback = usePublisher(\"windowScrollContainerState\");\n const _scrollContainerStateCallback = usePublisher(\"scrollContainerState\");\n const scrollContainerStateCallback = customScrollParent || useWindowScroll ? windowScrollContainerStateCallback : _scrollContainerStateCallback;\n const itemContent = useEmitterValue(\"itemContent\");\n const trackItemSizes = useEmitterValue(\"trackItemSizes\");\n const itemSize = useEmitterValue(\"itemSize\");\n const log = useEmitterValue(\"log\");\n const { callbackRef, ref } = useChangedListContentsSizes(\n sizeRanges,\n itemSize,\n trackItemSizes,\n scrollContainerStateCallback,\n log,\n void 0,\n customScrollParent\n );\n const [deviation, setDeviation] = React.useState(0);\n useEmitter(\"deviation\", (value) => {\n if (deviation !== value) {\n ref.current.style.marginTop = `${value}px`;\n setDeviation(value);\n }\n });\n const EmptyPlaceholder = useEmitterValue(\"EmptyPlaceholder\");\n const ScrollSeekPlaceholder = useEmitterValue(\"ScrollSeekPlaceholder\") || DefaultScrollSeekPlaceholder;\n const FillerRow = useEmitterValue(\"FillerRow\") || DefaultFillerRow;\n const TableBodyComponent = useEmitterValue(\"TableBodyComponent\");\n const TableRowComponent = useEmitterValue(\"TableRowComponent\");\n const computeItemKey = useEmitterValue(\"computeItemKey\");\n const isSeeking = useEmitterValue(\"isSeeking\");\n const paddingTopAddition = useEmitterValue(\"paddingTopAddition\");\n const firstItemIndex = useEmitterValue(\"firstItemIndex\");\n const statefulTotalCount = useEmitterValue(\"statefulTotalCount\");\n const context = useEmitterValue(\"context\");\n if (statefulTotalCount === 0 && EmptyPlaceholder) {\n return React.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context));\n }\n const paddingTop = listState.offsetTop + paddingTopAddition + deviation;\n const paddingBottom = listState.offsetBottom;\n const paddingTopEl = paddingTop > 0 ? /* @__PURE__ */ React.createElement(FillerRow, { height: paddingTop, key: \"padding-top\", context }) : null;\n const paddingBottomEl = paddingBottom > 0 ? /* @__PURE__ */ React.createElement(FillerRow, { height: paddingBottom, key: \"padding-bottom\", context }) : null;\n const items = listState.items.map((item) => {\n const index = item.originalIndex;\n const key = computeItemKey(index + firstItemIndex, item.data, context);\n if (isSeeking) {\n return React.createElement(ScrollSeekPlaceholder, {\n ...contextPropIfNotDomElement(ScrollSeekPlaceholder, context),\n key,\n index: item.index,\n height: item.size,\n type: item.type || \"item\"\n });\n }\n return React.createElement(\n TableRowComponent,\n {\n ...contextPropIfNotDomElement(TableRowComponent, context),\n key,\n \"data-index\": index,\n \"data-known-size\": item.size,\n \"data-item-index\": item.index,\n item: item.data,\n style: { overflowAnchor: \"none\" }\n },\n itemContent(item.index, item.data, context)\n );\n });\n return React.createElement(\n TableBodyComponent,\n { ref: callbackRef, \"data-test-id\": \"virtuoso-item-list\", ...contextPropIfNotDomElement(TableBodyComponent, context) },\n [paddingTopEl, ...items, paddingBottomEl]\n );\n});\nconst Viewport = ({ children }) => {\n const ctx = React.useContext(VirtuosoMockContext);\n const viewportHeight = usePublisher(\"viewportHeight\");\n const fixedItemHeight = usePublisher(\"fixedItemHeight\");\n const viewportRef = useSize(compose(viewportHeight, (el) => correctItemSize(el, \"height\")));\n React.useEffect(() => {\n if (ctx) {\n viewportHeight(ctx.viewportHeight);\n fixedItemHeight(ctx.itemHeight);\n }\n }, [ctx, viewportHeight, fixedItemHeight]);\n return /* @__PURE__ */ React.createElement(\"div\", { style: viewportStyle, ref: viewportRef, \"data-viewport-type\": \"element\" }, children);\n};\nconst WindowViewport = ({ children }) => {\n const ctx = React.useContext(VirtuosoMockContext);\n const windowViewportRect = usePublisher(\"windowViewportRect\");\n const fixedItemHeight = usePublisher(\"fixedItemHeight\");\n const customScrollParent = useEmitterValue(\"customScrollParent\");\n const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent);\n React.useEffect(() => {\n if (ctx) {\n fixedItemHeight(ctx.itemHeight);\n windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: 100 });\n }\n }, [ctx, windowViewportRect, fixedItemHeight]);\n return /* @__PURE__ */ React.createElement(\"div\", { ref: viewportRef, style: viewportStyle, \"data-viewport-type\": \"window\" }, children);\n};\nconst TableRoot = /* @__PURE__ */ React.memo(function TableVirtuosoRoot(props) {\n const useWindowScroll = useEmitterValue(\"useWindowScroll\");\n const customScrollParent = useEmitterValue(\"customScrollParent\");\n const fixedHeaderHeight = usePublisher(\"fixedHeaderHeight\");\n const fixedFooterHeight = usePublisher(\"fixedFooterHeight\");\n const fixedHeaderContent = useEmitterValue(\"fixedHeaderContent\");\n const fixedFooterContent = useEmitterValue(\"fixedFooterContent\");\n const context = useEmitterValue(\"context\");\n const theadRef = useSize(compose(fixedHeaderHeight, (el) => correctItemSize(el, \"height\")));\n const tfootRef = useSize(compose(fixedFooterHeight, (el) => correctItemSize(el, \"height\")));\n const TheScroller = customScrollParent || useWindowScroll ? WindowScroller : Scroller;\n const TheViewport = customScrollParent || useWindowScroll ? WindowViewport : Viewport;\n const TheTable = useEmitterValue(\"TableComponent\");\n const TheTHead = useEmitterValue(\"TableHeadComponent\");\n const TheTFoot = useEmitterValue(\"TableFooterComponent\");\n const theHead = fixedHeaderContent ? React.createElement(\n TheTHead,\n {\n key: \"TableHead\",\n style: { zIndex: 1, position: \"sticky\", top: 0 },\n ref: theadRef,\n ...contextPropIfNotDomElement(TheTHead, context)\n },\n fixedHeaderContent()\n ) : null;\n const theFoot = fixedFooterContent ? React.createElement(\n TheTFoot,\n {\n key: \"TableFoot\",\n style: { zIndex: 1, position: \"sticky\", bottom: 0 },\n ref: tfootRef,\n ...contextPropIfNotDomElement(TheTFoot, context)\n },\n fixedFooterContent()\n ) : null;\n return /* @__PURE__ */ React.createElement(TheScroller, { ...props }, /* @__PURE__ */ React.createElement(TheViewport, null, React.createElement(TheTable, { style: { borderSpacing: 0 }, ...contextPropIfNotDomElement(TheTable, context) }, [\n theHead,\n /* @__PURE__ */ React.createElement(Items, { key: \"TableBody\" }),\n theFoot\n ])));\n});\nconst {\n Component: Table,\n usePublisher,\n useEmitterValue,\n useEmitter\n} = /* @__PURE__ */ systemToComponent(\n combinedSystem,\n {\n required: {},\n optional: {\n context: \"context\",\n followOutput: \"followOutput\",\n firstItemIndex: \"firstItemIndex\",\n itemContent: \"itemContent\",\n fixedHeaderContent: \"fixedHeaderContent\",\n fixedFooterContent: \"fixedFooterContent\",\n overscan: \"overscan\",\n increaseViewportBy: \"increaseViewportBy\",\n totalCount: \"totalCount\",\n topItemCount: \"topItemCount\",\n initialTopMostItemIndex: \"initialTopMostItemIndex\",\n components: \"components\",\n groupCounts: \"groupCounts\",\n atBottomThreshold: \"atBottomThreshold\",\n atTopThreshold: \"atTopThreshold\",\n computeItemKey: \"computeItemKey\",\n defaultItemHeight: \"defaultItemHeight\",\n fixedItemHeight: \"fixedItemHeight\",\n itemSize: \"itemSize\",\n scrollSeekConfiguration: \"scrollSeekConfiguration\",\n data: \"data\",\n initialItemCount: \"initialItemCount\",\n initialScrollTop: \"initialScrollTop\",\n alignToBottom: \"alignToBottom\",\n useWindowScroll: \"useWindowScroll\",\n customScrollParent: \"customScrollParent\",\n scrollerRef: \"scrollerRef\",\n logLevel: \"logLevel\"\n },\n methods: {\n scrollToIndex: \"scrollToIndex\",\n scrollIntoView: \"scrollIntoView\",\n scrollTo: \"scrollTo\",\n scrollBy: \"scrollBy\"\n },\n events: {\n isScrolling: \"isScrolling\",\n endReached: \"endReached\",\n startReached: \"startReached\",\n rangeChanged: \"rangeChanged\",\n atBottomStateChange: \"atBottomStateChange\",\n atTopStateChange: \"atTopStateChange\",\n totalListHeightChanged: \"totalListHeightChanged\",\n itemsRendered: \"itemsRendered\",\n groupIndices: \"groupIndices\"\n }\n },\n TableRoot\n);\nconst Scroller = /* @__PURE__ */ buildScroller({ usePublisher, useEmitterValue, useEmitter });\nconst WindowScroller = /* @__PURE__ */ buildWindowScroller({ usePublisher, useEmitterValue, useEmitter });\nconst TableVirtuoso = Table;\nexport {\n GroupedVirtuoso,\n LogLevel,\n TableVirtuoso,\n Virtuoso,\n VirtuosoGrid,\n VirtuosoGridMockContext,\n VirtuosoMockContext\n};\n","import { css, cx } from '@emotion/css'\nimport { CheckboxChangeEventDetail, CheckboxCustomEvent, IonCheckbox } from '@ionic/react'\nimport PlanResultCard, { PlanResultCardProps } from '../PlanResult/PlanResultCard'\nimport { Plan } from '../../services/planService/Plan'\n\ninterface ComparePlanResultCardProps extends Omit {\n isComparing: boolean\n onCheckboxSelected?: (planResult: Plan, newIsSelectedState: boolean) => void\n disabled: boolean\n isFuzzy?: boolean\n afterCompare?: React.ReactNode\n compareView?: boolean\n}\n\nconst ComparePlanResultCardStyles = css`\n display: inline-flex;\n align-items: center;\n\n .compare-checkbox {\n flex-shrink: 1;\n margin-left: 12px;\n width: 24px;\n height: 24px;\n }\n`\n\nconst PlanResultCardWrapperStyles = css`\n flex-grow: 1;\n display: flex;\n justify-content: center;\n\n .plan-result-card {\n width: 100%;\n }\n`\n\nexport const ComparePlanResultCard = (props: ComparePlanResultCardProps) => {\n const { isComparing, onCheckboxSelected, disabled, isFuzzy, compareView, ...planResultCardProps } = props\n\n const onCheckboxChange = (evt: CheckboxCustomEvent>) => {\n evt.stopPropagation()\n onCheckboxSelected?.(props.plan, evt.detail.checked)\n }\n\n const onPlanClick = () => {\n if (disabled) return\n if (compareView) {\n onCheckboxSelected?.(props.plan, !isComparing)\n } else {\n planResultCardProps.onPlanClick?.(props.plan)\n }\n }\n\n return (\n
    \n
    \n \n
    \n\n {compareView ? (\n \n ) : null}\n
    \n )\n}\n","import { css, cx } from '@emotion/css'\nimport { Plan } from '../../../services/planService/Plan'\nimport { MOBILE_BREAKPOINT, MOBILE_BREAKPOINT_MAX, useWindowSize } from '../../../utils/hooks/useWindowSize'\nimport { Virtuoso, VirtuosoHandle } from 'react-virtuoso'\nimport React from 'react'\nimport { PlanResultCardSkeleton } from '../../../components/PlanResult/PlanResultCardSkeleton'\nimport { throttle } from 'lodash'\nimport { ComparePlanResultCard } from '../../../components/BestPlans/ComparePlanResultCard'\nimport { useBoundStore } from '../../../store'\nimport shallow from 'zustand/shallow'\nimport { UseCarrier, useSupportedCarriers } from '../../../services/Carrier.service'\nimport { EmptyListState } from './EmptyListState'\nimport { PlansHeaderStates } from '../../../components/Header/PlansHeader/PlansHeader'\nimport { WarningBanner } from '../../../components/ListBanner'\nimport { GeoJsonRecord } from '../../../components/CoverageMap/Geodata.service'\nimport { Address } from '../../../store/address'\nimport { PlanResultCardProps } from '../../../components/PlanResult/PlanResultCard'\n\nconst GRID_BREAKPOINT = 1000\n\nconst TopSpaceStyles = css`\n @media screen and (max-width: ${MOBILE_BREAKPOINT_MAX}px) {\n &.state-expanded {\n margin-top: var(--plans-header-expanded-height);\n }\n &.state-collapsed {\n margin-top: var(--plans-header-collapsed-height);\n }\n &.state-only-tabs {\n margin-top: var(--plans-header-only-tabs-height);\n }\n }\n\n @media screen and (min-width: ${MOBILE_BREAKPOINT}px) {\n &.state-expanded {\n margin-top: var(--plans-header-expanded-height);\n }\n &.state-collapsed {\n margin-top: var(--plans-header-collapsed-height);\n }\n &.state-only-tabs {\n margin-top: var(--plans-header-only-tabs-height);\n }\n }\n`\n\nconst PlansListStyles = css`\n padding: 0 var(--plans-tab-horizontal-padding);\n .last-card-item {\n padding-bottom: 100px !important;\n }\n max-height: 100%;\n touch-action: pan-y;\n\n .cards-grid {\n margin: auto;\n\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 16px;\n\n padding-top: var(--plans-grid-padding-top, 16px);\n padding-bottom: var(--plans-grid-padding-bottom, 16px);\n\n @media screen and (max-width: ${MOBILE_BREAKPOINT_MAX}px) {\n padding-left: 16px;\n padding-right: 16px;\n }\n\n --min-width: 300px;\n\n & > * {\n width: 100%;\n flex-basis: var(--min-width);\n flex-grow: 1;\n max-width: 800px;\n }\n > * > * {\n height: 100%;\n min-width: var(--min-width);\n\n @media screen and (max-width: ${MOBILE_BREAKPOINT_MAX}px) {\n }\n }\n\n &.lastCardItem {\n padding-bottom: 80px;\n }\n }\n\n @media screen and (max-width: ${MOBILE_BREAKPOINT_MAX}px) {\n &.state-expanded {\n height: calc(100% - var(--plans-header-expanded-height) + 6px) !important;\n }\n &.state-collapsed {\n height: calc(100% - var(--plans-header-collapsed-height) + 6px) !important;\n }\n &.state-only-tabs {\n height: calc(100% - var(--plans-header-only-tabs-height) + 6px) !important;\n }\n }\n\n @media screen and (min-width: ${MOBILE_BREAKPOINT}px) {\n > div {\n position: relative !important;\n top: unset !important;\n padding-bottom: 20px;\n }\n &.state-only-tabs {\n height: calc(100% - var(--plans-header-only-tabs-height)) !important;\n }\n }\n`\n\nexport interface PlansListTabProps {\n plans: Plan[]\n className?: string\n headerState?: PlansHeaderStates\n isLoading?: boolean\n onMove?: (direction: 'up' | 'down') => void\n onReachTop?: () => void\n onPlanClick: (plan: Plan, index: number) => void\n initialScrollIndex?: number\n compareView?: boolean\n afterCompare?: (planResult: Plan) => React.ReactNode\n virtuosoRef?: React.RefObject\n\n planCardProps?: Partial\n}\n\nfunction shouldShowNoDataBanner(bestCarriers: GeoJsonRecord[] | undefined, addresses: Address[]): boolean {\n if (\n addresses.length &&\n bestCarriers &&\n (!bestCarriers.length || bestCarriers.every((record) => record.properties.network_type_id === 0))\n ) {\n return true\n }\n return false\n}\n\nfunction PlansListTabComponent(props: PlansListTabProps) {\n const { plans } = props\n const windowSize = useWindowSize()\n const lastTouchPosition = React.useRef(0)\n const isTwoColumns = windowSize.width > GRID_BREAKPOINT\n\n const [compareSelection, toggleComparison, addresses] = useBoundStore(\n (state) => [state.compareSelection, state.toggleComparison, state.addresses],\n shallow\n )\n\n const bestCarriers = UseCarrier.usePointSignals()\n\n const noDataFound = shouldShowNoDataBanner(bestCarriers.data, addresses)\n const beginningBanner = React.useMemo(() => {\n if (noDataFound) {\n return {\n exists: true,\n type: 'warning',\n title: 'No coverage data for your location(s)',\n message: \"Try adding different locations or running speed tests with Goji's Network Meter.\"\n }\n }\n return { exists: false }\n }, [noDataFound])\n\n const { isPlanCarrierSupported } = useSupportedCarriers()\n\n const handleTouchMove = throttle((e: React.TouchEvent) => {\n if (e.touches[0].clientY > lastTouchPosition.current + 50) {\n lastTouchPosition.current = e.touches[0].clientY\n props.onMove?.('up')\n } else if (e.touches[0].clientY < lastTouchPosition.current - 50) {\n lastTouchPosition.current = e.touches[0].clientY\n props.onMove?.('down')\n }\n }, 300)\n\n const innerPlanComponent = (index: number) => {\n return (\n {\n props.onPlanClick(plans[index], index)\n }}\n afterCompare={props.afterCompare?.(plans[index])}\n isFuzzy={false}\n isCarrierUnsupported={!isPlanCarrierSupported(plans[index])}\n alwaysExpanded\n {...props.planCardProps}\n />\n )\n }\n\n return (\n <>\n
    \n {props.isLoading ? (\n }\n />\n ) : (\n {\n if (isAtTop) {\n props.onReachTop?.()\n }\n }}\n className={cx(PlansListStyles, 'list-virtuoso', props.headerState, props.className)}\n totalCount={Math.ceil(plans.length / 2)}\n components={{\n EmptyPlaceholder: () => \n }}\n onTouchStart={(e) => {\n lastTouchPosition.current = e.touches[0].clientY\n }}\n onTouchMove={handleTouchMove}\n onWheel={(e) => {\n if (e.deltaY > 0) {\n props.onMove?.('down')\n } else if (e.deltaY < 0) {\n props.onMove?.('up')\n }\n }}\n ref={props.virtuosoRef}\n itemContent={(index) => {\n return (\n <>\n {index === 0 && beginningBanner.exists ? (\n \n ) : null}\n
    \n {innerPlanComponent(index * 2)}\n {plans[index * 2 + 1] ? innerPlanComponent(index * 2 + 1) :
    }\n
    \n \n )\n }}\n />\n )}\n \n )\n}\n\nexport const PlansListTab = React.memo(PlansListTabComponent)\n","import React from 'react'\nimport { getInitialPreferencesV3, PlanPreferencesV3 } from '../../store/standalone/filters-store/filter-plans'\nimport useFiltersStore from '../../store/standalone/filters-store/filters-store'\nimport { useQueryParamsState } from '../../utils/hooks/useSyncStateWithSearchParam'\n\nfunction getInitialState() {\n return {\n search: '',\n 'filters-open': undefined,\n ...getInitialPreferencesV3()\n }\n}\n\nexport function usePlansFilterState() {\n const [qsState, setQsState] = useQueryParamsState<\n { search: string; 'filters-open': 'true' | undefined } & PlanPreferencesV3\n >(getInitialState())\n\n const setSearch = React.useCallback(\n (search: string) => {\n setQsState({ search })\n },\n [setQsState]\n )\n\n const nLinesFilter = useFiltersStore((state) => state.numLines) || 1\n const setNLinesFilter = React.useCallback((numLines: number) => {\n useFiltersStore.setState({ numLines })\n }, [])\n\n return {\n search: qsState.search,\n setSearch,\n qsState,\n setQsState,\n nLinesFilter,\n setNLinesFilter\n }\n}\n","import { css } from '@emotion/css'\n\nexport const TitlesWrapperStyles = css`\n overflow-x: auto;\n &::-webkit-scrollbar {\n display: none; // Safari and Chrome\n }\n -ms-overflow-style: none; // IE and Edge\n scrollbar-width: none; // Firefox\n`\nexport const SavedPlansHeaderStyles = css`\n .swiper-wrapper {\n justify-content: center;\n transform: translateX(0px) !important;\n span {\n font-size: 18px;\n font-weight: 900;\n }\n\n .swiper-slide-active {\n margin: 0 !important;\n > div {\n transform: unset !important;\n transition: unset !important;\n opacity: 1 !important;\n }\n }\n }\n .titles-wrapper {\n align-items: center;\n justify-content: center !important;\n > div {\n opacity: 1 !important;\n font-size: 18px;\n font-weight: 900 !important;\n }\n }\n\n .back-arrow {\n position: absolute;\n left: 30px;\n top: 15px;\n color: var(--goji-primary-black);\n height: var(--header-full-size);\n\n z-index: 2;\n transition: transform 0.3s, opacity 0.3s height 0.3s;\n }\n .back-arrow.state-collapsed {\n height: var(--plans-header-collapsed-height);\n transform: translateY(-100%);\n opacity: 0;\n }\n`\n\nexport const SavedPlansStyles = css`\n --overflow: hidden;\n .no_saved_plans {\n width: 60%;\n margin: 140px auto 24px;\n }\n\n @media (max-width: 768px) {\n .no_saved_plans {\n width: 85%;\n }\n }\n`\n\nexport const NoSavedPlansBannerStyles = css`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n\n .barry_image_wrapper {\n margin-top: 40px;\n max-width: 40%;\n }\n\n .info_no_saved_plans_wrapper {\n text-align: center;\n h1 {\n font-size: 22px;\n font-weight: 900;\n margin: 10px 0;\n }\n\n p {\n font-size: 14px;\n font-weight: 500;\n color: var(--ion-color-medium);\n margin: 10px 0;\n }\n }\n`\n\nexport const NoSavedPlansStyles = css`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 24px;\n\n .buttons_no_saved_plans_wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: 16px;\n }\n\n .recommended_plans_btn {\n text-transform: uppercase;\n font-size: 16px;\n height: 52px;\n font-weight: 700;\n }\n\n .all_plans_btn {\n font-size: 16px;\n height: 52px;\n }\n`\n\nexport const SavedPlansFooterWrapper = css`\n --bottom-fixed: calc(env(safe-area-inset-bottom) + 15px);\n width: 100%;\n position: absolute;\n bottom: 0;\n right: 0;\n\n ion-footer {\n bottom: 0;\n right: 0;\n position: fixed;\n }\n`\n","import { useIsMobileSize } from '../../utils/hooks/useWindowSize'\nimport { DesktopHeader } from '../home/DesktopHeader/DesktopHeader'\nimport { IonButton, IonContent, IonFabButton, IonIcon } from '@ionic/react'\nimport React from 'react'\nimport { useBoundStore } from '../../store'\nimport { MainNavigationPaths } from '../../paths'\nimport { LowerFooterStandalone } from '../home/DesktopFooter/DesktopFooter'\nimport {\n NoSavedPlansBannerStyles,\n NoSavedPlansStyles,\n SavedPlansFooterWrapper,\n SavedPlansHeaderStyles,\n SavedPlansStyles\n} from './SavedPlans.styles'\nimport { useGetPlansInfo } from '../../utils/hooks/useGetPlansInfo'\nimport { cx } from '@emotion/css'\nimport { ALL_PLANS_TAB, RECOMMENDED_TAB } from '../plans/tabs/PlanTab'\nimport { PlansListTab } from '../plans/tabs/PlansListTab'\nimport { PlansHeader, PlansHeaderStates } from '../../components/Header/PlansHeader/PlansHeader'\nimport { VirtuosoHandle } from 'react-virtuoso'\nimport {\n CompareButtonsStyles,\n PlansPageDesktopHeaderStyles,\n PlansPageFooterWrapper,\n PlansPageHeaderStyles\n} from '../plans/PlansPage.styles'\nimport { SwiperRef } from 'swiper/react'\nimport { HideMobileStyles } from '../../utils/styles/ViewportUtils.styles'\nimport { CompareToolbar } from '../../components/BestPlans/CompareToolbar'\nimport { CompareFooter } from '../network-quality/ResultsPage'\nimport { sortPlans } from '../../services/planService/Plan.service'\nimport { filterPlans, searchPlans } from '../../services/planService/Plan.utils'\nimport { useHeaderExpandedState } from '../../components/Header/PlansHeader/useExpandedState'\nimport { BackButtonLink } from '../../components/Header/BackButton'\nimport { useNavigateToPlan } from '../../utils/hooks/useNavigateToPlan'\nimport { chevronUp } from 'ionicons/icons'\nimport { usePlansFilterState } from '../plans/usePlansFilterState'\nimport shallow from 'zustand/shallow'\nimport useFiltersStore from '../../store/standalone/filters-store/filters-store'\nimport { ResetMargin } from '../../utils/styles/MarginUtils.styles'\nimport { SortingOption } from '../../components/Header/PlansHeader/SortingOption'\n\ninterface NoSavedPlansProps {\n className?: string\n}\n\nexport function NoSavedPlansBanner() {\n return (\n
    \n
    \n No saved plans\n
    \n
    \n

    No saved plans

    \n

    Your favorited plans will show up here.

    \n
    \n
    \n )\n}\n\nconst NoSavedPlans = ({ className }: NoSavedPlansProps) => {\n return (\n
    \n \n \n
    \n )\n}\n\nconst SavedPlans = () => {\n const isMobile = useIsMobileSize()\n\n const [favoritePlanIds, compareSelection] = useBoundStore(\n (state) => [state.favoritePlanIds, state.compareSelection],\n shallow\n )\n const { loading: isLoadingFavoritePlans, data: favoritePlansData } = useGetPlansInfo(favoritePlanIds)\n\n const noSavedPlans = favoritePlansData.length === 0\n\n const headerSwiperRef = React.useRef(null)\n const virtuosoRef = React.createRef()\n const contentRef = React.useRef(null)\n\n const { headerState, handleMove, setHeaderState } = useHeaderExpandedState()\n const [isOnTop, setIsOnTop] = React.useState(true)\n\n const { search, setSearch } = usePlansFilterState()\n\n const nLinesFilter = useFiltersStore((state) => state.numLines) || 1\n const setNLinesFilter = React.useCallback((numLines: number) => {\n useFiltersStore.setState({ numLines })\n }, [])\n\n const [sortSavedPlans, setSortSavedPlans] = React.useState<{ [key: number]: SortingOption }>({\n 0: SortingOption.Featured\n })\n\n const [showCompare, setShowCompare] = React.useState(compareSelection.size > 0)\n\n const handleScrollToTop = () => {\n const virtuoso = virtuosoRef.current\n if (virtuoso) {\n virtuoso.scrollToIndex({ index: 0, align: 'start', behavior: 'smooth' })\n handleMove('up')\n }\n }\n\n const handleReachTop = () => {\n setIsOnTop(true)\n }\n\n React.useEffect(() => {\n if (!isLoadingFavoritePlans && favoritePlansData.length === 0) {\n setHeaderState(PlansHeaderStates.ONLY_TABS)\n }\n }, [favoritePlansData, isLoadingFavoritePlans, setHeaderState])\n\n const filteredAndSortedPlans = React.useMemo(() => {\n if (!favoritePlansData || !favoritePlansData.length) return []\n\n let filteredPlans = [...favoritePlansData]\n\n if (filterPlans.length) {\n filteredPlans = searchPlans(filteredPlans, search)\n sortPlans(filteredPlans, sortSavedPlans[0])\n filteredPlans = filterPlans(filteredPlans, { nLinesFilter })\n }\n\n return filteredPlans\n }, [favoritePlansData, nLinesFilter, search, sortSavedPlans])\n\n const { navigateToPlan, planScrollIdx } = useNavigateToPlan()\n\n return (\n <>\n \n {}}\n expandedState={headerState}\n isOnTop={isOnTop}\n search={search}\n onSearch={(search) => {\n setSearch(search)\n }}\n sortByPerTab={sortSavedPlans || {}}\n onSort={(sortBy, tab) => {\n setSortSavedPlans({ ...sortSavedPlans, [tab]: sortBy })\n }}\n nLinesFilter={nLinesFilter}\n onFilter={setNLinesFilter}\n >\n {isMobile && (\n
    \n \n
    \n )}\n \n\n \n {!noSavedPlans || isLoadingFavoritePlans ? (\n \n ) : (\n \n )}\n \n
    \n {!noSavedPlans && (\n <>\n setShowCompare(!showCompare)}\n >\n \n \n \n \n {showCompare ? : }\n \n )}\n
    \n \n )\n}\n\nexport default SavedPlans\n","import { RECOMMENDED_TAB } from './pages/plans/tabs/PlanTab'\n\nexport const RoutePaths = {\n carrierSelector: '/carrier-selector',\n currentPlan: '/current-plan',\n otherQuestions: '/other-questions',\n addresses: '/addresses',\n addressBook: '/address-book',\n forgotPassword: '/forgot-password',\n resetPassword: '/reset-password',\n confirmationCode: '/confirmation-code',\n accountCreated: '/account-created',\n qrcodeRedirect: '/qrcode-redirect',\n reasonsForSwitch: '/reasons-for-switch',\n onboarding: '/onboarding',\n planSwipe: '/plan-swipe',\n compare: '/compare',\n planSwipeTransition: '/plan-swipe/transition',\n planFinder: '/plan-finder',\n root: '/'\n}\n\nexport const EmbeddedPaths = {\n trendingPromotions: '/embed/trending-promotions',\n topPickPlans: '/embed/plans'\n}\n\nexport const MainNavigationPaths = {\n home: '/home',\n meter: '/meter',\n plans: '/plans',\n recommendedPlans: '/plans/' + RECOMMENDED_TAB,\n map: '/map',\n signIn: '/sign-in',\n createAccount: '/create-account',\n results: '/addresses/results',\n profile: '/profile',\n deals: '/promotions',\n root: '/'\n}\n\nexport const ProfilePaths = {\n savedPlans: '/saved-plans',\n addressBook: '/address-book',\n about: '/about'\n}\n","export enum AFConstants {\n onConversionDataSuccess = 'onConversionDataSuccess',\n onConversionDataFail = 'onConversionDataFail',\n onAppOpenAttribution = 'onAppOpenAttribution',\n onAttributionFailure = 'onAttributionFailure',\n CONVERSION_CALLBACK = 'conversion_callback',\n OAOA_CALLBACK = 'oaoa_callback',\n UDL_CALLBACK = 'udl_callback',\n}\n\n","export interface AFInit{\n devKey: string;\n appID: string;\n isDebug?: boolean;\n waitForATTUserAuthorization?: number;\n registerConversionListener?: boolean;\n registerOnAppOpenAttribution?: boolean;\n registerOnDeepLink?: boolean;\n useUninstallSandbox?: boolean;\n useReceiptValidationSandbox?: boolean;\n minTimeBetweenSessions?: number\n deepLinkTimeout?: number\n manualStart?: boolean;\n}\n\nexport interface AFEvent{\n eventName?: string;\n eventValue?: any;\n}\n\nexport interface OnConversionDataResult{\n callbackName:string;\n errorMessage?: string;\n data?: any;\n}\n\nexport interface OnAppOpenAttribution{\n callbackName:string;\n errorMessage?: string;\n data?: any;\n}\nexport interface OnDeepLink{\n status:string;\n error?:string;\n deepLink?:any;\n}\nexport interface StringMap { [key: string]: string; }\n\nexport interface AFLinkGenerator{\n brandDomain?: string;\n campaign?: string;\n channel? : string;\n referrerName? : string;\n referrerImageURL? : string;\n referrerCustomerId? : string;\n baseDeeplink? : string; //af_dp\n addParameters? : StringMap;\n}\n\nexport interface AFInAppPurchase{\n currency: string;\n additionalParameters?:StringMap;\n}\n\nexport interface AFAndroidInAppPurchase extends AFInAppPurchase{\n publicKey: string;\n signature: string;\n purchaseData: string;\n price:string\n}\n\nexport interface AFIosInAppPurchase extends AFInAppPurchase{\n inAppPurchase: string;\n price: string;\n transactionId: string;\n}\n\nexport interface AFPromotion {\n appID:string,\n campaign:string,\n parameters:StringMap,\n}\n\nexport interface AFLatLng{\n latitude: number,\n longitude: number\n}\nexport interface AFPartnerData{\n data: any,\n partnerId: string\n}\nexport interface AFLogInvite{\n eventParameters: StringMap,\n channel: string\n}\nexport interface AFLink {link:string}\nexport interface AFRes {res:string}\nexport interface AFUninstall {token: string}\nexport interface AFUid {uid: string}\nexport interface AFCurrency {currencyCode: string}\nexport interface AFCuid {cuid: string}\nexport interface AFAnonymizeUser {anonymizeUser: boolean}\nexport interface AFOnelinkID {onelinkID: string}\nexport interface AFOnelinkDomain {domains: string[]}\nexport interface AFUrls {urls: string[]}\nexport interface AFPath {path: string[]}\nexport interface AFEmails {emails: string[],\n encode?: boolean}\nexport interface AFStop {stop: boolean}\nexport interface AFIsStopped {isStopped: boolean}\nexport interface AFFilters{filters: string[]}\nexport interface AFData{additionalData: any}\nexport interface AFDisable{shouldDisable: boolean}\nexport interface AFFbDAL{enableFacebookDAL: boolean}\nexport interface AFPushPayload{pushPayload: StringMap}\nexport interface AFLanguage{language: string}\nexport interface AFPhone{phone: string}\nexport interface AFHost{hostPrefixName: string;\n hostName: string;\n}\nexport interface AFAppendToDeepLink{contains: string;\n parameters: StringMap;\n}\n\nexport interface AFEnableTCFDataCollection { shouldEnableTCFDataCollection: boolean }\n\nexport interface IAppsFlyerConsent {\n isUserSubjectToGDPR: boolean,\n hasConsentForDataUsage?: boolean,\n hasConsentForAdsPersonalization?: boolean\n}\n\nclass AppsFlyerConsentClass implements IAppsFlyerConsent {\n public isUserSubjectToGDPR: boolean;\n public hasConsentForDataUsage?: boolean;\n public hasConsentForAdsPersonalization?: boolean;\n\n private constructor(isUserSubjectToGDPR: boolean, hasConsentForDataUsage?: boolean, hasConsentForAdsPersonalization?: boolean) {\n this.isUserSubjectToGDPR = isUserSubjectToGDPR;\n this.hasConsentForDataUsage = hasConsentForDataUsage;\n this.hasConsentForAdsPersonalization = hasConsentForAdsPersonalization;\n }\n\n static forGDPRUser(hasConsentForDataUsage: boolean, hasConsentForAdsPersonalization: boolean): IAppsFlyerConsent {\n return new AppsFlyerConsentClass(true, hasConsentForDataUsage, hasConsentForAdsPersonalization);\n }\n\n static forNonGDPRUser(): IAppsFlyerConsent {\n return new AppsFlyerConsentClass(false);\n }\n}\n\nexport const AppsFlyerConsent = {\n forGDPRUser: AppsFlyerConsentClass.forGDPRUser,\n forNonGDPRUser: AppsFlyerConsentClass.forNonGDPRUser\n};\n\nexport interface AFConsentData {\n data: IAppsFlyerConsent\n}\n","import { registerPlugin } from '@capacitor/core';\n\nimport type { AppsFlyerPlugin } from './definitions';\nconst AppsFlyer = registerPlugin('AppsFlyerPlugin', {\n});\n\nexport * from './definitions';\nexport * from './Appsflyer_constants';\nexport * from './appsflyer_interfaces';\nexport { AppsFlyer };\n","import { isPlatform } from '@ionic/core'\nimport { AFEvent, AppsFlyer } from 'appsflyer-capacitor-plugin'\nimport { Logger } from '../utils/Logger'\n\nlet didInit = false\nexport function trackAppsFlyerEvent(event: AFEvent) {\n if (didInit) {\n AppsFlyer.logEvent(event)\n }\n}\n\nfunction initSdk() {\n if (!process.env.REACT_APP_APPSFLYER_KEY) {\n Logger.warn('AppsFlyer key not found')\n return\n }\n\n const APPSTORE_ID = '6471450350'\n const ANDROID_ID = 'com.gojimobile.app'\n\n if (isPlatform('mobileweb') || isPlatform('desktop')) {\n return\n }\n\n AppsFlyer.initSDK({\n appID: isPlatform('ios') ? APPSTORE_ID : ANDROID_ID, // replace with your app ID.\n devKey: process.env.REACT_APP_APPSFLYER_KEY, // replace with your dev key.\n isDebug: true,\n waitForATTUserAuthorization: 60, // for iOS 14 and higher\n // minTimeBetweenSessions: 6, // default 5 sec\n registerOnDeepLink: false,\n registerConversionListener: true,\n registerOnAppOpenAttribution: false,\n useReceiptValidationSandbox: true, // iOS only\n useUninstallSandbox: true // iOS only\n })\n .then((res) => {\n Logger.debug('AppsFlyer.initSDK', res)\n didInit = true\n })\n .catch((error) => {\n Logger.error('AppsFlyer.initSDK error', error)\n })\n}\n\nexport async function initAppsFlyer() {\n initSdk()\n}\n","import { QueryClient } from 'react-query'\n\nexport const queryClient = new QueryClient()\n","import { createBrowserHistory } from 'history'\n\nconst defaultHistory = createBrowserHistory()\n\nexport default defaultHistory\n","export const defaultCarriers = [\n {\n name: 'AT&T',\n logo_url: '/assets/images/carriers/att.svg'\n },\n {\n name: 'T-Mobile',\n logo_url: '/assets/images/carriers/t-mobile.svg'\n },\n {\n name: 'U.S. Cellular',\n logo_url: '/assets/images/carriers/us-cellular.svg'\n },\n {\n name: 'Verizon',\n logo_url: '/assets/images/carriers/verizon.svg'\n }\n]\n","import { useQuery, UseQueryOptions, UseQueryResult } from 'react-query'\nimport shallow from 'zustand/shallow'\nimport API from '../api'\nimport { GeoJsonRecord } from '../components/CoverageMap/Geodata.service'\nimport { useBoundStore } from '../store'\nimport { Carrier, CarrierApiResult, CarrierPerformance } from '../store/carrierSelector'\nimport { defaultCarriers } from './Carrier.const'\nimport { queryClient } from '../queryClient'\nimport { getNetworkTypeId, NetworkTypeValue } from './NetworkType.service'\nimport { excludeCarriersFromOtherRegions, useAddressesStates } from '../utils/hooks/useGetRegionFilter'\nimport { Address } from '../store/address'\nimport { Plan } from './planService/Plan'\nimport { getNetworkPerformanceAverages } from './planService/Plan.service'\nimport { getCarrierLogoUrl } from './carrier/get-logo-url'\n\nexport const CarrierService = {\n get: {\n pointSignals: async (options: {\n addresses: Address[]\n technology?: NetworkTypeValue\n }): Promise => {\n const { addresses, technology } = options\n\n if (!addresses.length) {\n return []\n }\n\n const points = addresses.map((address) => {\n return {\n lat: address.latitude,\n lon: address.longitude\n }\n })\n\n const hasTechnology = technology !== undefined\n const backendTechnology = hasTechnology ? getNetworkTypeId(technology) : undefined\n\n const networkTypeQueryStr = hasTechnology ? `&networkTypeId=${backendTechnology}` : ''\n\n const bestCarriers = await API.get('/fcc/point_signals?points=' + JSON.stringify(points) + networkTypeQueryStr)\n\n return bestCarriers as GeoJsonRecord[]\n },\n /**\n * Get carrier by id. If the all-carriers query is already in the cache, it will use that data to find the carrier.\n * Otherwise, it will make a request to the API to get the carrier.\n */\n carrier: async (carrierId: string) => {\n const allCarriersCached = queryClient.getQueryData('all-carriers')\n if (allCarriersCached) {\n const carrier = allCarriersCached.find((c) => c.id === carrierId)\n if (carrier) {\n return carrier\n }\n }\n\n const allCarriers = await CarrierService.get.allCarriers()\n const carrier = allCarriers.find((c) => c.id === carrierId)\n return carrier\n },\n allCarriers: async () => {\n const carriersRes = (await API.get('/carriers/all')) as CarrierApiResult[]\n return carriersRes.map((carrier) => {\n const logo_url = carrier.logo_name ? getCarrierLogoUrl(carrier.logo_name) : undefined\n return {\n ...carrier,\n logo_url: logo_url\n } as Carrier\n })\n }\n }\n}\n\nexport const UseCarrier = {\n useAvailableInMyRegion: (carriersQuery: UseQueryResult) => {\n const [addresses] = useBoundStore((state) => [state.addresses], shallow)\n const statesQuery = useAddressesStates(addresses)\n\n const carriers = carriersQuery.data\n\n return useQuery({\n queryKey: ['available-in-my-region', carriers],\n enabled: !!carriersQuery.data && !!statesQuery.data,\n staleTime: Infinity,\n queryFn: () => {\n return excludeCarriersFromOtherRegions(carriersQuery.data!, statesQuery.data!)\n }\n })\n },\n usePointSignals: ({\n addresses: addressesParam,\n technology\n }: { addresses?: Address[]; technology?: NetworkTypeValue } = {}) => {\n const storeAddresses = useBoundStore((state) => state.addresses, shallow)\n const addresses = addressesParam || storeAddresses\n\n const queryKey = ['best-carriers/' + addresses.map((a) => `(${a.latitude}, ${a.longitude})`).join(',') + technology]\n return useQuery({\n queryKey,\n staleTime: Infinity,\n queryFn: async () => {\n if (!addresses.length) {\n return []\n }\n\n const pointSignals = await CarrierService.get.pointSignals({\n addresses,\n technology\n })\n if (pointSignals.every((carrierRecord) => carrierRecord.properties.network_type_id === 0)) {\n return []\n }\n return pointSignals\n }\n })\n },\n useBestCarrierWithPerformance: ({\n addresses,\n technology\n }: {\n addresses?: Address[]\n technology: NetworkTypeValue\n }) => {\n const bestCarriers = UseCarrier.useBestCarriers({ addresses, technology })\n\n return UseCarrier.useCarrierWithPerformance({ carrierId: bestCarriers.data?.[0]?.carrierId, addresses, technology })\n },\n\n useBestCarriers: (attrs?: { addresses?: Address[]; technology?: NetworkTypeValue }) => {\n const { addresses, technology } = attrs || {}\n\n const bestCarrierForTechnologyQuery = useQuery({\n queryKey: ['best-carrier-for-technology', addresses, technology],\n queryFn: async () => {\n const queryStr = technology ? `?networkTypeId=${getNetworkTypeId(technology)}` : ''\n\n const bestCarriers = await API.post(\n '/carriers/best-carriers/weighted-by-location' + queryStr,\n (addresses ?? []).map((addr) => ({ lat: addr.latitude, lon: addr.longitude, label: addr.labelType }))\n )\n\n return bestCarriers\n }\n })\n\n return bestCarrierForTechnologyQuery\n },\n\n useAllCarriers: (options?: UseQueryOptions) => {\n return useQuery({\n queryKey: ['all-carriers'],\n staleTime: Infinity,\n queryFn: () => CarrierService.get.allCarriers(),\n ...(options ?? {})\n })\n },\n useCarriersWithRecords: () => {\n const allCarriers = UseCarrier.useAllCarriers()\n\n return useQuery({\n queryKey: 'carrier-with-records',\n enabled: allCarriers.isFetched,\n staleTime: Infinity,\n queryFn: () => {\n if (!allCarriers.data) {\n return []\n }\n return allCarriers.data.filter((carrier) => carrier.has_data)\n }\n })\n },\n useCarrier: (carrierId: string | undefined) => {\n const carriersQuery = UseCarrier.useAllCarriers()\n\n return useQuery({\n queryKey: ['carrier', carrierId],\n enabled: !!carrierId && carriersQuery.isFetched,\n staleTime: Infinity,\n queryFn: () => {\n return carriersQuery.data?.find((c) => c.id === carrierId)\n }\n })\n },\n useCarrierWithPerformance: ({\n carrierId,\n addresses,\n technology\n }: {\n carrierId: string | undefined\n addresses?: Address[]\n technology: NetworkTypeValue\n }) => {\n const currentCarrier = UseCarrier.useCarrier(carrierId)\n const bestCarriers = UseCarrier.usePointSignals({ addresses, technology })\n\n return useQuery({\n queryKey: ['carrier-performance', carrierId, addresses, technology],\n enabled: currentCarrier.isFetched && bestCarriers.isFetched,\n staleTime: Infinity,\n queryFn: () => {\n if (currentCarrier.error) {\n throw currentCarrier.error\n }\n if (bestCarriers.error) {\n throw bestCarriers.error\n }\n\n const networkOperators = currentCarrier.data?.network_operators\n\n if (!bestCarriers.data || !networkOperators) {\n return\n }\n const filteredCarriers = bestCarriers.data.filter((carrier) =>\n networkOperators.includes(carrier.properties.carrier_id)\n )\n\n return {\n carrier: currentCarrier.data,\n networkPerformance: getNetworkPerformanceAverages(filteredCarriers)\n }\n }\n })\n },\n useCarriersWithPerformance: ({ carrierIds, addresses }: { carrierIds: string[]; addresses?: Address[] }) => {\n const carriersQuery = UseCarrier.useAllCarriers()\n const bestCarriers = UseCarrier.usePointSignals({ addresses })\n\n return useQuery({\n queryKey: ['carriers-performance', carrierIds, addresses],\n enabled: carriersQuery.isFetched && bestCarriers.isFetched,\n staleTime: Infinity,\n queryFn: () => {\n if (carriersQuery.error) {\n throw carriersQuery.error\n }\n if (bestCarriers.error) {\n throw bestCarriers.error\n }\n\n const carriers = carriersQuery.data?.filter((c) => carrierIds.includes(c.id))\n return carriers?.map((carrier) => {\n const networkOperators = carrier.network_operators\n if (!networkOperators) {\n return {\n carrier,\n networkPerformance: undefined,\n noData: true,\n noCoverage: false\n }\n }\n\n const filteredCarriers = bestCarriers.data?.filter((bestCarrier) =>\n networkOperators.includes(bestCarrier.properties.carrier_id)\n )\n\n const networkPerformance = filteredCarriers?.length\n ? getNetworkPerformanceAverages(filteredCarriers)\n : undefined\n\n return {\n carrier,\n networkPerformance,\n noData: filteredCarriers?.length === 0,\n noCoverage: networkPerformance?.average4GPerformance === 0 && networkPerformance?.average5GPerformance === 0\n }\n })\n }\n })\n },\n useCarriersSplit: (carriersQuery: UseQueryResult) => {\n const allCarriers = UseCarrier.useAllCarriers()\n const bestCarriers = UseCarrier.useBestCarriers()\n const bestCarrierId = bestCarriers.data?.[0]?.carrierId\n\n return useQuery({\n queryKey: ['default-carriers', carriersQuery.dataUpdatedAt],\n enabled: !allCarriers.isLoading && !bestCarriers.isLoading && !!carriersQuery.data,\n staleTime: Infinity,\n queryFn: () => {\n const { defaultCarriersResult, otherCarriersResult } = splitDefaultCarriers(carriersQuery.data!)\n moveBestToDefaultCarriers(otherCarriersResult, defaultCarriersResult, bestCarrierId)\n\n return { defaultCarriers: defaultCarriersResult, otherCarriers: otherCarriersResult }\n }\n })\n },\n useBestCarrierOperatorId: (\n { carrierId, addresses }: { carrierId?: string; addresses: Address[] } = { addresses: [] }\n ) => {\n const currentCarrier = UseCarrier.useCarrier(carrierId)\n const bestCarriers = UseCarrier.useBestCarriers({ addresses })\n const carrierOperators = currentCarrier.data?.network_operators\n\n if (!carrierOperators?.length) {\n return carrierId\n } else if (carrierOperators.length === 1) {\n return carrierOperators[0]\n }\n\n const sortedCarriers = bestCarriers.data?.sort((a, b) => (b.networkPerformance || 0) - (a.networkPerformance || 0))\n\n const bestCarrier = sortedCarriers?.find((carrier) => carrierOperators.includes(carrier.carrierId))\n const operator = bestCarrier?.carrierId ?? carrierOperators[0] ?? carrierId\n return operator\n }\n}\n\nexport function useSupportedCarriers() {\n const supportedCarriers = UseCarrier.useCarriersWithRecords()\n const isPlanCarrierSupported = (plan: Pick) => {\n if (!supportedCarriers.data) {\n return false\n }\n if (plan.networkPerformance4G !== undefined) {\n return true\n }\n return supportedCarriers.data.some((carrier) => plan.networkOperators?.includes(carrier.id))\n }\n\n return { supportedCarriers, isPlanCarrierSupported }\n}\n\nfunction moveBestToDefaultCarriers(\n otherCarriers: Carrier[],\n defaultCarriers: Carrier[],\n bestCarrierId: string | undefined\n) {\n const otherIndex = otherCarriers.findIndex((carrier) => carrier.id === bestCarrierId)\n const carrierFound = otherCarriers[otherIndex]\n if (otherIndex !== -1) {\n otherCarriers.splice(otherIndex, 1)\n defaultCarriers.push(carrierFound)\n }\n}\n\nfunction splitDefaultCarriers(carriers: Carrier[]) {\n const defaultCarriersResult: Carrier[] = []\n const otherCarriersResult: Carrier[] = []\n\n for (const carrier of carriers) {\n const newCarrier = defaultCarriers.find((c) => c.name === carrier.name)\n if (newCarrier) {\n defaultCarriersResult.push({\n ...newCarrier,\n id: carrier.id,\n amplitude_name: carrier.amplitude_name,\n has_data: carrier.has_data\n })\n } else {\n otherCarriersResult.push(carrier)\n }\n }\n\n return { defaultCarriersResult, otherCarriersResult }\n}\n","import { useQuery } from 'react-query'\nimport API from '../api'\nimport { queryClient } from '../queryClient'\n\nexport interface NetworkMeterRecordBody {\n latitude: number | null\n longitude: number | null\n placeId: string\n address: string\n connectionType: string\n downloadSpeedMbps: number\n uploadSpeedMbps: number\n latencyMs: number\n jitterMs: number\n uploadedLatencyMs: number\n uploadedJitterMs: number\n downloadedLatencyMs: number\n downloadedJitterMs: number\n packetLossPercentage: number\n streamingScorePoints: number\n gamingScorePoints: number\n rtcScorePoints: number\n streamingScore: string\n gamingScore: string\n rtcScore: string\n carrier: string\n device: string\n deviceInfo: {\n model: string\n platform: string\n isVirtual: boolean\n osVersion: string\n manufacturer: string\n operatingSystem: string\n }\n server: string\n}\n\nexport interface NetworkMeterRecord extends NetworkMeterRecordBody {\n id: string\n capturedOn: string\n ipAddress: string\n}\n\nexport const NetworkMeterService = {\n getNetworkMeterRecords: async (): Promise => {\n return await API.get('/meter-history')\n },\n addNetworkMeterRecord: async (record: NetworkMeterRecordBody) => {\n const response = await API.post('/meter-history', { ...record })\n queryClient.invalidateQueries('network-meter-records')\n return response\n },\n deleteNetworkMeterRecord: async (id: string): Promise => {\n const response = await API.delete(`/meter-history/${id}`)\n queryClient.invalidateQueries('network-meter-records')\n return response\n }\n}\n\nexport const useNetworkMeterRecords = {\n useNetworkMeterRecords: () => {\n return useQuery({\n queryKey: 'network-meter-records',\n async queryFn() {\n return await NetworkMeterService.getNetworkMeterRecords()\n }\n })\n }\n}\n","export const NetworkType = {\n '4G': 0,\n '5G': 1\n} as const\n\nexport type ValueOf = T[keyof T]\n\nexport type INetworkType = typeof NetworkType\nexport type NetworkTypeValue = ValueOf\n\nexport const BackendNetworkTypes = {\n '2g': 1,\n '3g': 2,\n '4g': 3,\n '5g-sa': 4,\n '5g-nsa': 5\n}\n\nexport const getNetworkTypeId = (networkType: INetworkType[K]): number => {\n if (networkType === NetworkType['4G']) {\n return BackendNetworkTypes['4g']\n }\n\n // 5g\n return BackendNetworkTypes['5g-sa'] /*BackendNetworkTypes['5g-nsa']*/\n}\n","import useAuthStore from '../store/auth'\nimport API from '../api'\nimport { Logger } from '../utils/Logger'\n\nexport const RecentSearchService = {\n addRecentPlanSearch: async (search: string) => {\n if (search === '') return\n if (!useAuthStore.getState().currentUser) {\n Logger.debug('No user logged in, cannot add recent plan search')\n return\n }\n const recentPlans: string[] = await API.post('/profile/recent-plan-search', { planSearch: search })\n return recentPlans\n },\n\n addRecentAddressSearch: async (placeId: string) => {\n if (!placeId) return\n if (!useAuthStore.getState().currentUser) {\n Logger.debug('No user logged in, cannot add recent address search')\n return\n }\n\n const recentAddresses: string[] = await API.post('/profile/address-search-in-historical', { placeId })\n return recentAddresses\n }\n}\n","import API, { IApi } from '../../api'\nimport { Address } from '../../store/address'\nimport { BackendUser } from '../../types/BackendUser'\n\nexport class ProfileService {\n constructor(private api: IApi = API) {}\n\n static instance = new ProfileService()\n static get() {\n return ProfileService.instance\n }\n\n async getBackendUser() {\n return await this.api.get('/profile')\n }\n\n async getAddresses() {\n return await this.api.get('/profile/addresses')\n }\n}\n","export function getCarrierLogoUrl(carrierLogoName: string) {\n return `${process.env.REACT_APP_PUBLIC_ASSETS_S3_BUCKET_URL}/carrier-logos/${carrierLogoName}`\n}\n\nexport function getDealBannerUrl(bannerName: string) {\n return `${process.env.REACT_APP_PUBLIC_ASSETS_S3_BUCKET_URL}/${bannerName}`\n}\n","import API from '../../api'\nimport { updateChatCache } from '../../pages/llm/hooks/useChatStorage'\nimport { IChatFlow } from '../../pages/llm/types/ChatStep'\nimport { PredefinedChatStorage } from '../../pages/llm/types/ChatStorageSource'\nimport DefaultSourceSets from '../../pages/llm/utils/source-sets'\n\nexport class ChatSourceService {\n constructor(public sourceSets = DefaultSourceSets) {}\n async uploadFromLocalStorageToApi() {\n const promises = this.sourceSets.map(async (sourceSet) => {\n const localData = await sourceSet.localSource.getStorage()\n\n if (!localData) {\n return\n }\n\n await sourceSet.remoteSource.setStorage(localData)\n updateChatCache(localData)\n })\n await Promise.all(promises)\n }\n\n async removeLocalData() {\n const promises = this.sourceSets.map(async (sourceSet) => {\n await sourceSet.localSource.setStorage(undefined)\n })\n await Promise.all(promises)\n }\n}\n\nexport const chatSourceService = new ChatSourceService()\n\nexport class ChatService {\n async uploadChatStorage(chatStorage: PredefinedChatStorage) {\n await API.put('/profile/chat-state', chatStorage)\n }\n}\n\nconst chatService = new ChatService()\n\nexport default chatService\n","export type ComparedPlan = {\n price: number\n network_performance: number\n telcoType: 'MNO' | 'MVNO' | 'UNKNOWN'\n premium_data: number\n data: number\n}\n\nconst PRICE_WEIGHT = 0.4\nconst NETWORK_PERFORMANCE_WEIGHT = 1\nconst PREMIUM_DATA_WEIGHT = 0.2\n\nexport function compareMNO(planA: ComparedPlan, planB: ComparedPlan) {\n if (planA.telcoType === 'MVNO' && planB.telcoType === 'MNO') {\n return 1\n }\n if (planA.telcoType === 'MNO' && planB.telcoType === 'MVNO') {\n return -1\n }\n\n return 0\n}\n\nexport function planCompare(planA: ComparedPlan, planB: ComparedPlan): number {\n function calculateScore(plan: number, otherPlan: number, weight: number): number {\n if (plan > otherPlan) {\n const differencePercentage = (plan - otherPlan) / plan\n return differencePercentage * weight\n }\n return 0\n }\n\n function calculatePremiumDataScore(\n planAAllowance: number,\n planBAllowance: number,\n planAUnlimited: boolean,\n planBUnlimited: boolean\n ): number {\n if (planAUnlimited && !planBAllowance) {\n return PREMIUM_DATA_WEIGHT\n } else if (!planAUnlimited && planAAllowance && planBAllowance && !planBUnlimited) {\n if (planAAllowance > planBAllowance) {\n const differencePercentage = (planAAllowance - planBAllowance) / planAAllowance\n return differencePercentage * PREMIUM_DATA_WEIGHT\n }\n }\n return 0\n }\n\n const mnoBoost = compareMNO(planA, planB)\n if (mnoBoost === -1 || mnoBoost === 1) {\n return mnoBoost\n }\n\n let planAScore = 0\n let planBScore = 0\n\n const planAPrice = planA.price\n const planBPrice = planB.price\n planAScore -= calculateScore(planAPrice, planBPrice, PRICE_WEIGHT)\n planBScore -= calculateScore(planBPrice, planAPrice, PRICE_WEIGHT)\n\n const planANetworkPerformance = planA.network_performance\n const planBNetworkPerformance = planB.network_performance\n planAScore += calculateScore(planANetworkPerformance, planBNetworkPerformance, NETWORK_PERFORMANCE_WEIGHT)\n planBScore += calculateScore(planBNetworkPerformance, planANetworkPerformance, NETWORK_PERFORMANCE_WEIGHT)\n\n planAScore += calculatePremiumDataScore(planA.premium_data, planB.premium_data, false, false)\n planBScore += calculatePremiumDataScore(planB.premium_data, planA.premium_data, false, false)\n\n const planADataUnlimited = planA.data === 1e18\n const planBDataUnlimited = planB.data === 1e18\n planAScore += calculatePremiumDataScore(planA.data, planB.data, planADataUnlimited, planBDataUnlimited)\n planBScore += calculatePremiumDataScore(planB.data, planA.data, planBDataUnlimited, planADataUnlimited)\n\n if (planAScore < planBScore) {\n return 1\n } else if (planAScore > planBScore) {\n return -1\n }\n return 0\n}\n","import { PlanDeal } from '../../pages/deals/deal.service'\n\nexport interface Plan {\n planId: string\n carrierId: string\n carrierName: string\n totogiCarrierName: string\n planName: string\n shortPlanName: string\n planLink: string\n price: number\n priceCurrency: string\n priceMultiLine: string\n telcoType: 'MNO' | 'MVNO' | 'UNKNOWN'\n data?: number\n sms?: number\n voice?: number\n hotspotDataLimit?: number\n hotspotDataLimitUnits?: string\n isHotspotUnlimited?: boolean\n video_streaming_quality: string\n noCoverage?: boolean\n networkPerformance5G?: number\n networkPerformance4G?: number\n networkOperators?: string[]\n costPerLineScore?: number\n dataAllowanceScore?: number\n popularityScore?: number\n perksScore?: number\n telcoTypeScore?: number\n nsc4gScore?: number\n nsc5gScore?: number\n overall4gScore?: number\n overall5gScore?: number\n overallScore?: number\n costPerLine: number\n numLines?: number\n isDataUnlimited?: boolean\n isCarrierSupported?: boolean\n addons: Addon[]\n streamingServices?: StreamingServiceResponse[]\n roamingCountries?: string[]\n premiumData?: number\n premiumDataUnits?: string\n isPremiumDataUnlimited?: boolean\n affiliateLink?: string\n contractType?: PlanResponse['contractType']\n contractMonthLength?: PlanResponse['contractMonthLength']\n deals: PlanDeal[]\n}\n\nexport type TopPickPlan = Plan & {\n sortOrder: number\n}\n\nexport interface PlanResponse {\n id: string\n name?: string\n carrierId?: string\n carrierName?: string\n totogiCarrierName?: string\n shortPlanName?: string\n contractType?: string\n contractMonthLength?: number\n status?: string\n supportedNetworkTypes?: string[]\n planDataType?: string\n dataLimit?: number\n dataLimitUnits?: string\n isDataUnlimited?: boolean\n voiceMinutesBottom?: number\n voiceMinutesTop?: number\n isVoiceUnlimited?: boolean\n smsAllowanceBottom?: number\n smsAllowanceTop?: number\n isSmsUnlimited?: boolean\n planLink?: string\n hotspotDataLimit?: number\n hotspotDataLimitUnits?: string\n isHotspotUnlimited?: boolean\n monthlyPrice?: number\n priceCurrency?: string\n telcoType?: 'MNO' | 'MVNO'\n networkOperators?: string[]\n costPerLineScore?: number\n dataAllowanceScore?: number\n popularityScore?: number\n perksScore?: number\n telcoTypeScore?: number\n overallScore?: number\n costPerLine: number\n numLines?: number\n isCarrierSupported?: boolean\n addons?: AddonResponse[]\n streamingServices?: StreamingServiceResponse[]\n roamingCountries?: string[]\n roaming: RoamingCountry[]\n premiumData?: number\n premiumDataUnits?: string\n isPremiumDataUnlimited?: boolean\n affiliateLink?: string\n deals: PlanDeal[]\n}\n\nexport type TopPickPlanResponse = PlanResponse & {\n sortOrder: number\n}\n\nexport interface RoamingCountry {\n country: string\n smsRoamingIncluded?: number\n isSmsRoamingIncludedUnlimited?: boolean\n voiceRoamingIncluded?: number\n voiceRoamingIncludedUnits?: string\n isVoiceRoamingIncludedUnlimited?: boolean\n dataRoamingIncluded?: number\n dataRoamingIncludedUnits?: string\n isDataRoamingIncludedUnlimited?: boolean\n}\n\nexport type AddonTypes =\n | 'Netflix'\n | 'Amazon'\n | 'Discovery+'\n | 'Apple Tv'\n | 'Apple Arcade'\n | 'Google Play'\n | 'Apple Music'\n | 'Disney+'\n | 'Paramount'\n | 'Hulu'\n | 'ESPN+'\n | 'HBO Max'\n\nexport interface Addon {\n id: AddonTypes\n carrierId: string\n monthlyPrice: number\n priceCurrency: string\n addonDescription: string\n contractLengthInMonths: string\n contractType?: number\n}\n\nexport interface AddonResponse {\n id: string\n carrierId: string\n monthlyPrice: number\n priceCurrency: string\n addonDescription: string\n contractLengthInMonths: string\n contractType?: number\n}\n\nexport interface StreamingServiceResponse {\n serviceName: string\n initialPeriod: number\n initialPeriodUnits: string\n marketValue: number\n marketValueCurrency: string\n}\n\nexport interface TopPick {\n id: number\n toolbarText: string\n imageAlt: string\n sideImageUrl: string\n order: number\n}\n\nexport type OnboardingState = 'show-onboarding' | 'onboard-plan-finder' | 'show-tooltip' | 'hide'\nexport type BestPlansState = {\n compareSelection: Set\n selectedPlanResult?: Plan\n onboardingState: OnboardingState\n}\n\nexport const UnlimitedDataPreference = {\n NO: 0,\n YES: 1,\n NO_PREFERENCE: 2\n}\n","import * as React from 'react'\nimport { UseQueryResult, useQuery } from 'react-query'\nimport shallow from 'zustand/shallow'\nimport { GeoJsonRecord } from '../../components/CoverageMap/Geodata.service'\nimport { useBoundStore, useGeneralStore } from '../../store'\nimport { Address } from '../../store/address'\nimport { UseCarrier } from '../Carrier.service'\nimport { ComparedPlan, planCompare } from './planCompare'\nimport API from '../../api'\nimport {\n AddonTypes,\n Plan,\n PlanResponse,\n TopPick,\n TopPickPlan,\n TopPickPlanResponse,\n UnlimitedDataPreference\n} from './Plan'\nimport { filterPlans, mapPlanResponseToPlan, mapTopPickPlanResponseToTopPickPlan, searchPlans } from './Plan.utils'\nimport { capFirstPlansNoRepeatCarrier, getRecommendedPlansV2, PlanPreferences } from './getRecommendedPlans'\nimport { Carrier } from '../../store/carrierSelector'\nimport { PlanNotFound } from '../../pages/current-plan/PlanNotFound'\nimport { useGetRegionFilter } from '../../utils/hooks/useGetRegionFilter'\nimport { ReasonForSwitch } from '../wizard/reason-for-switch'\nimport { DATA_UNLIMITED } from './Preferences'\nimport { useAutoChatStorage } from '../../pages/llm/hooks/useChatStorage'\nimport { getNetworkTypeId, NetworkType } from '../NetworkType.service'\nimport { filterPlansV3, PlanPreferencesV3 } from '../../store/standalone/filters-store/filter-plans'\nimport useFiltersStore from '../../store/standalone/filters-store/filters-store'\nimport { Logger } from '../../utils/Logger'\nimport { SortingOption } from '../../components/Header/PlansHeader/SortingOption'\n\nconst SORT_ORDER_DEFAULT = 100\n\nexport type PerformanceAverages = {\n average4GPerformance: number | undefined\n average5GPerformance: number | undefined\n}\nexport function getNetworkPerformanceAverages(records: GeoJsonRecord[]): PerformanceAverages {\n if (!records.length) {\n return {\n average4GPerformance: undefined,\n average5GPerformance: undefined\n }\n }\n\n const records4G = records.filter(\n (record) => record.properties.network_type_id === getNetworkTypeId(NetworkType['4G'])\n )\n const average4GPerformance = !!records4G.length\n ? records4G.reduce((acc, record) => acc + record.properties.network_performance, 0) / records4G.length\n : undefined\n const records5G = records.filter(\n (record) => record.properties.network_type_id === getNetworkTypeId(NetworkType['5G'])\n )\n const average5GPerformance = !!records5G.length\n ? records5G.reduce((acc, record) => acc + record.properties.network_performance, 0) / records5G.length\n : undefined\n return {\n average4GPerformance,\n average5GPerformance\n }\n}\n\nexport function enrichPlansWithPerformance(plans: Plan[], bestCarriers: GeoJsonRecord[], supportedCarriers: Carrier[]) {\n const carrierToNetworkQuality = new Map<\n string,\n { networkPerformance?: number; noCoverage?: boolean; average5GPerformance?: number; average4GPerformance?: number }\n >()\n\n const isPlanCarrierSupported = (plan: Plan) => {\n if (!supportedCarriers) {\n return false\n }\n if (plan.networkPerformance4G !== undefined) {\n return true\n }\n return supportedCarriers.some((carrier) => plan.networkOperators?.includes(carrier.id))\n }\n\n for (const plan of plans) {\n plan.isCarrierSupported = isPlanCarrierSupported(plan)\n }\n\n bestCarriers.forEach((record) => {\n if (carrierToNetworkQuality.has(record.properties.carrier_id)) {\n return\n }\n\n const allRecords = bestCarriers.filter((r) => r.properties.carrier_id === record.properties.carrier_id)\n\n if (allRecords.some((r) => r.properties.network_type_id === 0)) {\n carrierToNetworkQuality.set(record.properties.carrier_id, {\n noCoverage: true,\n average5GPerformance: 0,\n average4GPerformance: 0\n })\n return\n }\n\n carrierToNetworkQuality.set(record.properties.carrier_id, getNetworkPerformanceAverages(allRecords))\n })\n\n for (const plan of plans) {\n let networkQuality = carrierToNetworkQuality.get(plan.carrierId)\n\n if (!networkQuality && plan.networkOperators) {\n networkQuality = getBestMvnoNetworkPerformance(plan.networkOperators)\n networkQuality && carrierToNetworkQuality.set(plan.carrierId, networkQuality)\n }\n\n if (networkQuality) {\n plan.networkPerformance4G = networkQuality.average4GPerformance\n plan.networkPerformance5G = networkQuality.average5GPerformance\n } else {\n plan.networkPerformance4G = undefined\n plan.networkPerformance5G = undefined\n }\n }\n\n function getBestMvnoNetworkPerformance(networkOperators: string[]) {\n const networkQualities = networkOperators.map((operator) => carrierToNetworkQuality.get(operator))\n return networkQualities.sort((a, b) => ((a?.networkPerformance ?? 0) > (b?.networkPerformance ?? 0) ? -1 : 1))[0]\n }\n\n function toComparePlan(plan: Plan): ComparedPlan {\n return {\n data: plan.data || 0,\n network_performance: plan.networkPerformance4G || 0,\n price: plan.price,\n telcoType: plan.telcoType,\n premium_data: 0\n }\n }\n\n plans.sort((a, b) => planCompare(toComparePlan(a), toComparePlan(b)))\n\n return plans\n}\n\nexport function sortPlans(plans: Plan[], sortBy?: SortingOption) {\n if (!sortBy) {\n return\n }\n\n if (sortBy === SortingOption.Featured) {\n return plans.sort((a, b) =>\n (b.overallScore ?? 0) + (b.networkPerformance5G ?? 0) > (a.overallScore ?? 0) + (a.networkPerformance5G ?? 0)\n ? 1\n : -1\n )\n }\n\n if (sortBy === SortingOption.PriceLowToHigh) {\n plans.sort((a, b) => {\n if (a.price === b.price) {\n return 0\n }\n\n return a.price > b.price ? 1 : -1\n })\n return\n }\n\n if (sortBy === SortingOption.PriceHighToLow) {\n plans.sort((a, b) => {\n if (a.price === b.price) {\n return 0\n }\n\n return a.price > b.price ? -1 : 1\n })\n return\n }\n\n if (sortBy === SortingOption.Carrier) {\n plans.sort((a, b) => a.carrierName.localeCompare(b.carrierName))\n return\n }\n\n if (sortBy === SortingOption.NetworkPerformance) {\n plans.sort((a, b) => {\n const aPerf = Number(a.networkPerformance4G) || 0\n const bPerf = Number(b.networkPerformance4G) || 0\n if (aPerf === bPerf) {\n return 0\n }\n return aPerf < bPerf ? 1 : -1\n })\n return\n }\n\n if (sortBy === SortingOption.Popularity) {\n plans.sort((a, b) => {\n if ((a.popularityScore ?? 0) === (b.popularityScore ?? 0)) {\n return 0\n }\n\n return (a.popularityScore ?? 0) > (b.popularityScore ?? 0) ? -1 : 1\n })\n return\n }\n}\n\nexport function sortTopPickPlans(topPickPlans: TopPickPlan[], sortBy?: SortingOption) {\n if (sortBy === SortingOption.Featured) {\n return topPickPlans.sort((a, b) => {\n if ((a.sortOrder ?? SORT_ORDER_DEFAULT) === (b.sortOrder ?? SORT_ORDER_DEFAULT)) {\n return 0\n }\n\n return (a.sortOrder ?? SORT_ORDER_DEFAULT) > (b.sortOrder ?? SORT_ORDER_DEFAULT) ? 1 : -1\n })\n }\n\n return sortPlans(topPickPlans, sortBy)\n}\n\ninterface BestPlansPayload {\n addresses: Address[]\n limit: number\n offset: number\n fuzzy?: boolean\n sort?: string\n bestCarriers?: GeoJsonRecord[]\n preferences: PlanPreferences\n}\n\nexport interface FilterOptions {\n nLinesFilter?: number\n nPlansFilter?: number\n}\nexport interface PaginationResponse {\n count: number\n limit: number\n offset: number\n total: number\n}\n\nexport function useSetPreferences() {\n const [setTargetBudget, setUseUnlimitedDataPlan, setPhoneLinesNeeded, setReasonsForSwitch] = useBoundStore(\n (state) => [\n state.setTargetBudget,\n state.setUseUnlimitedDataPlan,\n state.setPhoneLinesNeeded,\n state.setReasonsForSwitch\n ],\n shallow\n )\n return React.useCallback(\n (preferences: PlanPreferences) => {\n // TODO: should be int\n preferences.maxPrice && setTargetBudget(preferences.maxPrice)\n\n // TODO: should be bool\n setUseUnlimitedDataPlan(\n preferences.minData === DATA_UNLIMITED ? UnlimitedDataPreference.YES : UnlimitedDataPreference.NO_PREFERENCE\n )\n\n preferences.numLines && setPhoneLinesNeeded(preferences.numLines)\n setReasonsForSwitch(preferences.reasonsForSwitch)\n },\n [setTargetBudget, setUseUnlimitedDataPlan, setPhoneLinesNeeded, setReasonsForSwitch]\n )\n}\n\nconst usePreferences = (): BestPlansPayload['preferences'] => {\n const [targetBudget, unlimitedDataPlan, phoneLinesNeeded, reasonsForSwitch] = useBoundStore(\n (state) => [state.targetBudget, state.useUnlimitedDataPlan, state.phoneLinesNeeded, state.reasonsForSwitch],\n shallow\n )\n\n const currentPlan = UsePlan.useUserPlan()\n const preferences: BestPlansPayload['preferences'] = React.useMemo(() => {\n const numBudget = Number(targetBudget) / 100\n return {\n minData: unlimitedDataPlan === UnlimitedDataPreference.YES ? DATA_UNLIMITED : undefined,\n maxPrice: reasonsForSwitch.includes(ReasonForSwitch.Cost)\n ? Math.max(numBudget ?? 0, currentPlan.data?.price ?? 0)\n : numBudget,\n numLines: phoneLinesNeeded,\n reasonsForSwitch\n }\n }, [targetBudget, unlimitedDataPlan, phoneLinesNeeded, reasonsForSwitch, currentPlan.data?.price])\n\n return preferences\n}\n\nexport const UsePlan = {\n useUserPlan: () => {\n const [currentPlanId] = useBoundStore((state) => [state.currentPlanId], shallow)\n const result = UsePlan.usePlan(currentPlanId)\n\n return result\n },\n\n usePlanWithPerf: (planId: string) => {\n const allPlans = UsePlan.usePlansWithPerf()\n\n const data = React.useMemo(() => {\n return allPlans.data?.find((plan) => plan.planId === planId)\n }, [allPlans, planId])\n\n return { data, isLoading: allPlans.isLoading }\n },\n\n usePlan: (planId?: string) => {\n const allPlans = UsePlan.useAllPlans()\n\n const usePlanQuery = useQuery({\n queryKey: ['plan-result', planId],\n staleTime: Infinity,\n enabled: allPlans.isFetched,\n queryFn: () => {\n if (planId === PlanNotFound.planId) {\n return PlanNotFound\n }\n\n return (allPlans.data ?? []).find((plan) => plan.planId === planId)\n }\n })\n\n return { ...usePlanQuery, isLoading: allPlans.isLoading || usePlanQuery.isLoading } as UseQueryResult<\n Plan | undefined,\n unknown\n >\n },\n useAllPlans({ skipRegionFilter = false } = {}) {\n const { data: statesFilter } = useGetRegionFilter(\n useGeneralStore((state) => state.addresses),\n skipRegionFilter\n )\n return useQuery({\n queryKey: ['allPlans', statesFilter],\n staleTime: Infinity,\n async queryFn() {\n const plans: PlanResponse[] = await API.get(`/plans/from-db?${statesFilter ?? ''}`)\n if (!Array.isArray(plans)) {\n const msg = 'Failed to fetch plans: plans is not an array ' + JSON.stringify(plans, null, 2)\n Logger.error(msg)\n throw new Error(msg)\n }\n return plans.map((plan: PlanResponse) => mapPlanResponseToPlan(plan))\n }\n })\n },\n useAllPlansControlled: ({\n sortBy,\n search,\n preferences\n }: {\n sortBy?: SortingOption\n search?: string\n preferences?: PlanPreferencesV3\n }) => {\n const plansQuery = UsePlan.usePlansWithPerf()\n const storeFilters = useFiltersStore((state) => state, shallow)\n const filters = preferences ?? storeFilters\n\n const controlledQuery = useQuery({\n queryKey: ['allPlansControlled', sortBy, search, filters, plansQuery.dataUpdatedAt],\n enabled: plansQuery.isFetched,\n staleTime: Infinity,\n cacheTime: 10 * 1000,\n queryFn() {\n const searchPlan = searchPlans(plansQuery.data!, search)\n sortPlans(searchPlan, sortBy)\n const filteredPlans = filterPlansV3(searchPlan, filters)\n return filteredPlans\n }\n })\n\n return { ...controlledQuery, isLoading: plansQuery.isLoading || controlledQuery.isLoading }\n },\n usePlansWithPerf() {\n const preferences = usePreferences()\n\n const { chatStorage } = useAutoChatStorage()\n\n const addresses = useBoundStore((state) => state.addresses, shallow)\n const latlng = addresses.map((addr) => {\n return `[${addr.latitude},${addr.longitude}]`\n })\n\n const bestCarriersQuery = UseCarrier.usePointSignals()\n const supportedCarriersQuery = UseCarrier.useCarriersWithRecords()\n const allPlansQuery = UsePlan.useAllPlans()\n const queryKey = ['usePlans/', preferences, chatStorage.data, latlng]\n\n const plansWithPerfQuery = useQuery({\n staleTime: Infinity,\n enabled: bestCarriersQuery.isFetched && allPlansQuery.isFetched && supportedCarriersQuery.isFetched,\n queryKey,\n async queryFn() {\n return enrichPlansWithPerformance(allPlansQuery.data!, bestCarriersQuery.data!, supportedCarriersQuery.data!)\n }\n })\n\n return {\n ...plansWithPerfQuery,\n isLoading: bestCarriersQuery.isLoading || allPlansQuery.isLoading || plansWithPerfQuery.isLoading\n } as UseQueryResult\n },\n useRecommendedPlans: () => {\n const [addresses] = useBoundStore((state) => [state.addresses], shallow)\n\n const currentPlanQuery = UsePlan.useUserPlan()\n const pointSignalsQuery = UseCarrier.usePointSignals()\n\n const latlng = addresses.map((addr) => {\n return `[${addr.latitude},${addr.longitude}]`\n })\n\n const preferences = usePreferences()\n const plansQuery = UsePlan.usePlansWithPerf()\n const { chatStorage, userPreferences: preferencesV2 } = useAutoChatStorage()\n\n const passedPlans = useGeneralStore((state) => state.passedPlans)\n\n const queryKey = [\n 'best-plans/',\n latlng.toString(),\n preferences,\n currentPlanQuery.data?.planId,\n chatStorage.data,\n passedPlans\n ]\n\n const recommendedPlansQuery = useQuery({\n queryKey,\n enabled: pointSignalsQuery.isFetched && plansQuery.isFetched && currentPlanQuery.isFetched && !!chatStorage.data,\n staleTime: Infinity,\n queryFn: async () => {\n return getRecommendedPlansV2(plansQuery.data!, preferencesV2, passedPlans)\n }\n })\n\n return {\n ...recommendedPlansQuery,\n isLoading:\n currentPlanQuery.isLoading ||\n pointSignalsQuery.isLoading ||\n plansQuery.isLoading ||\n recommendedPlansQuery.isLoading\n } as UseQueryResult\n },\n useRecommendedPlansControlled: ({\n sortBy,\n filters,\n search\n }: {\n sortBy?: SortingOption\n filters?: FilterOptions\n search?: string\n }) => {\n const recommendedPlansQuery = UsePlan.useRecommendedPlans()\n\n const controlledQuery = useQuery({\n queryKey: ['recommendedPlansControlled', sortBy, filters, search, recommendedPlansQuery.dataUpdatedAt],\n enabled: recommendedPlansQuery.isFetched,\n cacheTime: 10 * 1000,\n async queryFn() {\n const plans = [...(recommendedPlansQuery.data ?? [])]\n const filteredPlans = filterPlans(plans, { ...filters, nPlansFilter: undefined })\n const cappedPlans = capFirstPlansNoRepeatCarrier(filteredPlans, filters?.nPlansFilter ?? 10)\n const searchPlan = searchPlans(cappedPlans, search)\n\n if (sortBy !== SortingOption.Featured) {\n sortPlans(searchPlan, sortBy)\n }\n return searchPlan\n }\n })\n\n return {\n ...controlledQuery,\n isLoading: recommendedPlansQuery.isLoading || controlledQuery.isLoading\n } as UseQueryResult\n },\n useTopPicks: () => {\n return useQuery({\n queryKey: ['topPicks'],\n staleTime: Infinity,\n async queryFn() {\n const topPicks = await API.get('/top-picks')\n\n return topPicks as TopPick[]\n }\n })\n },\n useTopPicksPlans: ({ topPicksIds, enrichPlans = true }: { topPicksIds: number[]; enrichPlans?: boolean }) => {\n const bestCarriersQuery = UseCarrier.usePointSignals()\n const supportedCarriersQuery = UseCarrier.useCarriersWithRecords()\n const { data: statesFilter } = useGetRegionFilter(useGeneralStore((state) => state.addresses))\n\n const topPicksPlansQuery = useQuery({\n queryKey: ['topPicksPlans', topPicksIds, enrichPlans, statesFilter],\n staleTime: Infinity,\n enabled: !enrichPlans || (bestCarriersQuery.isFetched && supportedCarriersQuery.isFetched),\n async queryFn() {\n return await Promise.all(\n topPicksIds.map(async (id) => {\n const plans = (\n (await API.get(\n `/top-picks/plans?topPickId=${id}${statesFilter ? `&${statesFilter}` : ''}`\n )) as TopPickPlanResponse[]\n ).map((planResponse) => {\n return mapTopPickPlanResponseToTopPickPlan(planResponse)\n })\n if (enrichPlans && supportedCarriersQuery.data) {\n return enrichPlansWithPerformance(plans, bestCarriersQuery.data!, supportedCarriersQuery.data)\n }\n return plans\n })\n )\n }\n })\n\n return {\n ...topPicksPlansQuery,\n isLoading: bestCarriersQuery.isLoading || topPicksPlansQuery.isLoading\n } as UseQueryResult\n },\n useTopPicksPlansControlled: ({\n topPicksIds,\n sortBy,\n filters,\n search\n }: {\n topPicksIds: number[]\n sortBy?: SortingOption\n filters?: FilterOptions\n search?: string\n }) => {\n const topPicksPlansQuery = UsePlan.useTopPicksPlans({ topPicksIds })\n\n const controlledQuery = useQuery({\n queryKey: ['topPicksPlansControlled', topPicksIds, sortBy, filters, search],\n enabled: topPicksPlansQuery.isFetched,\n cacheTime: 10 * 1000,\n async queryFn() {\n return topPicksPlansQuery.data!.map((plans) => {\n const searchPlan = searchPlans(plans, search)\n sortTopPickPlans(searchPlan, sortBy)\n const filteredPlans = filterPlans(searchPlan, filters)\n return filteredPlans\n })\n }\n })\n\n return {\n ...controlledQuery,\n isLoading: topPicksPlansQuery.isLoading || controlledQuery.isLoading\n } as UseQueryResult\n }\n}\n\nexport const addonToImage: Record = {\n // TODO: add all addon images\n Netflix: '/assets/images/addons/netflix.svg',\n Paramount: '/assets/images/addons/paramount.svg',\n Hulu: '/assets/images/addons/hulu.svg',\n Amazon: '',\n 'ESPN+': '/assets/images/addons/espn.svg',\n 'Disney+': '/assets/images/addons/disneyplus.svg',\n 'HBO Max': '',\n 'Apple Tv': '/assets/images/addons/apple.svg',\n 'Discovery+': '',\n 'Apple Music': '',\n 'Google Play': '',\n 'Apple Arcade': ''\n}\n","import { SMS_UNLIMITED, VOICE_UNLIMITED } from './Preferences'\nimport { PlanPreferences, withinUserPreferences } from './getRecommendedPlans'\nimport { Addon, Plan, PlanResponse, TopPickPlan, TopPickPlanResponse } from './Plan'\nimport { FilterOptions } from './Plan.service'\n\nexport const mapPlanResponseToPlan = (plan: PlanResponse): Plan => {\n return {\n planId: plan.id,\n carrierId: plan.carrierId || '',\n carrierName: plan.carrierName || '',\n totogiCarrierName: plan.totogiCarrierName || '',\n planName: plan.name || '',\n shortPlanName: plan.shortPlanName || '',\n planLink: plan.planLink || '',\n price: plan.monthlyPrice || 0,\n priceCurrency: plan.priceCurrency || '',\n telcoType: plan.telcoType || 'UNKNOWN',\n data: plan.dataLimit || 0,\n addons: plan.addons as Addon[],\n sms: plan.isSmsUnlimited ? SMS_UNLIMITED : plan.smsAllowanceTop || 0,\n voice: plan.isVoiceUnlimited ? VOICE_UNLIMITED : plan.voiceMinutesTop || 0,\n hotspotDataLimit: plan.hotspotDataLimit,\n hotspotDataLimitUnits: plan.hotspotDataLimitUnits,\n isHotspotUnlimited: plan.isHotspotUnlimited,\n priceMultiLine: '',\n premiumData: plan.premiumData || 0,\n isPremiumDataUnlimited: plan.isPremiumDataUnlimited || false,\n premiumDataUnits: plan.premiumDataUnits || '',\n roamingCountries: plan.roamingCountries || [],\n streamingServices: plan.streamingServices || [],\n video_streaming_quality: '',\n networkOperators: plan.networkOperators,\n costPerLineScore: plan.costPerLineScore,\n dataAllowanceScore: plan.dataAllowanceScore,\n popularityScore: plan.popularityScore,\n perksScore: plan.perksScore,\n telcoTypeScore: plan.telcoTypeScore,\n overallScore: plan.overallScore,\n costPerLine: plan.costPerLine,\n numLines: plan.numLines,\n isDataUnlimited: plan.isDataUnlimited,\n affiliateLink: plan.affiliateLink,\n contractType: plan.contractType,\n contractMonthLength: plan.contractMonthLength,\n deals: plan.deals ?? []\n }\n}\n\nexport const mapTopPickPlanResponseToTopPickPlan = (topPickPlan: TopPickPlanResponse): TopPickPlan => {\n return {\n ...mapPlanResponseToPlan(topPickPlan),\n sortOrder: topPickPlan.sortOrder\n }\n}\n\nexport function filterPlans(\n plans: Plan[],\n filters?: FilterOptions & { withinUserPreferences?: { preferences: PlanPreferences; fuzzy?: boolean } }\n) {\n if (!filters) {\n return plans\n }\n\n if (filters.nLinesFilter) {\n plans = plans.filter((plan) => plan.numLines === filters.nLinesFilter)\n }\n\n if (filters.withinUserPreferences && filters.withinUserPreferences.preferences) {\n const preferences = filters.withinUserPreferences.preferences\n if (filters.withinUserPreferences.fuzzy) {\n plans = plans.filter((plan) => !withinUserPreferences(plan, preferences))\n } else {\n plans = plans.filter((plan) => withinUserPreferences(plan, preferences))\n }\n }\n\n // This filter should always be the last one\n if (filters.nPlansFilter) {\n plans = plans.slice(0, filters.nPlansFilter)\n }\n\n return plans\n}\n\nfunction cleanString(str: string) {\n return str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase()\n}\n\nexport type SearchPlan = Pick<\n Plan,\n 'planName' | 'carrierName' | 'shortPlanName' | 'price' | 'sms' | 'isDataUnlimited' | 'voice'\n>\n\nfunction compareEquals

    (plan: P, search: string) {\n const cleanedSearch = cleanString(search)\n\n return (\n cleanString(plan.planName) === cleanedSearch ||\n cleanString(plan.carrierName) === cleanedSearch ||\n cleanString(plan.shortPlanName) === cleanedSearch ||\n plan.price.toString() === cleanedSearch ||\n (cleanedSearch.includes('unlimited') &&\n (plan.isDataUnlimited || plan.sms === SMS_UNLIMITED || plan.voice === VOICE_UNLIMITED))\n )\n}\n\nfunction terms(str: string): string[] {\n return str.toLowerCase().split(/\\s+/)\n}\n\nfunction comparePartial

    (plan: P, search: string) {\n const threshold = 0.6\n\n const planTerms = [terms(plan.carrierName), terms(plan.shortPlanName), terms(plan.planName)]\n const searchTerms = terms(search.trim())\n\n const wasUnlimitedPresent = searchTerms.includes('unlimited')\n if (wasUnlimitedPresent) {\n searchTerms.splice(searchTerms.indexOf('unlimited'), 1)\n }\n\n const matches = searchTerms.filter((word) => planTerms.some((termsChunk) => termsChunk.includes(word))).length || 0\n\n const proportion = matches / searchTerms.length\n\n return (\n proportion >= threshold ||\n plan.price.toString().includes(search!.replace('$', '')) ||\n (searchTerms.includes('unlimited') &&\n proportion >= threshold &&\n (plan.isDataUnlimited || plan.sms === SMS_UNLIMITED || plan.voice === VOICE_UNLIMITED))\n )\n}\nexport function searchPlans

    (plans: P[], search?: string) {\n if (!search) {\n return plans\n }\n\n const compare = search[0] === '=' ? compareEquals : comparePartial\n return plans.filter((plan) => compare(plan, search))\n}\n","export const DATA_UNLIMITED = 1e9\nexport const SMS_UNLIMITED = 1e9\nexport const VOICE_UNLIMITED = 1e9\nexport const BUDGET_UNLIMITED = 1e9\n","import { Plan } from './Plan'\nimport { DATA_UNLIMITED } from './Preferences'\nimport { ContractType, ReasonForSwitch } from '../wizard/reason-for-switch'\n\nexport type SortedPlan = Pick<\n Plan,\n | 'planId'\n | 'networkPerformance4G'\n | 'networkPerformance5G'\n | 'costPerLineScore'\n | 'dataAllowanceScore'\n | 'perksScore'\n | 'popularityScore'\n | 'telcoTypeScore'\n | 'price'\n | 'data'\n | 'isDataUnlimited'\n | 'carrierId'\n | 'costPerLine'\n | 'contractType'\n | 'numLines'\n>\n\nexport type PlanPreferences = {\n reasonsForSwitch: ReasonForSwitch[]\n numLines?: number\n maxPrice?: number\n minData?: number\n}\n\nexport type PlanPreferencesV2 = PlanPreferences & {\n contractType: ContractType\n carrierId?: string\n}\n\nexport function getRecommendedPlansV2(\n plans: T[],\n preferenceParam: PlanPreferencesV2 | undefined,\n passedPlans?: Set\n) {\n const preference: PlanPreferencesV2 = preferenceParam ?? { reasonsForSwitch: [], contractType: ContractType.Both }\n\n const weightedPlans = plans.reduce((acc, plan) => {\n if (passedPlans?.has(plan.planId)) {\n return acc\n }\n\n // This gives us the opportunity to show warnings to the user with the reasons why plans are not recommended\n // Could be a good idea to show them in case the list is empty\n const unfitReasons = getUnfitReasons(plan, preference)\n\n if (unfitReasons.length === 0) {\n acc.push({\n plan,\n customOverallScore: calculateCustomOverallScore(plan)\n })\n }\n return acc\n }, [] as { plan: T; customOverallScore: number }[])\n\n weightedPlans.sort((a, b) => b.customOverallScore - a.customOverallScore)\n\n return weightedPlans.map((weightedPlan) => weightedPlan.plan)\n}\n\nexport function capFirstPlansNoRepeatCarrier(plans: T[], nPlans: number = 10): T[] {\n const carrierCount: Record = {}\n const cappedPlans: T[] = []\n\n for (const plan of plans) {\n const lastCarrierCount = carrierCount[plan.carrierId] ?? 0\n if (lastCarrierCount < 2) {\n cappedPlans.push(plan)\n }\n\n carrierCount[plan.carrierId] = lastCarrierCount + 1\n if (cappedPlans.length >= nPlans) {\n break\n }\n }\n\n return cappedPlans\n}\n\nconst ScoreWeights = {\n CostPerLine: 0.3,\n DataAllowance: 0.2,\n NetworkPerformance: 0.4,\n Popularity: 0.2,\n Perks: 0.1,\n PostpaidBoost: 0\n} as const\ntype ScoreWeightsType = Record\n\nfunction calculateCustomOverallScore(plan: T, weights: ScoreWeightsType = ScoreWeights) {\n const networkPerformanceScore =\n plan.networkPerformance4G && plan.networkPerformance5G\n ? (plan.networkPerformance5G + plan.networkPerformance4G) / 2\n : plan.networkPerformance4G ?? 0\n\n const score =\n (plan.telcoTypeScore ?? 0) * (networkPerformanceScore ? 0.2 : 0) +\n weights.CostPerLine * (plan.costPerLineScore ?? 0) +\n weights.DataAllowance * (plan.dataAllowanceScore ?? 0) +\n weights.Popularity * (plan.popularityScore ?? 0) +\n weights.Perks * (plan.perksScore ?? 0) +\n weights.NetworkPerformance * networkPerformanceScore +\n weights.PostpaidBoost * (plan.contractType === ContractType.Postpaid ? 1 : 0)\n\n return score\n}\n\ntype UnfitReason = 'price' | 'data'\nexport function getUnfitReasons(plan: T, preference: PlanPreferencesV2): UnfitReason[] {\n const unfitReasons: UnfitReason[] = []\n if (preference.maxPrice && plan.costPerLine > preference.maxPrice) {\n unfitReasons.push('price')\n }\n\n const planData = plan.data ?? 0\n if (!plan.isDataUnlimited && preference.minData !== undefined && planData !== undefined && planData < preference.minData) {\n unfitReasons.push('data')\n }\n\n return unfitReasons\n}\n\nexport function withinUserPreferences(\n plan: T,\n preferences: PlanPreferences | PlanPreferencesV2\n): boolean {\n if (preferences.maxPrice && plan.costPerLine > preferences.maxPrice / (preferences.numLines ?? 1)) {\n return false\n }\n\n const planData = plan.data ?? (preferences.minData === DATA_UNLIMITED ? 0 : undefined)\n if (preferences.minData !== undefined && planData !== undefined && planData < preferences.minData) {\n return false\n }\n\n return true\n}\n","export enum ReasonForSwitch {\n Cost = 'PlanCost',\n Network = 'NetworkCoverage',\n Data = 'DataAllowance',\n Hotspot = 'Hotspot',\n InternationalCalling = 'InternationalCalling',\n Roaming = 'Roaming',\n StreamingServices = 'StreamingServices',\n ContractType = 'ContractType',\n Other = 'Other'\n}\n\nexport enum ContractType {\n Postpaid = 'Postpaid',\n Both = 'Postpaid+Prepaid'\n}\n\nexport enum ContractTypeV3 {\n Postpaid = 'Postpaid',\n Prepaid = 'Prepaid'\n}\n","import { Geolocation, Position } from '@capacitor/geolocation'\nimport produce from 'immer'\nimport { hasCurrentLocation, trackUserPropertyFlag } from '../utils/amplitude'\nimport { StateCreator } from 'zustand'\nimport { getAddressFromGeolocation, upsertAddress } from '../utils/Address'\nimport { Logger } from '../utils/Logger'\n\nexport enum LabelType {\n Home = 'HOME',\n Work = 'WORK',\n Other = 'OTHER'\n}\n\nexport type Address = {\n placeId: string\n latitude: number\n longitude: number\n addressName: string\n\n localMemory?: boolean // if true, it means that the address is not saved in the backend\n labelType: LabelType // if not provided, it will be considered as 'Other'\n label: string // if not provided, it will be considered as addressName.split(',')[0]\n}\n\nexport type AddressState = {\n locationError?: unknown\n loadingLocation: boolean\n currentAddress: Address | undefined\n addresses: Address[]\n editingIndex?: number\n selectedAddress?: Address\n}\n\nexport type AddressActions = {\n setUserLocationAndAddress: () => Promise<(Position & { address?: Address }) | undefined>\n setCurrentAddress: (address: Address | undefined) => void\n setAddress: (address: Address, index?: number) => void\n removeAddress: (index: number) => void\n editAddress: (index: number) => void\n setSelectedAddress: (state: Partial) => void\n}\n\nexport const addressInitialState: AddressState = {\n currentAddress: undefined,\n selectedAddress: undefined,\n loadingLocation: false,\n addresses: []\n}\n\nconst createAddressSlice: StateCreator = (\n set,\n get\n) => {\n return {\n ...addressInitialState,\n setUserLocationAndAddress: async (): Promise<(Position & { address?: Address }) | undefined> => {\n set(() => ({ loadingLocation: true }))\n\n try {\n const position = await Geolocation.getCurrentPosition()\n const geolocationAddress = await getAddressFromGeolocation(position)\n\n set((state) => {\n const shouldAddLocation = geolocationAddress\n ? !state.addresses.some((addr) => addr.placeId === geolocationAddress.placeId)\n : false\n\n const addresses = shouldAddLocation ? [...state.addresses, geolocationAddress!] : state.addresses\n\n return {\n currentAddress: geolocationAddress,\n addresses,\n loadingLocation: false,\n selectedAddress: geolocationAddress\n }\n })\n\n return { ...position, address: geolocationAddress }\n } catch (error) {\n Logger.error(error)\n set(() => ({ loadingLocation: false, locationError: error }))\n }\n },\n setCurrentAddress(address) {\n set(() => {\n trackUserPropertyFlag(hasCurrentLocation, true)\n return { currentAddress: address }\n })\n },\n setAddress: async (address, index?: number) => {\n if (!address.placeId) return\n\n set(\n produce((state) => {\n upsertAddress(address, state.addresses, index)\n })\n )\n\n set(\n produce((state) => {\n state.addresses = state.addresses.sort((a: Address, b: Address) => {\n if (a.labelType === LabelType.Home) return -1\n if (b.labelType === LabelType.Home) return 1\n if (a.labelType === LabelType.Work) return -1\n if (b.labelType === LabelType.Work) return 1\n if (a.localMemory && !b.localMemory) return 1\n if (!a.localMemory && b.localMemory) return -1\n return 0\n })\n })\n )\n },\n removeAddress: (index: number) => {\n const addresses = [...get().addresses]\n const addressDeletedPlaceId = addresses[index].placeId\n const currentAddressPlaceId = get().currentAddress?.placeId\n addresses.splice(index, 1)\n if (currentAddressPlaceId && currentAddressPlaceId === addressDeletedPlaceId) {\n set(() => {\n trackUserPropertyFlag(hasCurrentLocation, true)\n return { addresses, currentAddress: undefined }\n })\n }\n set(\n produce((state) => {\n state.addresses = addresses\n })\n )\n },\n editAddress: (index: number) => {\n set(\n produce((state) => {\n state.editingIndex = index\n })\n )\n },\n setSelectedAddress: (next: Partial) =>\n set(\n produce((state) => {\n state.selectedAddress = next\n })\n )\n }\n}\n\nexport default createAddressSlice\n","import create, { StateCreator } from 'zustand'\n\nexport interface CurrentUser {\n email: string\n token: string\n}\nexport type AuthState = {\n currentUser?: CurrentUser | null\n}\n\nexport type AuthActions = {\n setCurrentUser: (currentUser: CurrentUser | undefined | null) => void\n}\n\nconst createAuthSlice: StateCreator = (set, get) => ({\n currentUser: undefined,\n\n setCurrentUser: (currentUser) => {\n set(() => ({ currentUser }))\n }\n})\n\n// This is a separate store because the current user should not be cleaned up with the reset button\nconst useAuthStore = create(createAuthSlice)\n\nexport default useAuthStore\n","import create from 'zustand'\nimport { State, useEditStore, useGeneralStore } from '.'\n\nexport function selectValuesToCopy(state: State) {\n return {\n userCarrierId: state.userCarrierId,\n currentPlanId: state.currentPlanId,\n currentPhoneLines: state.currentPhoneLines,\n reasonsForSwitch: state.reasonsForSwitch,\n phoneLinesNeeded: state.phoneLinesNeeded,\n useUnlimitedDataPlan: state.useUnlimitedDataPlan,\n targetBudget: state.targetBudget,\n addresses: state.addresses,\n currentAddress: state.currentAddress,\n favoritePlanIds: state.favoritePlanIds,\n searchedPlansHistory: state.searchedPlansHistory,\n searchedAddressHistory: state.searchedAddressHistory\n }\n}\n\nexport function applyGeneralStoreToEditStore() {\n new EditStoreManagementService().applyGeneralStoreToEditStore()\n}\n\nexport class EditStoreManagementService {\n constructor(\n private generalStore: typeof useGeneralStore = useGeneralStore,\n private editStore: typeof useEditStore = useEditStore,\n private editStoreManagement: typeof useEditStoreManagement = useEditStoreManagement\n ) {}\n applyGeneralStoreToEditStore() {\n const state = this.generalStore.getState()\n this.editStore.setState(selectValuesToCopy(state))\n this.editStoreManagement.getState().setDirty(false)\n }\n}\n\nexport function applyEditStoreToGeneralStore() {\n const state = useEditStore.getState()\n useGeneralStore.setState(selectValuesToCopy(state))\n}\n\ninterface UseEditStoreManagementState {\n isDirty: boolean\n setDirty: (isDirty: boolean) => void\n}\nuseEditStore.subscribe(() => {\n useEditStoreManagement.getState().setDirty(true)\n})\n\nexport const useEditStoreManagement = create((set) => ({\n isDirty: false,\n setDirty: (isDirty) => set({ isDirty })\n}))\n","const ONBOARDING_LOCALSTORAGE_KEY = 'hasBeenOnboarded'\n\nexport let modalOpenInitialValue = localStorage.getItem(ONBOARDING_LOCALSTORAGE_KEY) !== 'true'\nexport function setOnboarded() {\n modalOpenInitialValue = false\n localStorage.setItem(ONBOARDING_LOCALSTORAGE_KEY, 'true')\n}\n","import { StateCreator } from 'zustand'\nimport { modalOpenInitialValue } from '../components/OnboardingCarousel/onboardingStorage'\nimport { BestPlansState, Plan, OnboardingState } from '../services/planService/Plan'\n\nconst calloutStateLsKey = 'plan-finder-callout-state'\n\nexport const bestPlanInitialState: BestPlansState = {\n compareSelection: new Set(),\n selectedPlanResult: undefined,\n onboardingState:\n (localStorage.getItem(calloutStateLsKey) as OnboardingState | null) ||\n (modalOpenInitialValue ? 'show-onboarding' : 'show-tooltip')\n}\n\nexport type BestPlansActions = {\n toggleComparison: (plan: Plan, isComparing: boolean) => void\n clearComparisons: () => void\n setSelectedPlanResult: (selectedPlanResult: Plan) => void\n setOnboardingState: (planFinderCalloutState: OnboardingState) => void\n}\n\nconst createBestPlansSlice: StateCreator<\n BestPlansState & BestPlansActions,\n [],\n [],\n BestPlansState & BestPlansActions\n> = (set, get) => ({\n ...bestPlanInitialState,\n setSelectedPlanResult: (selectedPlanResult: Plan) => {\n set({ selectedPlanResult })\n },\n setOnboardingState: (planFinderCalloutState: OnboardingState) => {\n set({ onboardingState: planFinderCalloutState })\n localStorage.setItem(calloutStateLsKey, planFinderCalloutState)\n },\n clearComparisons: () => {\n set({ compareSelection: new Set() })\n },\n toggleComparison: (planResult: Plan, isComparing: boolean) => {\n const newCompareSelection = new Set(get().compareSelection)\n if (isComparing) {\n newCompareSelection.add(planResult.planId)\n } else {\n newCompareSelection.delete(planResult.planId)\n }\n set({\n compareSelection: newCompareSelection\n })\n }\n})\n\nexport default createBestPlansSlice\n","import { StateCreator } from 'zustand'\n\nexport type CarrierPerformance = {\n carrierId: string\n carrierName: string\n networkPerformance: number\n networkTypeId: number\n}\n\nexport interface Carrier {\n id: string\n name: string\n logo_url?: string\n amplitude_name: string\n es_id?: string\n available_nationwide?: boolean\n carrier_availability?: string[]\n has_data: boolean\n network_operators?: string[]\n is_visible_on_map?: boolean\n}\n\nexport interface CarrierApiResult {\n logo_name?: string\n es_id?: string\n name: string\n amplitude_name: string\n id: string\n}\n\nexport type CarrierSelectorState = {\n userCarrierId?: string\n}\n\nexport type CarrierSelectorActions = {\n setCarrierId: (carrierId: string | undefined) => void\n}\n\nexport const carrierSelectorInitialState: CarrierSelectorState = {\n userCarrierId: undefined\n}\n\nconst createCarrierSelectorSlice: StateCreator<\n CarrierSelectorState & CarrierSelectorActions,\n [],\n [],\n CarrierSelectorState & CarrierSelectorActions\n> = (set, get) => ({\n ...carrierSelectorInitialState,\n setCarrierId: (carrierId: string | undefined) => {\n set(() => ({ userCarrierId: carrierId }))\n }\n})\n\nexport default createCarrierSelectorSlice\n","import { StateCreator } from 'zustand'\nimport { ReasonForSwitch } from '../services/wizard/reason-for-switch'\nimport { Logger } from '../utils/Logger'\n\nexport type CurrentPlanState = {\n currentPlanId?: string\n currentPhoneLines: number\n reasonsForSwitch: ReasonForSwitch[]\n}\n\nexport type CurrentPlanActions = {\n setCurrentPhoneLines: (phoneLines: number) => void\n setCurrentPlanId: (plan: string | undefined) => void\n setReasonsForSwitch: (value: ReasonForSwitch[]) => void\n}\n\nexport const currentPlanInitialState: CurrentPlanState = {\n currentPhoneLines: 1,\n currentPlanId: undefined,\n reasonsForSwitch: []\n}\n\nconst createCurrentPlanSlice: StateCreator<\n CurrentPlanState & CurrentPlanActions,\n [],\n [],\n CurrentPlanState & CurrentPlanActions\n> = (set, get) => ({\n ...currentPlanInitialState,\n\n setReasonsForSwitch: (reasonsForSwitch: ReasonForSwitch[]) => {\n if (!reasonsForSwitch) {\n Logger.error('reasonsForSwitch is falsy')\n return\n }\n set(() => ({ reasonsForSwitch }))\n },\n setCurrentPlanId: (currentPlanId: string | undefined) => {\n set(() => ({ currentPlanId }))\n },\n\n setCurrentPhoneLines: (currentPhoneLines: number) => {\n set(() => ({ currentPhoneLines }))\n }\n})\n\nexport default createCurrentPlanSlice\n","import { StateCreator } from 'zustand'\n\nexport type ExpandedPlansState = {\n allExpanded: boolean\n}\n\nexport type ExpandedPlansActions = {\n collapseAll: () => void\n expandAll: () => void\n}\n\nexport const expandedPlansInitialState: ExpandedPlansState = {\n allExpanded: false\n}\n\nconst createExpandedPlansSlice: StateCreator<\n ExpandedPlansState & ExpandedPlansActions,\n [],\n [],\n ExpandedPlansState & ExpandedPlansActions\n> = (set) => ({\n ...expandedPlansInitialState,\n collapseAll: () => {\n set(() => ({ allExpanded: false }))\n },\n expandAll: () => {\n set(() => ({ allExpanded: true }))\n }\n})\n\nexport default createExpandedPlansSlice\n","import { StateCreator } from 'zustand'\n\nexport type NetworkMeterResultsState = {\n hasNetworkMeterResults: boolean\n latency: number\n jitter: number\n uploadSpeed: number\n downloadSpeed: number\n networkTested: string\n}\n\nexport type NetworkMeterResultsActions = {\n setHasNetworkMeterResults: (hasResults: boolean) => void\n setLatency: (latency: number) => void\n setJitter: (jitter: number) => void\n setUploadSpeed: (uploadSpeed: number) => void\n setDownloadSpeed: (downloadSpeed: number) => void\n setNetworkTested: (networkTested: string) => void\n}\n\nexport const networkMeterResultsInitialState: NetworkMeterResultsState = {\n hasNetworkMeterResults: false,\n latency: 0,\n jitter: 0,\n uploadSpeed: 0,\n downloadSpeed: 0,\n networkTested: 'Unknown'\n}\n\nconst createNetworkMeterResultsSlice: StateCreator<\n NetworkMeterResultsState & NetworkMeterResultsActions,\n [],\n [],\n NetworkMeterResultsState & NetworkMeterResultsActions\n> = (set, get) => ({\n ...networkMeterResultsInitialState,\n\n setHasNetworkMeterResults: (hasNetworkMeterResults: boolean) => {\n set(() => ({ hasNetworkMeterResults }))\n },\n\n setLatency: (latency: number) => {\n set(() => ({ latency }))\n },\n setJitter: (jitter: number) => {\n set(() => ({ jitter }))\n },\n setUploadSpeed: (uploadSpeed: number) => {\n set(() => ({ uploadSpeed }))\n },\n setDownloadSpeed: (downloadSpeed: number) => {\n set(() => ({ downloadSpeed }))\n },\n setNetworkTested: (networkTested: string) => {\n set(() => ({ networkTested }))\n }\n})\n\nexport default createNetworkMeterResultsSlice\n","import { Libraries } from '@googlemaps/js-api-loader'\nimport produce from 'immer'\nimport { StateCreator } from 'zustand'\nimport { NetworkType, NetworkTypeValue } from '../services/NetworkType.service'\nimport { Address } from './address'\n\nexport type CarrierId = 'att' | 't-bird' | 't-mobile' | 'us-cellular' | 'verizon' | 'others' | '...'\n\nexport type QualityByType = {\n text: number\n email: number\n phone: number\n video: number\n streaming: number\n}\n\nexport type Coverage = {\n address: Address\n network: {\n carrierName: string\n carrierId: CarrierId\n '4g': QualityByType\n '5g': QualityByType\n }\n}\n\nexport type NetworkQualityState = {\n networkType: NetworkTypeValue\n map: {\n center?: google.maps.LatLng\n zoom: number\n maxZoom: number\n libraries: Libraries\n }\n coverage: {\n results: Coverage[]\n carrierName?: string\n carrierId?: CarrierId\n }\n}\n\nexport type NetworkQualityActions = {\n setMap: (state: Partial) => void\n setCoverage: (state: Partial) => void\n setNetworkType: (state: Partial) => void\n}\n\nexport const networkQualityInitialState: NetworkQualityState = {\n networkType: NetworkType['5G'],\n map: {\n zoom: 4,\n maxZoom: 18,\n libraries: ['places', 'geometry', 'marker']\n },\n coverage: {\n results: []\n }\n}\n\nconst createNetworkQualitySlice: StateCreator<\n NetworkQualityState & NetworkQualityActions,\n [],\n [],\n NetworkQualityState & NetworkQualityActions\n> = (set, get) => {\n const setObject = (key: string, next: Record) => {\n set(\n produce((state) => {\n state[key] = { ...state[key], ...next }\n })\n )\n }\n\n return {\n ...networkQualityInitialState,\n setMap: (next: Partial) => setObject('map', next),\n setCoverage: (next: Partial) => setObject('coverage', next),\n setNetworkType: (next: Partial) =>\n set(\n produce((state) => {\n state.networkType = next\n })\n )\n }\n}\n\nexport default createNetworkQualitySlice\n","import { StateCreator } from 'zustand'\nimport { IChatFlow } from '../pages/llm/types/ChatStep'\nimport { PredefinedChatStorage } from '../pages/llm/types/ChatStorageSource'\nimport { ValueOf } from '../services/NetworkType.service'\nimport { UnlimitedDataPreference } from '../services/planService/Plan'\n\nexport type QuestionsState = {\n phoneLinesNeeded: number\n useUnlimitedDataPlan: ValueOf | undefined\n targetBudget: number | undefined\n chatStorage: PredefinedChatStorage | undefined\n}\n\nexport type QuestionsActions = {\n setPhoneLinesNeeded: (value: number) => void\n setTargetBudget: (value: number | undefined) => void\n setUseUnlimitedDataPlan: (value: ValueOf | undefined) => void\n}\n\nexport const questionsInitialState: QuestionsState = {\n phoneLinesNeeded: 1,\n targetBudget: undefined,\n useUnlimitedDataPlan: undefined,\n chatStorage: undefined\n}\n\nconst createQuestionsSlice: StateCreator<\n QuestionsState & QuestionsActions,\n [],\n [],\n QuestionsState & QuestionsActions\n> = (set, get) => ({\n ...questionsInitialState,\n setUseUnlimitedDataPlan: (useUnlimitedDataPlan: ValueOf | undefined) => {\n set({\n useUnlimitedDataPlan\n })\n },\n setPhoneLinesNeeded: (phoneLinesNeeded: number) => {\n set({\n phoneLinesNeeded\n })\n },\n setTargetBudget: (targetBudget: number | undefined) => {\n set({\n targetBudget\n })\n }\n})\n\nexport default createQuestionsSlice\n","import { StateCreator } from 'zustand'\n\nexport type SearchHistoryState = {\n searchedPlansHistory: string[]\n searchedAddressHistory: string[]\n}\n\nexport type SearchHistoryActions = {\n setSearchedPlansHistory: (searchedPlansHistory: string[]) => void\n setSearchedAddressHistory: (searchedAddressHistory: string[]) => void\n}\n\nexport const searchHistoryInitialState: SearchHistoryState = {\n searchedPlansHistory: [],\n searchedAddressHistory: []\n}\n\nconst createSearchHistorySlice: StateCreator<\n SearchHistoryState & SearchHistoryActions,\n [],\n [],\n SearchHistoryState & SearchHistoryActions\n> = (set) => ({\n ...searchHistoryInitialState,\n setSearchedPlansHistory: async (searchedPlansHistory: string[]) => {\n set({ searchedPlansHistory })\n },\n setSearchedAddressHistory: async (searchedAddressHistory: string[]) => {\n set({ searchedAddressHistory })\n }\n})\n\nexport default createSearchHistorySlice\n","import { StateCreator } from 'zustand'\nimport { Plan } from '../services/planService/Plan'\n\nexport type SelectedPlansState = {\n selectedPlan: Plan | null\n favoritePlanIds: Plan['planId'][]\n}\n\nexport type SelectedPlansActions = {\n setSelectedPlan: (plan: Plan | null) => void\n addFavoritePlanId: (plan: Plan['planId']) => void\n removeFavoritePlanId: (plan: Plan['planId']) => void\n}\n\nexport const selectedPlansInitialState: SelectedPlansState = {\n selectedPlan: null,\n favoritePlanIds: []\n}\n\nconst createSelectedPlansSlice: StateCreator<\n SelectedPlansState & SelectedPlansActions,\n [],\n [],\n SelectedPlansState & SelectedPlansActions\n> = (set) => ({\n ...selectedPlansInitialState,\n setSelectedPlan: (selectedPlan: Plan | null) => {\n set(() => ({ selectedPlan }))\n },\n addFavoritePlanId: (favoritePlanId: Plan['planId'] | null) => {\n if (favoritePlanId === null) {\n return\n }\n set((state) => {\n const favoritePlanIds = [...state.favoritePlanIds, favoritePlanId]\n return { favoritePlanIds }\n })\n },\n removeFavoritePlanId: (favoritePlanId: Plan['planId'] | null) => {\n if (favoritePlanId === null) {\n return\n }\n set((state) => {\n const favoritePlanIds = state.favoritePlanIds.filter((id) => id !== favoritePlanId)\n return { favoritePlanIds }\n })\n }\n})\n\nexport default createSelectedPlansSlice\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env && import.meta.env.MODE) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && enabled) {\n console.warn(\n \"[zustand devtools middleware] Please install/enable Redux devtools extension\"\n );\n }\n return fn(set, get, api);\n }\n const extension = extensionConnector.connect(options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording)\n return r;\n extension.send(\n nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction,\n get()\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n extension.init(initialState);\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n extension.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n setStateFromDevtools(action.state);\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n return extension.init(api.getState());\n case \"COMMIT\":\n return extension.init(api.getState());\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n extension.init(api.getState());\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState)\n return;\n setStateFromDevtools(lastComputedState);\n extension.send(\n null,\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize({ ...get() });\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then(\n (serializedValue) => storage.setItem(options.name, serializedValue)\n ).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, devtools, persist, redux, subscribeWithSelector };\n","import create, { StoreApi, UseBoundStore } from 'zustand'\nimport createAddressSlice, { addressInitialState } from './address'\nimport createBestPlansSlice, { bestPlanInitialState } from './bestPlans'\nimport createCarrierSelectorSlice, { carrierSelectorInitialState } from './carrierSelector'\nimport createCurrentPlanSlice, { currentPlanInitialState } from './currentPlan'\nimport createExpandedPlansSlice, { expandedPlansInitialState } from './expandedPlans'\nimport createNetworkMeterResultsSlice, { networkMeterResultsInitialState } from './networkMeterResults'\nimport createNetworkQualitySlice, { networkQualityInitialState } from './networkQuality'\nimport createPlansInteractionSlice, { planInteractionInitialState } from './plansInteraction'\nimport createQuestionsSlice, { questionsInitialState } from './questions'\nimport createSearchHistorySlice, { searchHistoryInitialState } from './searchHistory'\nimport createSelectedPlansSlice, { selectedPlansInitialState } from './selectedPlans'\nimport { useOpenFrom } from '../components/Header/Header'\nimport { devtools, subscribeWithSelector } from 'zustand/middleware'\nimport immer from 'immer'\nimport { queryClient } from '../queryClient'\nimport { StoreSlices } from './types/storeSlices'\n\nexport type State = StoreSlices & {\n reset: () => void\n}\n\nconst createGojiStore = create()(\n devtools(\n subscribeWithSelector(\n immer((set, get, api) => ({\n ...createAddressSlice(set, get, api),\n ...createBestPlansSlice(set, get, api),\n ...createCarrierSelectorSlice(set, get, api),\n ...createCurrentPlanSlice(set, get, api),\n ...createExpandedPlansSlice(set, get, api),\n ...createNetworkMeterResultsSlice(set, get, api),\n ...createNetworkQualitySlice(set, get, api),\n ...createPlansInteractionSlice(set, get, api),\n ...createQuestionsSlice(set, get, api),\n ...createSearchHistorySlice(set, get, api),\n ...createSelectedPlansSlice(set, get, api),\n reset: () => {\n queryClient.clear()\n set(() => ({\n ...addressInitialState,\n ...bestPlanInitialState,\n ...carrierSelectorInitialState,\n ...currentPlanInitialState,\n ...expandedPlansInitialState,\n ...networkMeterResultsInitialState,\n ...networkQualityInitialState,\n ...planInteractionInitialState,\n ...questionsInitialState,\n ...searchHistoryInitialState,\n ...selectedPlansInitialState\n }))\n }\n }))\n )\n )\n)\n\nexport const useGeneralStore = createGojiStore\nexport const useEditStore = createGojiStore\n\nexport const useBoundStore = ((selector) => {\n const openFrom = useOpenFrom()\n const generalStore = useGeneralStore(selector)\n const editStore = useEditStore(selector)\n\n if (!!openFrom) {\n return editStore\n }\n return generalStore\n}) as UseBoundStore & [['zustand/subscribeWithSelector', never], ['zustand/immer', never]]>\n\nexport const resetAllSlices = () => {\n useGeneralStore.getState().reset()\n useEditStore.getState().reset()\n}\n","import { isPlatform } from '@ionic/core'\nimport create from 'zustand'\nimport { StateCreator } from 'zustand'\n\nconst isMobile = isPlatform('ios') || isPlatform('android')\n\nexport type NavigationState = {\n appExperience: 'mobile' | 'desktop'\n preventScrollBottom: boolean\n}\n\nexport type NavigationActions = {}\n\nconst createNavigationSlice: StateCreator<\n NavigationState & NavigationActions,\n [],\n [],\n NavigationState & NavigationActions\n> = (_set, _get) => ({\n appExperience: isMobile ? 'mobile' : 'desktop',\n preventScrollBottom: false\n})\n\nconst useNavigationStore = create(createNavigationSlice)\n\nexport default useNavigationStore\n","import { StateCreator } from 'zustand'\nimport { Plan } from '../services/planService/Plan'\nimport { trackAmplitudeEvent } from '../utils/amplitude'\nimport produce from 'immer'\n\nexport enum PlanInteraction {\n LIKE = 'like',\n PASS = 'pass',\n UNSURE = 'unsure'\n}\n\nexport type PlansInteractionState = {\n likedPlans: Set\n passedPlans: Set\n unsurePlans: Set\n}\n\nexport type PlansInteractionActions = {\n setInteraction: (planId: Plan['planId'], interaction: PlanInteraction) => void\n}\n\nexport const planInteractionInitialState: PlansInteractionState = {\n likedPlans: new Set(),\n passedPlans: new Set(),\n unsurePlans: new Set()\n}\n\nconst createPlansInteractionSlice: StateCreator<\n PlansInteractionState & PlansInteractionActions,\n [],\n [],\n PlansInteractionState & PlansInteractionActions\n> = (set, get) => {\n return {\n ...planInteractionInitialState,\n setInteraction: (planId, interaction) => {\n trackAmplitudeEvent('plan_interaction', {\n planId,\n interaction\n })\n switch (interaction) {\n case PlanInteraction.LIKE:\n set(\n produce((state) => {\n state.likedPlans.add(planId)\n state.passedPlans.delete(planId)\n state.unsurePlans.delete(planId)\n })\n )\n break\n case PlanInteraction.PASS:\n set(\n produce((state) => {\n state.passedPlans.add(planId)\n state.likedPlans.delete(planId)\n state.unsurePlans.delete(planId)\n })\n )\n break\n case PlanInteraction.UNSURE:\n set(\n produce((state) => {\n state.unsurePlans.add(planId)\n state.likedPlans.delete(planId)\n state.passedPlans.delete(planId)\n })\n )\n break\n }\n }\n }\n}\nexport default createPlansInteractionSlice\n","import { Plan } from '../../../services/planService/Plan'\nimport { SMS_UNLIMITED, VOICE_UNLIMITED } from '../../../services/planService/Preferences'\nimport { ContractTypeV3, ReasonForSwitch } from '../../../services/wizard/reason-for-switch'\n\nexport type DataFilter = 'include-premium' | 'include-hotspot' | 'unlimited-talk' | 'unlimited-text'\nexport type PlanPreferencesV3 = {\n reasonsForSwitch: ReasonForSwitch[]\n carrierIds: string[]\n contractTypes: ContractTypeV3[]\n numLines?: number\n minPrice?: number\n maxPrice?: number\n minData?: number\n maxData?: number\n minNetworkPerformance?: number\n dataFilters: DataFilter[]\n streamingServices: string[]\n roamingCountries: string[]\n minCoverage?: number\n}\n\nfunction withinDataFilters(plan: Plan, preferences: PlanPreferencesV3) {\n const planData = plan.isDataUnlimited ? Infinity : plan.data ?? 0\n if (preferences.minData !== undefined && preferences.minData > planData) {\n return false\n }\n\n if (preferences.maxData !== undefined && preferences.maxData < planData) {\n return false\n }\n\n if (\n preferences.minCoverage !== undefined &&\n (plan.networkPerformance4G ?? 0) < preferences.minCoverage &&\n (plan.networkPerformance5G ?? 0) < preferences.minCoverage\n ) {\n return false\n }\n\n if (preferences.dataFilters.length > 0) {\n for (const filter of preferences.dataFilters) {\n if (filter === 'include-premium' && !plan.premiumData) {\n return false\n }\n\n if (filter === 'include-hotspot' && !plan.hotspotDataLimit) {\n return false\n }\n\n if (filter === 'unlimited-talk' && plan.voice !== VOICE_UNLIMITED) {\n return false\n }\n\n if (filter === 'unlimited-text' && plan.sms !== SMS_UNLIMITED) {\n return false\n }\n }\n }\n return true\n}\n\nexport function getInitialPreferencesV3(): PlanPreferencesV3 {\n return {\n reasonsForSwitch: [],\n carrierIds: [],\n streamingServices: [],\n roamingCountries: [],\n contractTypes: [ContractTypeV3.Prepaid, ContractTypeV3.Postpaid],\n dataFilters: [],\n minData: undefined,\n maxData: undefined,\n minNetworkPerformance: undefined,\n minPrice: undefined,\n maxPrice: undefined,\n numLines: 1\n }\n}\n\nexport function filterPlansV3(plans: Plan[], preferences: PlanPreferencesV3) {\n return plans.filter((plan) => {\n const numLines = preferences.numLines ?? 1\n if (numLines && numLines !== plan.numLines) {\n return false\n }\n\n if (preferences.carrierIds.length > 0 && !preferences.carrierIds.includes(plan.carrierId)) {\n return false\n }\n\n const planContractType = plan.contractType === 'Prepaid' ? ContractTypeV3.Prepaid : ContractTypeV3.Postpaid\n\n if (!preferences.contractTypes.includes(planContractType)) {\n return false\n }\n\n if (preferences.minPrice && preferences.minPrice > plan.price) {\n return false\n }\n\n if (preferences.maxPrice && preferences.maxPrice < plan.costPerLine) {\n return false\n }\n\n if (!withinDataFilters(plan, preferences)) {\n return false\n }\n\n // TODO: test this. Should use service key instead?\n if (\n preferences.streamingServices.length > 0 &&\n !(plan.streamingServices ?? []).some((planStreamingService) =>\n preferences.streamingServices.includes(planStreamingService.serviceName)\n )\n ) {\n return false\n }\n\n if (\n preferences.roamingCountries.length > 0 &&\n !(plan.roamingCountries ?? []).some((planRoamingCountry) =>\n preferences.roamingCountries.includes(planRoamingCountry)\n )\n ) {\n return false\n }\n\n return true\n })\n}\n","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: decode(value, options).split(options.arrayFormatSeparator);\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst type = options.types[key] ? options.types[key].replace('[]', '') : undefined;\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","import create from 'zustand'\nimport qs from 'query-string'\nimport { StateCreator } from 'zustand'\nimport { getInitialPreferencesV3, PlanPreferencesV3 } from './filter-plans'\nimport defaultHistory from '../../../router-history'\nimport { Logger } from '../../../utils/Logger'\nimport { MainNavigationPaths } from '../../../paths'\n\nexport type FiltersStoreState = PlanPreferencesV3\n\nexport type FiltersStoreActions = {}\n\ntype FiltersStoreType = FiltersStoreState & FiltersStoreActions\n\nfunction shallowMerge>(initial: T, extended: Partial): T {\n if (typeof extended === 'string') {\n Logger.error('Invalid type for extended', extended)\n throw new Error('Invalid type for extended')\n }\n const final = { ...initial }\n Object.keys(extended).forEach((key) => {\n if (extended[key] !== undefined) {\n final[key as keyof T] = extended[key] as any\n }\n })\n\n return final\n}\n\nfunction qsAssertions(parsedQs: qs.ParsedQuery): parsedQs is Partial {\n return typeof parsedQs.numLines === 'number' || parsedQs.numLines === undefined\n}\n\nconst qsOptions: qs.ParseOptions = {\n arrayFormat: 'bracket',\n parseNumbers: true\n}\n\nfunction getParsedQs() {\n const parsedQs = qs.parse(defaultHistory.location.search.substring(1), qsOptions)\n\n if (!qsAssertions(parsedQs)) {\n Logger.error('Invalid query string parameters', parsedQs)\n throw new Error('Invalid query string parameters', { cause: parsedQs })\n }\n return parsedQs\n}\n\nfunction getFiltersFromUrl() {\n const selectedFilters: Partial = {}\n\n const initial = getInitialPreferencesV3()\n const parsedQs = getParsedQs()\n Object.keys(initial).forEach((_key) => {\n const key = _key as keyof FiltersStoreType\n if (Array.isArray(initial[key]) && parsedQs[key] && !Array.isArray(parsedQs[key])) {\n throw new Error(`Array should have been kept for key ${key}`, { cause: parsedQs })\n }\n selectedFilters[key as keyof FiltersStoreType] = (parsedQs[key as keyof FiltersStoreType] as any) ?? undefined\n })\n\n return shallowMerge(initial, selectedFilters)\n}\n\nlet replaceUrl = true\n\nconst createNavigationSlice: StateCreator = (set, get, api) => {\n const originalSetState = api.setState\n api.setState = (state) => {\n originalSetState(state)\n const searchParams = qs.stringify(\n {\n ...qs.parse(defaultHistory.location.search.substring(1), qsOptions),\n ...state\n },\n { arrayFormat: 'bracket' }\n )\n if (replaceUrl) {\n defaultHistory.replace({ ...defaultHistory.location, search: searchParams })\n }\n }\n\n return getFiltersFromUrl()\n}\n\nconst useFiltersStore = create(createNavigationSlice)\nlistenToNavigation()\n\nconst pathsToListen = [MainNavigationPaths.plans]\nfunction listenToNavigation() {\n return defaultHistory.listen((location) => {\n if (pathsToListen.every((path) => !location.pathname.startsWith(path))) {\n return\n }\n\n replaceUrl = false\n useFiltersStore.setState(getFiltersFromUrl())\n replaceUrl = true\n })\n}\n\nexport default useFiltersStore\n","import { Capacitor } from '@capacitor/core'\nimport { isPlatform } from '@ionic/react'\nimport create from 'zustand'\nimport { StateCreator } from 'zustand'\n\nexport type PermissionState = {\n modalState: ModalState\n}\n\nexport type PermissionActions = {\n clearPermissionState: () => void\n setModalState: (state: ModalState) => void\n}\n\nexport type RejectionState = 'not-rejected' | 'need-to-ask' | 'hide' | 'show-config-button'\n\nexport function getRejectionState(granted: boolean | undefined, rationale: boolean | undefined): RejectionState {\n if (granted) {\n return 'not-rejected'\n }\n\n if (rationale === undefined) {\n return 'need-to-ask'\n }\n\n return rationale ? 'hide' : 'show-config-button'\n}\n\nexport type ModalState = 'idle' | 'closed'\n\nexport const isNativeAndroid = isPlatform('android') && Capacitor.getPlatform() !== 'web'\n\nconst createNavigationSlice: StateCreator<\n PermissionState & PermissionActions,\n [],\n [],\n PermissionState & PermissionActions\n> = (set, get) => ({\n modalState: 'idle',\n\n setModalState(modalState: ModalState) {\n set(() => ({ modalState }))\n },\n\n clearPermissionState() {\n get().setModalState('idle')\n }\n})\n\nconst usePermissionStore = create(createNavigationSlice)\n\nexport default usePermissionStore\n","import { Geolocation, Position } from '@capacitor/geolocation'\nimport { autoLabelAddress } from '../pages/network-quality/autolabel-address'\nimport { Address } from '../store/address'\nimport { useQuery } from 'react-query'\nimport { Capacitor, PermissionState } from '@capacitor/core'\n\nexport const getLatLngFromPosition = (position?: Position): google.maps.LatLng | undefined => {\n if (!position) return undefined\n return new google.maps.LatLng(position.coords.latitude, position.coords.longitude)\n}\n\nexport const getAddressFromGeolocation = async (position: Position): Promise

    => {\n const location = getLatLngFromPosition(position)\n const { results } = await new google.maps.Geocoder().geocode({\n // TODO: bind to available dataset regions\n // componentRestrictions: {\n // country: 'US'\n // },\n location\n })\n\n if (results?.length) {\n const resultWithStreetAddress = results.find((result) => result.types.includes('route'))\n const address = {\n placeId: resultWithStreetAddress ? resultWithStreetAddress.place_id : results[0].place_id,\n addressName: resultWithStreetAddress ? resultWithStreetAddress.formatted_address : results[0].formatted_address,\n latitude: position.coords.latitude,\n longitude: position.coords.longitude\n }\n\n return Promise.resolve(autoLabelAddress(address))\n }\n\n return Promise.resolve(undefined)\n}\n\nexport function geocoderResultToAddress(geocoderResult: google.maps.GeocoderResult) {\n return autoLabelAddress({\n placeId: geocoderResult.place_id,\n addressName: geocoderResult.formatted_address,\n latitude: geocoderResult.geometry.location.lat(),\n longitude: geocoderResult.geometry.location.lng()\n })\n}\n\nexport const getAddressFromPlaceId = async (\n placeId: string,\n Geocoder: typeof google.maps.Geocoder | undefined\n): Promise
    => {\n Geocoder = Geocoder ?? google?.maps?.Geocoder\n if (!Geocoder) {\n return Promise.resolve(undefined)\n }\n const { results } = await new Geocoder().geocode({ placeId })\n if (results?.length) {\n return Promise.resolve(geocoderResultToAddress(results[0]))\n }\n\n return Promise.resolve(undefined)\n}\n\n// TODO: implement the states in the Address type and BE to avoid calling this function\nexport const getStatesFromAddresses = async (addresses: Address[]): Promise => {\n const placeIds = addresses.map((address) => address.placeId)\n const result = await Promise.all(placeIds.map((placeId) => new google.maps.Geocoder().geocode({ placeId })))\n\n return result\n .map((res) => {\n const state = res.results[0].address_components.find((component) =>\n component.types.includes('administrative_area_level_1')\n )\n return state?.short_name\n })\n .filter((state) => state !== undefined) as string[]\n}\n\nexport const getLatLngFromPlaceId = async (placeId: string): Promise => {\n const { results } = await new google.maps.Geocoder().geocode({\n // TODO: bind to available dataset regions\n // componentRestrictions: {\n // country: 'US'\n // },\n placeId\n })\n\n if (results?.length) {\n return Promise.resolve(results[0].geometry.location)\n }\n\n return Promise.resolve(undefined)\n}\n\nexport const getCenterFromAddresses = (addresses: Address[]): google.maps.LatLng => {\n const bounds = getBoundsFromAddresses(addresses)\n return bounds.getCenter()\n}\n\nexport const getBoundsFromAddresses = (addresses: Address[]): google.maps.LatLngBounds => {\n const bounds = new google.maps.LatLngBounds()\n\n addresses.forEach((address) => {\n bounds.extend(new google.maps.LatLng(address.latitude, address.longitude))\n })\n\n return bounds\n}\n\nexport const getBoundsFromPlaceId = async (placeId: string): Promise => {\n const { results } = await new google.maps.Geocoder().geocode({\n placeId\n })\n\n const bounds = new google.maps.LatLngBounds()\n\n if (results?.length) {\n bounds.extend(\n new google.maps.LatLng(\n results[0].geometry.viewport.getNorthEast().lat(),\n results[0].geometry.viewport.getNorthEast().lng()\n )\n )\n bounds.extend(\n new google.maps.LatLng(\n results[0].geometry.viewport.getSouthWest().lat(),\n results[0].geometry.viewport.getSouthWest().lng()\n )\n )\n return bounds\n }\n}\n\nexport const predictionToAddress = async (prediction: google.maps.places.AutocompletePrediction): Promise
    => {\n const latLng = await getLatLngFromPlaceId(prediction.place_id)\n return autoLabelAddress({\n placeId: prediction.place_id,\n addressName: [prediction.structured_formatting.main_text, prediction.structured_formatting.secondary_text]\n .filter((s) => s)\n .join(', '),\n latitude: latLng?.lat() ?? 0,\n longitude: latLng?.lng() ?? 0\n })\n}\n\nexport function upsertAddress(address: Address, addresses: Address[], index?: number): Address[] {\n if (index === undefined && addresses.every((addr) => addr.placeId !== address.placeId)) {\n addresses.push(address)\n } else if (index !== undefined) {\n addresses[index] = address\n }\n\n return addresses\n}\n\nexport function useGeolocationPermissions() {\n return useQuery({\n queryKey: 'geolocationPermission',\n async queryFn() {\n if (isWeb()) {\n const permissions = await navigator.permissions.query({ name: 'geolocation' })\n return permissions.state\n }\n const permissions = await Geolocation.checkPermissions()\n return permissions.location\n }\n })\n}\n\nfunction isWeb() {\n return Capacitor.getPlatform() === 'web'\n}\n\nexport async function requestGeolocationPermission(): Promise {\n if (isWeb()) {\n return new Promise((resolve) => {\n navigator.geolocation.getCurrentPosition(\n () => resolve('granted'),\n () => resolve('denied'),\n {\n timeout: 10000\n }\n )\n })\n } else {\n const permissions = await Geolocation.requestPermissions()\n return permissions.location\n }\n}\n","export const Logger = {\n debug: (...msgs: any[]) => {\n console.debug(...msgs)\n },\n info: (...msgs: any[]) => {\n console.info(...msgs)\n },\n warn: (...msgs: any[]) => {\n console.warn(...msgs)\n },\n error: (...msgs: any[]) => {\n console.error(...msgs)\n }\n}\n","export interface Logger {\n disable(): void;\n enable(logLevel: LogLevel): void;\n log(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n debug(...args: any[]): void;\n}\n\nexport enum LogLevel {\n None = 0,\n Error = 1,\n Warn = 2,\n Verbose = 3,\n Debug = 4,\n}\n\nexport interface LogConfig {\n logger: Logger;\n logLevel: LogLevel;\n}\n\ntype TimeKey = 'start' | 'end';\n\nexport interface DebugContext {\n type: string;\n name: string;\n args: string[] | string;\n stacktrace?: string[] | string;\n time?: { [key in TimeKey]?: string };\n states?: { [key: string]: any };\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { LogLevel, LogConfig, DebugContext } from '@amplitude/analytics-types';\nimport { AmplitudeCore } from '../core-client';\n\nexport const getStacktrace = (ignoreDepth = 0): string[] => {\n const trace = new Error().stack || '';\n return trace\n .split('\\n')\n .slice(2 + ignoreDepth)\n .map((text) => text.trim());\n};\n\n// This hook makes sure we always get the latest logger and logLevel.\nexport const getClientLogConfig = (client: AmplitudeCore) => (): LogConfig => {\n const { loggerProvider: logger, logLevel } = { ...client.config };\n return {\n logger,\n logLevel,\n };\n};\n\n// This is a convenient function to get the attribute from object with string path, similar to lodash '#get'.\nexport const getValueByStringPath = (obj: any, path: string): any => {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n for (const attr of path.split('.')) {\n if (attr in obj) {\n obj = obj[attr];\n } else {\n return;\n }\n }\n return obj;\n};\n\nexport const getClientStates = (client: AmplitudeCore, paths: Array) => (): { [key: string]: any } => {\n const res: { [key: string]: any } = {};\n for (const path of paths) {\n res[path] = getValueByStringPath(client, path);\n }\n return res;\n};\n\nexport const debugWrapper =\n , R>(\n fn: (...args: T) => R,\n fnName: string,\n getLogConfig: () => LogConfig,\n getStates?: () => { [key: string]: any },\n fnContext: any = null,\n ) =>\n (...args: T): R => {\n const { logger, logLevel } = getLogConfig();\n // return early if possible to reduce overhead\n if ((logLevel && logLevel < LogLevel.Debug) || !logLevel || !logger) {\n return fn.apply(fnContext, args);\n }\n const debugContext: DebugContext = {\n type: 'invoke public method',\n name: fnName,\n args,\n stacktrace: getStacktrace(1),\n time: {\n start: new Date().toISOString(),\n },\n states: {},\n };\n if (getStates && debugContext.states) {\n debugContext.states.before = getStates();\n }\n const result = fn.apply(fnContext, args);\n if (result && (result as any).promise) {\n // if result is a promise, add the callback\n (result as any).promise.then(() => {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n });\n } else {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n }\n return result;\n };\n","/** The status of an event. */\nexport enum Status {\n /** The status could not be determined. */\n Unknown = 'unknown',\n /** The event was skipped due to configuration or callbacks. */\n Skipped = 'skipped',\n /** The event was sent successfully. */\n Success = 'success',\n /** A user or device in the payload is currently rate limited and should try again later. */\n RateLimit = 'rate_limit',\n /** The sent payload was too large to be processed. */\n PayloadTooLarge = 'payload_too_large',\n /** The event could not be processed. */\n Invalid = 'invalid',\n /** A server-side error ocurred during submission. */\n Failed = 'failed',\n /** a server or client side error occuring when a request takes too long and is cancelled */\n Timeout = 'Timeout',\n /** NodeJS runtime environment error.. E.g. disconnected from network */\n SystemError = 'SystemError',\n}\n","import { AmplitudeReturn } from '@amplitude/analytics-types';\n\nexport const returnWrapper: {\n (): AmplitudeReturn;\n (awaitable: Promise): AmplitudeReturn;\n} = (awaitable?: Promise) => ({\n promise: awaitable || Promise.resolve(),\n});\n","export const SUCCESS_MESSAGE = 'Event tracked successfully';\nexport const UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport const MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexport const OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexport const MISSING_API_KEY_MESSAGE = 'Event rejected due to missing API key';\nexport const INVALID_API_KEY = 'Invalid API key';\nexport const CLIENT_NOT_INITIALIZED = 'Client not initialized';\n","export const UNSET_VALUE = '-';\nexport const AMPLITUDE_PREFIX = 'AMP';\nexport const STORAGE_PREFIX = `${AMPLITUDE_PREFIX}_unsent`;\nexport const AMPLITUDE_SERVER_URL = 'https://api2.amplitude.com/2/httpapi';\nexport const EU_AMPLITUDE_SERVER_URL = 'https://api.eu.amplitude.com/2/httpapi';\nexport const AMPLITUDE_BATCH_SERVER_URL = 'https://api2.amplitude.com/batch';\nexport const EU_AMPLITUDE_BATCH_SERVER_URL = 'https://api.eu.amplitude.com/batch';\n","import { Event, Result, Status } from '@amplitude/analytics-types';\n\nexport const buildResult = (event: Event, code = 0, message: string = Status.Unknown): Result => {\n return { event, code, message };\n};\n","import { LogLevel, Logger as ILogger } from '@amplitude/analytics-types';\n\nconst PREFIX = 'Amplitude Logger ';\n\nexport class Logger implements ILogger {\n logLevel: LogLevel;\n\n constructor() {\n this.logLevel = LogLevel.None;\n }\n\n disable(): void {\n this.logLevel = LogLevel.None;\n }\n\n enable(logLevel: LogLevel = LogLevel.Warn): void {\n this.logLevel = logLevel;\n }\n\n log(...args: any[]): void {\n if (this.logLevel < LogLevel.Verbose) {\n return;\n }\n console.log(`${PREFIX}[Log]: ${args.join(' ')}`);\n }\n\n warn(...args: any[]): void {\n if (this.logLevel < LogLevel.Warn) {\n return;\n }\n console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`);\n }\n\n error(...args: any[]): void {\n if (this.logLevel < LogLevel.Error) {\n return;\n }\n console.error(`${PREFIX}[Error]: ${args.join(' ')}`);\n }\n\n debug(...args: any[]): void {\n if (this.logLevel < LogLevel.Debug) {\n return;\n }\n // console.debug output is hidden by default in chrome\n console.log(`${PREFIX}[Debug]: ${args.join(' ')}`);\n }\n}\n","import {\n Event,\n Config as IConfig,\n Logger as ILogger,\n LogLevel,\n Storage,\n Transport,\n Plan,\n IngestionMetadata,\n Options,\n ServerZoneType,\n} from '@amplitude/analytics-types';\nimport {\n AMPLITUDE_SERVER_URL,\n AMPLITUDE_BATCH_SERVER_URL,\n EU_AMPLITUDE_SERVER_URL,\n EU_AMPLITUDE_BATCH_SERVER_URL,\n} from './constants';\n\nimport { Logger } from './logger';\n\nexport const getDefaultConfig = () => ({\n flushMaxRetries: 12,\n flushQueueSize: 200,\n flushIntervalMillis: 10000,\n instanceName: '$default_instance',\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n optOut: false,\n serverUrl: AMPLITUDE_SERVER_URL,\n serverZone: 'US' as ServerZoneType,\n useBatch: false,\n});\n\nexport class Config implements IConfig {\n apiKey: string;\n flushIntervalMillis: number;\n flushMaxRetries: number;\n flushQueueSize: number;\n instanceName?: string;\n loggerProvider: ILogger;\n logLevel: LogLevel;\n minIdLength?: number;\n plan?: Plan;\n ingestionMetadata?: IngestionMetadata;\n serverUrl: string | undefined;\n serverZone?: ServerZoneType;\n transportProvider: Transport;\n storageProvider?: Storage;\n useBatch: boolean;\n\n protected _optOut = false;\n get optOut() {\n return this._optOut;\n }\n set optOut(optOut: boolean) {\n this._optOut = optOut;\n }\n\n constructor(options: Options) {\n const defaultConfig = getDefaultConfig();\n this.apiKey = options.apiKey;\n this.flushIntervalMillis = options.flushIntervalMillis ?? defaultConfig.flushIntervalMillis;\n this.flushMaxRetries = options.flushMaxRetries || defaultConfig.flushMaxRetries;\n this.flushQueueSize = options.flushQueueSize || defaultConfig.flushQueueSize;\n this.instanceName = options.instanceName || defaultConfig.instanceName;\n this.loggerProvider = options.loggerProvider || defaultConfig.loggerProvider;\n this.logLevel = options.logLevel ?? defaultConfig.logLevel;\n this.minIdLength = options.minIdLength;\n this.plan = options.plan;\n this.ingestionMetadata = options.ingestionMetadata;\n this.optOut = options.optOut ?? defaultConfig.optOut;\n this.serverUrl = options.serverUrl;\n this.serverZone = options.serverZone || defaultConfig.serverZone;\n this.storageProvider = options.storageProvider;\n this.transportProvider = options.transportProvider;\n this.useBatch = options.useBatch ?? defaultConfig.useBatch;\n this.loggerProvider.enable(this.logLevel);\n\n const serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);\n this.serverZone = serverConfig.serverZone;\n this.serverUrl = serverConfig.serverUrl;\n }\n}\n\nexport const getServerUrl = (serverZone: ServerZoneType, useBatch: boolean) => {\n if (serverZone === 'EU') {\n return useBatch ? EU_AMPLITUDE_BATCH_SERVER_URL : EU_AMPLITUDE_SERVER_URL;\n }\n return useBatch ? AMPLITUDE_BATCH_SERVER_URL : AMPLITUDE_SERVER_URL;\n};\n\nexport const createServerConfig = (\n serverUrl = '',\n serverZone: ServerZoneType = getDefaultConfig().serverZone,\n useBatch: boolean = getDefaultConfig().useBatch,\n) => {\n if (serverUrl) {\n return { serverUrl, serverZone: undefined };\n }\n const _serverZone = ['US', 'EU'].includes(serverZone) ? serverZone : getDefaultConfig().serverZone;\n return {\n serverZone: _serverZone,\n serverUrl: getServerUrl(_serverZone, useBatch),\n };\n};\n","import {\n Config,\n DestinationContext as Context,\n DestinationPlugin,\n Event,\n InvalidResponse,\n PayloadTooLargeResponse,\n RateLimitResponse,\n Response,\n Result,\n Status,\n SuccessResponse,\n} from '@amplitude/analytics-types';\nimport {\n INVALID_API_KEY,\n MAX_RETRIES_EXCEEDED_MESSAGE,\n MISSING_API_KEY_MESSAGE,\n SUCCESS_MESSAGE,\n UNEXPECTED_ERROR_MESSAGE,\n} from '../messages';\nimport { STORAGE_PREFIX } from '../constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig } from '../config';\n\nfunction getErrorMessage(error: unknown) {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nexport function getResponseBodyString(res: Response) {\n let responseBodyString = '';\n try {\n if ('body' in res) {\n responseBodyString = JSON.stringify(res.body, null, 2);\n }\n } catch {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n return responseBodyString;\n}\n\nexport class Destination implements DestinationPlugin {\n name = 'amplitude';\n type = 'destination' as const;\n\n retryTimeout = 1000;\n throttleTimeout = 30000;\n storageKey = '';\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: Config;\n private scheduled: ReturnType | null = null;\n queue: Context[] = [];\n\n async setup(config: Config): Promise {\n this.config = config;\n\n this.storageKey = `${STORAGE_PREFIX}_${this.config.apiKey.substring(0, 10)}`;\n const unsent = await this.config.storageProvider?.get(this.storageKey);\n this.saveEvents(); // sets storage to '[]'\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map((event) => this.execute(event))).catch();\n }\n\n return Promise.resolve(undefined);\n }\n\n execute(event: Event): Promise {\n return new Promise((resolve) => {\n const context = {\n event,\n attempts: 0,\n callback: (result: Result) => resolve(result),\n timeout: 0,\n };\n void this.addToQueue(context);\n });\n }\n\n addToQueue(...list: Context[]) {\n const tryable = list.filter((context) => {\n if (context.attempts < this.config.flushMaxRetries) {\n context.attempts += 1;\n return true;\n }\n void this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n return false;\n });\n\n tryable.forEach((context) => {\n this.queue = this.queue.concat(context);\n if (context.timeout === 0) {\n this.schedule(this.config.flushIntervalMillis);\n return;\n }\n\n setTimeout(() => {\n context.timeout = 0;\n this.schedule(0);\n }, context.timeout);\n });\n\n this.saveEvents();\n }\n\n schedule(timeout: number) {\n if (this.scheduled) return;\n this.scheduled = setTimeout(() => {\n void this.flush(true).then(() => {\n if (this.queue.length > 0) {\n this.schedule(timeout);\n }\n });\n }, timeout);\n }\n\n async flush(useRetry = false) {\n const list: Context[] = [];\n const later: Context[] = [];\n this.queue.forEach((context) => (context.timeout === 0 ? list.push(context) : later.push(context)));\n this.queue = later;\n\n if (this.scheduled) {\n clearTimeout(this.scheduled);\n this.scheduled = null;\n }\n\n const batches = chunk(list, this.config.flushQueueSize);\n await Promise.all(batches.map((batch) => this.send(batch, useRetry)));\n }\n\n async send(list: Context[], useRetry = true) {\n if (!this.config.apiKey) {\n return this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE);\n }\n\n const payload = {\n api_key: this.config.apiKey,\n events: list.map((context) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { extra, ...eventWithoutExtra } = context.event;\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n client_upload_time: new Date().toISOString(),\n };\n\n try {\n const { serverUrl } = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch);\n const res = await this.config.transportProvider.send(serverUrl, payload);\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return;\n }\n if (!useRetry) {\n if ('body' in res) {\n this.fulfillRequest(list, res.statusCode, `${res.status}: ${getResponseBodyString(res)}`);\n } else {\n this.fulfillRequest(list, res.statusCode, res.status);\n }\n return;\n }\n this.handleResponse(res, list);\n } catch (e) {\n const errorMessage = getErrorMessage(e);\n this.config.loggerProvider.error(errorMessage);\n this.fulfillRequest(list, 0, errorMessage);\n }\n }\n\n handleResponse(res: Response, list: Context[]) {\n const { status } = res;\n\n switch (status) {\n case Status.Success: {\n this.handleSuccessResponse(res, list);\n break;\n }\n case Status.Invalid: {\n this.handleInvalidResponse(res, list);\n break;\n }\n case Status.PayloadTooLarge: {\n this.handlePayloadTooLargeResponse(res, list);\n break;\n }\n case Status.RateLimit: {\n this.handleRateLimitResponse(res, list);\n break;\n }\n default: {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(`{code: 0, error: \"Status '${status}' provided for ${list.length} events\"}`);\n\n this.handleOtherResponse(list);\n break;\n }\n }\n }\n\n handleSuccessResponse(res: SuccessResponse, list: Context[]) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n }\n\n handleInvalidResponse(res: InvalidResponse, list: Context[]) {\n if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n\n const dropIndex = [\n ...Object.values(res.body.eventsWithInvalidFields),\n ...Object.values(res.body.eventsWithMissingFields),\n ...Object.values(res.body.eventsWithInvalidIdLengths),\n ...res.body.silencedEvents,\n ].flat();\n const dropIndexSet = new Set(dropIndex);\n\n const retry = list.filter((context, index) => {\n if (dropIndexSet.has(index)) {\n this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n this.addToQueue(...retry);\n }\n\n handlePayloadTooLargeResponse(res: PayloadTooLargeResponse, list: Context[]) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n\n this.config.flushQueueSize /= 2;\n this.addToQueue(...list);\n }\n\n handleRateLimitResponse(res: RateLimitResponse, list: Context[]) {\n const dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n const dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n const throttledIndex = res.body.throttledEvents;\n const dropUserIdsSet = new Set(dropUserIds);\n const dropDeviceIdsSet = new Set(dropDeviceIds);\n const throttledIndexSet = new Set(throttledIndex);\n\n const retry = list.filter((context, index) => {\n if (\n (context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))\n ) {\n this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n if (throttledIndexSet.has(index)) {\n context.timeout = this.throttleTimeout;\n }\n return true;\n });\n\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n\n this.addToQueue(...retry);\n }\n\n handleOtherResponse(list: Context[]) {\n this.addToQueue(\n ...list.map((context) => {\n context.timeout = context.attempts * this.retryTimeout;\n return context;\n }),\n );\n }\n\n fulfillRequest(list: Context[], code: number, message: string) {\n this.saveEvents();\n list.forEach((context) => context.callback(buildResult(context.event, code, message)));\n }\n\n /**\n * Saves events to storage\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n */\n saveEvents() {\n if (!this.config.storageProvider) {\n return;\n }\n const events = Array.from(this.queue.map((context) => context.event));\n void this.config.storageProvider.set(this.storageKey, events);\n }\n}\n","import { BaseEvent } from './base-event';\n\nexport interface Identify {\n getUserProperties(): IdentifyUserProperties;\n set(property: string, value: ValidPropertyType): Identify;\n setOnce(property: string, value: ValidPropertyType): Identify;\n append(property: string, value: ValidPropertyType): Identify;\n prepend(property: string, value: ValidPropertyType): Identify;\n postInsert(property: string, value: ValidPropertyType): Identify;\n preInsert(property: string, value: ValidPropertyType): Identify;\n remove(property: string, value: ValidPropertyType): Identify;\n add(property: string, value: number): Identify;\n unset(property: string): Identify;\n clearAll(): Identify;\n}\n\nexport enum IdentifyOperation {\n // Base Operations to set values\n SET = '$set',\n SET_ONCE = '$setOnce',\n\n // Operations around modifying existing values\n ADD = '$add',\n APPEND = '$append',\n PREPEND = '$prepend',\n REMOVE = '$remove',\n\n // Operations around appending values *if* they aren't present\n PREINSERT = '$preInsert',\n POSTINSERT = '$postInsert',\n\n // Operations around removing properties/values\n UNSET = '$unset',\n CLEAR_ALL = '$clearAll',\n}\n\nexport type ValidPropertyType =\n | number\n | string\n | boolean\n | Array\n | { [key: string]: ValidPropertyType };\n\ninterface BaseOperationConfig {\n [key: string]: ValidPropertyType;\n}\n\nexport interface IdentifyUserProperties {\n // Add operations can only take numbers\n [IdentifyOperation.ADD]?: { [key: string]: number };\n\n // This reads the keys of the passed object, but the values are not used\n [IdentifyOperation.UNSET]?: BaseOperationConfig;\n // This option does not read the key as it unsets all user properties\n [IdentifyOperation.CLEAR_ALL]?: any;\n\n // These operations can take numbers, strings, or arrays of both.\n [IdentifyOperation.SET]?: BaseOperationConfig;\n [IdentifyOperation.SET_ONCE]?: BaseOperationConfig;\n [IdentifyOperation.APPEND]?: BaseOperationConfig;\n [IdentifyOperation.PREPEND]?: BaseOperationConfig;\n [IdentifyOperation.POSTINSERT]?: BaseOperationConfig;\n [IdentifyOperation.PREINSERT]?: BaseOperationConfig;\n [IdentifyOperation.REMOVE]?: BaseOperationConfig;\n}\n\nexport type UserProperties =\n | IdentifyUserProperties\n | {\n [key in Exclude]: any;\n };\n\nexport interface Revenue {\n getEventProperties(): RevenueEventProperties;\n setProductId(productId: string): Revenue;\n setQuantity(quantity: number): Revenue;\n setPrice(price: number): Revenue;\n setRevenueType(revenueType: string): Revenue;\n setEventProperties(properties: { [key: string]: any }): Revenue;\n setRevenue(revenue: number): Revenue;\n}\n\nexport enum RevenueProperty {\n REVENUE_PRODUCT_ID = '$productId',\n REVENUE_QUANTITY = '$quantity',\n REVENUE_PRICE = '$price',\n REVENUE_TYPE = '$revenueType',\n REVENUE = '$revenue',\n}\n\nexport interface RevenueEventProperties {\n [RevenueProperty.REVENUE_PRODUCT_ID]?: string;\n [RevenueProperty.REVENUE_QUANTITY]?: number;\n [RevenueProperty.REVENUE_PRICE]?: number;\n [RevenueProperty.REVENUE_TYPE]?: string;\n [RevenueProperty.REVENUE_TYPE]?: string;\n [RevenueProperty.REVENUE]?: number;\n}\n\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport enum SpecialEventType {\n IDENTIFY = '$identify',\n GROUP_IDENTIFY = '$groupidentify',\n REVENUE = 'revenue_amount',\n}\n\nexport interface TrackEvent extends BaseEvent {\n event_type: Exclude;\n}\n\nexport interface IdentifyEvent extends BaseEvent {\n event_type: SpecialEventType.IDENTIFY;\n user_properties: UserProperties;\n}\n\nexport interface GroupIdentifyEvent extends BaseEvent {\n event_type: SpecialEventType.GROUP_IDENTIFY;\n group_properties: UserProperties;\n}\n\nexport interface RevenueEvent extends BaseEvent {\n event_type: SpecialEventType.REVENUE;\n event_properties:\n | RevenueEventProperties\n | {\n [key: string]: any;\n };\n}\n\nexport type Event = TrackEvent | IdentifyEvent | GroupIdentifyEvent | RevenueEvent;\n","// Creates an array of elements split into groups the length of size.\n// If array can't be split evenly, the final chunk will be the remaining elements.\n// Works similary as https://lodash.com/docs/4.17.15#chunk\n\nexport const chunk = (arr: T[], size: number) => {\n const chunkSize = Math.max(size, 1);\n return arr.reduce((chunks, element, index) => {\n const chunkIndex = Math.floor(index / chunkSize);\n if (!chunks[chunkIndex]) {\n chunks[chunkIndex] = [];\n }\n chunks[chunkIndex].push(element);\n return chunks;\n }, []);\n};\n","/**\n * Source: [jed's gist]{@link https://gist.github.com/982883}.\n * Returns a random v4 UUID of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,\n * where each x is replaced with a random hexadecimal digit from 0 to f, and\n * y is replaced with a random hexadecimal digit from 8 to b.\n * Used to generate UUIDs for deviceIds.\n * @private\n */\nexport const UUID = function (a?: any): string {\n return a // if the placeholder was passed, return\n ? // a random number from 0 to 15\n (\n a ^ // unless b is 8,\n ((Math.random() * // in which case\n 16) >> // a random number from\n (a / 4))\n ) // 8 to 11\n .toString(16) // in hexadecimal\n : // or otherwise a concatenated string:\n (\n String(1e7) + // 10000000 +\n String(-1e3) + // -1000 +\n String(-4e3) + // -4000 +\n String(-8e3) + // -80000000 +\n String(-1e11)\n ) // -100000000000,\n .replace(\n // replacing\n /[018]/g, // zeroes, ones, and eights with\n UUID, // random hex digits\n );\n};\n","const MAX_PROPERTY_KEYS = 1000;\n\nexport const isValidObject = (properties: { [key: string]: any }): boolean => {\n if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n return false;\n }\n for (const key in properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = properties[key];\n if (!isValidProperties(key, value)) return false;\n }\n return true;\n};\n\nexport const isValidProperties = (property: string, value: any): boolean => {\n if (typeof property !== 'string') return false;\n if (Array.isArray(value)) {\n let isValid = true;\n for (const valueElement of value) {\n if (Array.isArray(valueElement)) {\n return false;\n } else if (typeof valueElement === 'object') {\n isValid = isValid && isValidObject(valueElement as object);\n } else if (!['number', 'string'].includes(typeof valueElement)) {\n return false;\n }\n if (!isValid) {\n return false;\n }\n }\n } else if (value === null || value === undefined) {\n return false;\n } else if (typeof value === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isValidObject(value);\n } else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n return false;\n }\n return true;\n};\n","import {\n IdentifyOperation,\n IdentifyUserProperties,\n ValidPropertyType,\n Identify as IIdentify,\n} from '@amplitude/analytics-types';\nimport { UNSET_VALUE } from './constants';\nimport { isValidProperties } from './utils/valid-properties';\n\nexport class Identify implements IIdentify {\n protected readonly _propertySet: Set = new Set();\n protected _properties: IdentifyUserProperties = {};\n\n public getUserProperties(): IdentifyUserProperties {\n return { ...this._properties };\n }\n\n public set(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.SET, property, value);\n return this;\n }\n\n public setOnce(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n return this;\n }\n\n public append(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.APPEND, property, value);\n return this;\n }\n\n public prepend(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.PREPEND, property, value);\n return this;\n }\n\n public postInsert(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n return this;\n }\n\n public preInsert(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.PREINSERT, property, value);\n return this;\n }\n\n public remove(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.REMOVE, property, value);\n return this;\n }\n\n public add(property: string, value: number): Identify {\n this._safeSet(IdentifyOperation.ADD, property, value);\n return this;\n }\n\n public unset(property: string): Identify {\n this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);\n return this;\n }\n\n public clearAll(): Identify {\n // When clear all happens, all properties are unset. Reset the entire object.\n this._properties = {};\n this._properties[IdentifyOperation.CLEAR_ALL] = UNSET_VALUE;\n\n return this;\n }\n\n // Returns whether or not this set actually worked.\n private _safeSet(operation: IdentifyOperation, property: string, value: ValidPropertyType): boolean {\n if (this._validate(operation, property, value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let userPropertyMap: any = this._properties[operation];\n if (userPropertyMap === undefined) {\n userPropertyMap = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._properties[operation] = userPropertyMap;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n userPropertyMap[property] = value;\n this._propertySet.add(property);\n return true;\n }\n\n return false;\n }\n\n private _validate(operation: IdentifyOperation, property: string, value: ValidPropertyType): boolean {\n if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n // clear all already set. Skipping operation;\n return false;\n }\n\n if (this._propertySet.has(property)) {\n // Property already used. Skipping operation\n return false;\n }\n\n if (operation === IdentifyOperation.ADD) {\n return typeof value === 'number';\n }\n\n if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n return isValidProperties(property, value);\n }\n return true;\n }\n}\n","import {\n RevenueProperty,\n RevenueEventProperties,\n Revenue as IRevenue,\n ValidPropertyType,\n} from '@amplitude/analytics-types';\nimport { isValidObject } from './utils/valid-properties';\n\nexport class Revenue implements IRevenue {\n private productId: string;\n private quantity: number;\n private price: number;\n private revenueType?: string;\n private properties?: { [key: string]: any };\n private revenue?: number;\n\n constructor() {\n this.productId = '';\n this.quantity = 1;\n this.price = 0.0;\n }\n\n setProductId(productId: string) {\n this.productId = productId;\n return this;\n }\n\n setQuantity(quantity: number) {\n if (quantity > 0) {\n this.quantity = quantity;\n }\n return this;\n }\n\n setPrice(price: number) {\n this.price = price;\n return this;\n }\n\n setRevenueType(revenueType: string) {\n this.revenueType = revenueType;\n return this;\n }\n\n setRevenue(revenue: number) {\n this.revenue = revenue;\n return this;\n }\n\n setEventProperties(properties: { [key: string]: ValidPropertyType }) {\n if (isValidObject(properties)) {\n this.properties = properties;\n }\n return this;\n }\n\n getEventProperties(): RevenueEventProperties {\n const eventProperties: RevenueEventProperties = this.properties ? { ...this.properties } : {};\n eventProperties[RevenueProperty.REVENUE_PRODUCT_ID] = this.productId;\n eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;\n eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;\n eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;\n eventProperties[RevenueProperty.REVENUE] = this.revenue;\n return eventProperties;\n }\n}\n","import {\n BeforePlugin,\n Config,\n CoreClient,\n DestinationPlugin,\n EnrichmentPlugin,\n Event,\n EventCallback,\n Plugin,\n Result,\n} from '@amplitude/analytics-types';\nimport { buildResult } from './utils/result-builder';\nimport { UUID } from './utils/uuid';\n\nexport class Timeline {\n queue: [Event, EventCallback][] = [];\n // Flag to guarantee one schedule apply is running\n applying = false;\n // Flag indicates whether timeline is ready to process event\n // Events collected before timeline is ready will stay in the queue to be processed later\n plugins: Plugin[] = [];\n\n constructor(private client: CoreClient) {}\n\n async register(plugin: Plugin, config: Config) {\n plugin.name = plugin.name ?? UUID();\n plugin.type = plugin.type ?? 'enrichment';\n await plugin.setup?.(config, this.client);\n this.plugins.push(plugin);\n }\n\n async deregister(pluginName: string) {\n const index = this.plugins.findIndex((plugin) => plugin.name === pluginName);\n const plugin = this.plugins[index];\n this.plugins.splice(index, 1);\n await plugin.teardown?.();\n }\n\n reset(client: CoreClient) {\n this.applying = false;\n const plugins = this.plugins;\n plugins.map((plugin) => plugin.teardown?.());\n this.plugins = [];\n this.client = client;\n }\n\n push(event: Event) {\n return new Promise((resolve) => {\n this.queue.push([event, resolve]);\n this.scheduleApply(0);\n });\n }\n\n scheduleApply(timeout: number) {\n if (this.applying) return;\n this.applying = true;\n setTimeout(() => {\n void this.apply(this.queue.shift()).then(() => {\n this.applying = false;\n if (this.queue.length > 0) {\n this.scheduleApply(0);\n }\n });\n }, timeout);\n }\n\n async apply(item: [Event, EventCallback] | undefined) {\n if (!item) {\n return;\n }\n\n let [event] = item;\n const [, resolve] = item;\n\n const before = this.plugins.filter(\n (plugin: Plugin): plugin is BeforePlugin => plugin.type === 'before',\n );\n\n for (const plugin of before) {\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n continue;\n }\n const e = await plugin.execute({ ...event });\n if (e === null) {\n resolve({ event, code: 100, message: `Event was dropped by a plugin` });\n return;\n } else {\n event = e;\n }\n }\n\n const enrichment = this.plugins.filter(\n (plugin: Plugin): plugin is EnrichmentPlugin => plugin.type === 'enrichment' || plugin.type === undefined,\n );\n\n for (const plugin of enrichment) {\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n continue;\n }\n const e = await plugin.execute({ ...event });\n if (e === null) {\n resolve({ event, code: 100, message: `Event was dropped by a plugin` });\n return;\n } else {\n event = e;\n }\n }\n\n const destination = this.plugins.filter(\n (plugin: Plugin): plugin is DestinationPlugin => plugin.type === 'destination',\n );\n\n const executeDestinations = destination.map((plugin) => {\n const eventClone = { ...event };\n return plugin.execute(eventClone).catch((e) => buildResult(eventClone, 0, String(e)));\n });\n\n void Promise.all(executeDestinations).then(([result]) => {\n const resolveResult =\n result || buildResult(event, 100, 'Event not tracked, no destination plugins on the instance');\n resolve(resolveResult);\n });\n\n return;\n }\n\n async flush() {\n const queue = this.queue;\n this.queue = [];\n\n await Promise.all(queue.map((item) => this.apply(item)));\n\n const destination = this.plugins.filter(\n (plugin: Plugin): plugin is DestinationPlugin => plugin.type === 'destination',\n );\n\n const executeDestinations = destination.map((plugin) => {\n return plugin.flush && plugin.flush();\n });\n\n await Promise.all(executeDestinations);\n }\n}\n","import {\n BaseEvent,\n TrackEvent,\n IdentifyEvent,\n GroupIdentifyEvent,\n SpecialEventType,\n Identify as IIdentify,\n Revenue,\n RevenueEvent,\n EventOptions,\n} from '@amplitude/analytics-types';\nimport { Identify } from '../identify';\n\nexport const createTrackEvent = (\n eventInput: BaseEvent | string,\n eventProperties?: Record,\n eventOptions?: EventOptions,\n): TrackEvent => {\n const baseEvent: BaseEvent = typeof eventInput === 'string' ? { event_type: eventInput } : eventInput;\n return {\n ...baseEvent,\n ...eventOptions,\n ...(eventProperties && { event_properties: eventProperties }),\n };\n};\n\nexport const createIdentifyEvent = (identify: IIdentify, eventOptions?: EventOptions): IdentifyEvent => {\n const identifyEvent: IdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.IDENTIFY,\n user_properties: identify.getUserProperties(),\n };\n\n return identifyEvent;\n};\n\nexport const createGroupIdentifyEvent = (\n groupType: string,\n groupName: string | string[],\n identify: IIdentify,\n eventOptions?: EventOptions,\n): GroupIdentifyEvent => {\n const groupIdentify: GroupIdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.GROUP_IDENTIFY,\n group_properties: identify.getUserProperties(),\n groups: {\n [groupType]: groupName,\n },\n };\n\n return groupIdentify;\n};\n\nexport const createGroupEvent = (groupType: string, groupName: string | string[], eventOptions?: EventOptions) => {\n const identify = new Identify();\n identify.set(groupType, groupName);\n\n const groupEvent: IdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.IDENTIFY,\n user_properties: identify.getUserProperties(),\n groups: {\n [groupType]: groupName,\n },\n };\n return groupEvent;\n};\n\nexport const createRevenueEvent = (revenue: Revenue, eventOptions?: EventOptions): RevenueEvent => {\n return {\n ...eventOptions,\n event_type: SpecialEventType.REVENUE,\n event_properties: revenue.getEventProperties(),\n };\n};\n","import {\n BaseEvent,\n Config,\n CoreClient,\n Event,\n EventOptions,\n Identify,\n Plugin,\n Result,\n Revenue,\n} from '@amplitude/analytics-types';\nimport { CLIENT_NOT_INITIALIZED, OPT_OUT_MESSAGE } from './messages';\nimport { Timeline } from './timeline';\nimport {\n createGroupEvent,\n createGroupIdentifyEvent,\n createIdentifyEvent,\n createRevenueEvent,\n createTrackEvent,\n} from './utils/event-builder';\nimport { buildResult } from './utils/result-builder';\nimport { returnWrapper } from './utils/return-wrapper';\n\nexport class AmplitudeCore implements CoreClient {\n protected initializing = false;\n protected name: string;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: Config;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n timeline: Timeline;\n protected q: CallableFunction[] = [];\n protected dispatchQ: CallableFunction[] = [];\n\n constructor(name = '$default') {\n this.timeline = new Timeline(this);\n this.name = name;\n }\n\n protected async _init(config: Config) {\n this.config = config;\n this.timeline.reset(this);\n await this.runQueuedFunctions('q');\n }\n\n async runQueuedFunctions(queueName: 'q' | 'dispatchQ') {\n const queuedFunctions = this[queueName];\n this[queueName] = [];\n for (const queuedFunction of queuedFunctions) {\n await queuedFunction();\n }\n }\n\n track(eventInput: BaseEvent | string, eventProperties?: Record, eventOptions?: EventOptions) {\n const event = createTrackEvent(eventInput, eventProperties, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n logEvent = this.track.bind(this);\n\n identify(identify: Identify, eventOptions?: EventOptions) {\n const event = createIdentifyEvent(identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: Identify, eventOptions?: EventOptions) {\n const event = createGroupIdentifyEvent(groupType, groupName, identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n setGroup(groupType: string, groupName: string | string[], eventOptions?: EventOptions) {\n const event = createGroupEvent(groupType, groupName, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n revenue(revenue: Revenue, eventOptions?: EventOptions) {\n const event = createRevenueEvent(revenue, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n add(plugin: Plugin) {\n if (!this.config) {\n this.q.push(this.add.bind(this, plugin));\n return returnWrapper();\n }\n return returnWrapper(this.timeline.register(plugin, this.config));\n }\n\n remove(pluginName: string) {\n if (!this.config) {\n this.q.push(this.remove.bind(this, pluginName));\n return returnWrapper();\n }\n return returnWrapper(this.timeline.deregister(pluginName));\n }\n\n dispatchWithCallback(event: Event, callback: (result: Result) => void): void {\n if (!this.config) {\n return callback(buildResult(event, 0, CLIENT_NOT_INITIALIZED));\n }\n void this.process(event).then(callback);\n }\n\n async dispatch(event: Event): Promise {\n if (!this.config) {\n return new Promise((resolve) => {\n this.dispatchQ.push(this.dispatchWithCallback.bind(this, event, resolve));\n });\n }\n\n return this.process(event);\n }\n\n async process(event: Event): Promise {\n try {\n // skip event processing if opt out\n if (this.config.optOut) {\n return buildResult(event, 0, OPT_OUT_MESSAGE);\n }\n\n const result = await this.timeline.push(event);\n\n result.code === 200\n ? this.config.loggerProvider.log(result.message)\n : result.code === 100\n ? this.config.loggerProvider.warn(result.message)\n : this.config.loggerProvider.error(result.message);\n\n return result;\n } catch (e) {\n const message = String(e);\n this.config.loggerProvider.error(message);\n const result = buildResult(event, 0, message);\n\n return result;\n }\n }\n\n setOptOut(optOut: boolean) {\n if (!this.config) {\n this.q.push(this.setOptOut.bind(this, Boolean(optOut)));\n return;\n }\n this.config.optOut = Boolean(optOut);\n }\n\n flush() {\n return returnWrapper(this.timeline.flush());\n }\n}\n","var ApplicationContextProviderImpl = /** @class */ (function () {\n function ApplicationContextProviderImpl() {\n }\n ApplicationContextProviderImpl.prototype.getApplicationContext = function () {\n return {\n versionName: this.versionName,\n language: getLanguage(),\n platform: 'Web',\n os: undefined,\n deviceModel: undefined,\n };\n };\n return ApplicationContextProviderImpl;\n}());\nvar getLanguage = function () {\n return ((typeof navigator !== 'undefined' &&\n ((navigator.languages && navigator.languages[0]) ||\n navigator.language)) ||\n '');\n};\n\nvar EventBridgeImpl = /** @class */ (function () {\n function EventBridgeImpl() {\n this.queue = [];\n }\n EventBridgeImpl.prototype.logEvent = function (event) {\n if (!this.receiver) {\n if (this.queue.length < 512) {\n this.queue.push(event);\n }\n }\n else {\n this.receiver(event);\n }\n };\n EventBridgeImpl.prototype.setEventReceiver = function (receiver) {\n this.receiver = receiver;\n if (this.queue.length > 0) {\n this.queue.forEach(function (event) {\n receiver(event);\n });\n this.queue = [];\n }\n };\n return EventBridgeImpl;\n}());\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isEqual = function (obj1, obj2) {\n var primitive = ['string', 'number', 'boolean', 'undefined'];\n var typeA = typeof obj1;\n var typeB = typeof obj2;\n if (typeA !== typeB) {\n return false;\n }\n for (var _i = 0, primitive_1 = primitive; _i < primitive_1.length; _i++) {\n var p = primitive_1[_i];\n if (p === typeA) {\n return obj1 === obj2;\n }\n }\n // check null\n if (obj1 == null && obj2 == null) {\n return true;\n }\n else if (obj1 == null || obj2 == null) {\n return false;\n }\n // if got here - objects\n if (obj1.length !== obj2.length) {\n return false;\n }\n //check if arrays\n var isArrayA = Array.isArray(obj1);\n var isArrayB = Array.isArray(obj2);\n if (isArrayA !== isArrayB) {\n return false;\n }\n if (isArrayA && isArrayB) {\n //arrays\n for (var i = 0; i < obj1.length; i++) {\n if (!isEqual(obj1[i], obj2[i])) {\n return false;\n }\n }\n }\n else {\n //objects\n var sorted1 = Object.keys(obj1).sort();\n var sorted2 = Object.keys(obj2).sort();\n if (!isEqual(sorted1, sorted2)) {\n return false;\n }\n //compare object values\n var result_1 = true;\n Object.keys(obj1).forEach(function (key) {\n if (!isEqual(obj1[key], obj2[key])) {\n result_1 = false;\n }\n });\n return result_1;\n }\n return true;\n};\n\nvar ID_OP_SET = '$set';\nvar ID_OP_UNSET = '$unset';\nvar ID_OP_CLEAR_ALL = '$clearAll';\n// Polyfill for Object.entries\nif (!Object.entries) {\n Object.entries = function (obj) {\n var ownProps = Object.keys(obj);\n var i = ownProps.length;\n var resArray = new Array(i);\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n }\n return resArray;\n };\n}\nvar IdentityStoreImpl = /** @class */ (function () {\n function IdentityStoreImpl() {\n this.identity = { userProperties: {} };\n this.listeners = new Set();\n }\n IdentityStoreImpl.prototype.editIdentity = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var actingUserProperties = __assign({}, this.identity.userProperties);\n var actingIdentity = __assign(__assign({}, this.identity), { userProperties: actingUserProperties });\n return {\n setUserId: function (userId) {\n actingIdentity.userId = userId;\n return this;\n },\n setDeviceId: function (deviceId) {\n actingIdentity.deviceId = deviceId;\n return this;\n },\n setUserProperties: function (userProperties) {\n actingIdentity.userProperties = userProperties;\n return this;\n },\n setOptOut: function (optOut) {\n actingIdentity.optOut = optOut;\n return this;\n },\n updateUserProperties: function (actions) {\n var actingProperties = actingIdentity.userProperties || {};\n for (var _i = 0, _a = Object.entries(actions); _i < _a.length; _i++) {\n var _b = _a[_i], action = _b[0], properties = _b[1];\n switch (action) {\n case ID_OP_SET:\n for (var _c = 0, _d = Object.entries(properties); _c < _d.length; _c++) {\n var _e = _d[_c], key = _e[0], value = _e[1];\n actingProperties[key] = value;\n }\n break;\n case ID_OP_UNSET:\n for (var _f = 0, _g = Object.keys(properties); _f < _g.length; _f++) {\n var key = _g[_f];\n delete actingProperties[key];\n }\n break;\n case ID_OP_CLEAR_ALL:\n actingProperties = {};\n break;\n }\n }\n actingIdentity.userProperties = actingProperties;\n return this;\n },\n commit: function () {\n self.setIdentity(actingIdentity);\n return this;\n },\n };\n };\n IdentityStoreImpl.prototype.getIdentity = function () {\n return __assign({}, this.identity);\n };\n IdentityStoreImpl.prototype.setIdentity = function (identity) {\n var originalIdentity = __assign({}, this.identity);\n this.identity = __assign({}, identity);\n if (!isEqual(originalIdentity, this.identity)) {\n this.listeners.forEach(function (listener) {\n listener(identity);\n });\n }\n };\n IdentityStoreImpl.prototype.addIdentityListener = function (listener) {\n this.listeners.add(listener);\n };\n IdentityStoreImpl.prototype.removeIdentityListener = function (listener) {\n this.listeners.delete(listener);\n };\n return IdentityStoreImpl;\n}());\n\nvar safeGlobal = typeof globalThis !== 'undefined'\n ? globalThis\n : typeof global !== 'undefined'\n ? global\n : self;\n\nvar AnalyticsConnector = /** @class */ (function () {\n function AnalyticsConnector() {\n this.identityStore = new IdentityStoreImpl();\n this.eventBridge = new EventBridgeImpl();\n this.applicationContextProvider = new ApplicationContextProviderImpl();\n }\n AnalyticsConnector.getInstance = function (instanceName) {\n if (!safeGlobal['analyticsConnectorInstances']) {\n safeGlobal['analyticsConnectorInstances'] = {};\n }\n if (!safeGlobal['analyticsConnectorInstances'][instanceName]) {\n safeGlobal['analyticsConnectorInstances'][instanceName] =\n new AnalyticsConnector();\n }\n return safeGlobal['analyticsConnectorInstances'][instanceName];\n };\n return AnalyticsConnector;\n}());\n\nexport { AnalyticsConnector };\n","import { AnalyticsConnector } from '@amplitude/analytics-connector';\n\nexport const getAnalyticsConnector = (instanceName = '$default_instance'): AnalyticsConnector => {\n return AnalyticsConnector.getInstance(instanceName);\n};\n\nexport const setConnectorUserId = (userId: string | undefined, instanceName?: string): void => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\n\nexport const setConnectorDeviceId = (deviceId: string, instanceName?: string): void => {\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\n","import { BeforePlugin, Config, Event } from '@amplitude/analytics-types';\nimport { getAnalyticsConnector } from '../analytics-connector';\n\nexport class IdentityEventSender implements BeforePlugin {\n name = 'identity';\n type = 'before' as const;\n\n identityStore = getAnalyticsConnector().identityStore;\n\n async execute(context: Event): Promise {\n const userProperties = context.user_properties as Record;\n if (userProperties) {\n this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n }\n return context;\n }\n\n async setup(config: Config) {\n if (config.instanceName) {\n this.identityStore = getAnalyticsConnector(config.instanceName).identityStore;\n }\n }\n}\n","import {\n AttributionOptions,\n BrowserOptions,\n DefaultTrackingOptions,\n PageTrackingHistoryChanges,\n PageTrackingOptions,\n PageTrackingTrackOn,\n} from '@amplitude/analytics-types';\n\n/**\n * Returns false if defaultTracking === false or if defaultTracking[event],\n * otherwise returns true\n */\nconst isTrackingEnabled = (\n defaultTracking: DefaultTrackingOptions | boolean | undefined,\n event: keyof DefaultTrackingOptions,\n) => {\n if (typeof defaultTracking === 'boolean') {\n return defaultTracking;\n }\n\n if (defaultTracking?.[event] === false) {\n return false;\n }\n\n return true;\n};\n\nexport const isAttributionTrackingEnabled = (defaultTracking: DefaultTrackingOptions | boolean | undefined) =>\n isTrackingEnabled(defaultTracking, 'attribution');\n\nexport const isFileDownloadTrackingEnabled = (defaultTracking: DefaultTrackingOptions | boolean | undefined) =>\n isTrackingEnabled(defaultTracking, 'fileDownloads');\n\nexport const isFormInteractionTrackingEnabled = (defaultTracking: DefaultTrackingOptions | boolean | undefined) =>\n isTrackingEnabled(defaultTracking, 'formInteractions');\n\nexport const isPageViewTrackingEnabled = (defaultTracking: DefaultTrackingOptions | boolean | undefined) =>\n isTrackingEnabled(defaultTracking, 'pageViews');\n\nexport const isSessionTrackingEnabled = (defaultTracking: DefaultTrackingOptions | boolean | undefined) =>\n isTrackingEnabled(defaultTracking, 'sessions');\n\nexport const getPageViewTrackingConfig = (config: BrowserOptions): PageTrackingOptions => {\n let trackOn: PageTrackingTrackOn | undefined = () => false;\n let trackHistoryChanges: PageTrackingHistoryChanges | undefined = undefined;\n let eventType: string | undefined;\n\n const isDefaultPageViewTrackingEnabled = isPageViewTrackingEnabled(config.defaultTracking);\n if (isDefaultPageViewTrackingEnabled) {\n trackOn = undefined;\n eventType = undefined;\n\n if (\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.pageViews &&\n typeof config.defaultTracking.pageViews === 'object'\n ) {\n if ('trackOn' in config.defaultTracking.pageViews) {\n trackOn = config.defaultTracking.pageViews.trackOn;\n }\n\n if ('trackHistoryChanges' in config.defaultTracking.pageViews) {\n trackHistoryChanges = config.defaultTracking.pageViews.trackHistoryChanges;\n }\n\n if ('eventType' in config.defaultTracking.pageViews && config.defaultTracking.pageViews.eventType) {\n eventType = config.defaultTracking.pageViews.eventType;\n }\n }\n }\n\n return {\n trackOn,\n trackHistoryChanges,\n eventType,\n };\n};\n\nexport const getAttributionTrackingConfig = (config: BrowserOptions): AttributionOptions => {\n if (\n isAttributionTrackingEnabled(config.defaultTracking) &&\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.attribution &&\n typeof config.defaultTracking.attribution === 'object'\n ) {\n return {\n ...config.defaultTracking.attribution,\n };\n }\n\n return {};\n};\n","/**\n * @deprecated Function name is misleading. Use `isSessionExpired`.\n */\nexport const isNewSession = (sessionTimeout: number, lastEventTime: number = Date.now()): boolean =>\n isSessionExpired(sessionTimeout, lastEventTime);\n\nexport const isSessionExpired = (sessionTimeout: number, lastEventTime: number = Date.now()): boolean => {\n const currentTime = Date.now();\n const timeSinceLastEvent = currentTime - lastEventTime;\n\n return timeSinceLastEvent > sessionTimeout;\n};\n","import { AmplitudeReturn, InstanceProxy, QueueProxy, Result } from '@amplitude/analytics-types';\n\n/**\n * Applies the proxied functions on the proxied amplitude snippet to an instance of the real object.\n * @ignore\n */\nexport const runQueuedFunctions = (instance: object, queue: QueueProxy) => {\n convertProxyObjectToRealObject(instance, queue);\n};\n\n/**\n * Applies the proxied functions on the proxied object to an instance of the real object.\n * Used to convert proxied Identify and Revenue objects.\n */\nexport const convertProxyObjectToRealObject = (instance: T, queue: QueueProxy): T => {\n for (let i = 0; i < queue.length; i++) {\n const { name, args, resolve } = queue[i];\n const fn = instance && instance[name as keyof T];\n if (typeof fn === 'function') {\n const result = fn.apply(instance, args) as AmplitudeReturn;\n if (typeof resolve === 'function') {\n resolve(result?.promise);\n }\n }\n }\n return instance;\n};\n\n/**\n * Check if the param is snippet proxy\n */\nexport const isInstanceProxy = (instance: unknown): instance is InstanceProxy => {\n const instanceProxy = instance as InstanceProxy;\n return instanceProxy && instanceProxy._q !== undefined;\n};\n","export const getLanguage = (): string => {\n if (typeof navigator === 'undefined') return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const userLanguage = (navigator as any).userLanguage as string | undefined;\n\n return navigator.languages?.[0] ?? navigator.language ?? userLanguage ?? '';\n};\n","import { BeforePlugin, BrowserConfig, Event } from '@amplitude/analytics-types';\nimport { UUID } from '@amplitude/analytics-core';\nimport { getLanguage } from '@amplitude/analytics-client-common';\nimport { VERSION } from '../version';\n\nconst BROWSER_PLATFORM = 'Web';\nconst IP_ADDRESS = '$remote';\nexport class Context implements BeforePlugin {\n name = '@amplitude/plugin-context-browser';\n type = 'before' as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n userAgent: string | undefined;\n library = `amplitude-ts/${VERSION}`;\n\n constructor() {\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n this.userAgent = navigator.userAgent;\n }\n }\n\n setup(config: BrowserConfig): Promise {\n this.config = config;\n\n return Promise.resolve(undefined);\n }\n\n async execute(context: Event): Promise {\n const time = new Date().getTime();\n const lastEventId = this.config.lastEventId ?? -1;\n const nextEventId = context.event_id ?? lastEventId + 1;\n this.config.lastEventId = nextEventId;\n if (!context.time) {\n this.config.lastEventTime = time;\n }\n\n const event: Event = {\n user_id: this.config.userId,\n device_id: this.config.deviceId,\n session_id: this.config.sessionId,\n time,\n ...(this.config.appVersion && { app_version: this.config.appVersion }),\n ...(this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM }),\n ...(this.config.trackingOptions.language && { language: getLanguage() }),\n ...(this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS }),\n insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\n ...(this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n }),\n ...context,\n event_id: nextEventId,\n library: this.library,\n user_agent: this.userAgent,\n };\n return event;\n }\n}\n","export const VERSION = '2.3.6';\n","import { Storage } from '@amplitude/analytics-types';\n\nexport class MemoryStorage implements Storage {\n memoryStorage: Map = new Map();\n\n async isEnabled(): Promise {\n return true;\n }\n\n async get(key: string): Promise {\n return this.memoryStorage.get(key);\n }\n\n async getRaw(key: string): Promise {\n const value = await this.get(key);\n return value ? JSON.stringify(value) : undefined;\n }\n\n async set(key: string, value: T): Promise {\n this.memoryStorage.set(key, value);\n }\n\n async remove(key: string): Promise {\n this.memoryStorage.delete(key);\n }\n\n async reset(): Promise {\n this.memoryStorage.clear();\n }\n}\n","import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\n\nexport const getCookieName = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n\nexport const getOldCookieName = (apiKey: string) => {\n return `${AMPLITUDE_PREFIX.toLowerCase()}_${apiKey.substring(0, 6)}`;\n};\n","/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\n\nexport const getGlobalScope = (): typeof globalThis | undefined => {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n};\n","import { getGlobalScope } from './global-scope';\n\nexport const getQueryParams = (): Record => {\n const globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!globalScope?.location?.search) {\n return {};\n }\n const pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n const params = pairs.reduce>((acc, curr) => {\n const query = curr.split('=', 2);\n const key = tryDecodeURIComponent(query[0]);\n const value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\n\nexport const tryDecodeURIComponent = (value = '') => {\n try {\n return decodeURIComponent(value);\n } catch {\n return '';\n }\n};\n","import { Storage, CookieStorageOptions } from '@amplitude/analytics-types';\nimport { getGlobalScope } from '../global-scope';\n\nexport class CookieStorage implements Storage {\n options: CookieStorageOptions;\n private static testValue: undefined | string;\n\n constructor(options?: CookieStorageOptions) {\n this.options = { ...options };\n }\n\n async isEnabled(): Promise {\n /* istanbul ignore if */\n if (!getGlobalScope()) {\n return false;\n }\n\n CookieStorage.testValue = String(Date.now());\n const testStrorage = new CookieStorage(this.options);\n const testKey = 'AMP_TEST';\n try {\n await testStrorage.set(testKey, CookieStorage.testValue);\n const value = await testStrorage.get(testKey);\n return value === CookieStorage.testValue;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStrorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise {\n let value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n try {\n try {\n value = decodeURIComponent(atob(value));\n } catch {\n // value not encoded\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n } catch {\n /* istanbul ignore next */\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise {\n const globalScope = getGlobalScope();\n const cookie = globalScope?.document?.cookie.split('; ') ?? [];\n const match = cookie.find((c) => c.indexOf(key + '=') === 0);\n if (!match) {\n return undefined;\n }\n return match.substring(key.length + 1);\n }\n\n async set(key: string, value: T | null): Promise {\n try {\n const expirationDays = this.options.expirationDays ?? 0;\n const expires = value !== null ? expirationDays : -1;\n let expireDate: Date | undefined = undefined;\n if (expires) {\n const date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n expireDate = date;\n }\n let str = `${key}=${btoa(encodeURIComponent(JSON.stringify(value)))}`;\n if (expireDate) {\n str += `; expires=${expireDate.toUTCString()}`;\n }\n str += '; path=/';\n if (this.options.domain) {\n str += `; domain=${this.options.domain}`;\n }\n if (this.options.secure) {\n str += '; Secure';\n }\n if (this.options.sameSite) {\n str += `; SameSite=${this.options.sameSite}`;\n }\n const globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.document.cookie = str;\n }\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise {\n await this.set(key, null);\n }\n\n async reset(): Promise {\n return;\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { Payload, Response, Status, Transport } from '@amplitude/analytics-types';\n\nexport class BaseTransport implements Transport {\n send(_serverUrl: string, _payload: Payload): Promise {\n return Promise.resolve(null);\n }\n\n buildResponse(responseJSON: Record): Response | null {\n if (typeof responseJSON !== 'object') {\n return null;\n }\n\n const statusCode = responseJSON.code || 0;\n const status = this.buildStatus(statusCode);\n\n switch (status) {\n case Status.Success:\n return {\n status,\n statusCode,\n body: {\n eventsIngested: responseJSON.events_ingested ?? 0,\n payloadSizeBytes: responseJSON.payload_size_bytes ?? 0,\n serverUploadTime: responseJSON.server_upload_time ?? 0,\n },\n };\n\n case Status.Invalid:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n missingField: responseJSON.missing_field ?? '',\n eventsWithInvalidFields: responseJSON.events_with_invalid_fields ?? {},\n eventsWithMissingFields: responseJSON.events_with_missing_fields ?? {},\n eventsWithInvalidIdLengths: responseJSON.events_with_invalid_id_lengths ?? {},\n epsThreshold: responseJSON.eps_threshold ?? 0,\n exceededDailyQuotaDevices: responseJSON.exceeded_daily_quota_devices ?? {},\n silencedDevices: responseJSON.silenced_devices ?? [],\n silencedEvents: responseJSON.silenced_events ?? [],\n throttledDevices: responseJSON.throttled_devices ?? {},\n throttledEvents: responseJSON.throttled_events ?? [],\n },\n };\n case Status.PayloadTooLarge:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n },\n };\n case Status.RateLimit:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n epsThreshold: responseJSON.eps_threshold ?? 0,\n throttledDevices: responseJSON.throttled_devices ?? {},\n throttledUsers: responseJSON.throttled_users ?? {},\n exceededDailyQuotaDevices: responseJSON.exceeded_daily_quota_devices ?? {},\n exceededDailyQuotaUsers: responseJSON.exceeded_daily_quota_users ?? {},\n throttledEvents: responseJSON.throttled_events ?? [],\n },\n };\n case Status.Timeout:\n default:\n return {\n status,\n statusCode,\n };\n }\n }\n\n buildStatus(code: number): Status {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n\n if (code === 429) {\n return Status.RateLimit;\n }\n\n if (code === 413) {\n return Status.PayloadTooLarge;\n }\n\n if (code === 408) {\n return Status.Timeout;\n }\n\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n\n if (code >= 500) {\n return Status.Failed;\n }\n\n return Status.Unknown;\n }\n}\n","import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class FetchTransport extends BaseTransport implements Transport {\n async send(serverUrl: string, payload: Payload): Promise {\n /* istanbul ignore if */\n if (typeof fetch === 'undefined') {\n throw new Error('FetchTransport is not supported');\n }\n const options: RequestInit = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n const response = await fetch(serverUrl, options);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const responsePayload: Record = await response.json();\n return this.buildResponse(responsePayload);\n }\n}\n","import { Storage as AmplitudeStorage } from '@amplitude/analytics-types';\n\nexport class BrowserStorage implements AmplitudeStorage {\n constructor(private storage?: Storage) {}\n\n async isEnabled(): Promise {\n /* istanbul ignore if */\n if (!this.storage) {\n return false;\n }\n\n const random = String(Date.now());\n const testStorage = new BrowserStorage(this.storage);\n const testKey = 'AMP_TEST';\n try {\n await testStorage.set(testKey, random);\n const value = await testStorage.get(testKey);\n return value === random;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise {\n try {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n } catch {\n console.error(`[Amplitude] Error: Could not get value from storage`);\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise {\n return this.storage?.getItem(key) || undefined;\n }\n\n async set(key: string, value: T): Promise {\n try {\n this.storage?.setItem(key, JSON.stringify(value));\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise {\n try {\n this.storage?.removeItem(key);\n } catch {\n //\n }\n }\n\n async reset(): Promise {\n try {\n this.storage?.clear();\n } catch {\n //\n }\n }\n}\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BrowserStorage } from './browser-storage';\nimport { Logger } from '@amplitude/analytics-types';\n\nconst MAX_ARRAY_LENGTH = 1000;\n\ninterface LocalStorageOptions {\n loggerProvider?: Logger;\n}\nexport class LocalStorage extends BrowserStorage {\n loggerProvider?: Logger;\n\n constructor(config?: LocalStorageOptions) {\n super(getGlobalScope()?.localStorage);\n this.loggerProvider = config?.loggerProvider;\n }\n\n async set(key: string, value: T): Promise {\n if (Array.isArray(value) && value.length > MAX_ARRAY_LENGTH) {\n const droppedEventsCount = value.length - MAX_ARRAY_LENGTH;\n await super.set(key, value.slice(0, MAX_ARRAY_LENGTH) as T);\n this.loggerProvider?.error(\n `Failed to save ${droppedEventsCount} events because the queue length exceeded ${MAX_ARRAY_LENGTH}.`,\n );\n } else {\n await super.set(key, value);\n }\n }\n}\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BrowserStorage } from './browser-storage';\n\nexport class SessionStorage extends BrowserStorage {\n constructor() {\n super(getGlobalScope()?.sessionStorage);\n }\n}\n","import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class XHRTransport extends BaseTransport implements Transport {\n private state = {\n done: 4,\n };\n\n async send(serverUrl: string, payload: Payload): Promise {\n return new Promise((resolve, reject) => {\n /* istanbul ignore if */\n if (typeof XMLHttpRequest === 'undefined') {\n reject(new Error('XHRTransport is not supported.'));\n }\n\n const xhr = new XMLHttpRequest();\n xhr.open('POST', serverUrl, true);\n xhr.onreadystatechange = () => {\n if (xhr.readyState === this.state.done) {\n try {\n const responsePayload = xhr.responseText;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const parsedResponsePayload: Record = JSON.parse(responsePayload);\n const result = this.buildResponse(parsedResponsePayload);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n }\n };\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n });\n }\n}\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class SendBeaconTransport extends BaseTransport implements Transport {\n async send(serverUrl: string, payload: Payload): Promise {\n return new Promise((resolve, reject) => {\n const globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!globalScope?.navigator.sendBeacon) {\n throw new Error('SendBeaconTransport is not supported');\n }\n try {\n const data = JSON.stringify(payload);\n const success = globalScope.navigator.sendBeacon(serverUrl, JSON.stringify(payload));\n if (success) {\n return resolve(\n this.buildResponse({\n code: 200,\n events_ingested: payload.events.length,\n payload_size_bytes: data.length,\n server_upload_time: Date.now(),\n }),\n );\n }\n return resolve(this.buildResponse({ code: 500 }));\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n","import { Storage, UserSession } from '@amplitude/analytics-types';\nimport { getOldCookieName } from '@amplitude/analytics-client-common';\n\nexport const parseLegacyCookies = async (\n apiKey: string,\n cookieStorage: Storage,\n deleteLegacyCookies = true,\n): Promise => {\n const cookieName = getOldCookieName(apiKey);\n const cookies = await cookieStorage.getRaw(cookieName);\n if (!cookies) {\n return {\n optOut: false,\n };\n }\n if (deleteLegacyCookies) {\n await cookieStorage.remove(cookieName);\n }\n const [deviceId, userId, optOut, sessionId, lastEventTime, lastEventId] = cookies.split('.');\n return {\n deviceId,\n userId: decode(userId),\n sessionId: parseTime(sessionId),\n lastEventId: parseTime(lastEventId),\n lastEventTime: parseTime(lastEventTime),\n optOut: Boolean(optOut),\n };\n};\n\nexport const parseTime = (num: string) => {\n const integer = parseInt(num, 32);\n if (isNaN(integer)) {\n return undefined;\n }\n return integer;\n};\n\nexport const decode = (value?: string): string | undefined => {\n if (!atob || !escape || !value) {\n return undefined;\n }\n try {\n return decodeURIComponent(escape(atob(value)));\n } catch {\n return undefined;\n }\n};\n","import { IdentityStorageType, ServerZoneType } from '@amplitude/analytics-types';\n\nexport const DEFAULT_EVENT_PREFIX = '[Amplitude]';\n\nexport const DEFAULT_PAGE_VIEW_EVENT = `${DEFAULT_EVENT_PREFIX} Page Viewed`;\nexport const DEFAULT_FORM_START_EVENT = `${DEFAULT_EVENT_PREFIX} Form Started`;\nexport const DEFAULT_FORM_SUBMIT_EVENT = `${DEFAULT_EVENT_PREFIX} Form Submitted`;\nexport const DEFAULT_FILE_DOWNLOAD_EVENT = `${DEFAULT_EVENT_PREFIX} File Downloaded`;\nexport const DEFAULT_SESSION_START_EVENT = 'session_start';\nexport const DEFAULT_SESSION_END_EVENT = 'session_end';\n\nexport const FILE_EXTENSION = `${DEFAULT_EVENT_PREFIX} File Extension`;\nexport const FILE_NAME = `${DEFAULT_EVENT_PREFIX} File Name`;\nexport const LINK_ID = `${DEFAULT_EVENT_PREFIX} Link ID`;\nexport const LINK_TEXT = `${DEFAULT_EVENT_PREFIX} Link Text`;\nexport const LINK_URL = `${DEFAULT_EVENT_PREFIX} Link URL`;\n\nexport const FORM_ID = `${DEFAULT_EVENT_PREFIX} Form ID`;\nexport const FORM_NAME = `${DEFAULT_EVENT_PREFIX} Form Name`;\nexport const FORM_DESTINATION = `${DEFAULT_EVENT_PREFIX} Form Destination`;\n\nexport const DEFAULT_IDENTITY_STORAGE: IdentityStorageType = 'cookie';\nexport const DEFAULT_SERVER_ZONE: ServerZoneType = 'US';\n","import {\n Event,\n BrowserOptions,\n BrowserConfig as IBrowserConfig,\n DefaultTrackingOptions,\n Storage,\n TrackingOptions,\n TransportType,\n UserSession,\n Logger as ILogger,\n LogLevel,\n Plan,\n IngestionMetadata,\n IdentityStorageType,\n ServerZoneType,\n} from '@amplitude/analytics-types';\nimport { Config, Logger, MemoryStorage, UUID } from '@amplitude/analytics-core';\nimport { CookieStorage, getCookieName, FetchTransport, getQueryParams } from '@amplitude/analytics-client-common';\n\nimport { LocalStorage } from './storage/local-storage';\nimport { SessionStorage } from './storage/session-storage';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\nimport { parseLegacyCookies } from './cookie-migration';\nimport { CookieOptions } from '@amplitude/analytics-types/lib/esm/config/browser';\nimport { DEFAULT_IDENTITY_STORAGE, DEFAULT_SERVER_ZONE } from './constants';\nimport { AmplitudeBrowser } from './browser-client';\n\n// Exported for testing purposes only. Do not expose to public interface.\nexport class BrowserConfig extends Config implements IBrowserConfig {\n protected _cookieStorage: Storage;\n protected _deviceId?: string;\n protected _lastEventId?: number;\n protected _lastEventTime?: number;\n protected _optOut = false;\n protected _sessionId?: number;\n protected _userId?: string;\n\n constructor(\n public apiKey: string,\n public appVersion?: string,\n cookieStorage: Storage = new MemoryStorage(),\n public cookieOptions: CookieOptions = {\n domain: '',\n expiration: 365,\n sameSite: 'Lax' as const,\n secure: false,\n upgrade: true,\n },\n public defaultTracking?: boolean | DefaultTrackingOptions,\n deviceId?: string,\n public flushIntervalMillis: number = 1000,\n public flushMaxRetries: number = 5,\n public flushQueueSize: number = 30,\n public identityStorage: IdentityStorageType = DEFAULT_IDENTITY_STORAGE,\n public ingestionMetadata?: IngestionMetadata,\n public instanceName?: string,\n lastEventId?: number,\n lastEventTime?: number,\n public loggerProvider: ILogger = new Logger(),\n public logLevel: LogLevel = LogLevel.Warn,\n public minIdLength?: number,\n optOut = false,\n public partnerId?: string,\n public plan?: Plan,\n public serverUrl: string = '',\n public serverZone: ServerZoneType = DEFAULT_SERVER_ZONE,\n sessionId?: number,\n public sessionTimeout: number = 30 * 60 * 1000,\n public storageProvider: Storage = new LocalStorage({ loggerProvider }),\n public trackingOptions: Required = {\n ipAddress: true,\n language: true,\n platform: true,\n },\n public transport: 'fetch' | 'xhr' | 'beacon' = 'fetch',\n public useBatch: boolean = false,\n userId?: string,\n ) {\n super({ apiKey, storageProvider, transportProvider: createTransport(transport) });\n this._cookieStorage = cookieStorage;\n this.deviceId = deviceId;\n this.lastEventId = lastEventId;\n this.lastEventTime = lastEventTime;\n this.optOut = optOut;\n this.sessionId = sessionId;\n this.userId = userId;\n this.loggerProvider.enable(this.logLevel);\n }\n\n get cookieStorage() {\n return this._cookieStorage;\n }\n\n set cookieStorage(cookieStorage: Storage) {\n if (this._cookieStorage !== cookieStorage) {\n this._cookieStorage = cookieStorage;\n this.updateStorage();\n }\n }\n\n get deviceId() {\n return this._deviceId;\n }\n\n set deviceId(deviceId: string | undefined) {\n if (this._deviceId !== deviceId) {\n this._deviceId = deviceId;\n this.updateStorage();\n }\n }\n\n get userId() {\n return this._userId;\n }\n\n set userId(userId: string | undefined) {\n if (this._userId !== userId) {\n this._userId = userId;\n this.updateStorage();\n }\n }\n\n get sessionId() {\n return this._sessionId;\n }\n\n set sessionId(sessionId: number | undefined) {\n if (this._sessionId !== sessionId) {\n this._sessionId = sessionId;\n this.updateStorage();\n }\n }\n\n get optOut() {\n return this._optOut;\n }\n\n set optOut(optOut: boolean) {\n if (this._optOut !== optOut) {\n this._optOut = optOut;\n this.updateStorage();\n }\n }\n\n get lastEventTime() {\n return this._lastEventTime;\n }\n\n set lastEventTime(lastEventTime: number | undefined) {\n if (this._lastEventTime !== lastEventTime) {\n this._lastEventTime = lastEventTime;\n this.updateStorage();\n }\n }\n\n get lastEventId() {\n return this._lastEventId;\n }\n\n set lastEventId(lastEventId: number | undefined) {\n if (this._lastEventId !== lastEventId) {\n this._lastEventId = lastEventId;\n this.updateStorage();\n }\n }\n\n private updateStorage() {\n const cache = {\n deviceId: this._deviceId,\n userId: this._userId,\n sessionId: this._sessionId,\n optOut: this._optOut,\n lastEventTime: this._lastEventTime,\n lastEventId: this._lastEventId,\n };\n void this.cookieStorage.set(getCookieName(this.apiKey), cache);\n }\n}\n\nexport const useBrowserConfig = async (\n apiKey: string,\n options: BrowserOptions = {},\n amplitudeInstance: AmplitudeBrowser,\n): Promise => {\n // Step 1: Create identity storage instance\n const identityStorage = options.identityStorage || DEFAULT_IDENTITY_STORAGE;\n const cookieOptions = {\n domain:\n identityStorage !== DEFAULT_IDENTITY_STORAGE ? '' : options.cookieOptions?.domain ?? (await getTopLevelDomain()),\n expiration: 365,\n sameSite: 'Lax' as const,\n secure: false,\n upgrade: true,\n ...options.cookieOptions,\n };\n const cookieStorage = createCookieStorage(options.identityStorage, cookieOptions);\n\n // Step 1: Parse cookies using identity storage instance\n const legacyCookies = await parseLegacyCookies(apiKey, cookieStorage, options.cookieOptions?.upgrade ?? true);\n const previousCookies = await cookieStorage.get(getCookieName(apiKey));\n const queryParams = getQueryParams();\n\n // Step 3: Reconcile user identity\n const deviceId =\n options.deviceId ?? queryParams.deviceId ?? previousCookies?.deviceId ?? legacyCookies.deviceId ?? UUID();\n const lastEventId = previousCookies?.lastEventId ?? legacyCookies.lastEventId;\n const lastEventTime = previousCookies?.lastEventTime ?? legacyCookies.lastEventTime;\n const optOut = options.optOut ?? previousCookies?.optOut ?? legacyCookies.optOut;\n const sessionId = previousCookies?.sessionId ?? legacyCookies.sessionId;\n const userId = options.userId ?? previousCookies?.userId ?? legacyCookies.userId;\n amplitudeInstance.previousSessionDeviceId = previousCookies?.deviceId ?? legacyCookies.deviceId;\n amplitudeInstance.previousSessionUserId = previousCookies?.userId ?? legacyCookies.userId;\n\n const trackingOptions = {\n ipAddress: options.trackingOptions?.ipAddress ?? true,\n language: options.trackingOptions?.language ?? true,\n platform: options.trackingOptions?.platform ?? true,\n };\n\n return new BrowserConfig(\n apiKey,\n options.appVersion,\n cookieStorage,\n cookieOptions,\n options.defaultTracking,\n deviceId,\n options.flushIntervalMillis,\n options.flushMaxRetries,\n options.flushQueueSize,\n identityStorage,\n options.ingestionMetadata,\n options.instanceName,\n lastEventId,\n lastEventTime,\n options.loggerProvider,\n options.logLevel,\n options.minIdLength,\n optOut,\n options.partnerId,\n options.plan,\n options.serverUrl,\n options.serverZone,\n sessionId,\n options.sessionTimeout,\n options.storageProvider,\n trackingOptions,\n options.transport,\n options.useBatch,\n userId,\n );\n};\n\nexport const createCookieStorage = (\n identityStorage: IdentityStorageType = DEFAULT_IDENTITY_STORAGE,\n cookieOptions: CookieOptions = {},\n) => {\n switch (identityStorage) {\n case 'localStorage':\n return new LocalStorage();\n case 'sessionStorage':\n return new SessionStorage();\n case 'none':\n return new MemoryStorage();\n case 'cookie':\n default:\n return new CookieStorage({\n ...cookieOptions,\n expirationDays: cookieOptions.expiration,\n });\n }\n};\n\nexport const createTransport = (transport?: TransportType) => {\n if (transport === 'xhr') {\n return new XHRTransport();\n }\n if (transport === 'beacon') {\n return new SendBeaconTransport();\n }\n return new FetchTransport();\n};\n\nexport const getTopLevelDomain = async (url?: string) => {\n if (!(await new CookieStorage().isEnabled()) || (!url && typeof location === 'undefined')) {\n return '';\n }\n\n const host = url ?? location.hostname;\n const parts = host.split('.');\n const levels = [];\n const storageKey = 'AMP_TLDTEST';\n\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'));\n }\n for (let i = 0; i < levels.length; i++) {\n const domain = levels[i];\n const options = { domain: '.' + domain };\n const storage = new CookieStorage(options);\n await storage.set(storageKey, 1);\n const value = await storage.get(storageKey);\n if (value) {\n await storage.remove(storageKey);\n return '.' + domain;\n }\n }\n\n return '';\n};\n","import { Campaign } from '@amplitude/analytics-types';\n\nexport const UTM_CAMPAIGN = 'utm_campaign';\nexport const UTM_CONTENT = 'utm_content';\nexport const UTM_ID = 'utm_id';\nexport const UTM_MEDIUM = 'utm_medium';\nexport const UTM_SOURCE = 'utm_source';\nexport const UTM_TERM = 'utm_term';\n\nexport const DCLID = 'dclid';\nexport const FBCLID = 'fbclid';\nexport const GBRAID = 'gbraid';\nexport const GCLID = 'gclid';\nexport const KO_CLICK_ID = 'ko_click_id';\nexport const LI_FAT_ID = 'li_fat_id';\nexport const MSCLKID = 'msclkid';\nexport const RDT_CID = 'rtd_cid';\nexport const TTCLID = 'ttclid';\nexport const TWCLID = 'twclid';\nexport const WBRAID = 'wbraid';\n\nexport const EMPTY_VALUE = 'EMPTY';\n\nexport const BASE_CAMPAIGN: Campaign = {\n utm_campaign: undefined,\n utm_content: undefined,\n utm_id: undefined,\n utm_medium: undefined,\n utm_source: undefined,\n utm_term: undefined,\n referrer: undefined,\n referring_domain: undefined,\n dclid: undefined,\n gbraid: undefined,\n gclid: undefined,\n fbclid: undefined,\n ko_click_id: undefined,\n li_fat_id: undefined,\n msclkid: undefined,\n rtd_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\n\nexport const MKTG = 'MKTG';\n","import { getQueryParams } from '../query-params';\nimport {\n UTM_CAMPAIGN,\n UTM_CONTENT,\n UTM_MEDIUM,\n UTM_SOURCE,\n UTM_TERM,\n GCLID,\n FBCLID,\n BASE_CAMPAIGN,\n DCLID,\n MSCLKID,\n RDT_CID,\n TWCLID,\n TTCLID,\n KO_CLICK_ID,\n LI_FAT_ID,\n GBRAID,\n WBRAID,\n UTM_ID,\n} from './constants';\nimport {\n Campaign,\n CampaignParser as ICampaignParser,\n ClickIdParameters,\n ReferrerParameters,\n UTMParameters,\n} from '@amplitude/analytics-types';\n\nexport class CampaignParser implements ICampaignParser {\n async parse(): Promise {\n return {\n ...BASE_CAMPAIGN,\n ...this.getUtmParam(),\n ...this.getReferrer(),\n ...this.getClickIds(),\n } as Campaign;\n }\n\n getUtmParam(): UTMParameters {\n const params = getQueryParams();\n\n const utmCampaign = params[UTM_CAMPAIGN];\n const utmContent = params[UTM_CONTENT];\n const utmId = params[UTM_ID];\n const utmMedium = params[UTM_MEDIUM];\n const utmSource = params[UTM_SOURCE];\n const utmTerm = params[UTM_TERM];\n\n return {\n utm_campaign: utmCampaign,\n utm_content: utmContent,\n utm_id: utmId,\n utm_medium: utmMedium,\n utm_source: utmSource,\n utm_term: utmTerm,\n };\n }\n\n getReferrer(): ReferrerParameters {\n const data: ReferrerParameters = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = data.referrer?.split('/')[2] ?? undefined;\n } catch {\n // nothing to track\n }\n return data;\n }\n\n getClickIds(): ClickIdParameters {\n const params = getQueryParams();\n return {\n [DCLID]: params[DCLID],\n [FBCLID]: params[FBCLID],\n [GBRAID]: params[GBRAID],\n [GCLID]: params[GCLID],\n [KO_CLICK_ID]: params[KO_CLICK_ID],\n [LI_FAT_ID]: params[LI_FAT_ID],\n [MSCLKID]: params[MSCLKID],\n [RDT_CID]: params[RDT_CID],\n [TTCLID]: params[TTCLID],\n [TWCLID]: params[TWCLID],\n [WBRAID]: params[WBRAID],\n };\n }\n}\n","import { Event, IdentifyOperation, IdentifyUserProperties } from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from './constants';\n\nexport const isCampaignEvent = (event: Event) => {\n if (event.user_properties) {\n const properties = event.user_properties as IdentifyUserProperties;\n const $set = properties[IdentifyOperation.SET] || {};\n const $unset = properties[IdentifyOperation.UNSET] || {};\n const userProperties = [...Object.keys($set), ...Object.keys($unset)];\n return Object.keys(BASE_CAMPAIGN).every((value) => userProperties.includes(value));\n }\n return false;\n};\n","import { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { AMPLITUDE_PREFIX, createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport { Campaign } from '@amplitude/analytics-types';\nimport { Options } from './typings/web-attribution';\n\nexport const getStorageKey = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n\nconst domainWithoutSubdomain = (domain: string) => {\n const parts = domain.split('.');\n\n if (parts.length <= 2) {\n return domain;\n }\n\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n\n//Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.\nconst isDirectTraffic = (current: Campaign) => {\n return Object.values(current).every((value) => !value);\n};\n\nexport const isNewCampaign = (\n current: Campaign,\n previous: Campaign | undefined,\n options: Options,\n isNewSession = true,\n) => {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (isExcludedReferrer(options.excludeReferrers, current.referring_domain)) {\n return false;\n }\n\n //In the same session, direct traffic should not override or unset any persisting query params\n if (!isNewSession && isDirectTraffic(current) && previous) {\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n const hasNewDomain =\n domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n\n return !previous || hasNewCampaign || hasNewDomain;\n};\n\nexport const isExcludedReferrer = (excludeReferrers: (string | RegExp)[] = [], referringDomain = '') => {\n return excludeReferrers.some((value) =>\n value instanceof RegExp ? value.test(referringDomain) : value === referringDomain,\n );\n};\n\nexport const createCampaignEvent = (campaign: Campaign, options: Options) => {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value ?? options.initialEmptyValue ?? 'EMPTY');\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n return createIdentifyEvent(identifyEvent);\n};\n\nexport const getDefaultExcludedReferrers = (cookieDomain: string | undefined) => {\n let domain = cookieDomain;\n if (domain) {\n if (domain.startsWith('.')) {\n domain = domain.substring(1);\n }\n return [new RegExp(`${domain.replace('.', '\\\\.')}$`)];\n }\n return [];\n};\n","import { CampaignParser, isCampaignEvent, isSessionExpired } from '@amplitude/analytics-client-common';\nimport {\n BeforePlugin,\n BrowserClient,\n BrowserConfig,\n Campaign,\n Event,\n IdentifyEvent,\n Storage,\n} from '@amplitude/analytics-types';\nimport { createCampaignEvent, getDefaultExcludedReferrers, getStorageKey, isNewCampaign } from './helpers';\nimport { CreateWebAttributionPlugin, Options } from './typings/web-attribution';\n\nexport const webAttributionPlugin: CreateWebAttributionPlugin = function (options: Options = {}) {\n const campaignPerSession: { [sessionId: number]: IdentifyEvent | undefined } = {};\n\n const plugin: BeforePlugin = {\n name: '@amplitude/plugin-web-attribution-browser',\n type: 'before',\n\n setup: async function (config: BrowserConfig, amplitude: BrowserClient) {\n const pluginConfig = {\n initialEmptyValue: 'EMPTY',\n resetSessionOnNewCampaign: false,\n excludeReferrers: getDefaultExcludedReferrers(config.cookieOptions?.domain),\n ...options,\n };\n config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser.');\n\n // Share cookie storage with user session storage\n const storage = config.cookieStorage as unknown as Storage;\n const storageKey = getStorageKey(config.apiKey, 'MKTG');\n\n const [currentCampaign, previousCampaign] = await Promise.all([\n new CampaignParser().parse(),\n storage.get(storageKey),\n ]);\n\n // Check if the most recent session ID is expired\n const isMostRecentSessionExpired = isSessionExpired(config.sessionTimeout, config.lastEventTime);\n\n // Check if attribution event will be tracked\n if (isNewCampaign(currentCampaign, previousCampaign, pluginConfig, isMostRecentSessionExpired)) {\n // Set default session ID to be the most recent session ID\n let sessionId = config.sessionId ?? -1;\n\n // Check if most recent session ID is expired OR if `resetSessionOnNewCampaign` set to true\n // If yes, set a new session ID\n if (isMostRecentSessionExpired || pluginConfig.resetSessionOnNewCampaign) {\n sessionId = Date.now();\n amplitude.setSessionId(sessionId);\n\n if (pluginConfig.resetSessionOnNewCampaign) {\n config.loggerProvider.log('Created a new session for new campaign.');\n }\n }\n\n // Create campaign event\n const campaignEvent = createCampaignEvent(currentCampaign, pluginConfig);\n campaignEvent.session_id = sessionId;\n // Cache campaign event with its associated session ID as key\n campaignPerSession[sessionId] = campaignEvent;\n // Additionally, track the same event\n amplitude.track(campaignEvent);\n\n void storage.set(storageKey, currentCampaign);\n }\n },\n\n execute: async (event: Event) => {\n if (event.session_id) {\n // Check a campaign event cache exists for session ID\n const campaignEvent = campaignPerSession[event.session_id];\n if (campaignEvent) {\n // If yes, merge first seen event with with campaign event.\n // It is possible that `event` is equal to `campaignEvent`\n // when `campaignEvent` is what is first passed to `execute`.\n event.user_properties = mergeDeep(\n campaignEvent.user_properties,\n event.user_properties,\n );\n event.event_properties = {\n ...event.event_properties,\n ...campaignEvent.event_properties,\n };\n if (Object.keys(event.event_properties).length === 0) {\n delete event.event_properties;\n }\n\n // Remove cached campaign event\n delete campaignPerSession[event.session_id];\n } else if (isCampaignEvent(event)) {\n // If no campaign event event cache for session ID exists,\n // then campaign event has been merged with another event\n // and this is a dupe that must be dropped.\n return null;\n }\n }\n\n return event;\n },\n };\n\n return plugin;\n};\n\nconst isObject = (item: any): item is Record =>\n Boolean(item) && typeof item === 'object' && !Array.isArray(item);\n\nconst mergeDeep = (target: any, source: any): T => {\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, { [key]: {} });\n }\n mergeDeep(target[key], source[key]);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return target as T;\n};\n","export const omitUndefined = (input: Record) => {\n const obj: Record = {};\n for (const key in input) {\n const val = input[key];\n if (val) {\n obj[key] = val;\n }\n }\n return obj;\n};\n","import { CampaignParser, getGlobalScope, isCampaignEvent } from '@amplitude/analytics-client-common';\nimport { BrowserClient, BrowserConfig, EnrichmentPlugin, Event, Logger } from '@amplitude/analytics-types';\nimport { CreatePageViewTrackingPlugin, Options } from './typings/page-view-tracking';\nimport { omitUndefined } from './utils';\n\nexport const pageViewTrackingPlugin: CreatePageViewTrackingPlugin = (options: Options = {}) => {\n let amplitude: BrowserClient | undefined;\n const globalScope = getGlobalScope();\n let loggerProvider: Logger | undefined = undefined;\n let pushState: undefined | ((data: any, unused: string, url?: string | URL | null) => void);\n\n const createPageViewEvent = async (): Promise => {\n return {\n event_type: options.eventType ?? '[Amplitude] Page Viewed',\n event_properties: {\n ...(await getCampaignParams()),\n '[Amplitude] Page Domain':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '',\n '[Amplitude] Page Location':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n '[Amplitude] Page Path':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n '[Amplitude] Page URL':\n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '',\n },\n };\n };\n\n const shouldTrackOnPageLoad = () =>\n typeof options.trackOn === 'undefined' || (typeof options.trackOn === 'function' && options.trackOn());\n\n /* istanbul ignore next */\n let previousURL: string | null = typeof location !== 'undefined' ? location.href : null;\n\n const trackHistoryPageView = async (): Promise => {\n const newURL = location.href;\n const shouldTrackPageView =\n shouldTrackHistoryPageView(options.trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();\n // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`\n // This was previously done after `amplitude?.track(await createPageViewEvent());` and\n // causes a concurrency issue where app triggers `pushState` twice with the same URL target\n // but `previousURL` is only updated after the second `pushState` producing two page viewed events\n previousURL = newURL;\n\n if (shouldTrackPageView) {\n /* istanbul ignore next */\n loggerProvider?.log('Tracking page view event');\n amplitude?.track(await createPageViewEvent());\n }\n };\n\n /* istanbul ignore next */\n const trackHistoryPageViewWrapper = () => {\n void trackHistoryPageView();\n };\n\n const plugin: EnrichmentPlugin = {\n name: '@amplitude/plugin-page-view-tracking-browser',\n type: 'enrichment',\n\n setup: async (config: BrowserConfig, client: BrowserClient) => {\n amplitude = client;\n\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-view-tracking-browser');\n\n if (globalScope) {\n globalScope.addEventListener('popstate', trackHistoryPageViewWrapper);\n\n // Save reference to original push state, to be used in teardown\n // eslint-disable-next-line @typescript-eslint/unbound-method\n pushState = globalScope.history.pushState;\n\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState directly.\n // https://stackoverflow.com/a/64927639\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.pushState = new Proxy(globalScope.history.pushState, {\n apply: (target, thisArg, [state, unused, url]) => {\n target.apply(thisArg, [state, unused, url]);\n void trackHistoryPageView();\n },\n });\n }\n\n if (shouldTrackOnPageLoad()) {\n loggerProvider.log('Tracking page view event');\n\n amplitude.track(await createPageViewEvent());\n }\n },\n\n execute: async (event: Event) => {\n if (options.trackOn === 'attribution' && isCampaignEvent(event)) {\n const pageViewEvent = await createPageViewEvent();\n\n if (event.event_type === '$identify') {\n /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked\n loggerProvider?.log('Enriching campaign event to page view event with campaign parameters');\n event.event_type = pageViewEvent.event_type;\n event.event_properties = {\n ...event.event_properties,\n ...pageViewEvent.event_properties,\n };\n } else {\n /* istanbul ignore else */\n if (amplitude) {\n amplitude.track(pageViewEvent);\n }\n }\n }\n return event;\n },\n\n teardown: async () => {\n if (globalScope) {\n globalScope.removeEventListener('popstate', trackHistoryPageViewWrapper);\n if (pushState) {\n globalScope.history.pushState = pushState;\n }\n }\n },\n };\n return plugin;\n};\n\nconst getCampaignParams = async () => omitUndefined(await new CampaignParser().parse());\n\nexport const shouldTrackHistoryPageView = (\n trackingOption: Options['trackHistoryChanges'],\n newURL: string,\n oldURL: string,\n): boolean => {\n switch (trackingOption) {\n case 'pathOnly':\n return newURL.split('?')[0] !== oldURL.split('?')[0];\n default:\n return newURL !== oldURL;\n }\n};\n","import { BrowserClient, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport {\n DEFAULT_FORM_START_EVENT,\n DEFAULT_FORM_SUBMIT_EVENT,\n FORM_ID,\n FORM_NAME,\n FORM_DESTINATION,\n} from '../constants';\nimport { BrowserConfig } from '../config';\n\ninterface EventListener {\n element: Element;\n type: 'change' | 'submit';\n handler: () => void;\n}\n\nexport const formInteractionTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n\n const addEventListener = (element: Element, type: 'change' | 'submit', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n const name = '@amplitude/plugin-form-interaction-tracking-browser';\n const type = 'enrichment';\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked.',\n );\n return;\n }\n\n /* istanbul ignore if */\n if (typeof document === 'undefined' || !document.body) {\n return;\n }\n\n const addFormInteractionListener = (form: HTMLFormElement) => {\n let hasFormChanged = false;\n\n addEventListener(form, 'change', () => {\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: form.id,\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: form.action,\n });\n }\n hasFormChanged = true;\n });\n\n addEventListener(form, 'submit', () => {\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: form.id,\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: form.action,\n });\n }\n\n amplitude.track(DEFAULT_FORM_SUBMIT_EVENT, {\n [FORM_ID]: form.id,\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: form.action,\n });\n hasFormChanged = false;\n });\n };\n\n // Adds listener to existing anchor tags\n const forms = Array.from(document.getElementsByTagName('form'));\n forms.forEach(addFormInteractionListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'FORM') {\n addFormInteractionListener(node as HTMLFormElement);\n }\n if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('form') as HTMLFormElement[]).map(addFormInteractionListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n };\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n\nexport const stringOrUndefined = (name: T): T extends string ? string : undefined => {\n /* istanbul ignore if */\n if (typeof name !== 'string') {\n // We found instances where the value of `name` is an Element and not a string.\n // Elements may have circular references and would throw an error when passed to `JSON.stringify(...)`.\n // If a non-string value is seen, assume there is no value.\n return undefined as T extends string ? string : undefined;\n }\n\n return name as T extends string ? string : undefined;\n};\n","import { BrowserClient, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport { DEFAULT_FILE_DOWNLOAD_EVENT, FILE_EXTENSION, FILE_NAME, LINK_ID, LINK_TEXT, LINK_URL } from '../constants';\nimport { BrowserConfig } from '../config';\n\ninterface EventListener {\n element: Element;\n type: 'click';\n handler: () => void;\n}\n\nexport const fileDownloadTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n const addEventListener = (element: Element, type: 'click', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n const name = '@amplitude/plugin-file-download-tracking-browser';\n const type = 'enrichment';\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'File download tracking requires a later version of @amplitude/analytics-browser. File download events are not tracked.',\n );\n return;\n }\n\n /* istanbul ignore if */\n if (typeof document === 'undefined' || !document.body) {\n return;\n }\n\n const addFileDownloadListener = (a: HTMLAnchorElement) => {\n let url: URL;\n try {\n // eslint-disable-next-line no-restricted-globals\n url = new URL(a.href, window.location.href);\n } catch {\n /* istanbul ignore next */\n return;\n }\n const result = ext.exec(url.href);\n const fileExtension = result?.[1];\n\n if (fileExtension) {\n addEventListener(a, 'click', () => {\n if (fileExtension) {\n amplitude.track(DEFAULT_FILE_DOWNLOAD_EVENT, {\n [FILE_EXTENSION]: fileExtension,\n [FILE_NAME]: url.pathname,\n [LINK_ID]: a.id,\n [LINK_TEXT]: a.text,\n [LINK_URL]: a.href,\n });\n }\n });\n }\n };\n\n const ext =\n /\\.(pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma)$/;\n\n // Adds listener to existing anchor tags\n const links = Array.from(document.getElementsByTagName('a'));\n links.forEach(addFileDownloadListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'A') {\n addFileDownloadListener(node as HTMLAnchorElement);\n }\n if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('a') as HTMLAnchorElement[]).map(addFileDownloadListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n };\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n","import { BrowserConfig } from '@amplitude/analytics-types';\n\nlet notified = false;\n\nexport const detNotify = (config: BrowserConfig): void => {\n if (notified || config.defaultTracking !== undefined) {\n return;\n }\n\n const message = `\\`options.defaultTracking\\` is set to undefined. This implicitly configures your Amplitude instance to track Page Views, Sessions, File Downloads, and Form Interactions. You can suppress this warning by explicitly setting a value to \\`options.defaultTracking\\`. The value must either be a boolean, to enable and disable all default events, or an object, for advanced configuration. For example:\n\namplitude.init(, {\n defaultTracking: true,\n});\n\nVisit https://www.docs.developers.amplitude.com/data/sdks/browser-2/#tracking-default-events for more details.`;\n config.loggerProvider.warn(message);\n notified = true;\n};\n\n/**\n * @private\n * This function is meant for testing purposes only\n */\nexport const resetNotify = () => {\n notified = false;\n};\n","import { AmplitudeCore, Destination, Identify, returnWrapper, Revenue, UUID } from '@amplitude/analytics-core';\nimport {\n getAnalyticsConnector,\n getAttributionTrackingConfig,\n getPageViewTrackingConfig,\n IdentityEventSender,\n isAttributionTrackingEnabled,\n isSessionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n setConnectorDeviceId,\n setConnectorUserId,\n isSessionExpired,\n} from '@amplitude/analytics-client-common';\nimport {\n BrowserClient,\n BrowserConfig,\n BrowserOptions,\n Event,\n EventOptions,\n Identify as IIdentify,\n Revenue as IRevenue,\n TransportType,\n} from '@amplitude/analytics-types';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport } from './config';\nimport { webAttributionPlugin } from '@amplitude/plugin-web-attribution-browser';\nimport { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';\nimport { formInteractionTracking } from './plugins/form-interaction-tracking';\nimport { fileDownloadTracking } from './plugins/file-download-tracking';\nimport { DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';\nimport { detNotify } from './det-notification';\n\nexport class AmplitudeBrowser extends AmplitudeCore implements BrowserClient {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n previousSessionDeviceId: string | undefined;\n previousSessionUserId: string | undefined;\n sessionStartEventTime: number | undefined;\n\n init(apiKey = '', userIdOrOptions?: string | BrowserOptions, maybeOptions?: BrowserOptions) {\n let userId: string | undefined;\n let options: BrowserOptions | undefined;\n\n if (arguments.length > 2) {\n userId = userIdOrOptions as string | undefined;\n options = maybeOptions;\n } else {\n if (typeof userIdOrOptions === 'string') {\n userId = userIdOrOptions;\n options = undefined;\n } else {\n userId = userIdOrOptions?.userId;\n options = userIdOrOptions;\n }\n }\n return returnWrapper(this._init({ ...options, userId, apiKey }));\n }\n protected async _init(options: BrowserOptions & { apiKey: string }) {\n // Step 1: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 2: Create browser config\n const browserOptions = await useBrowserConfig(options.apiKey, options, this);\n await super._init(browserOptions);\n\n // Step 3: Set session ID\n // Priority 1: `options.sessionId`\n // Priority 2: last known sessionId from user identity storage\n // Default: `Date.now()`\n // Session ID is handled differently than device ID and user ID due to session events\n this.setSessionId(options.sessionId ?? this.config.sessionId ?? Date.now());\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector(options.instanceName);\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n await this.add(new IdentityEventSender()).promise;\n\n // Notify if DET is enabled\n detNotify(this.config);\n\n if (isFileDownloadTrackingEnabled(this.config.defaultTracking)) {\n await this.add(fileDownloadTracking()).promise;\n }\n\n if (isFormInteractionTrackingEnabled(this.config.defaultTracking)) {\n await this.add(formInteractionTracking()).promise;\n }\n\n // Add web attribution plugin\n if (isAttributionTrackingEnabled(this.config.defaultTracking)) {\n const attributionTrackingOptions = getAttributionTrackingConfig(this.config);\n const resetSessionOnNewCampaign =\n !this.config.lastEventTime || isSessionExpired(this.config.sessionTimeout, this.config.lastEventTime)\n ? // A new session just started OR will start soon organically, no need to trigger another restart\n false\n : // Previous session is still valid, allow reset if configured\n attributionTrackingOptions.resetSessionOnNewCampaign;\n const webAttribution = webAttributionPlugin({\n ...attributionTrackingOptions,\n resetSessionOnNewCampaign,\n });\n await this.add(webAttribution).promise;\n }\n\n // Add page view plugin\n await this.add(pageViewTrackingPlugin(getPageViewTrackingConfig(this.config))).promise;\n\n this.initializing = false;\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n\n // Step 7: Add the event receiver after running remaining queued functions.\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n if (userId !== this.config.userId || userId === undefined) {\n this.config.userId = userId;\n setConnectorUserId(userId, this.config.instanceName);\n }\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n setConnectorDeviceId(deviceId, this.config.instanceName);\n }\n\n reset() {\n this.setDeviceId(UUID());\n this.setUserId(undefined);\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n\n // Prevents starting a new session with the same session ID\n if (sessionId === this.config.sessionId) {\n return;\n }\n\n const previousSessionId = this.getSessionId();\n const lastEventTime = this.config.lastEventTime ?? this.sessionStartEventTime;\n this.config.lastEventId = this.config.lastEventId ?? 0;\n\n this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n if (previousSessionId && lastEventTime) {\n this.track(DEFAULT_SESSION_END_EVENT, undefined, {\n device_id: this.previousSessionDeviceId,\n event_id: ++this.config.lastEventId,\n session_id: previousSessionId,\n time: lastEventTime + 1,\n user_id: this.previousSessionUserId,\n });\n this.sessionStartEventTime = undefined;\n }\n\n this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n event_id: ++this.config.lastEventId,\n session_id: this.config.sessionId,\n time: this.config.sessionId,\n });\n // `this.lastSessionStartEventTime` is used to handle extreme edge case where session\n // is restarted before session start event is processed by context plugin to set\n // the globally used this.config.lastEventTime. `this.config.lastEventTime` should\n // only be modified by config builder and context plugin to limit tampering.\n this.sessionStartEventTime = this.config.sessionId;\n }\n\n this.previousSessionDeviceId = this.config.deviceId;\n this.previousSessionUserId = this.config.userId;\n }\n\n extendSession() {\n if (!this.config) {\n this.q.push(this.extendSession.bind(this));\n return;\n }\n this.config.lastEventTime = Date.now();\n }\n\n setTransport(transport: TransportType) {\n if (!this.config) {\n this.q.push(this.setTransport.bind(this, transport));\n return;\n }\n this.config.transportProvider = createTransport(transport);\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.groupIdentify(groupType, groupName, identify, eventOptions);\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n if (isInstanceProxy(revenue)) {\n const queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return super.revenue(revenue, eventOptions);\n }\n\n async process(event: Event) {\n const currentTime = Date.now();\n const isMostRecentSessionExpired = isSessionExpired(this.config.sessionTimeout, this.config.lastEventTime);\n\n if (\n event.event_type !== DEFAULT_SESSION_START_EVENT &&\n event.event_type !== DEFAULT_SESSION_END_EVENT &&\n (!event.session_id || event.session_id === this.getSessionId()) &&\n isMostRecentSessionExpired\n ) {\n this.setSessionId(currentTime);\n }\n\n return super.process(event);\n }\n}\n","import { debugWrapper, getClientLogConfig, getClientStates } from '@amplitude/analytics-core';\nimport { BrowserClient } from '@amplitude/analytics-types';\nimport { AmplitudeBrowser } from './browser-client';\n\nexport const createInstance = (): BrowserClient => {\n const client = new AmplitudeBrowser();\n return {\n init: debugWrapper(\n client.init.bind(client),\n 'init',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n add: debugWrapper(\n client.add.bind(client),\n 'add',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n remove: debugWrapper(\n client.remove.bind(client),\n 'remove',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n track: debugWrapper(\n client.track.bind(client),\n 'track',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n logEvent: debugWrapper(\n client.logEvent.bind(client),\n 'logEvent',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n identify: debugWrapper(\n client.identify.bind(client),\n 'identify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n groupIdentify: debugWrapper(\n client.groupIdentify.bind(client),\n 'groupIdentify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setGroup: debugWrapper(\n client.setGroup.bind(client),\n 'setGroup',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n revenue: debugWrapper(\n client.revenue.bind(client),\n 'revenue',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n flush: debugWrapper(\n client.flush.bind(client),\n 'flush',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n getUserId: debugWrapper(\n client.getUserId.bind(client),\n 'getUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n setUserId: debugWrapper(\n client.setUserId.bind(client),\n 'setUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n getDeviceId: debugWrapper(\n client.getDeviceId.bind(client),\n 'getDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n setDeviceId: debugWrapper(\n client.setDeviceId.bind(client),\n 'setDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n reset: debugWrapper(\n client.reset.bind(client),\n 'reset',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId', 'config.deviceId']),\n ),\n getSessionId: debugWrapper(\n client.getSessionId.bind(client),\n 'getSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setSessionId: debugWrapper(\n client.setSessionId.bind(client),\n 'setSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n extendSession: debugWrapper(\n client.extendSession.bind(client),\n 'extendSession',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setOptOut: debugWrapper(\n client.setOptOut.bind(client),\n 'setOptOut',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setTransport: debugWrapper(\n client.setTransport.bind(client),\n 'setTransport',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n };\n};\n\nexport default createInstance();\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport client from './browser-client-factory';\nexport { createInstance } from './browser-client-factory';\nexport const {\n add,\n extendSession,\n flush,\n getDeviceId,\n getSessionId,\n getUserId,\n groupIdentify,\n identify,\n init,\n logEvent,\n remove,\n reset,\n revenue,\n setDeviceId,\n setGroup,\n setOptOut,\n setSessionId,\n setTransport,\n setUserId,\n track,\n} = client;\nexport { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\nexport * as Types from '@amplitude/analytics-types';\n","/**\n * @deprecated use ServerZoneType instead\n */\nexport enum ServerZone {\n US = 'US',\n EU = 'EU',\n}\n\nexport type ServerZoneType = 'US' | 'EU';\n","import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\nimport { ServerZone } from '@amplitude/analytics-types';\n\nexport const DEFAULT_EVENT_PROPERTY_PREFIX = '[Amplitude]';\n\nexport const DEFAULT_SESSION_REPLAY_PROPERTY = `${DEFAULT_EVENT_PROPERTY_PREFIX} Session Replay ID`;\nexport const DEFAULT_SESSION_START_EVENT = 'session_start';\nexport const DEFAULT_SESSION_END_EVENT = 'session_end';\nexport const DEFAULT_SAMPLE_RATE = 0;\nexport const DEFAULT_SERVER_ZONE = ServerZone.US;\n\nexport const SESSION_REPLAY_DEBUG_PROPERTY = `${DEFAULT_EVENT_PROPERTY_PREFIX} Session Replay Debug`;\n\nexport const BLOCK_CLASS = 'amp-block';\nexport const MASK_TEXT_CLASS = 'amp-mask';\nexport const UNMASK_TEXT_CLASS = 'amp-unmask';\nexport const SESSION_REPLAY_SERVER_URL = 'https://api-sr.amplitude.com/sessions/v2/track';\nexport const SESSION_REPLAY_EU_URL = 'https://api-sr.eu.amplitude.com/sessions/v2/track';\nexport const SESSION_REPLAY_STAGING_URL = 'https://api-sr.stag2.amplitude.com/sessions/v2/track';\nexport const STORAGE_PREFIX = `${AMPLITUDE_PREFIX}_replay_unsent`;\nexport const MAX_EVENT_LIST_SIZE_IN_BYTES = 1 * 1000000; // 1 MB\nexport const INTERACTION_MIN_INTERVAL = 30_000; // 30 seconds\nexport const INTERACTION_MAX_INTERVAL = 60_000; // 1 minute\nexport const MIN_INTERVAL = 500; // 500 ms\nexport const MAX_INTERVAL = 10 * 1000; // 10 seconds\nexport const MAX_IDB_STORAGE_LENGTH = 1000 * 60 * 60 * 24 * 3; // 3 days\nexport const KB_SIZE = 1024;\n\nexport enum CustomRRwebEvent {\n GET_SR_PROPS = 'get-sr-props',\n DEBUG_INFO = 'debug-info',\n}\n","import { FetchTransport } from '@amplitude/analytics-client-common';\nimport { Config, Logger } from '@amplitude/analytics-core';\nimport { LogLevel } from '@amplitude/analytics-types';\nimport { DEFAULT_SAMPLE_RATE, DEFAULT_SERVER_ZONE } from '../constants';\nimport { SessionReplayOptions, StoreType } from '../typings/session-replay';\nimport {\n SessionReplayLocalConfig as ISessionReplayLocalConfig,\n InteractionConfig,\n PrivacyConfig,\n SessionReplayPerformanceConfig,\n SessionReplayVersion,\n} from './types';\n\nexport const getDefaultConfig = () => ({\n flushMaxRetries: 2,\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n transportProvider: new FetchTransport(),\n});\n\nexport class SessionReplayLocalConfig extends Config implements ISessionReplayLocalConfig {\n apiKey: string;\n sampleRate: number;\n privacyConfig?: PrivacyConfig;\n interactionConfig?: InteractionConfig;\n debugMode?: boolean;\n configEndpointUrl?: string;\n shouldInlineStylesheet?: boolean;\n version?: SessionReplayVersion;\n storeType: StoreType;\n performanceConfig?: SessionReplayPerformanceConfig;\n\n constructor(apiKey: string, options: SessionReplayOptions) {\n const defaultConfig = getDefaultConfig();\n super({\n transportProvider: defaultConfig.transportProvider,\n ...options,\n apiKey,\n });\n this.flushMaxRetries =\n options.flushMaxRetries !== undefined && options.flushMaxRetries <= defaultConfig.flushMaxRetries\n ? options.flushMaxRetries\n : defaultConfig.flushMaxRetries;\n\n this.apiKey = apiKey;\n this.sampleRate = options.sampleRate || DEFAULT_SAMPLE_RATE;\n this.serverZone = options.serverZone || DEFAULT_SERVER_ZONE;\n this.configEndpointUrl = options.configEndpointUrl;\n this.shouldInlineStylesheet = options.shouldInlineStylesheet;\n this.version = options.version;\n this.performanceConfig = options.performanceConfig;\n this.storeType = options.storeType ?? 'idb';\n\n if (options.privacyConfig) {\n this.privacyConfig = options.privacyConfig;\n }\n if (options.debugMode) {\n this.debugMode = options.debugMode;\n }\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a, _b;\n return Boolean(\n (_b = (_a = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a;\n return typeof defaultPrototype[method] === \"function\" && ((_a = defaultPrototype[method]) == null ? void 0 : _a.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n) {\n return getUntaintedAccessor(\"Node\", n, \"childNodes\");\n}\nfunction parentNode(n) {\n return getUntaintedAccessor(\"Node\", n, \"parentNode\");\n}\nfunction parentElement(n) {\n return getUntaintedAccessor(\"Node\", n, \"parentElement\");\n}\nfunction textContent(n) {\n return getUntaintedAccessor(\"Node\", n, \"textContent\");\n}\nfunction contains(n, other) {\n return getUntaintedMethod(\"Node\", n, \"contains\")(other);\n}\nfunction getRootNode(n) {\n return getUntaintedMethod(\"Node\", n, \"getRootNode\")();\n}\nfunction host(n) {\n if (!n || !(\"host\" in n)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n, \"host\");\n}\nfunction styleSheets(n) {\n return n.styleSheets;\n}\nfunction shadowRoot(n) {\n if (!n || !(\"shadowRoot\" in n)) return null;\n return getUntaintedAccessor(\"Element\", n, \"shadowRoot\");\n}\nfunction querySelector(n, selectors) {\n return getUntaintedAccessor(\"Element\", n, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n, selectors) {\n return getUntaintedAccessor(\"Element\", n, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction isElement(n) {\n return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n && \"host\" in n && \"mode\" in n && index.host(n) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index.shadowRoot(hostEl) === n\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s) {\n try {\n const rules = s.rules || s.cssRules;\n if (!rules) {\n return null;\n }\n const stringifiedRules = Array.from(\n rules,\n (rule2) => stringifyRule(rule2, s.href)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n) {\n var _a;\n if (!n) return -1;\n const id = (_a = this.getMeta(n)) == null ? void 0 : _a.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n) {\n return this.nodeMetaMap.get(n) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n) {\n const id = this.getId(n);\n this.idNodeMap.delete(id);\n if (n.childNodes) {\n n.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n);\n this.nodeMetaMap.set(n, meta);\n }\n replace(id, n) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n, meta);\n }\n this.idNodeMap.set(id, n);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction isNodeMetaEqual(a, b) {\n if (!a || !b || a.type !== b.type) return false;\n if (a.type === NodeType.Document)\n return a.compatMode === b.compatMode;\n else if (a.type === NodeType.DocumentType)\n return a.name === b.name && a.publicId === b.publicId && a.systemId === b.systemId;\n else if (a.type === NodeType.Comment || a.type === NodeType.Text || a.type === NodeType.CDATA)\n return a.textContent === b.textContent;\n else if (a.type === NodeType.Element)\n return a.tagName === b.tagName && JSON.stringify(a.attributes) === JSON.stringify(b.attributes) && a.isSVG === b.isSVG && a.needBlock === b.needBlock;\n return false;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars = match[0];\n pos += chars.length;\n return chars;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c = attributeValue.charAt(pos);\n if (c === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c === \"(\") {\n inParens = true;\n }\n } else {\n if (c === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a = cachedDocument.get(doc);\n if (!a) {\n a = doc.createElement(\"a\");\n cachedDocument.set(doc, a);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a.setAttribute(\"href\", customHref);\n return a.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index.childNodes(el).length) {\n return false;\n }\n } else if (index.parentElement(node2) === null) {\n return false;\n } else {\n el = index.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n, options) {\n const {\n doc,\n mirror,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false\n } = options;\n const rootId = getRootId(doc, mirror);\n switch (n.nodeType) {\n case n.DOCUMENT_NODE:\n if (n.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType.Document,\n childNodes: [],\n compatMode: n.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType.Document,\n childNodes: []\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType.DocumentType,\n name: n.name,\n publicId: n.publicId,\n systemId: n.systemId,\n rootId\n };\n case n.ELEMENT_NODE:\n return serializeElementNode(n, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n.TEXT_NODE:\n return serializeTextNode(n, {\n doc,\n needsMask,\n maskTextFn,\n rootId\n });\n case n.CDATA_SECTION_NODE:\n return {\n type: NodeType.CDATA,\n textContent: \"\",\n rootId\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType.Comment,\n textContent: index.textContent(n) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror) {\n if (!mirror.hasNode(doc)) return void 0;\n const docId = mirror.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n, options) {\n var _a;\n const { needsMask, maskTextFn, rootId } = options;\n const parent = index.parentNode(n);\n const parentTagName = parent && parent.tagName;\n let text = index.textContent(n);\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isStyle && text) {\n try {\n if (n.nextSibling || n.previousSibling) {\n } else if ((_a = parent.sheet) == null ? void 0 : _a.cssRules) {\n text = stringifyStylesheet(parent.sheet);\n }\n } catch (err) {\n console.warn(\n `Cannot get CSS styles from text's parentNode. Error: ${err}`,\n n\n );\n }\n text = absolutifyURLs(text, getHref(options.doc));\n }\n if (isScript) {\n text = \"SCRIPT_PLACEHOLDER\";\n }\n if (!isStyle && !isScript && text && needsMask) {\n text = maskTextFn ? maskTextFn(text, index.parentElement(n)) : text.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType.Text,\n textContent: text || \"\",\n isStyle,\n rootId\n };\n}\nfunction serializeElementNode(n, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n, blockClass, blockSelector);\n const tagName = getValidTagName(n);\n let attributes = {};\n const len = n.attributes.length;\n for (let i = 0; i < len; i++) {\n const attr = n.attributes[i];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\n return s.href === n.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n.sheet && // TODO: Currently we only try to get dynamic stylesheet when it is an empty style element\n !(n.innerText || index.textContent(n) || \"\").trim().length) {\n const cssText = stringifyStylesheet(\n n.sheet\n );\n if (cssText) {\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n.value;\n const checked = n.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n,\n type: getInputType(n),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n.open) {\n attributes.rr_open_mode = n.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n.__context === \"2d\") {\n if (!is2DCanvasBlank(n)) {\n attributes.rr_dataURL = n.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n)) {\n const canvasDataURL = n.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n.width;\n blankCanvas.height = n.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n.playbackRate;\n mediaAttributes.rr_mediaMuted = n.muted;\n mediaAttributes.rr_mediaLoop = n.loop;\n mediaAttributes.rr_mediaVolume = n.volume;\n }\n if (!newlyAddedElement) {\n if (n.scrollLeft) {\n attributes.rr_scrollLeft = n.scrollLeft;\n }\n if (n.scrollTop) {\n attributes.rr_scrollTop = n.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e) {\n }\n return {\n type: NodeType.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\n return true;\n } else if (sn.type === NodeType.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n, options) {\n const {\n doc,\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n, {\n doc,\n mirror,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement\n });\n if (!_serializedNode) {\n console.warn(n, \"not serialized\");\n return null;\n }\n let id;\n if (mirror.hasNode(n)) {\n id = mirror.getId(n);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType.Text && !_serializedNode.isStyle && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror.add(n, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index.shadowRoot(n);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType.Document || serializedNode.type === NodeType.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n };\n if (serializedNode.type === NodeType.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n for (const childN of Array.from(index.childNodes(n))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n) && (shadowRootEl = index.shadowRoot(n))) {\n for (const childN of Array.from(index.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index.parentNode(n);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n,\n () => {\n const iframeDoc = n.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n, {\n doc,\n mirror,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n, options) {\n const {\n mirror = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n, {\n doc: n,\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction visitSnapshot(node2, onVisit) {\n function walk(current) {\n onVisit(current);\n if (current.type === NodeType.Document || current.type === NodeType.Element) {\n current.childNodes.forEach(walk);\n }\n }\n walk(node2);\n}\nfunction cleanupSnapshot() {\n _id = 1;\n}\nconst MEDIA_SELECTOR = /(max|min)-device-(width|height)/;\nconst MEDIA_SELECTOR_GLOBAL = new RegExp(MEDIA_SELECTOR.source, \"g\");\nconst mediaSelectorPlugin = {\n postcssPlugin: \"postcss-custom-selectors\",\n prepare() {\n return {\n postcssPlugin: \"postcss-custom-selectors\",\n AtRule: function(atrule) {\n if (atrule.params.match(MEDIA_SELECTOR_GLOBAL)) {\n atrule.params = atrule.params.replace(MEDIA_SELECTOR_GLOBAL, \"$1-$2\");\n }\n }\n };\n }\n};\nconst pseudoClassPlugin = {\n postcssPlugin: \"postcss-hover-classes\",\n prepare: function() {\n const fixed = [];\n return {\n Rule: function(rule2) {\n if (fixed.indexOf(rule2) !== -1) {\n return;\n }\n fixed.push(rule2);\n rule2.selectors.forEach(function(selector) {\n if (!selector.includes(\":\")) {\n return;\n }\n const selectorParts = selector.replace(/\\n/g, \" \").split(\" \");\n const pseudoedSelectorParts = [];\n selectorParts.forEach(function(selectorPart) {\n const pseudos = selectorPart.match(/::?([^:]+)/g);\n if (!pseudos) {\n pseudoedSelectorParts.push(selectorPart);\n return;\n }\n const baseSelector = selectorPart.substr(\n 0,\n selectorPart.length - pseudos.join(\"\").length\n );\n const classPseudos = pseudos.map(function(pseudo) {\n const pseudoToCheck = pseudo.replace(/\\(.*/g, \"\");\n if (pseudoToCheck !== \":hover\") {\n return pseudo;\n }\n if (pseudo.match(/^::/)) {\n return pseudo;\n }\n pseudo = pseudo.substr(1);\n pseudo = pseudo.replace(/\\(/g, \"\\\\(\");\n pseudo = pseudo.replace(/\\)/g, \"\\\\)\");\n return \".\\\\:\" + pseudo;\n });\n pseudoedSelectorParts.push(baseSelector + classPseudos.join(\"\"));\n });\n addSelector(pseudoedSelectorParts.join(\" \"));\n function addSelector(newSelector) {\n if (newSelector && newSelector !== selector) {\n rule2.selector += \",\\n\" + newSelector;\n }\n }\n });\n }\n };\n }\n};\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n) {\n if (n.__esModule) return n;\n var f = n.default;\n if (typeof f == \"function\") {\n var a = function a2() {\n if (this instanceof a2) {\n return Reflect.construct(f, arguments, this.constructor);\n }\n return f.apply(this, arguments);\n };\n a.prototype = f.prototype;\n } else a = {};\n Object.defineProperty(a, \"__esModule\", { value: true });\n Object.keys(n).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n, k);\n Object.defineProperty(a, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n[k];\n }\n });\n });\n return a;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin2) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin2) {\n this.plugin = plugin2;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i = 0; i < node2.nodes.length; i++) {\n let child = node2.nodes[i];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i) => {\n value = i.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i) => {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== \"undefined\") {\n value = i.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i) => {\n if (typeof i.raws.before !== \"undefined\") {\n value = i.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i) => {\n if (typeof i.raws.before !== \"undefined\") {\n value = i.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i) => {\n if (i.type !== \"decl\") {\n value = i.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i) => {\n if (i.nodes && (i.parent !== root2 || root2.first !== i)) {\n if (typeof i.raws.before !== \"undefined\") {\n value = i.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i) => {\n if (typeof i.raws.between !== \"undefined\") {\n value = i.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i) => {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i) => {\n let p = i.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i.raws.before !== \"undefined\") {\n let parts = i.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i) => {\n if (i.nodes && i.nodes.length && i.last.type === \"decl\") {\n value = i.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier2 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n continue;\n }\n if (i === \"proxyCache\") continue;\n let value = obj[i];\n let type = typeof value;\n if (i === \"parent\" && type === \"object\") {\n if (parent) cloned[i] = parent;\n } else if (i === \"source\") {\n cloned[i] = value;\n } else if (Array.isArray(value)) {\n cloned[i] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i = 0; i < index2; i++) {\n if (string[i] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i) => {\n if (typeof i === \"object\" && i.toJSON) {\n return i.toJSON(null, inputs);\n } else {\n return i;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i) => {\n result2 += i;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i in opts) data[i] = opts[i];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i = size;\n while (i--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i = size;\n while (i--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = prevIndex;\n prevIndex += lines[i].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n node2 = this.root.nodes[i];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i) => {\n result2 += i;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i) => i.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i) => i.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i) => i.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i) => {\n if (i.nodes) i.nodes = cleanSource(i.nodes);\n delete i.source;\n return i;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i of node2.proxyOf.nodes) {\n markDirtyUp(i);\n }\n }\n}\nlet Container$7 = class Container extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i) => {\n if (typeof i === \"function\") {\n return (child, index2) => i(child.toProxy(), index2);\n } else {\n return i;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i) => i.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i) => {\n if (!i[my$1]) Container.rebuild(i);\n i = i.proxyOf;\n if (i.parent) i.parent.removeChild(i);\n if (i[isClean$1]) markDirtyUp(i);\n if (typeof i.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i.parent = this.proxyOf;\n return i;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i) => {\n let result2;\n try {\n result2 = callback(child, i);\n } catch (e) {\n throw child.addToError(e);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i) => {\n if (child.type === \"atrule\") {\n return callback(child, i);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i);\n }\n });\n }\n return this.walk((child, i) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i) => {\n if (child.type === \"comment\") {\n return callback(child, i);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i) => {\n if (child.type === \"decl\") {\n return callback(child, i);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i);\n }\n });\n }\n return this.walk((child, i) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i) => {\n if (child.type === \"rule\") {\n return callback(child, i);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i);\n }\n });\n }\n return this.walk((child, i) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i) => i.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer2 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i = tokens.length - 1; i >= 0; i--) {\n let token = tokens[i];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i) => i[0] !== \"space\" && i[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i) => i[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i = 0; i < length; i += 1) {\n token = tokens[i];\n type = token[0];\n if (type === \"space\" && i === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i - 1] ? tokens[i - 1][0] : \"empty\";\n next = tokens[i + 1] ? tokens[i + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i) => all + i[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i = from; i < tokens.length; i++) {\n result2 += tokens[i][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser2 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser2(input2);\n try {\n parser2.parse();\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i) => cleanMarks(i));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin2) => {\n if (typeof plugin2 === \"object\" && plugin2.prepare) {\n return { ...plugin2, ...plugin2.prepare(this.result) };\n } else {\n return plugin2;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin2 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin2.postcssPlugin;\n error.setMessage();\n } else if (plugin2.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin2.postcssPlugin;\n let pluginVer = plugin2.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin2, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin2, cb]);\n };\n for (let plugin2 of this.plugins) {\n if (typeof plugin2 === \"object\") {\n for (let event in plugin2) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin2.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin2[event] === \"object\") {\n for (let filter in plugin2[event]) {\n if (filter === \"*\") {\n add(plugin2, event, plugin2[event][filter]);\n } else {\n add(\n plugin2,\n event + \"-\" + filter.toLowerCase(),\n plugin2[event][filter]\n );\n }\n }\n } else if (typeof plugin2[event] === \"function\") {\n add(plugin2, event, plugin2[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i = 0; i < this.plugins.length; i++) {\n let plugin2 = this.plugins[i];\n let promise = this.runOnRoot(plugin2);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin2, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin2;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e) {\n throw this.handleError(e);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin2) {\n this.result.lastPlugin = plugin2;\n try {\n if (typeof plugin2 === \"object\" && plugin2.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin2.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin2.Once(this.result.root, this.helpers);\n } else if (typeof plugin2 === \"function\") {\n return plugin2(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin2 of this.plugins) {\n let promise = this.runOnRoot(plugin2);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin2, visitor] of visitors) {\n this.result.lastPlugin = plugin2;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e) {\n throw this.handleError(e, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin2, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin2;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e) {\n throw this.handleError(e, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator2 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce2 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult2 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i of plugins) {\n if (i.postcss === true) {\n i = i();\n } else if (i.postcss) {\n i = i.postcss;\n }\n if (typeof i === \"object\" && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins);\n } else if (typeof i === \"object\" && i.postcssPlugin) {\n normalized.push(i);\n } else if (typeof i === \"function\") {\n normalized.push(i);\n } else if (typeof i === \"object\" && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin2) {\n this.plugins = this.plugins.concat(this.normalize([plugin2]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap2 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n) => fromJSON$1(n));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n) => fromJSON$1(n, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError2 = cssSyntaxError;\nlet Declaration2 = declaration;\nlet LazyResult2 = lazyResult;\nlet Container2 = container;\nlet Processor2 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document2 = document$1;\nlet Warning2 = warning;\nlet Comment2 = comment;\nlet AtRule2 = atRule;\nlet Result2 = result;\nlet Input2 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule2 = rule;\nlet Root2 = root;\nlet Node2 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2(plugins);\n}\npostcss.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment2(defaults);\npostcss.atRule = (defaults) => new AtRule2(defaults);\npostcss.decl = (defaults) => new Declaration2(defaults);\npostcss.rule = (defaults) => new Rule2(defaults);\npostcss.root = (defaults) => new Root2(defaults);\npostcss.document = (defaults) => new Document2(defaults);\npostcss.CssSyntaxError = CssSyntaxError2;\npostcss.Declaration = Declaration2;\npostcss.Container = Container2;\npostcss.Processor = Processor2;\npostcss.Document = Document2;\npostcss.Comment = Comment2;\npostcss.Warning = Warning2;\npostcss.AtRule = AtRule2;\npostcss.Result = Result2;\npostcss.Input = Input2;\npostcss.Rule = Rule2;\npostcss.Root = Root2;\npostcss.Node = Node2;\nLazyResult2.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nconst tagMap = {\n script: \"noscript\",\n // camel case svg element tag names\n altglyph: \"altGlyph\",\n altglyphdef: \"altGlyphDef\",\n altglyphitem: \"altGlyphItem\",\n animatecolor: \"animateColor\",\n animatemotion: \"animateMotion\",\n animatetransform: \"animateTransform\",\n clippath: \"clipPath\",\n feblend: \"feBlend\",\n fecolormatrix: \"feColorMatrix\",\n fecomponenttransfer: \"feComponentTransfer\",\n fecomposite: \"feComposite\",\n feconvolvematrix: \"feConvolveMatrix\",\n fediffuselighting: \"feDiffuseLighting\",\n fedisplacementmap: \"feDisplacementMap\",\n fedistantlight: \"feDistantLight\",\n fedropshadow: \"feDropShadow\",\n feflood: \"feFlood\",\n fefunca: \"feFuncA\",\n fefuncb: \"feFuncB\",\n fefuncg: \"feFuncG\",\n fefuncr: \"feFuncR\",\n fegaussianblur: \"feGaussianBlur\",\n feimage: \"feImage\",\n femerge: \"feMerge\",\n femergenode: \"feMergeNode\",\n femorphology: \"feMorphology\",\n feoffset: \"feOffset\",\n fepointlight: \"fePointLight\",\n fespecularlighting: \"feSpecularLighting\",\n fespotlight: \"feSpotLight\",\n fetile: \"feTile\",\n feturbulence: \"feTurbulence\",\n foreignobject: \"foreignObject\",\n glyphref: \"glyphRef\",\n lineargradient: \"linearGradient\",\n radialgradient: \"radialGradient\"\n};\nfunction getTagName(n) {\n let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\n if (tagName === \"link\" && n.attributes._cssText) {\n tagName = \"style\";\n }\n return tagName;\n}\nfunction adaptCssForReplay(cssText, cache) {\n const cachedStyle = cache == null ? void 0 : cache.stylesWithHoverClass.get(cssText);\n if (cachedStyle) return cachedStyle;\n let result2 = cssText;\n try {\n const ast = postcss$1([\n mediaSelectorPlugin,\n pseudoClassPlugin\n ]).process(cssText);\n result2 = ast.css;\n } catch (error) {\n console.warn(\"Failed to adapt css for replay\", error);\n }\n cache == null ? void 0 : cache.stylesWithHoverClass.set(cssText, result2);\n return result2;\n}\nfunction createCache() {\n const stylesWithHoverClass = /* @__PURE__ */ new Map();\n return {\n stylesWithHoverClass\n };\n}\nfunction buildNode(n, options) {\n var _a;\n const { doc, hackCss, cache } = options;\n switch (n.type) {\n case NodeType.Document:\n return doc.implementation.createDocument(null, \"\", null);\n case NodeType.DocumentType:\n return doc.implementation.createDocumentType(\n n.name || \"html\",\n n.publicId,\n n.systemId\n );\n case NodeType.Element: {\n const tagName = getTagName(n);\n let node2;\n if (n.isSVG) {\n node2 = doc.createElementNS(\"http://www.w3.org/2000/svg\", tagName);\n } else {\n if (\n // If the tag name is a custom element name\n n.isCustom && // If the browser supports custom elements\n ((_a = doc.defaultView) == null ? void 0 : _a.customElements) && // If the custom element hasn't been defined yet\n !doc.defaultView.customElements.get(n.tagName)\n )\n doc.defaultView.customElements.define(\n n.tagName,\n class extends doc.defaultView.HTMLElement {\n }\n );\n node2 = doc.createElement(tagName);\n }\n const specialAttributes = {};\n for (const name in n.attributes) {\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\n continue;\n }\n let value = n.attributes[name];\n if (tagName === \"option\" && name === \"selected\" && value === false) {\n continue;\n }\n if (value === null) {\n continue;\n }\n if (value === true) value = \"\";\n if (name.startsWith(\"rr_\")) {\n specialAttributes[name] = value;\n continue;\n }\n const isTextarea = tagName === \"textarea\" && name === \"value\";\n const isRemoteOrDynamicCss = tagName === \"style\" && name === \"_cssText\";\n if (isRemoteOrDynamicCss && hackCss && typeof value === \"string\") {\n value = adaptCssForReplay(value, cache);\n }\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === \"string\") {\n node2.appendChild(doc.createTextNode(value));\n n.childNodes = [];\n continue;\n }\n try {\n if (n.isSVG && name === \"xlink:href\") {\n node2.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n name,\n value.toString()\n );\n } else if (name === \"onload\" || name === \"onclick\" || name.substring(0, 7) === \"onmouse\") {\n node2.setAttribute(\"_\" + name, value.toString());\n } else if (tagName === \"meta\" && n.attributes[\"http-equiv\"] === \"Content-Security-Policy\" && name === \"content\") {\n node2.setAttribute(\"csp-content\", value.toString());\n continue;\n } else if (tagName === \"link\" && (n.attributes.rel === \"preload\" || n.attributes.rel === \"modulepreload\") && n.attributes.as === \"script\") {\n } else if (tagName === \"link\" && n.attributes.rel === \"prefetch\" && typeof n.attributes.href === \"string\" && n.attributes.href.endsWith(\".js\")) {\n } else if (tagName === \"img\" && n.attributes.srcset && n.attributes.rr_dataURL) {\n node2.setAttribute(\n \"rrweb-original-srcset\",\n n.attributes.srcset\n );\n } else {\n node2.setAttribute(name, value.toString());\n }\n } catch (error) {\n }\n }\n for (const name in specialAttributes) {\n const value = specialAttributes[name];\n if (tagName === \"canvas\" && name === \"rr_dataURL\") {\n const image = doc.createElement(\"img\");\n image.onload = () => {\n const ctx = node2.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(image, 0, 0, image.width, image.height);\n }\n };\n image.src = value.toString();\n if (node2.RRNodeType)\n node2.rr_dataURL = value.toString();\n } else if (tagName === \"img\" && name === \"rr_dataURL\") {\n const image = node2;\n if (!image.currentSrc.startsWith(\"data:\")) {\n image.setAttribute(\n \"rrweb-original-src\",\n n.attributes.src\n );\n image.src = value.toString();\n }\n }\n if (name === \"rr_width\") {\n node2.style.width = value.toString();\n } else if (name === \"rr_height\") {\n node2.style.height = value.toString();\n } else if (name === \"rr_mediaCurrentTime\" && typeof value === \"number\") {\n node2.currentTime = value;\n } else if (name === \"rr_mediaState\") {\n switch (value) {\n case \"played\":\n node2.play().catch((e) => console.warn(\"media playback error\", e));\n break;\n case \"paused\":\n node2.pause();\n break;\n }\n } else if (name === \"rr_mediaPlaybackRate\" && typeof value === \"number\") {\n node2.playbackRate = value;\n } else if (name === \"rr_mediaMuted\" && typeof value === \"boolean\") {\n node2.muted = value;\n } else if (name === \"rr_mediaLoop\" && typeof value === \"boolean\") {\n node2.loop = value;\n } else if (name === \"rr_mediaVolume\" && typeof value === \"number\") {\n node2.volume = value;\n } else if (name === \"rr_open_mode\") {\n node2.setAttribute(\n \"rr_open_mode\",\n value\n );\n }\n }\n if (n.isShadowHost) {\n if (!node2.shadowRoot) {\n node2.attachShadow({ mode: \"open\" });\n } else {\n while (node2.shadowRoot.firstChild) {\n node2.shadowRoot.removeChild(node2.shadowRoot.firstChild);\n }\n }\n }\n return node2;\n }\n case NodeType.Text:\n return doc.createTextNode(\n n.isStyle && hackCss ? adaptCssForReplay(n.textContent, cache) : n.textContent\n );\n case NodeType.CDATA:\n return doc.createCDATASection(n.textContent);\n case NodeType.Comment:\n return doc.createComment(n.textContent);\n default:\n return null;\n }\n}\nfunction buildNodeWithSN(n, options) {\n const {\n doc,\n mirror,\n skipChild = false,\n hackCss = true,\n afterAppend,\n cache\n } = options;\n if (mirror.has(n.id)) {\n const nodeInMirror = mirror.getNode(n.id);\n const meta = mirror.getMeta(nodeInMirror);\n if (isNodeMetaEqual(meta, n)) return mirror.getNode(n.id);\n }\n let node2 = buildNode(n, { doc, hackCss, cache });\n if (!node2) {\n return null;\n }\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\n mirror.replace(n.rootId, doc);\n }\n if (n.type === NodeType.Document) {\n doc.close();\n doc.open();\n if (n.compatMode === \"BackCompat\" && n.childNodes && n.childNodes[0].type !== NodeType.DocumentType) {\n if (n.childNodes[0].type === NodeType.Element && \"xmlns\" in n.childNodes[0].attributes && n.childNodes[0].attributes.xmlns === \"http://www.w3.org/1999/xhtml\") {\n doc.write(\n ''\n );\n } else {\n doc.write(\n ''\n );\n }\n }\n node2 = doc;\n }\n mirror.add(node2, n);\n if ((n.type === NodeType.Document || n.type === NodeType.Element) && !skipChild) {\n for (const childN of n.childNodes) {\n const childNode = buildNodeWithSN(childN, {\n doc,\n mirror,\n skipChild: false,\n hackCss,\n afterAppend,\n cache\n });\n if (!childNode) {\n console.warn(\"Failed to rebuild\", childN);\n continue;\n }\n if (childN.isShadow && isElement(node2) && node2.shadowRoot) {\n node2.shadowRoot.appendChild(childNode);\n } else if (n.type === NodeType.Document && childN.type == NodeType.Element) {\n const htmlElement = childNode;\n let body = null;\n htmlElement.childNodes.forEach((child) => {\n if (child.nodeName === \"BODY\") body = child;\n });\n if (body) {\n htmlElement.removeChild(body);\n node2.appendChild(childNode);\n htmlElement.appendChild(body);\n } else {\n node2.appendChild(childNode);\n }\n } else {\n node2.appendChild(childNode);\n }\n if (afterAppend) {\n afterAppend(childNode, childN.id);\n }\n }\n }\n return node2;\n}\nfunction visit(mirror, onVisit) {\n function walk(node2) {\n onVisit(node2);\n }\n for (const id of mirror.getIds()) {\n if (mirror.has(id)) {\n walk(mirror.getNode(id));\n }\n }\n}\nfunction handleScroll(node2, mirror) {\n const n = mirror.getMeta(node2);\n if ((n == null ? void 0 : n.type) !== NodeType.Element) {\n return;\n }\n const el = node2;\n for (const name in n.attributes) {\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) && name.startsWith(\"rr_\"))) {\n continue;\n }\n const value = n.attributes[name];\n if (name === \"rr_scrollLeft\") {\n el.scrollLeft = value;\n }\n if (name === \"rr_scrollTop\") {\n el.scrollTop = value;\n }\n }\n}\nfunction rebuild(n, options) {\n const {\n doc,\n onVisit,\n hackCss = true,\n afterAppend,\n cache,\n mirror = new Mirror()\n } = options;\n const node2 = buildNodeWithSN(n, {\n doc,\n mirror,\n skipChild: false,\n hackCss,\n afterAppend,\n cache\n });\n visit(mirror, (visitedNode) => {\n if (onVisit) {\n onVisit(visitedNode);\n }\n handleScroll(visitedNode, mirror);\n });\n return node2;\n}\nexport {\n IGNORED_NODE,\n Mirror,\n NodeType,\n absolutifyURLs,\n adaptCssForReplay,\n buildNodeWithSN,\n classMatchesRegex,\n cleanupSnapshot,\n createCache,\n createMirror,\n escapeImportStatement,\n extractFileExtension,\n fixSafariColons,\n genId,\n getInputType,\n ignoreAttribute,\n is2DCanvasBlank,\n isCSSImportRule,\n isCSSStyleRule,\n isElement,\n isNativeShadowDom,\n isNodeMetaEqual,\n isShadowRoot,\n maskInputValue,\n needMaskingText,\n rebuild,\n serializeNodeWithId,\n snapshot,\n stringifyRule,\n stringifyStylesheet,\n toLowerCase,\n transformAttribute,\n visitSnapshot\n};\n//# sourceMappingURL=rrweb-snapshot.js.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$1 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$1 || {});\nlet Mirror$1 = class Mirror {\n constructor() {\n __publicField2(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField2(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n) {\n var _a;\n if (!n) return -1;\n const id = (_a = this.getMeta(n)) == null ? void 0 : _a.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n) {\n return this.nodeMetaMap.get(n) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n) {\n const id = this.getId(n);\n this.idNodeMap.delete(id);\n if (n.childNodes) {\n n.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n);\n this.nodeMetaMap.set(n, meta);\n }\n replace(id, n) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n, meta);\n }\n this.idNodeMap.set(id, n);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n};\nfunction createMirror$1() {\n return new Mirror$1();\n}\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n) {\n if (n.__esModule) return n;\n var f = n.default;\n if (typeof f == \"function\") {\n var a = function a2() {\n if (this instanceof a2) {\n return Reflect.construct(f, arguments, this.constructor);\n }\n return f.apply(this, arguments);\n };\n a.prototype = f.prototype;\n } else a = {};\n Object.defineProperty(a, \"__esModule\", { value: true });\n Object.keys(n).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n, k);\n Object.defineProperty(a, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n[k];\n }\n });\n });\n return a;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin2) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin2) {\n this.plugin = plugin2;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i = 0; i < node2.nodes.length; i++) {\n let child = node2.nodes[i];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i) => {\n value = i.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i) => {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== \"undefined\") {\n value = i.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i) => {\n if (typeof i.raws.before !== \"undefined\") {\n value = i.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i) => {\n if (typeof i.raws.before !== \"undefined\") {\n value = i.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i) => {\n if (i.type !== \"decl\") {\n value = i.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i) => {\n if (i.nodes && (i.parent !== root2 || root2.first !== i)) {\n if (typeof i.raws.before !== \"undefined\") {\n value = i.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i) => {\n if (typeof i.raws.between !== \"undefined\") {\n value = i.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i) => {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i) => {\n let p = i.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i.raws.before !== \"undefined\") {\n let parts = i.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i) => {\n if (i.nodes && i.nodes.length && i.last.type === \"decl\") {\n value = i.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier2 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n continue;\n }\n if (i === \"proxyCache\") continue;\n let value = obj[i];\n let type = typeof value;\n if (i === \"parent\" && type === \"object\") {\n if (parent) cloned[i] = parent;\n } else if (i === \"source\") {\n cloned[i] = value;\n } else if (Array.isArray(value)) {\n cloned[i] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i = 0; i < index2; i++) {\n if (string[i] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i) => {\n if (typeof i === \"object\" && i.toJSON) {\n return i.toJSON(null, inputs);\n } else {\n return i;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i) => {\n result2 += i;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i in opts) data[i] = opts[i];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i = size;\n while (i--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i = size;\n while (i--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = prevIndex;\n prevIndex += lines[i].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n node2 = this.root.nodes[i];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i) => {\n result2 += i;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i) => i.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i) => i.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i) => i.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i) => {\n if (i.nodes) i.nodes = cleanSource(i.nodes);\n delete i.source;\n return i;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i of node2.proxyOf.nodes) {\n markDirtyUp(i);\n }\n }\n}\nlet Container$7 = class Container extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i) => {\n if (typeof i === \"function\") {\n return (child, index2) => i(child.toProxy(), index2);\n } else {\n return i;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i) => i.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i) => {\n if (!i[my$1]) Container.rebuild(i);\n i = i.proxyOf;\n if (i.parent) i.parent.removeChild(i);\n if (i[isClean$1]) markDirtyUp(i);\n if (typeof i.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i.parent = this.proxyOf;\n return i;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i) => {\n let result2;\n try {\n result2 = callback(child, i);\n } catch (e) {\n throw child.addToError(e);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i) => {\n if (child.type === \"atrule\") {\n return callback(child, i);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i);\n }\n });\n }\n return this.walk((child, i) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i) => {\n if (child.type === \"comment\") {\n return callback(child, i);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i) => {\n if (child.type === \"decl\") {\n return callback(child, i);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i);\n }\n });\n }\n return this.walk((child, i) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i) => {\n if (child.type === \"rule\") {\n return callback(child, i);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i);\n }\n });\n }\n return this.walk((child, i) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document2 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i) => i.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer2 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i = tokens.length - 1; i >= 0; i--) {\n let token = tokens[i];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i) => i[0] !== \"space\" && i[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i) => i[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i = 0; i < length; i += 1) {\n token = tokens[i];\n type = token[0];\n if (type === \"space\" && i === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i - 1] ? tokens[i - 1][0] : \"empty\";\n next = tokens[i + 1] ? tokens[i + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i) => all + i[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i = from; i < tokens.length; i++) {\n result2 += tokens[i][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser2 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser2(input2);\n try {\n parser2.parse();\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i) => cleanMarks(i));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin2) => {\n if (typeof plugin2 === \"object\" && plugin2.prepare) {\n return { ...plugin2, ...plugin2.prepare(this.result) };\n } else {\n return plugin2;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin2 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin2.postcssPlugin;\n error.setMessage();\n } else if (plugin2.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin2.postcssPlugin;\n let pluginVer = plugin2.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin2, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin2, cb]);\n };\n for (let plugin2 of this.plugins) {\n if (typeof plugin2 === \"object\") {\n for (let event in plugin2) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin2.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin2[event] === \"object\") {\n for (let filter in plugin2[event]) {\n if (filter === \"*\") {\n add(plugin2, event, plugin2[event][filter]);\n } else {\n add(\n plugin2,\n event + \"-\" + filter.toLowerCase(),\n plugin2[event][filter]\n );\n }\n }\n } else if (typeof plugin2[event] === \"function\") {\n add(plugin2, event, plugin2[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i = 0; i < this.plugins.length; i++) {\n let plugin2 = this.plugins[i];\n let promise = this.runOnRoot(plugin2);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin2, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin2;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e) {\n throw this.handleError(e);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin2) {\n this.result.lastPlugin = plugin2;\n try {\n if (typeof plugin2 === \"object\" && plugin2.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin2.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin2.Once(this.result.root, this.helpers);\n } else if (typeof plugin2 === \"function\") {\n return plugin2(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin2 of this.plugins) {\n let promise = this.runOnRoot(plugin2);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin2, visitor] of visitors) {\n this.result.lastPlugin = plugin2;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e) {\n throw this.handleError(e, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin2, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin2;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e) {\n throw this.handleError(e, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator2 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce2 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult2 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i of plugins) {\n if (i.postcss === true) {\n i = i();\n } else if (i.postcss) {\n i = i.postcss;\n }\n if (typeof i === \"object\" && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins);\n } else if (typeof i === \"object\" && i.postcssPlugin) {\n normalized.push(i);\n } else if (typeof i === \"function\") {\n normalized.push(i);\n } else if (typeof i === \"object\" && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin2) {\n this.plugins = this.plugins.concat(this.normalize([plugin2]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap2 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n) => fromJSON$1(n));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n) => fromJSON$1(n, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError2 = cssSyntaxError;\nlet Declaration2 = declaration;\nlet LazyResult2 = lazyResult;\nlet Container2 = container;\nlet Processor2 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document22 = document$1;\nlet Warning2 = warning;\nlet Comment2 = comment;\nlet AtRule2 = atRule;\nlet Result2 = result;\nlet Input2 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule2 = rule;\nlet Root2 = root;\nlet Node2 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2(plugins);\n}\npostcss.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment2(defaults);\npostcss.atRule = (defaults) => new AtRule2(defaults);\npostcss.decl = (defaults) => new Declaration2(defaults);\npostcss.rule = (defaults) => new Rule2(defaults);\npostcss.root = (defaults) => new Root2(defaults);\npostcss.document = (defaults) => new Document22(defaults);\npostcss.CssSyntaxError = CssSyntaxError2;\npostcss.Declaration = Declaration2;\npostcss.Container = Container2;\npostcss.Processor = Processor2;\npostcss.Document = Document22;\npostcss.Comment = Comment2;\npostcss.Warning = Warning2;\npostcss.AtRule = AtRule2;\npostcss.Result = Result2;\npostcss.Input = Input2;\npostcss.Rule = Rule2;\npostcss.Root = Root2;\npostcss.Node = Node2;\nLazyResult2.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nfunction parseCSSText(cssText) {\n const res = {};\n const listDelimiter = /;(?![^(]*\\))/g;\n const propertyDelimiter = /:(.+)/;\n const comment2 = /\\/\\*.*?\\*\\//g;\n cssText.replace(comment2, \"\").split(listDelimiter).forEach(function(item) {\n if (item) {\n const tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[camelize(tmp[0].trim())] = tmp[1].trim());\n }\n });\n return res;\n}\nfunction toCSSText(style) {\n const properties = [];\n for (const name in style) {\n const value = style[name];\n if (typeof value !== \"string\") continue;\n const normalizedName = hyphenate(name);\n properties.push(`${normalizedName}: ${value};`);\n }\n return properties.join(\" \");\n}\nconst camelizeRE = /-([a-z])/g;\nconst CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9-]+$/;\nconst camelize = (str) => {\n if (CUSTOM_PROPERTY_REGEX.test(str)) return str;\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n};\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = (str) => {\n return str.replace(hyphenateRE, \"-$1\").toLowerCase();\n};\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField(this, \"parentElement\", null);\n __publicField(this, \"parentNode\", null);\n __publicField(this, \"ownerDocument\");\n __publicField(this, \"firstChild\", null);\n __publicField(this, \"lastChild\", null);\n __publicField(this, \"previousSibling\", null);\n __publicField(this, \"nextSibling\", null);\n __publicField(this, \"ELEMENT_NODE\", 1);\n __publicField(this, \"TEXT_NODE\", 3);\n // corresponding nodeType value of standard HTML Node\n __publicField(this, \"nodeType\");\n __publicField(this, \"nodeName\");\n __publicField(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nclass BaseRRDocument extends BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(...args) {\n super(args);\n __publicField(this, \"nodeType\", 9);\n __publicField(this, \"nodeName\", \"#document\");\n __publicField(this, \"compatMode\", \"CSS1Compat\");\n __publicField(this, \"RRNodeType\", NodeType$1.Document);\n __publicField(this, \"textContent\", null);\n this.ownerDocument = this;\n }\n get documentElement() {\n return this.childNodes.find(\n (node2) => node2.RRNodeType === NodeType$1.Element && node2.tagName === \"HTML\"\n ) || null;\n }\n get body() {\n var _a;\n return ((_a = this.documentElement) == null ? void 0 : _a.childNodes.find(\n (node2) => node2.RRNodeType === NodeType$1.Element && node2.tagName === \"BODY\"\n )) || null;\n }\n get head() {\n var _a;\n return ((_a = this.documentElement) == null ? void 0 : _a.childNodes.find(\n (node2) => node2.RRNodeType === NodeType$1.Element && node2.tagName === \"HEAD\"\n )) || null;\n }\n get implementation() {\n return this;\n }\n get firstElementChild() {\n return this.documentElement;\n }\n appendChild(newChild) {\n const nodeType = newChild.RRNodeType;\n if (nodeType === NodeType$1.Element || nodeType === NodeType$1.DocumentType) {\n if (this.childNodes.some((s) => s.RRNodeType === nodeType)) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': Only one ${nodeType === NodeType$1.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n );\n }\n }\n const child = appendChild(this, newChild);\n child.parentElement = null;\n return child;\n }\n insertBefore(newChild, refChild) {\n const nodeType = newChild.RRNodeType;\n if (nodeType === NodeType$1.Element || nodeType === NodeType$1.DocumentType) {\n if (this.childNodes.some((s) => s.RRNodeType === nodeType)) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': Only one ${nodeType === NodeType$1.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n );\n }\n }\n const child = insertBefore(this, newChild, refChild);\n child.parentElement = null;\n return child;\n }\n removeChild(node2) {\n return removeChild(this, node2);\n }\n open() {\n this.firstChild = null;\n this.lastChild = null;\n }\n close() {\n }\n /**\n * Adhoc implementation for setting xhtml namespace in rebuilt.ts (rrweb-snapshot).\n * There are two lines used this function:\n * 1. doc.write('\\')\n * 2. doc.write('\\')\n */\n write(content) {\n let publicId;\n if (content === '')\n publicId = \"-//W3C//DTD XHTML 1.0 Transitional//EN\";\n else if (content === '')\n publicId = \"-//W3C//DTD HTML 4.0 Transitional//EN\";\n if (publicId) {\n const doctype = this.createDocumentType(\"html\", publicId, \"\");\n this.open();\n this.appendChild(doctype);\n }\n }\n createDocument(_namespace, _qualifiedName, _doctype) {\n return new BaseRRDocument();\n }\n createDocumentType(qualifiedName, publicId, systemId) {\n const doctype = new BaseRRDocumentType(qualifiedName, publicId, systemId);\n doctype.ownerDocument = this;\n return doctype;\n }\n createElement(tagName) {\n const element = new BaseRRElement(tagName);\n element.ownerDocument = this;\n return element;\n }\n createElementNS(_namespaceURI, qualifiedName) {\n return this.createElement(qualifiedName);\n }\n createTextNode(data) {\n const text = new BaseRRText(data);\n text.ownerDocument = this;\n return text;\n }\n createComment(data) {\n const comment2 = new BaseRRComment(data);\n comment2.ownerDocument = this;\n return comment2;\n }\n createCDATASection(data) {\n const CDATASection = new BaseRRCDATASection(data);\n CDATASection.ownerDocument = this;\n return CDATASection;\n }\n toString() {\n return \"RRDocument\";\n }\n}\nclass BaseRRDocumentType extends BaseRRNode {\n constructor(qualifiedName, publicId, systemId) {\n super();\n __publicField(this, \"nodeType\", 10);\n __publicField(this, \"RRNodeType\", NodeType$1.DocumentType);\n __publicField(this, \"name\");\n __publicField(this, \"publicId\");\n __publicField(this, \"systemId\");\n __publicField(this, \"textContent\", null);\n this.name = qualifiedName;\n this.publicId = publicId;\n this.systemId = systemId;\n this.nodeName = qualifiedName;\n }\n toString() {\n return \"RRDocumentType\";\n }\n}\nclass BaseRRElement extends BaseRRNode {\n constructor(tagName) {\n super();\n __publicField(this, \"nodeType\", 1);\n __publicField(this, \"RRNodeType\", NodeType$1.Element);\n __publicField(this, \"tagName\");\n __publicField(this, \"attributes\", {});\n __publicField(this, \"shadowRoot\", null);\n __publicField(this, \"scrollLeft\");\n __publicField(this, \"scrollTop\");\n this.tagName = tagName.toUpperCase();\n this.nodeName = tagName.toUpperCase();\n }\n get textContent() {\n let result2 = \"\";\n this.childNodes.forEach((node2) => result2 += node2.textContent);\n return result2;\n }\n set textContent(textContent) {\n this.firstChild = null;\n this.lastChild = null;\n this.appendChild(this.ownerDocument.createTextNode(textContent));\n }\n get classList() {\n return new ClassList(\n this.attributes.class,\n (newClassName) => {\n this.attributes.class = newClassName;\n }\n );\n }\n get id() {\n return this.attributes.id || \"\";\n }\n get className() {\n return this.attributes.class || \"\";\n }\n get style() {\n const style = this.attributes.style ? parseCSSText(this.attributes.style) : {};\n const hyphenateRE2 = /\\B([A-Z])/g;\n style.setProperty = (name, value, priority) => {\n if (hyphenateRE2.test(name)) return;\n const normalizedName = camelize(name);\n if (!value) delete style[normalizedName];\n else style[normalizedName] = value;\n if (priority === \"important\") style[normalizedName] += \" !important\";\n this.attributes.style = toCSSText(style);\n };\n style.removeProperty = (name) => {\n if (hyphenateRE2.test(name)) return \"\";\n const normalizedName = camelize(name);\n const value = style[normalizedName] || \"\";\n delete style[normalizedName];\n this.attributes.style = toCSSText(style);\n return value;\n };\n return style;\n }\n getAttribute(name) {\n if (this.attributes[name] === void 0) return null;\n return this.attributes[name];\n }\n setAttribute(name, attribute) {\n this.attributes[name] = attribute;\n }\n setAttributeNS(_namespace, qualifiedName, value) {\n this.setAttribute(qualifiedName, value);\n }\n removeAttribute(name) {\n delete this.attributes[name];\n }\n appendChild(newChild) {\n return appendChild(this, newChild);\n }\n insertBefore(newChild, refChild) {\n return insertBefore(this, newChild, refChild);\n }\n removeChild(node2) {\n return removeChild(this, node2);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n attachShadow(_init) {\n const shadowRoot = this.ownerDocument.createElement(\"SHADOWROOT\");\n this.shadowRoot = shadowRoot;\n return shadowRoot;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dispatchEvent(_event) {\n return true;\n }\n toString() {\n let attributeString = \"\";\n for (const attribute in this.attributes) {\n attributeString += `${attribute}=\"${this.attributes[attribute]}\" `;\n }\n return `${this.tagName} ${attributeString}`;\n }\n}\nclass BaseRRMediaElement extends BaseRRElement {\n constructor() {\n super(...arguments);\n __publicField(this, \"currentTime\");\n __publicField(this, \"volume\");\n __publicField(this, \"paused\");\n __publicField(this, \"muted\");\n __publicField(this, \"playbackRate\");\n __publicField(this, \"loop\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n attachShadow(_init) {\n throw new Error(\n `RRDomException: Failed to execute 'attachShadow' on 'RRElement': This RRElement does not support attachShadow`\n );\n }\n play() {\n this.paused = false;\n }\n pause() {\n this.paused = true;\n }\n}\nclass BaseRRDialogElement extends BaseRRElement {\n constructor() {\n super(...arguments);\n __publicField(this, \"tagName\", \"DIALOG\");\n __publicField(this, \"nodeName\", \"DIALOG\");\n }\n get isModal() {\n return this.getAttribute(\"rr_open_mode\") === \"modal\";\n }\n get open() {\n return this.getAttribute(\"open\") !== null;\n }\n close() {\n this.removeAttribute(\"open\");\n this.removeAttribute(\"rr_open_mode\");\n }\n show() {\n this.setAttribute(\"open\", \"\");\n this.setAttribute(\"rr_open_mode\", \"non-modal\");\n }\n showModal() {\n this.setAttribute(\"open\", \"\");\n this.setAttribute(\"rr_open_mode\", \"modal\");\n }\n}\nclass BaseRRText extends BaseRRNode {\n constructor(data) {\n super();\n __publicField(this, \"nodeType\", 3);\n __publicField(this, \"nodeName\", \"#text\");\n __publicField(this, \"RRNodeType\", NodeType$1.Text);\n __publicField(this, \"data\");\n this.data = data;\n }\n get textContent() {\n return this.data;\n }\n set textContent(textContent) {\n this.data = textContent;\n }\n toString() {\n return `RRText text=${JSON.stringify(this.data)}`;\n }\n}\nclass BaseRRComment extends BaseRRNode {\n constructor(data) {\n super();\n __publicField(this, \"nodeType\", 8);\n __publicField(this, \"nodeName\", \"#comment\");\n __publicField(this, \"RRNodeType\", NodeType$1.Comment);\n __publicField(this, \"data\");\n this.data = data;\n }\n get textContent() {\n return this.data;\n }\n set textContent(textContent) {\n this.data = textContent;\n }\n toString() {\n return `RRComment text=${JSON.stringify(this.data)}`;\n }\n}\nclass BaseRRCDATASection extends BaseRRNode {\n constructor(data) {\n super();\n __publicField(this, \"nodeName\", \"#cdata-section\");\n __publicField(this, \"nodeType\", 4);\n __publicField(this, \"RRNodeType\", NodeType$1.CDATA);\n __publicField(this, \"data\");\n this.data = data;\n }\n get textContent() {\n return this.data;\n }\n set textContent(textContent) {\n this.data = textContent;\n }\n toString() {\n return `RRCDATASection data=${JSON.stringify(this.data)}`;\n }\n}\nclass ClassList {\n constructor(classText, onChange) {\n __publicField(this, \"onChange\");\n __publicField(this, \"classes\", []);\n __publicField(this, \"add\", (...classNames) => {\n for (const item of classNames) {\n const className = String(item);\n if (this.classes.indexOf(className) >= 0) continue;\n this.classes.push(className);\n }\n this.onChange && this.onChange(this.classes.join(\" \"));\n });\n __publicField(this, \"remove\", (...classNames) => {\n this.classes = this.classes.filter(\n (item) => classNames.indexOf(item) === -1\n );\n this.onChange && this.onChange(this.classes.join(\" \"));\n });\n if (classText) {\n const classes = classText.trim().split(/\\s+/);\n this.classes.push(...classes);\n }\n this.onChange = onChange;\n }\n}\nfunction appendChild(parent, newChild) {\n if (newChild.parentNode) newChild.parentNode.removeChild(newChild);\n if (parent.lastChild) {\n parent.lastChild.nextSibling = newChild;\n newChild.previousSibling = parent.lastChild;\n } else {\n parent.firstChild = newChild;\n newChild.previousSibling = null;\n }\n parent.lastChild = newChild;\n newChild.nextSibling = null;\n newChild.parentNode = parent;\n newChild.parentElement = parent;\n newChild.ownerDocument = parent.ownerDocument;\n return newChild;\n}\nfunction insertBefore(parent, newChild, refChild) {\n if (!refChild) return appendChild(parent, newChild);\n if (refChild.parentNode !== parent)\n throw new Error(\n \"Failed to execute 'insertBefore' on 'RRNode': The RRNode before which the new node is to be inserted is not a child of this RRNode.\"\n );\n if (newChild === refChild) return newChild;\n if (newChild.parentNode) newChild.parentNode.removeChild(newChild);\n newChild.previousSibling = refChild.previousSibling;\n refChild.previousSibling = newChild;\n newChild.nextSibling = refChild;\n if (newChild.previousSibling) newChild.previousSibling.nextSibling = newChild;\n else parent.firstChild = newChild;\n newChild.parentElement = parent;\n newChild.parentNode = parent;\n newChild.ownerDocument = parent.ownerDocument;\n return newChild;\n}\nfunction removeChild(parent, child) {\n if (child.parentNode !== parent)\n throw new Error(\n \"Failed to execute 'removeChild' on 'RRNode': The RRNode to be removed is not a child of this RRNode.\"\n );\n if (child.previousSibling)\n child.previousSibling.nextSibling = child.nextSibling;\n else parent.firstChild = child.nextSibling;\n if (child.nextSibling)\n child.nextSibling.previousSibling = child.previousSibling;\n else parent.lastChild = child.previousSibling;\n child.previousSibling = null;\n child.nextSibling = null;\n child.parentElement = null;\n child.parentNode = null;\n return child;\n}\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"PLACEHOLDER\"] = 0] = \"PLACEHOLDER\";\n NodeType2[NodeType2[\"ELEMENT_NODE\"] = 1] = \"ELEMENT_NODE\";\n NodeType2[NodeType2[\"ATTRIBUTE_NODE\"] = 2] = \"ATTRIBUTE_NODE\";\n NodeType2[NodeType2[\"TEXT_NODE\"] = 3] = \"TEXT_NODE\";\n NodeType2[NodeType2[\"CDATA_SECTION_NODE\"] = 4] = \"CDATA_SECTION_NODE\";\n NodeType2[NodeType2[\"ENTITY_REFERENCE_NODE\"] = 5] = \"ENTITY_REFERENCE_NODE\";\n NodeType2[NodeType2[\"ENTITY_NODE\"] = 6] = \"ENTITY_NODE\";\n NodeType2[NodeType2[\"PROCESSING_INSTRUCTION_NODE\"] = 7] = \"PROCESSING_INSTRUCTION_NODE\";\n NodeType2[NodeType2[\"COMMENT_NODE\"] = 8] = \"COMMENT_NODE\";\n NodeType2[NodeType2[\"DOCUMENT_NODE\"] = 9] = \"DOCUMENT_NODE\";\n NodeType2[NodeType2[\"DOCUMENT_TYPE_NODE\"] = 10] = \"DOCUMENT_TYPE_NODE\";\n NodeType2[NodeType2[\"DOCUMENT_FRAGMENT_NODE\"] = 11] = \"DOCUMENT_FRAGMENT_NODE\";\n return NodeType2;\n})(NodeType || {});\nconst NAMESPACES = {\n svg: \"http://www.w3.org/2000/svg\",\n \"xlink:href\": \"http://www.w3.org/1999/xlink\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\nconst SVGTagMap = {\n altglyph: \"altGlyph\",\n altglyphdef: \"altGlyphDef\",\n altglyphitem: \"altGlyphItem\",\n animatecolor: \"animateColor\",\n animatemotion: \"animateMotion\",\n animatetransform: \"animateTransform\",\n clippath: \"clipPath\",\n feblend: \"feBlend\",\n fecolormatrix: \"feColorMatrix\",\n fecomponenttransfer: \"feComponentTransfer\",\n fecomposite: \"feComposite\",\n feconvolvematrix: \"feConvolveMatrix\",\n fediffuselighting: \"feDiffuseLighting\",\n fedisplacementmap: \"feDisplacementMap\",\n fedistantlight: \"feDistantLight\",\n fedropshadow: \"feDropShadow\",\n feflood: \"feFlood\",\n fefunca: \"feFuncA\",\n fefuncb: \"feFuncB\",\n fefuncg: \"feFuncG\",\n fefuncr: \"feFuncR\",\n fegaussianblur: \"feGaussianBlur\",\n feimage: \"feImage\",\n femerge: \"feMerge\",\n femergenode: \"feMergeNode\",\n femorphology: \"feMorphology\",\n feoffset: \"feOffset\",\n fepointlight: \"fePointLight\",\n fespecularlighting: \"feSpecularLighting\",\n fespotlight: \"feSpotLight\",\n fetile: \"feTile\",\n feturbulence: \"feTurbulence\",\n foreignobject: \"foreignObject\",\n glyphref: \"glyphRef\",\n lineargradient: \"linearGradient\",\n radialgradient: \"radialGradient\"\n};\nlet createdNodeSet = null;\nfunction diff(oldTree, newTree, replayer, rrnodeMirror = newTree.mirror || newTree.ownerDocument.mirror) {\n oldTree = diffBeforeUpdatingChildren(\n oldTree,\n newTree,\n replayer,\n rrnodeMirror\n );\n diffChildren(oldTree, newTree, replayer, rrnodeMirror);\n diffAfterUpdatingChildren(oldTree, newTree, replayer);\n}\nfunction diffBeforeUpdatingChildren(oldTree, newTree, replayer, rrnodeMirror) {\n var _a;\n if (replayer.afterAppend && !createdNodeSet) {\n createdNodeSet = /* @__PURE__ */ new WeakSet();\n setTimeout(() => {\n createdNodeSet = null;\n }, 0);\n }\n if (!sameNodeType(oldTree, newTree)) {\n const calibratedOldTree = createOrGetNode(\n newTree,\n replayer.mirror,\n rrnodeMirror\n );\n (_a = oldTree.parentNode) == null ? void 0 : _a.replaceChild(calibratedOldTree, oldTree);\n oldTree = calibratedOldTree;\n }\n switch (newTree.RRNodeType) {\n case NodeType$1.Document: {\n if (!nodeMatching(oldTree, newTree, replayer.mirror, rrnodeMirror)) {\n const newMeta = rrnodeMirror.getMeta(newTree);\n if (newMeta) {\n replayer.mirror.removeNodeFromMap(oldTree);\n oldTree.close();\n oldTree.open();\n replayer.mirror.add(oldTree, newMeta);\n createdNodeSet == null ? void 0 : createdNodeSet.add(oldTree);\n }\n }\n break;\n }\n case NodeType$1.Element: {\n const oldElement = oldTree;\n const newRRElement = newTree;\n switch (newRRElement.tagName) {\n case \"IFRAME\": {\n const oldContentDocument = oldTree.contentDocument;\n if (!oldContentDocument) break;\n diff(\n oldContentDocument,\n newTree.contentDocument,\n replayer,\n rrnodeMirror\n );\n break;\n }\n }\n if (newRRElement.shadowRoot) {\n if (!oldElement.shadowRoot) oldElement.attachShadow({ mode: \"open\" });\n diffChildren(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n oldElement.shadowRoot,\n newRRElement.shadowRoot,\n replayer,\n rrnodeMirror\n );\n }\n diffProps(oldElement, newRRElement, rrnodeMirror);\n break;\n }\n }\n return oldTree;\n}\nfunction diffAfterUpdatingChildren(oldTree, newTree, replayer) {\n var _a;\n switch (newTree.RRNodeType) {\n case NodeType$1.Document: {\n const scrollData = newTree.scrollData;\n scrollData && replayer.applyScroll(scrollData, true);\n break;\n }\n case NodeType$1.Element: {\n const oldElement = oldTree;\n const newRRElement = newTree;\n newRRElement.scrollData && replayer.applyScroll(newRRElement.scrollData, true);\n newRRElement.inputData && replayer.applyInput(newRRElement.inputData);\n switch (newRRElement.tagName) {\n case \"AUDIO\":\n case \"VIDEO\": {\n const oldMediaElement = oldTree;\n const newMediaRRElement = newRRElement;\n if (newMediaRRElement.paused !== void 0)\n newMediaRRElement.paused ? void oldMediaElement.pause() : void oldMediaElement.play();\n if (newMediaRRElement.muted !== void 0)\n oldMediaElement.muted = newMediaRRElement.muted;\n if (newMediaRRElement.volume !== void 0)\n oldMediaElement.volume = newMediaRRElement.volume;\n if (newMediaRRElement.currentTime !== void 0)\n oldMediaElement.currentTime = newMediaRRElement.currentTime;\n if (newMediaRRElement.playbackRate !== void 0)\n oldMediaElement.playbackRate = newMediaRRElement.playbackRate;\n if (newMediaRRElement.loop !== void 0)\n oldMediaElement.loop = newMediaRRElement.loop;\n break;\n }\n case \"CANVAS\": {\n const rrCanvasElement = newTree;\n if (rrCanvasElement.rr_dataURL !== null) {\n const image = document.createElement(\"img\");\n image.onload = () => {\n const ctx = oldElement.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(image, 0, 0, image.width, image.height);\n }\n };\n image.src = rrCanvasElement.rr_dataURL;\n }\n rrCanvasElement.canvasMutations.forEach(\n (canvasMutation) => replayer.applyCanvas(\n canvasMutation.event,\n canvasMutation.mutation,\n oldTree\n )\n );\n break;\n }\n case \"STYLE\": {\n const styleSheet = oldElement.sheet;\n styleSheet && newTree.rules.forEach(\n (data) => replayer.applyStyleSheetMutation(data, styleSheet)\n );\n break;\n }\n case \"DIALOG\": {\n const dialog = oldElement;\n const rrDialog = newRRElement;\n const wasOpen = dialog.open;\n const wasModal = dialog.matches(\"dialog:modal\");\n const shouldBeOpen = rrDialog.open;\n const shouldBeModal = rrDialog.isModal;\n const modalChanged = wasModal !== shouldBeModal;\n const openChanged = wasOpen !== shouldBeOpen;\n if (modalChanged || wasOpen && openChanged) dialog.close();\n if (shouldBeOpen && (openChanged || modalChanged)) {\n try {\n if (shouldBeModal) dialog.showModal();\n else dialog.show();\n } catch (e) {\n console.warn(e);\n }\n }\n break;\n }\n }\n break;\n }\n case NodeType$1.Text:\n case NodeType$1.Comment:\n case NodeType$1.CDATA: {\n if (oldTree.textContent !== newTree.data)\n oldTree.textContent = newTree.data;\n break;\n }\n }\n if (createdNodeSet == null ? void 0 : createdNodeSet.has(oldTree)) {\n createdNodeSet.delete(oldTree);\n (_a = replayer.afterAppend) == null ? void 0 : _a.call(replayer, oldTree, replayer.mirror.getId(oldTree));\n }\n}\nfunction diffProps(oldTree, newTree, rrnodeMirror) {\n const oldAttributes = oldTree.attributes;\n const newAttributes = newTree.attributes;\n for (const name in newAttributes) {\n const newValue = newAttributes[name];\n const sn = rrnodeMirror.getMeta(newTree);\n if ((sn == null ? void 0 : sn.isSVG) && NAMESPACES[name])\n oldTree.setAttributeNS(NAMESPACES[name], name, newValue);\n else if (newTree.tagName === \"CANVAS\" && name === \"rr_dataURL\") {\n const image = document.createElement(\"img\");\n image.src = newValue;\n image.onload = () => {\n const ctx = oldTree.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(image, 0, 0, image.width, image.height);\n }\n };\n } else if (newTree.tagName === \"IFRAME\" && name === \"srcdoc\") continue;\n else oldTree.setAttribute(name, newValue);\n }\n for (const { name } of Array.from(oldAttributes))\n if (!(name in newAttributes)) oldTree.removeAttribute(name);\n newTree.scrollLeft && (oldTree.scrollLeft = newTree.scrollLeft);\n newTree.scrollTop && (oldTree.scrollTop = newTree.scrollTop);\n}\nfunction diffChildren(oldTree, newTree, replayer, rrnodeMirror) {\n const oldChildren = Array.from(oldTree.childNodes);\n const newChildren = newTree.childNodes;\n if (oldChildren.length === 0 && newChildren.length === 0) return;\n let oldStartIndex = 0, oldEndIndex = oldChildren.length - 1, newStartIndex = 0, newEndIndex = newChildren.length - 1;\n let oldStartNode = oldChildren[oldStartIndex], oldEndNode = oldChildren[oldEndIndex], newStartNode = newChildren[newStartIndex], newEndNode = newChildren[newEndIndex];\n let oldIdToIndex = void 0, indexInOld = void 0;\n while (oldStartIndex <= oldEndIndex && newStartIndex <= newEndIndex) {\n if (oldStartNode === void 0) {\n oldStartNode = oldChildren[++oldStartIndex];\n } else if (oldEndNode === void 0) {\n oldEndNode = oldChildren[--oldEndIndex];\n } else if (\n // same first node?\n nodeMatching(oldStartNode, newStartNode, replayer.mirror, rrnodeMirror)\n ) {\n oldStartNode = oldChildren[++oldStartIndex];\n newStartNode = newChildren[++newStartIndex];\n } else if (\n // same last node?\n nodeMatching(oldEndNode, newEndNode, replayer.mirror, rrnodeMirror)\n ) {\n oldEndNode = oldChildren[--oldEndIndex];\n newEndNode = newChildren[--newEndIndex];\n } else if (\n // is the first old node the same as the last new node?\n nodeMatching(oldStartNode, newEndNode, replayer.mirror, rrnodeMirror)\n ) {\n try {\n oldTree.insertBefore(oldStartNode, oldEndNode.nextSibling);\n } catch (e) {\n console.warn(e);\n }\n oldStartNode = oldChildren[++oldStartIndex];\n newEndNode = newChildren[--newEndIndex];\n } else if (\n // is the last old node the same as the first new node?\n nodeMatching(oldEndNode, newStartNode, replayer.mirror, rrnodeMirror)\n ) {\n try {\n oldTree.insertBefore(oldEndNode, oldStartNode);\n } catch (e) {\n console.warn(e);\n }\n oldEndNode = oldChildren[--oldEndIndex];\n newStartNode = newChildren[++newStartIndex];\n } else {\n if (!oldIdToIndex) {\n oldIdToIndex = {};\n for (let i = oldStartIndex; i <= oldEndIndex; i++) {\n const oldChild2 = oldChildren[i];\n if (oldChild2 && replayer.mirror.hasNode(oldChild2))\n oldIdToIndex[replayer.mirror.getId(oldChild2)] = i;\n }\n }\n indexInOld = oldIdToIndex[rrnodeMirror.getId(newStartNode)];\n const nodeToMove = oldChildren[indexInOld];\n if (indexInOld !== void 0 && nodeToMove && nodeMatching(nodeToMove, newStartNode, replayer.mirror, rrnodeMirror)) {\n try {\n oldTree.insertBefore(nodeToMove, oldStartNode);\n } catch (e) {\n console.warn(e);\n }\n oldChildren[indexInOld] = void 0;\n } else {\n const newNode = createOrGetNode(\n newStartNode,\n replayer.mirror,\n rrnodeMirror\n );\n if (oldTree.nodeName === \"#document\" && oldStartNode && /**\n * Special case 1: one document isn't allowed to have two doctype nodes at the same time, so we need to remove the old one first before inserting the new one.\n * How this case happens: A parent document in the old tree already has a doctype node with an id e.g. #1. A new full snapshot rebuilds the replayer with a new doctype node with another id #2. According to the algorithm, the new doctype node will be inserted before the old one, which is not allowed by the Document standard.\n */\n (newNode.nodeType === newNode.DOCUMENT_TYPE_NODE && oldStartNode.nodeType === oldStartNode.DOCUMENT_TYPE_NODE || /**\n * Special case 2: one document isn't allowed to have two HTMLElements at the same time, so we need to remove the old one first before inserting the new one.\n * How this case happens: A mounted iframe element has an automatically created HTML element. We should delete it before inserting a serialized one. Otherwise, an error 'Only one element on document allowed' will be thrown.\n */\n newNode.nodeType === newNode.ELEMENT_NODE && oldStartNode.nodeType === oldStartNode.ELEMENT_NODE)) {\n oldTree.removeChild(oldStartNode);\n replayer.mirror.removeNodeFromMap(oldStartNode);\n oldStartNode = oldChildren[++oldStartIndex];\n }\n try {\n oldTree.insertBefore(newNode, oldStartNode || null);\n } catch (e) {\n console.warn(e);\n }\n }\n newStartNode = newChildren[++newStartIndex];\n }\n }\n if (oldStartIndex > oldEndIndex) {\n const referenceRRNode = newChildren[newEndIndex + 1];\n let referenceNode = null;\n if (referenceRRNode)\n referenceNode = replayer.mirror.getNode(\n rrnodeMirror.getId(referenceRRNode)\n );\n for (; newStartIndex <= newEndIndex; ++newStartIndex) {\n const newNode = createOrGetNode(\n newChildren[newStartIndex],\n replayer.mirror,\n rrnodeMirror\n );\n try {\n oldTree.insertBefore(newNode, referenceNode);\n } catch (e) {\n console.warn(e);\n }\n }\n } else if (newStartIndex > newEndIndex) {\n for (; oldStartIndex <= oldEndIndex; oldStartIndex++) {\n const node2 = oldChildren[oldStartIndex];\n if (!node2 || node2.parentNode !== oldTree) continue;\n try {\n oldTree.removeChild(node2);\n replayer.mirror.removeNodeFromMap(node2);\n } catch (e) {\n console.warn(e);\n }\n }\n }\n let oldChild = oldTree.firstChild;\n let newChild = newTree.firstChild;\n while (oldChild !== null && newChild !== null) {\n diff(oldChild, newChild, replayer, rrnodeMirror);\n oldChild = oldChild.nextSibling;\n newChild = newChild.nextSibling;\n }\n}\nfunction createOrGetNode(rrNode, domMirror, rrnodeMirror) {\n const nodeId = rrnodeMirror.getId(rrNode);\n const sn = rrnodeMirror.getMeta(rrNode);\n let node2 = null;\n if (nodeId > -1) node2 = domMirror.getNode(nodeId);\n if (node2 !== null && sameNodeType(node2, rrNode)) return node2;\n switch (rrNode.RRNodeType) {\n case NodeType$1.Document:\n node2 = new Document();\n break;\n case NodeType$1.DocumentType:\n node2 = document.implementation.createDocumentType(\n rrNode.name,\n rrNode.publicId,\n rrNode.systemId\n );\n break;\n case NodeType$1.Element: {\n let tagName = rrNode.tagName.toLowerCase();\n tagName = SVGTagMap[tagName] || tagName;\n if (sn && \"isSVG\" in sn && (sn == null ? void 0 : sn.isSVG)) {\n node2 = document.createElementNS(NAMESPACES[\"svg\"], tagName);\n } else node2 = document.createElement(rrNode.tagName);\n break;\n }\n case NodeType$1.Text:\n node2 = document.createTextNode(rrNode.data);\n break;\n case NodeType$1.Comment:\n node2 = document.createComment(rrNode.data);\n break;\n case NodeType$1.CDATA:\n node2 = document.createCDATASection(rrNode.data);\n break;\n }\n if (sn) domMirror.add(node2, { ...sn });\n try {\n createdNodeSet == null ? void 0 : createdNodeSet.add(node2);\n } catch (e) {\n }\n return node2;\n}\nfunction sameNodeType(node1, node2) {\n if (node1.nodeType !== node2.nodeType) return false;\n return node1.nodeType !== node1.ELEMENT_NODE || node1.tagName.toUpperCase() === node2.tagName;\n}\nfunction nodeMatching(node1, node2, domMirror, rrdomMirror) {\n const node1Id = domMirror.getId(node1);\n const node2Id = rrdomMirror.getId(node2);\n if (node1Id === -1 || node1Id !== node2Id) return false;\n return sameNodeType(node1, node2);\n}\nclass RRDocument extends BaseRRDocument {\n constructor(mirror) {\n super();\n __publicField(this, \"UNSERIALIZED_STARTING_ID\", -2);\n // In the rrweb replayer, there are some unserialized nodes like the element that stores the injected style rules.\n // These unserialized nodes may interfere the execution of the diff algorithm.\n // The id of serialized node is larger than 0. So this value less than 0 is used as id for these unserialized nodes.\n __publicField(this, \"_unserializedId\", this.UNSERIALIZED_STARTING_ID);\n __publicField(this, \"mirror\", createMirror());\n __publicField(this, \"scrollData\", null);\n if (mirror) {\n this.mirror = mirror;\n }\n }\n /**\n * Every time the id is used, it will minus 1 automatically to avoid collisions.\n */\n get unserializedId() {\n return this._unserializedId--;\n }\n createDocument(_namespace, _qualifiedName, _doctype) {\n return new RRDocument();\n }\n createDocumentType(qualifiedName, publicId, systemId) {\n const documentTypeNode = new RRDocumentType(\n qualifiedName,\n publicId,\n systemId\n );\n documentTypeNode.ownerDocument = this;\n return documentTypeNode;\n }\n createElement(tagName) {\n const upperTagName = tagName.toUpperCase();\n let element;\n switch (upperTagName) {\n case \"AUDIO\":\n case \"VIDEO\":\n element = new RRMediaElement(upperTagName);\n break;\n case \"IFRAME\":\n element = new RRIFrameElement(upperTagName, this.mirror);\n break;\n case \"CANVAS\":\n element = new RRCanvasElement(upperTagName);\n break;\n case \"STYLE\":\n element = new RRStyleElement(upperTagName);\n break;\n case \"DIALOG\":\n element = new RRDialogElement(upperTagName);\n break;\n default:\n element = new RRElement(upperTagName);\n break;\n }\n element.ownerDocument = this;\n return element;\n }\n createComment(data) {\n const commentNode = new RRComment(data);\n commentNode.ownerDocument = this;\n return commentNode;\n }\n createCDATASection(data) {\n const sectionNode = new RRCDATASection(data);\n sectionNode.ownerDocument = this;\n return sectionNode;\n }\n createTextNode(data) {\n const textNode = new RRText(data);\n textNode.ownerDocument = this;\n return textNode;\n }\n destroyTree() {\n this.firstChild = null;\n this.lastChild = null;\n this.mirror.reset();\n }\n open() {\n super.open();\n this._unserializedId = this.UNSERIALIZED_STARTING_ID;\n }\n}\nconst RRDocumentType = BaseRRDocumentType;\nclass RRElement extends BaseRRElement {\n constructor() {\n super(...arguments);\n __publicField(this, \"inputData\", null);\n __publicField(this, \"scrollData\", null);\n }\n}\nclass RRMediaElement extends BaseRRMediaElement {\n}\nclass RRDialogElement extends BaseRRDialogElement {\n}\nclass RRCanvasElement extends RRElement {\n constructor() {\n super(...arguments);\n __publicField(this, \"rr_dataURL\", null);\n __publicField(this, \"canvasMutations\", []);\n }\n /**\n * This is a dummy implementation to distinguish RRCanvasElement from real HTMLCanvasElement.\n */\n getContext() {\n return null;\n }\n}\nclass RRStyleElement extends RRElement {\n constructor() {\n super(...arguments);\n __publicField(this, \"rules\", []);\n }\n}\nclass RRIFrameElement extends RRElement {\n constructor(upperTagName, mirror) {\n super(upperTagName);\n __publicField(this, \"contentDocument\", new RRDocument());\n this.contentDocument.mirror = mirror;\n }\n}\nconst RRText = BaseRRText;\nconst RRComment = BaseRRComment;\nconst RRCDATASection = BaseRRCDATASection;\nfunction getValidTagName(element) {\n if (element instanceof HTMLFormElement) {\n return \"FORM\";\n }\n return element.tagName.toUpperCase();\n}\nfunction buildFromNode(node2, rrdom, domMirror, parentRRNode) {\n let rrNode;\n switch (node2.nodeType) {\n case NodeType.DOCUMENT_NODE:\n if (parentRRNode && parentRRNode.nodeName === \"IFRAME\")\n rrNode = parentRRNode.contentDocument;\n else {\n rrNode = rrdom;\n rrNode.compatMode = node2.compatMode;\n }\n break;\n case NodeType.DOCUMENT_TYPE_NODE: {\n const documentType = node2;\n rrNode = rrdom.createDocumentType(\n documentType.name,\n documentType.publicId,\n documentType.systemId\n );\n break;\n }\n case NodeType.ELEMENT_NODE: {\n const elementNode = node2;\n const tagName = getValidTagName(elementNode);\n rrNode = rrdom.createElement(tagName);\n const rrElement = rrNode;\n for (const { name, value } of Array.from(elementNode.attributes)) {\n rrElement.attributes[name] = value;\n }\n elementNode.scrollLeft && (rrElement.scrollLeft = elementNode.scrollLeft);\n elementNode.scrollTop && (rrElement.scrollTop = elementNode.scrollTop);\n break;\n }\n case NodeType.TEXT_NODE:\n rrNode = rrdom.createTextNode(node2.textContent || \"\");\n break;\n case NodeType.CDATA_SECTION_NODE:\n rrNode = rrdom.createCDATASection(node2.data);\n break;\n case NodeType.COMMENT_NODE:\n rrNode = rrdom.createComment(node2.textContent || \"\");\n break;\n case NodeType.DOCUMENT_FRAGMENT_NODE:\n rrNode = parentRRNode.attachShadow({ mode: \"open\" });\n break;\n default:\n return null;\n }\n let sn = domMirror.getMeta(node2);\n if (rrdom instanceof RRDocument) {\n if (!sn) {\n sn = getDefaultSN(rrNode, rrdom.unserializedId);\n domMirror.add(node2, sn);\n }\n rrdom.mirror.add(rrNode, { ...sn });\n }\n return rrNode;\n}\nfunction buildFromDom(dom, domMirror = createMirror$1(), rrdom = new RRDocument()) {\n function walk2(node2, parentRRNode) {\n const rrNode = buildFromNode(node2, rrdom, domMirror, parentRRNode);\n if (rrNode === null) return;\n if (\n // if the parentRRNode isn't a RRIFrameElement\n (parentRRNode == null ? void 0 : parentRRNode.nodeName) !== \"IFRAME\" && // if node isn't a shadow root\n node2.nodeType !== NodeType.DOCUMENT_FRAGMENT_NODE\n ) {\n parentRRNode == null ? void 0 : parentRRNode.appendChild(rrNode);\n rrNode.parentNode = parentRRNode;\n rrNode.parentElement = parentRRNode;\n }\n if (node2.nodeName === \"IFRAME\") {\n const iframeDoc = node2.contentDocument;\n iframeDoc && walk2(iframeDoc, rrNode);\n } else if (node2.nodeType === NodeType.DOCUMENT_NODE || node2.nodeType === NodeType.ELEMENT_NODE || node2.nodeType === NodeType.DOCUMENT_FRAGMENT_NODE) {\n if (node2.nodeType === NodeType.ELEMENT_NODE && node2.shadowRoot)\n walk2(node2.shadowRoot, rrNode);\n node2.childNodes.forEach((childNode) => walk2(childNode, rrNode));\n }\n }\n walk2(dom, null);\n return rrdom;\n}\nfunction createMirror() {\n return new Mirror2();\n}\nclass Mirror2 {\n constructor() {\n __publicField(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n) {\n var _a;\n if (!n) return -1;\n const id = (_a = this.getMeta(n)) == null ? void 0 : _a.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n) {\n return this.nodeMetaMap.get(n) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n) {\n const id = this.getId(n);\n this.idNodeMap.delete(id);\n if (n.childNodes) {\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n);\n this.nodeMetaMap.set(n, meta);\n }\n replace(id, n) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n, meta);\n }\n this.idNodeMap.set(id, n);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction getDefaultSN(node2, id) {\n switch (node2.RRNodeType) {\n case NodeType$1.Document:\n return {\n id,\n type: node2.RRNodeType,\n childNodes: []\n };\n case NodeType$1.DocumentType: {\n const doctype = node2;\n return {\n id,\n type: node2.RRNodeType,\n name: doctype.name,\n publicId: doctype.publicId,\n systemId: doctype.systemId\n };\n }\n case NodeType$1.Element:\n return {\n id,\n type: node2.RRNodeType,\n tagName: node2.tagName.toLowerCase(),\n // In rrweb data, all tagNames are lowercase.\n attributes: {},\n childNodes: []\n };\n case NodeType$1.Text:\n return {\n id,\n type: node2.RRNodeType,\n textContent: node2.textContent || \"\"\n };\n case NodeType$1.Comment:\n return {\n id,\n type: node2.RRNodeType,\n textContent: node2.textContent || \"\"\n };\n case NodeType$1.CDATA:\n return {\n id,\n type: node2.RRNodeType,\n textContent: \"\"\n };\n }\n}\nfunction printRRDom(rootNode, mirror) {\n return walk(rootNode, mirror, \"\");\n}\nfunction walk(node2, mirror, blankSpace) {\n let printText = `${blankSpace}${mirror.getId(node2)} ${node2.toString()}\n`;\n if (node2.RRNodeType === NodeType$1.Element) {\n const element = node2;\n if (element.shadowRoot)\n printText += walk(element.shadowRoot, mirror, blankSpace + \" \");\n }\n for (const child of node2.childNodes)\n printText += walk(child, mirror, blankSpace + \" \");\n if (node2.nodeName === \"IFRAME\")\n printText += walk(\n node2.contentDocument,\n mirror,\n blankSpace + \" \"\n );\n return printText;\n}\nexport {\n BaseRRCDATASection,\n BaseRRComment,\n BaseRRDialogElement,\n BaseRRDocument,\n BaseRRDocumentType,\n BaseRRElement,\n BaseRRMediaElement,\n BaseRRNode,\n BaseRRText,\n ClassList,\n Mirror2 as Mirror,\n NodeType,\n RRCDATASection,\n RRCanvasElement,\n RRComment,\n RRDialogElement,\n RRDocument,\n RRDocumentType,\n RRElement,\n RRIFrameElement,\n RRMediaElement,\n BaseRRNode as RRNode,\n RRStyleElement,\n RRText,\n buildFromDom,\n buildFromNode,\n createMirror,\n createOrGetNode,\n diff,\n getDefaultSN,\n printRRDom\n};\n//# sourceMappingURL=rrdom.js.map\n","const testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a, _b;\n return Boolean(\n (_b = (_a = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a;\n return typeof defaultPrototype[method] === \"function\" && ((_a = defaultPrototype[method]) == null ? void 0 : _a.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n) {\n return getUntaintedAccessor(\"Node\", n, \"childNodes\");\n}\nfunction parentNode(n) {\n return getUntaintedAccessor(\"Node\", n, \"parentNode\");\n}\nfunction parentElement(n) {\n return getUntaintedAccessor(\"Node\", n, \"parentElement\");\n}\nfunction textContent(n) {\n return getUntaintedAccessor(\"Node\", n, \"textContent\");\n}\nfunction contains(n, other) {\n return getUntaintedMethod(\"Node\", n, \"contains\")(other);\n}\nfunction getRootNode(n) {\n return getUntaintedMethod(\"Node\", n, \"getRootNode\")();\n}\nfunction host(n) {\n if (!n || !(\"host\" in n)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n, \"host\");\n}\nfunction styleSheets(n) {\n return n.styleSheets;\n}\nfunction shadowRoot(n) {\n if (!n || !(\"shadowRoot\" in n)) return null;\n return getUntaintedAccessor(\"Element\", n, \"shadowRoot\");\n}\nfunction querySelector(n, selectors) {\n return getUntaintedAccessor(\"Element\", n, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n, selectors) {\n return getUntaintedAccessor(\"Element\", n, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nexport {\n childNodes,\n contains,\n index as default,\n getRootNode,\n getUntaintedAccessor,\n getUntaintedMethod,\n getUntaintedPrototype,\n host,\n mutationObserverCtor,\n parentElement,\n parentNode,\n querySelector,\n querySelectorAll,\n shadowRoot,\n styleSheets,\n textContent\n};\n//# sourceMappingURL=rrweb-utils.js.map\n","import { RRNode, RRIFrameElement, BaseRRNode } from '@amplitude/rrdom';\nimport type {\n IMirror,\n Mirror,\n SlimDOMOptions,\n} from '@amplitude/rrweb-snapshot';\nimport {\n IGNORED_NODE,\n classMatchesRegex,\n isShadowRoot,\n} from '@amplitude/rrweb-snapshot';\nimport type {\n DeprecatedMirror,\n DocumentDimension,\n IWindow,\n addedNodeMutation,\n blockClass,\n hookResetter,\n listenerHandler,\n textMutation,\n throttleOptions,\n} from '@amplitude/rrweb-types';\nimport dom from '@amplitude/rrweb-utils';\n\nexport function on(\n type: string,\n fn: EventListenerOrEventListenerObject,\n target: Document | IWindow = document,\n): listenerHandler {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\n\n// https://github.com/rrweb-io/rrweb/pull/407\nconst DEPARTED_MIRROR_ACCESS_WARNING =\n 'Please stop import mirror directly. Instead of that,' +\n '\\r\\n' +\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n '\\r\\n' +\n 'or you can use record.mirror to access the mirror instance during recording.';\n/** @deprecated */\nexport let _mirror: DeprecatedMirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === 'map') {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return Reflect.get(target, prop, receiver);\n },\n });\n}\n\n// copy from underscore and modified\nexport function throttle(\n func: (arg: T) => void,\n wait: number,\n options: throttleOptions = {},\n) {\n let timeout: ReturnType | null = null;\n let previous = 0;\n return function (...args: T[]) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-this-alias\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\n\nexport function hookSetter(\n target: T,\n key: string | number | symbol,\n d: PropertyDescriptor,\n isRevoked?: boolean,\n win = window,\n): hookResetter {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked\n ? d\n : {\n set(value) {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(() => {\n d.set!.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n },\n },\n );\n return () => hookSetter(target, key, original || {}, true);\n}\n\n// copy from https://github.com/getsentry/sentry-javascript/blob/b2109071975af8bf0316d3b5b38f519bdaf5dc15/packages/utils/src/object.ts\nexport function patch(\n source: { [key: string]: any },\n name: string,\n replacement: (...args: unknown[]) => unknown,\n): () => void {\n try {\n if (!(name in source)) {\n return () => {\n //\n };\n }\n\n const original = source[name] as () => unknown;\n const wrapped = replacement(original);\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original,\n },\n });\n }\n\n source[name] = wrapped;\n\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n //\n };\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n}\n\n// guard against old third party libraries which redefine Date.now\nlet nowTimestamp = Date.now;\n\nif (!(/*@__PURE__*/ /[1-9][0-9]{12}/.test(Date.now().toString()))) {\n // they have already redefined it! use a fallback\n nowTimestamp = () => new Date().getTime();\n}\nexport { nowTimestamp };\n\nexport function getWindowScroll(win: Window) {\n const doc = win.document;\n return {\n left: doc.scrollingElement\n ? doc.scrollingElement.scrollLeft\n : win.pageXOffset !== undefined\n ? win.pageXOffset\n : doc.documentElement.scrollLeft ||\n (doc?.body && dom.parentElement(doc.body)?.scrollLeft) ||\n doc?.body?.scrollLeft ||\n 0,\n top: doc.scrollingElement\n ? doc.scrollingElement.scrollTop\n : win.pageYOffset !== undefined\n ? win.pageYOffset\n : doc?.documentElement.scrollTop ||\n (doc?.body && dom.parentElement(doc.body)?.scrollTop) ||\n doc?.body?.scrollTop ||\n 0,\n };\n}\n\nexport function getWindowHeight(): number {\n return (\n window.innerHeight ||\n (document.documentElement && document.documentElement.clientHeight) ||\n (document.body && document.body.clientHeight)\n );\n}\n\nexport function getWindowWidth(): number {\n return (\n window.innerWidth ||\n (document.documentElement && document.documentElement.clientWidth) ||\n (document.body && document.body.clientWidth)\n );\n}\n\n/**\n * Returns the given node as an HTMLElement if it is one, otherwise the parent node as an HTMLElement\n * @param node - node to check\n * @returns HTMLElement or null\n */\n\nexport function closestElementOfNode(node: Node | null): HTMLElement | null {\n if (!node) {\n return null;\n }\n const el: HTMLElement | null =\n node.nodeType === node.ELEMENT_NODE\n ? (node as HTMLElement)\n : dom.parentElement(node);\n return el;\n}\n\n/**\n * Checks if the given element set to be blocked by rrweb\n * @param node - node to check\n * @param blockClass - class name to check\n * @param blockSelector - css selectors to check\n * @param checkAncestors - whether to search through parent nodes for the block class\n * @returns true/false if the node was blocked or not\n */\nexport function isBlocked(\n node: Node | null,\n blockClass: blockClass,\n blockSelector: string | null,\n checkAncestors: boolean,\n): boolean {\n if (!node) {\n return false;\n }\n const el = closestElementOfNode(node);\n\n if (!el) {\n return false;\n }\n\n try {\n if (typeof blockClass === 'string') {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest('.' + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e) {\n // e\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\n\nexport function isSerialized(n: Node, mirror: Mirror): boolean {\n return mirror.getId(n) !== -1;\n}\n\nexport function isIgnored(\n n: Node,\n mirror: Mirror,\n slimDOMOptions: SlimDOMOptions,\n): boolean {\n if ((n as Element).tagName === 'TITLE' && slimDOMOptions.headTitleMutations) {\n // we do this check here but not in rrweb-snapshot\n // to block mutations/animations on the title.\n // the headTitleMutations option isn't intended to block recording of the initial value\n return true;\n }\n // The main part of the slimDOM check happens in\n // @amplitude/rrweb-snapshot::serializeNodeWithId\n return mirror.getId(n) === IGNORED_NODE;\n}\n\nexport function isAncestorRemoved(target: Node, mirror: Mirror): boolean {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror.getId(target);\n if (!mirror.has(id)) {\n return true;\n }\n const parent = dom.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n // if the root is not document, it means the node is not in the DOM tree anymore\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror);\n}\n\nexport function legacy_isTouchEvent(\n event: MouseEvent | TouchEvent | PointerEvent,\n): event is TouchEvent {\n return Boolean((event as TouchEvent).changedTouches);\n}\n\nexport function polyfill(win = window) {\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n win.NodeList.prototype.forEach = Array.prototype\n .forEach as unknown as NodeList['forEach'];\n }\n\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n win.DOMTokenList.prototype.forEach = Array.prototype\n .forEach as unknown as DOMTokenList['forEach'];\n }\n}\n\ntype ResolveTree = {\n value: addedNodeMutation;\n children: ResolveTree[];\n parent: ResolveTree | null;\n};\n\nexport function queueToResolveTrees(queue: addedNodeMutation[]): ResolveTree[] {\n const queueNodeMap: Record = {};\n const putIntoMap = (\n m: addedNodeMutation,\n parent: ResolveTree | null,\n ): ResolveTree => {\n const nodeInTree: ResolveTree = {\n value: m,\n parent,\n children: [],\n };\n queueNodeMap[m.node.id] = nodeInTree;\n return nodeInTree;\n };\n\n const queueNodeTrees: ResolveTree[] = [];\n for (const mutation of queue) {\n const { nextId, parentId } = mutation;\n if (nextId && nextId in queueNodeMap) {\n const nextInTree = queueNodeMap[nextId];\n if (nextInTree.parent) {\n const idx = nextInTree.parent.children.indexOf(nextInTree);\n nextInTree.parent.children.splice(\n idx,\n 0,\n putIntoMap(mutation, nextInTree.parent),\n );\n } else {\n const idx = queueNodeTrees.indexOf(nextInTree);\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\n }\n continue;\n }\n if (parentId in queueNodeMap) {\n const parentInTree = queueNodeMap[parentId];\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\n continue;\n }\n queueNodeTrees.push(putIntoMap(mutation, null));\n }\n\n return queueNodeTrees;\n}\n\nexport function iterateResolveTree(\n tree: ResolveTree,\n cb: (mutation: addedNodeMutation) => unknown,\n) {\n cb(tree.value);\n /**\n * The resolve tree was designed to reflect the DOM layout,\n * but we need append next sibling first, so we do a reverse\n * loop here.\n */\n for (let i = tree.children.length - 1; i >= 0; i--) {\n iterateResolveTree(tree.children[i], cb);\n }\n}\n\nexport type AppendedIframe = {\n mutationInQueue: addedNodeMutation;\n builtNode: HTMLIFrameElement | RRIFrameElement;\n};\n\nexport function isSerializedIframe(\n n: TNode,\n mirror: IMirror,\n): boolean {\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\n}\n\nexport function isSerializedStylesheet(\n n: TNode,\n mirror: IMirror,\n): boolean {\n return Boolean(\n n.nodeName === 'LINK' &&\n n.nodeType === n.ELEMENT_NODE &&\n (n as HTMLElement).getAttribute &&\n (n as HTMLElement).getAttribute('rel') === 'stylesheet' &&\n mirror.getMeta(n),\n );\n}\n\nexport function getBaseDimension(\n node: Node,\n rootIframe: Node,\n): DocumentDimension {\n const frameElement = node.ownerDocument?.defaultView?.frameElement;\n if (!frameElement || frameElement === rootIframe) {\n return {\n x: 0,\n y: 0,\n relativeScale: 1,\n absoluteScale: 1,\n };\n }\n\n const frameDimension = frameElement.getBoundingClientRect();\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\n // the iframe element may have a scale transform\n const relativeScale = frameDimension.height / frameElement.clientHeight;\n return {\n x:\n frameDimension.x * frameBaseDimension.relativeScale +\n frameBaseDimension.x,\n y:\n frameDimension.y * frameBaseDimension.relativeScale +\n frameBaseDimension.y,\n relativeScale,\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\n };\n}\n\nexport function hasShadowRoot(\n n: T,\n): n is T & { shadowRoot: ShadowRoot } {\n if (!n) return false;\n if (n instanceof BaseRRNode && 'shadowRoot' in n) {\n return Boolean(n.shadowRoot);\n }\n return Boolean(dom.shadowRoot(n as unknown as Element));\n}\n\nexport function getNestedRule(\n rules: CSSRuleList,\n position: number[],\n): CSSGroupingRule {\n const rule = rules[position[0]] as CSSGroupingRule;\n if (position.length === 1) {\n return rule;\n } else {\n return getNestedRule(\n (rule.cssRules[position[1]] as CSSGroupingRule).cssRules,\n position.slice(2),\n );\n }\n}\n\nexport function getPositionsAndIndex(nestedIndex: number[]) {\n const positions = [...nestedIndex];\n const index = positions.pop();\n return { positions, index };\n}\n\n/**\n * Returns the latest mutation in the queue for each node.\n * @param mutations - mutations The text mutations to filter.\n * @returns The filtered text mutations.\n */\nexport function uniqueTextMutations(mutations: textMutation[]): textMutation[] {\n const idSet = new Set();\n const uniqueMutations: textMutation[] = [];\n\n for (let i = mutations.length; i--; ) {\n const mutation = mutations[i];\n if (!idSet.has(mutation.id)) {\n uniqueMutations.push(mutation);\n idSet.add(mutation.id);\n }\n }\n\n return uniqueMutations;\n}\n\nexport class StyleSheetMirror {\n private id = 1;\n private styleIDMap = new WeakMap();\n private idStyleMap = new Map();\n\n getId(stylesheet: CSSStyleSheet): number {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n\n has(stylesheet: CSSStyleSheet): boolean {\n return this.styleIDMap.has(stylesheet);\n }\n\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet: CSSStyleSheet, id?: number): number {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId: number;\n if (id === undefined) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n\n getStyle(id: number): CSSStyleSheet | null {\n return this.idStyleMap.get(id) || null;\n }\n\n reset(): void {\n this.styleIDMap = new WeakMap();\n this.idStyleMap = new Map();\n this.id = 1;\n }\n\n generateId(): number {\n return this.id++;\n }\n}\n\n/**\n * Get the direct shadow host of a node in shadow dom. Returns null if it is not in a shadow dom.\n */\nexport function getShadowHost(n: Node): Element | null {\n let shadowHost: Element | null = null;\n if (\n 'getRootNode' in n &&\n dom.getRootNode(n)?.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&\n dom.host(dom.getRootNode(n) as ShadowRoot)\n )\n shadowHost = dom.host(dom.getRootNode(n) as ShadowRoot);\n return shadowHost;\n}\n\n/**\n * Get the root shadow host of a node in nested shadow doms. Returns the node itself if it is not in a shadow dom.\n */\nexport function getRootShadowHost(n: Node): Node {\n let rootShadowHost: Node = n;\n\n let shadowHost: Element | null;\n // If n is in a nested shadow dom.\n while ((shadowHost = getShadowHost(rootShadowHost)))\n rootShadowHost = shadowHost;\n\n return rootShadowHost;\n}\n\nexport function shadowHostInDom(n: Node): boolean {\n const doc = n.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n);\n return dom.contains(doc, shadowHost);\n}\n\nexport function inDom(n: Node): boolean {\n const doc = n.ownerDocument;\n if (!doc) return false;\n return dom.contains(doc, n) || shadowHostInDom(n);\n}\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\nexport {\n CanvasContext,\n EventType,\n IncrementalSource,\n MediaInteractions,\n MouseInteractions,\n PointerTypes,\n ReplayerEvents\n};\n//# sourceMappingURL=rrweb-types.js.map\n","import {\n IGNORED_NODE,\n Mirror,\n getInputType,\n ignoreAttribute,\n isNativeShadowDom,\n isShadowRoot,\n maskInputValue,\n needMaskingText,\n serializeNodeWithId,\n toLowerCase,\n transformAttribute,\n} from '@amplitude/rrweb-snapshot';\nimport type {\n Optional,\n addedNodeMutation,\n attributeCursor,\n mutationRecord,\n removedNodeMutation,\n textCursor,\n} from '@amplitude/rrweb-types';\nimport type { MutationBufferParam, observerParam } from '../types';\nimport {\n closestElementOfNode,\n getShadowHost,\n hasShadowRoot,\n inDom,\n isAncestorRemoved,\n isBlocked,\n isIgnored,\n isSerialized,\n isSerializedIframe,\n isSerializedStylesheet,\n} from '../utils';\nimport dom from '@amplitude/rrweb-utils';\n\ntype DoubleLinkedListNode = {\n previous: DoubleLinkedListNode | null;\n next: DoubleLinkedListNode | null;\n value: NodeInLinkedList;\n};\ntype NodeInLinkedList = Node & {\n __ln: DoubleLinkedListNode;\n};\n\nfunction isNodeInLinkedList(n: Node | NodeInLinkedList): n is NodeInLinkedList {\n return '__ln' in n;\n}\n\nclass DoubleLinkedList {\n public length = 0;\n public head: DoubleLinkedListNode | null = null;\n public tail: DoubleLinkedListNode | null = null;\n\n public get(position: number) {\n if (position >= this.length) {\n throw new Error('Position outside of list range');\n }\n\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = current?.next || null;\n }\n return current;\n }\n\n public addNode(n: Node) {\n const node: DoubleLinkedListNode = {\n value: n as NodeInLinkedList,\n previous: null,\n next: null,\n };\n (n as NodeInLinkedList).__ln = node;\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n const current = n.previousSibling.__ln.next;\n node.next = current;\n node.previous = n.previousSibling.__ln;\n n.previousSibling.__ln.next = node;\n if (current) {\n current.previous = node;\n }\n } else if (\n n.nextSibling &&\n isNodeInLinkedList(n.nextSibling) &&\n n.nextSibling.__ln.previous\n ) {\n const current = n.nextSibling.__ln.previous;\n node.previous = current;\n node.next = n.nextSibling.__ln;\n n.nextSibling.__ln.previous = node;\n if (current) {\n current.next = node;\n }\n } else {\n if (this.head) {\n this.head.previous = node;\n }\n node.next = this.head;\n this.head = node;\n }\n if (node.next === null) {\n this.tail = node;\n }\n this.length++;\n }\n\n public removeNode(n: NodeInLinkedList) {\n const current = n.__ln;\n if (!this.head) {\n return;\n }\n\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n.__ln) {\n delete (n as Optional).__ln;\n }\n this.length--;\n }\n}\n\nconst moveKey = (id: number, parentId: number) => `${id}@${parentId}`;\n\n/**\n * controls behaviour of a MutationObserver\n */\nexport default class MutationBuffer {\n private frozen = false;\n private locked = false;\n\n private texts: textCursor[] = [];\n private attributes: attributeCursor[] = [];\n private attributeMap = new WeakMap();\n private removes: removedNodeMutation[] = [];\n private mapRemoves: Node[] = [];\n\n private movedMap: Record = {};\n\n /**\n * the browser MutationObserver emits multiple mutations after\n * a delay for performance reasons, making tracing added nodes hard\n * in our `processMutations` callback function.\n * For example, if we append an element el_1 into body, and then append\n * another element el_2 into el_1, these two mutations may be passed to the\n * callback function together when the two operations were done.\n * Generally we need to trace child nodes of newly added nodes, but in this\n * case if we count el_2 as el_1's child node in the first mutation record,\n * then we will count el_2 again in the second mutation record which was\n * duplicated.\n * To avoid of duplicate counting added nodes, we use a Set to store\n * added nodes and its child nodes during iterate mutation records. Then\n * collect added nodes from the Set which have no duplicate copy. But\n * this also causes newly added nodes will not be serialized with id ASAP,\n * which means all the id related calculation should be lazy too.\n */\n private addedSet = new Set();\n private movedSet = new Set();\n private droppedSet = new Set();\n\n private mutationCb: observerParam['mutationCb'];\n private blockClass: observerParam['blockClass'];\n private blockSelector: observerParam['blockSelector'];\n private maskTextClass: observerParam['maskTextClass'];\n private maskTextSelector: observerParam['maskTextSelector'];\n private inlineStylesheet: observerParam['inlineStylesheet'];\n private maskInputOptions: observerParam['maskInputOptions'];\n private maskTextFn: observerParam['maskTextFn'];\n private maskInputFn: observerParam['maskInputFn'];\n private keepIframeSrcFn: observerParam['keepIframeSrcFn'];\n private recordCanvas: observerParam['recordCanvas'];\n private inlineImages: observerParam['inlineImages'];\n private slimDOMOptions: observerParam['slimDOMOptions'];\n private dataURLOptions: observerParam['dataURLOptions'];\n private doc: observerParam['doc'];\n private mirror: observerParam['mirror'];\n private iframeManager: observerParam['iframeManager'];\n private stylesheetManager: observerParam['stylesheetManager'];\n private shadowDomManager: observerParam['shadowDomManager'];\n private canvasManager: observerParam['canvasManager'];\n private processedNodeManager: observerParam['processedNodeManager'];\n private unattachedDoc: HTMLDocument;\n\n public init(options: MutationBufferParam) {\n (\n [\n 'mutationCb',\n 'blockClass',\n 'blockSelector',\n 'maskTextClass',\n 'maskTextSelector',\n 'inlineStylesheet',\n 'maskInputOptions',\n 'maskTextFn',\n 'maskInputFn',\n 'keepIframeSrcFn',\n 'recordCanvas',\n 'inlineImages',\n 'slimDOMOptions',\n 'dataURLOptions',\n 'doc',\n 'mirror',\n 'iframeManager',\n 'stylesheetManager',\n 'shadowDomManager',\n 'canvasManager',\n 'processedNodeManager',\n ] as const\n ).forEach((key) => {\n // just a type trick, the runtime result is correct\n this[key] = options[key] as never;\n });\n }\n\n public freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n\n public unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n\n public isFrozen() {\n return this.frozen;\n }\n\n public lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n\n public unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n\n public reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n\n public processMutations = (mutations: mutationRecord[]) => {\n mutations.forEach(this.processMutation); // adds mutations to the buffer\n this.emit(); // clears buffer if not locked/frozen\n };\n\n public emit = () => {\n if (this.frozen || this.locked) {\n return;\n }\n\n // delay any modification of the mirror until this function\n // so that the mirror for takeFullSnapshot doesn't get mutated while it's event is being processed\n\n const adds: addedNodeMutation[] = [];\n const addedIds = new Set();\n\n /**\n * Sometimes child node may be pushed before its newly added\n * parent, so we init a queue to store these nodes.\n */\n const addList = new DoubleLinkedList();\n const getNextId = (n: Node): number | null => {\n let ns: Node | null = n;\n let nextId: number | null = IGNORED_NODE; // slimDOM: ignored\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n: Node) => {\n const parent = dom.parentNode(n);\n if (!parent || !inDom(n) || (parent as Element).tagName === 'TEXTAREA') {\n return;\n }\n const parentId = isShadowRoot(parent)\n ? this.mirror.getId(getShadowHost(n))\n : this.mirror.getId(parent);\n const nextId = getNextId(n);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n);\n }\n const sn = serializeNodeWithId(n, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN as HTMLIFrameElement);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN as HTMLLinkElement,\n );\n }\n if (hasShadowRoot(n)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.shadowDomManager.addShadowRoot(dom.shadowRoot(n)!, this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn,\n });\n addedIds.add(sn.id);\n }\n };\n\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift()!);\n }\n\n for (const n of this.movedSet) {\n if (\n isParentRemoved(this.removes, n, this.mirror) &&\n !this.movedSet.has(dom.parentNode(n)!)\n ) {\n continue;\n }\n pushAdd(n);\n }\n\n for (const n of this.addedSet) {\n if (\n !isAncestorInSet(this.droppedSet, n) &&\n !isParentRemoved(this.removes, n, this.mirror)\n ) {\n pushAdd(n);\n } else if (isAncestorInSet(this.movedSet, n)) {\n pushAdd(n);\n } else {\n this.droppedSet.add(n);\n }\n }\n\n let candidate: DoubleLinkedListNode | null = null;\n while (addList.length) {\n let node: DoubleLinkedListNode | null = null;\n if (candidate) {\n const parentId = this.mirror.getId(dom.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node = candidate;\n }\n }\n if (!node) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n // ensure _node is defined before attempting to find value\n if (_node) {\n const parentId = this.mirror.getId(dom.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n\n if (nextId === -1) continue;\n // nextId !== -1 && parentId !== -1\n else if (parentId !== -1) {\n node = _node;\n break;\n }\n // nextId !== -1 && parentId === -1 This branch can happen if the node is the child of shadow root\n else {\n const unhandledNode = _node.value;\n const parent = dom.parentNode(unhandledNode);\n // If the node is the direct child of a shadow root, we treat the shadow host as its parent node.\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = dom.host(parent as ShadowRoot);\n const parentId = this.mirror.getId(shadowHost);\n if (parentId !== -1) {\n node = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node) {\n /**\n * If all nodes in queue could not find a serialized parent,\n * it may be a bug or corner case. We need to escape the\n * dead while loop at once.\n */\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node.previous;\n addList.removeNode(node.value);\n pushAdd(node.value);\n }\n\n const payload = {\n texts: this.texts\n .map((text) => {\n const n = text.node;\n const parent = dom.parentNode(n);\n if (parent && (parent as Element).tagName === 'TEXTAREA') {\n // the node is being ignored as it isn't in the mirror, so shift mutation to attributes on parent textarea\n this.genTextAreaValueMutation(parent as HTMLTextAreaElement);\n }\n return {\n id: this.mirror.getId(n),\n value: text.value,\n };\n })\n // no need to include them on added elements, as they have just been serialized with up to date attribubtes\n .filter((text) => !addedIds.has(text.id))\n // text mutation's id was not in the mirror map means the target node has been removed\n .filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes\n .map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === 'string') {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n // check if the style diff is actually shorter than the regular string based mutation\n // (which was the whole point of #464 'compact style mutation').\n if (diffAsStr.length < attributes.style.length) {\n // also: CSSOM fails badly when var() is present on shorthand properties, so only proceed with\n // the compact style mutation if these have all been accounted for\n if (\n (diffAsStr + unchangedAsStr).split('var(').length ===\n attributes.style.split('var(').length\n ) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes: attributes,\n };\n })\n // no need to include them on added elements, as they have just been serialized with up to date attribubtes\n .filter((attribute) => !addedIds.has(attribute.id))\n // attribute mutation's id was not in the mirror map means the target node has been removed\n .filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds,\n };\n // payload may be empty if the mutations happened in some blocked elements\n if (\n !payload.texts.length &&\n !payload.attributes.length &&\n !payload.removes.length &&\n !payload.adds.length\n ) {\n return;\n }\n\n // reset\n this.texts = [];\n this.attributes = [];\n this.attributeMap = new WeakMap();\n this.removes = [];\n this.addedSet = new Set();\n this.movedSet = new Set();\n this.droppedSet = new Set();\n this.movedMap = {};\n\n this.mutationCb(payload);\n };\n\n private genTextAreaValueMutation = (textarea: HTMLTextAreaElement) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {},\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n dom.childNodes(textarea),\n (cn) => dom.textContent(cn) || '',\n ).join('');\n };\n\n private processMutation = (m: mutationRecord) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case 'characterData': {\n const value = dom.textContent(m.target);\n\n if (\n !isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\n value !== m.oldValue\n ) {\n this.texts.push({\n value:\n needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true, // checkAncestors\n ) && value\n ? this.maskTextFn\n ? this.maskTextFn(value, closestElementOfNode(m.target))\n : value.replace(/[\\S]/g, '*')\n : value,\n node: m.target,\n });\n }\n break;\n }\n case 'attributes': {\n const target = m.target as HTMLElement;\n let attributeName = m.attributeName as string;\n let value = (m.target as HTMLElement).getAttribute(attributeName);\n\n if (attributeName === 'value') {\n const type = getInputType(target);\n\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn,\n });\n }\n if (\n isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\n value === m.oldValue\n ) {\n return;\n }\n\n let item = this.attributeMap.get(m.target);\n if (\n target.tagName === 'IFRAME' &&\n attributeName === 'src' &&\n !this.keepIframeSrcFn(value as string)\n ) {\n if (!(target as HTMLIFrameElement).contentDocument) {\n // we can't record it directly as we can't see into it\n // preserve the src attribute so a decision can be taken at replay time\n attributeName = 'rr_src';\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {},\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n\n // Keep this property on inputs that used to be password inputs\n // This is used to ensure we do not unmask value when using e.g. a \"Show password\" type button\n if (\n attributeName === 'type' &&\n target.tagName === 'INPUT' &&\n (m.oldValue || '').toLowerCase() === 'password'\n ) {\n target.setAttribute('data-rr-is-password', 'true');\n }\n\n if (!ignoreAttribute(target.tagName, attributeName, value)) {\n // overwrite attribute if the mutations was triggered in same time\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value,\n );\n if (attributeName === 'style') {\n if (!this.unattachedDoc) {\n try {\n // avoid upsetting original document from a Content Security point of view\n this.unattachedDoc =\n document.implementation.createHTMLDocument();\n } catch (e) {\n // fallback to more direct method\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement('span');\n if (m.oldValue) {\n old.setAttribute('style', m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (\n newValue !== old.style.getPropertyValue(pname) ||\n newPriority !== old.style.getPropertyPriority(pname)\n ) {\n if (newPriority === '') {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n // for checking\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === '') {\n // \"if not set, returns the empty string\"\n item.styleDiff[pname] = false; // delete\n }\n }\n } else if (attributeName === 'open' && target.tagName === 'DIALOG') {\n if (target.matches('dialog:modal')) {\n item.attributes['rr_open_mode'] = 'modal';\n } else {\n item.attributes['rr_open_mode'] = 'non-modal';\n }\n }\n }\n break;\n }\n case 'childList': {\n /**\n * Parent is blocked, ignore all child mutations\n */\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n\n if ((m.target as Element).tagName === 'TEXTAREA') {\n // children would be ignored in genAdds as they aren't in the mirror\n this.genTextAreaValueMutation(m.target as HTMLTextAreaElement);\n return; // any removedNodes won't have been in mirror either\n }\n\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\n m.removedNodes.forEach((n) => {\n const nodeId = this.mirror.getId(n);\n const parentId = isShadowRoot(m.target)\n ? this.mirror.getId(dom.host(m.target))\n : this.mirror.getId(m.target);\n if (\n isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\n isIgnored(n, this.mirror, this.slimDOMOptions) ||\n !isSerialized(n, this.mirror)\n ) {\n return;\n }\n // removed node has not been serialized yet, just remove it from the Set\n if (this.addedSet.has(n)) {\n deepDelete(this.addedSet, n);\n this.droppedSet.add(n);\n } else if (this.addedSet.has(m.target) && nodeId === -1) {\n /**\n * If target was newly added and removed child node was\n * not serialized, it means the child node has been removed\n * before callback fired, so we can ignore it because\n * newly added node will be serialized without child nodes.\n * TODO: verify this\n */\n } else if (isAncestorRemoved(m.target, this.mirror)) {\n /**\n * If parent id was not in the mirror map any more, it\n * means the parent node has already been removed. So\n * the node is also removed which we do not need to track\n * and replay.\n */\n } else if (\n this.movedSet.has(n) &&\n this.movedMap[moveKey(nodeId, parentId)]\n ) {\n deepDelete(this.movedSet, n);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow:\n isShadowRoot(m.target) && isNativeShadowDom(m.target)\n ? true\n : undefined,\n });\n }\n this.mapRemoves.push(n);\n });\n break;\n }\n default:\n break;\n }\n };\n\n /**\n * Make sure you check if `n`'s parent is blocked before calling this function\n * */\n private genAdds = (n: Node, target?: Node) => {\n // this node was already recorded in other buffer, ignore it\n if (this.processedNodeManager.inOtherBuffer(n, this)) return;\n\n // if n is added to set, there is no need to travel it and its' children again\n if (this.addedSet.has(n) || this.movedSet.has(n)) return;\n\n if (this.mirror.hasNode(n)) {\n if (isIgnored(n, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n);\n let targetId: number | null = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\n }\n } else {\n this.addedSet.add(n);\n this.droppedSet.delete(n);\n }\n\n // if this node is blocked `serializeNode` will turn it into a placeholder element\n // but we have to remove it's children otherwise they will be added as placeholders too\n if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\n dom.childNodes(n).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n dom.childNodes(dom.shadowRoot(n)!).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n);\n });\n }\n }\n };\n}\n\n/**\n * Some utils to handle the mutation observer DOM records.\n * It should be more clear to extend the native data structure\n * like Set and Map, but currently Typescript does not support\n * that.\n */\nfunction deepDelete(addsSet: Set, n: Node) {\n addsSet.delete(n);\n dom.childNodes(n).forEach((childN) => deepDelete(addsSet, childN));\n}\n\nfunction isParentRemoved(\n removes: removedNodeMutation[],\n n: Node,\n mirror: Mirror,\n): boolean {\n if (removes.length === 0) return false;\n return _isParentRemoved(removes, n, mirror);\n}\n\nfunction _isParentRemoved(\n removes: removedNodeMutation[],\n n: Node,\n mirror: Mirror,\n): boolean {\n let node: ParentNode | null = dom.parentNode(n);\n while (node) {\n const parentId = mirror.getId(node);\n if (removes.some((r) => r.id === parentId)) {\n return true;\n }\n node = dom.parentNode(node);\n }\n return false;\n}\n\nfunction isAncestorInSet(set: Set, n: Node): boolean {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n);\n}\n\nfunction _isAncestorInSet(set: Set, n: Node): boolean {\n const parent = dom.parentNode(n);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\n","import type { ErrorHandler } from '../types';\n\ntype Callback = (...args: unknown[]) => unknown;\ntype GenericFunction = (...args: any[]) => any;\ntype ExternalError = Error & { _external_: boolean };\n\nlet errorHandler: ErrorHandler | undefined;\n\nexport function registerErrorHandler(handler: ErrorHandler | undefined) {\n errorHandler = handler;\n}\n\nexport function unregisterErrorHandler() {\n errorHandler = undefined;\n}\n\n/**\n * Wrap callbacks in a wrapper that allows to pass errors to a configured `errorHandler` method.\n */\nexport const callbackWrapper = (cb: T): T => {\n if (!errorHandler) {\n return cb;\n }\n\n const rrwebWrapped = ((...rest: unknown[]) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n\n throw error;\n }\n }) as unknown as T;\n\n return rrwebWrapped;\n};\n\nexport function externalFunctionWrapper(\n func: T,\n): (...args: Parameters) => ReturnType {\n return (...args: Parameters) => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return func(...args);\n } catch (error) {\n try {\n (error as ExternalError)._external_ = true;\n } catch {\n // in case we can't assign, don't do anything.\n }\n throw error;\n }\n };\n}\n","import {\n type MaskInputOptions,\n maskInputValue,\n Mirror,\n getInputType,\n toLowerCase,\n} from '@amplitude/rrweb-snapshot';\nimport type { FontFaceSet } from 'css-font-loading-module';\nimport {\n throttle,\n on,\n hookSetter,\n getWindowScroll,\n getWindowHeight,\n getWindowWidth,\n isBlocked,\n legacy_isTouchEvent,\n patch,\n StyleSheetMirror,\n nowTimestamp,\n} from '../utils';\nimport type { observerParam, MutationBufferParam } from '../types';\nimport {\n IncrementalSource,\n MouseInteractions,\n PointerTypes,\n MediaInteractions,\n} from '@amplitude/rrweb-types';\nimport type {\n mutationCallBack,\n mousemoveCallBack,\n mousePosition,\n mouseInteractionCallBack,\n listenerHandler,\n scrollCallback,\n styleSheetRuleCallback,\n viewportResizeCallback,\n inputValue,\n inputCallback,\n hookResetter,\n hooksParam,\n Arguments,\n mediaInteractionCallback,\n canvasMutationCallback,\n fontCallback,\n fontParam,\n styleDeclarationCallback,\n IWindow,\n SelectionRange,\n selectionCallback,\n customElementCallback,\n} from '@amplitude/rrweb-types';\nimport MutationBuffer from './mutation';\nimport { callbackWrapper, externalFunctionWrapper } from './error-handler';\nimport dom, { mutationObserverCtor } from '@amplitude/rrweb-utils';\n\nexport const mutationBuffers: MutationBuffer[] = [];\n\n// Event.path is non-standard and used in some older browsers\ntype NonStandardEvent = Omit & {\n path: EventTarget[];\n};\n\nfunction getEventTarget(event: Event | NonStandardEvent): EventTarget | null {\n try {\n if ('composedPath' in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if ('path' in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n // fallback to `event.target` below\n }\n\n return event && event.target;\n}\n\nexport function initMutationObserver(\n options: MutationBufferParam,\n rootEl: Node,\n): MutationObserver {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n // see mutation.ts for details\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor() as new (\n callback: MutationCallback,\n ) => MutationObserver)(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)),\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n });\n return observer;\n}\n\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror,\n}: observerParam): listenerHandler {\n if (sampling.mousemove === false) {\n return () => {\n //\n };\n }\n\n const threshold =\n typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\n const callbackThreshold =\n typeof sampling.mousemoveCallback === 'number'\n ? sampling.mousemoveCallback\n : 500;\n\n let positions: mousePosition[] = [];\n let timeBaseline: number | null;\n const wrappedCb = throttle(\n callbackWrapper(\n (\n source:\n | IncrementalSource.MouseMove\n | IncrementalSource.TouchMove\n | IncrementalSource.Drag,\n ) => {\n const totalOffset = Date.now() - timeBaseline!;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source,\n );\n positions = [];\n timeBaseline = null;\n },\n ),\n callbackThreshold,\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n // 'legacy' here as we could switch to https://developer.mozilla.org/en-US/docs/Web/API/Element/pointermove_event\n const { clientX, clientY } = legacy_isTouchEvent(evt)\n ? evt.changedTouches[0]\n : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror.getId(target as Node),\n timeOffset: nowTimestamp() - timeBaseline,\n });\n // it is possible DragEvent is undefined even on devices\n // that support event 'drag'\n wrappedCb(\n typeof DragEvent !== 'undefined' && evt instanceof DragEvent\n ? IncrementalSource.Drag\n : evt instanceof MouseEvent\n ? IncrementalSource.MouseMove\n : IncrementalSource.TouchMove,\n );\n }),\n threshold,\n {\n trailing: false,\n },\n ),\n );\n const handlers = [\n on('mousemove', updatePosition, doc),\n on('touchmove', updatePosition, doc),\n on('drag', updatePosition, doc),\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\n\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror,\n blockClass,\n blockSelector,\n sampling,\n}: observerParam): listenerHandler {\n if (sampling.mouseInteraction === false) {\n return () => {\n //\n };\n }\n const disableMap: Record =\n sampling.mouseInteraction === true ||\n sampling.mouseInteraction === undefined\n ? {}\n : sampling.mouseInteraction;\n\n const handlers: listenerHandler[] = [];\n let currentPointerType: PointerTypes | null = null;\n const getHandler = (eventKey: keyof typeof MouseInteractions) => {\n return (event: MouseEvent | TouchEvent | PointerEvent) => {\n const target = getEventTarget(event) as Node;\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType: PointerTypes | null = null;\n let thisEventKey = eventKey;\n if ('pointerType' in event) {\n switch (event.pointerType) {\n case 'mouse':\n pointerType = PointerTypes.Mouse;\n break;\n case 'touch':\n pointerType = PointerTypes.Touch;\n break;\n case 'pen':\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n // we are actually listening on 'pointerdown'\n thisEventKey = 'TouchStart';\n } else if (\n MouseInteractions[eventKey] === MouseInteractions.MouseUp\n ) {\n // we are actually listening on 'pointerup'\n thisEventKey = 'TouchEnd';\n }\n } else if (pointerType === PointerTypes.Pen) {\n // TODO: these will get incorrectly emitted as MouseDown/MouseUp\n }\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (\n (thisEventKey.startsWith('Touch') &&\n pointerType === PointerTypes.Touch) ||\n (thisEventKey.startsWith('Mouse') &&\n pointerType === PointerTypes.Mouse)\n ) {\n // don't output redundant info\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null; // cleanup as we've used it\n }\n const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e) {\n return;\n }\n const id = mirror.getId(target);\n const { clientX, clientY } = e;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...(pointerType !== null && { pointerType }),\n });\n };\n };\n Object.keys(MouseInteractions)\n .filter(\n (key) =>\n Number.isNaN(Number(key)) &&\n !key.endsWith('_Departed') &&\n disableMap[key] !== false,\n )\n .forEach((eventKey: keyof typeof MouseInteractions) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n 'mouse',\n 'pointer',\n ) as unknown as typeof eventName;\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n // these are handled by pointerdown/pointerup\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\n\nexport function initScrollObserver({\n scrollCb,\n doc,\n mirror,\n blockClass,\n blockSelector,\n sampling,\n}: Pick<\n observerParam,\n 'scrollCb' | 'doc' | 'mirror' | 'blockClass' | 'blockSelector' | 'sampling'\n>): listenerHandler {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (\n !target ||\n isBlocked(target as Node, blockClass, blockSelector, true)\n ) {\n return;\n }\n const id = mirror.getId(target as Node);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top,\n });\n } else {\n scrollCb({\n id,\n x: (target as HTMLElement).scrollLeft,\n y: (target as HTMLElement).scrollTop,\n });\n }\n }),\n sampling.scroll || 100,\n ),\n );\n return on('scroll', updatePosition, doc);\n}\n\nfunction initViewportResizeObserver(\n { viewportResizeCb }: observerParam,\n { win }: { win: IWindow },\n): listenerHandler {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height),\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200,\n ),\n );\n return on('resize', updateDimension, win);\n}\n\nexport const INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\nconst lastInputValueMap: WeakMap = new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput,\n}: observerParam): listenerHandler {\n function eventHandler(event: Event) {\n let target = getEventTarget(event) as HTMLElement | null;\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n\n /**\n * If a site changes the value 'selected' of an option element, the value of its parent element, usually a select element, will be changed as well.\n * We can treat this change as a value change of the select element the current target belongs to.\n */\n if (target && tagName === 'OPTION') {\n target = dom.parentElement(target);\n }\n if (\n !target ||\n !tagName ||\n INPUT_TAGS.indexOf(tagName) < 0 ||\n isBlocked(target as Node, blockClass, blockSelector, true)\n ) {\n return;\n }\n\n if (\n target.classList.contains(ignoreClass) ||\n (ignoreSelector && target.matches(ignoreSelector))\n ) {\n return;\n }\n let text = (target as HTMLInputElement).value;\n let isChecked = false;\n const type: Lowercase = getInputType(target) || '';\n\n if (type === 'radio' || type === 'checkbox') {\n isChecked = (target as HTMLInputElement).checked;\n } else if (\n maskInputOptions[tagName.toLowerCase() as keyof MaskInputOptions] ||\n maskInputOptions[type as keyof MaskInputOptions]\n ) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn,\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput\n ? { text, isChecked, userTriggered }\n : { text, isChecked },\n );\n // if a radio was checked\n // the other radios with the same name attribute will be unchecked.\n const name: string | undefined = (target as HTMLInputElement).name;\n if (type === 'radio' && name && isChecked) {\n doc\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\n .forEach((el) => {\n if (el !== target) {\n const text = (el as HTMLInputElement).value;\n cbWithDedup(\n el,\n userTriggeredOnInput\n ? { text, isChecked: !isChecked, userTriggered: false }\n : { text, isChecked: !isChecked },\n );\n }\n });\n }\n }\n function cbWithDedup(target: EventTarget, v: inputValue) {\n const lastInputValue = lastInputValueMap.get(target);\n if (\n !lastInputValue ||\n lastInputValue.text !== v.text ||\n lastInputValue.isChecked !== v.isChecked\n ) {\n lastInputValueMap.set(target, v);\n const id = mirror.getId(target as Node);\n callbackWrapper(inputCb)({\n ...v,\n id,\n });\n }\n }\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\n const handlers: Array = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc),\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n 'value',\n );\n const hookProperties: Array<[HTMLElement, string]> = [\n [currentWindow.HTMLInputElement.prototype, 'value'],\n [currentWindow.HTMLInputElement.prototype, 'checked'],\n [currentWindow.HTMLSelectElement.prototype, 'value'],\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map((p) =>\n hookSetter(\n p[0],\n p[1],\n {\n set() {\n // mock to a normal event\n callbackWrapper(eventHandler)({\n target: this as EventTarget,\n isTrusted: false, // userTriggered to false as this could well be programmatic\n } as Event);\n },\n },\n false,\n currentWindow,\n ),\n ),\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\n\ntype GroupingCSSRule =\n | CSSGroupingRule\n | CSSMediaRule\n | CSSSupportsRule\n | CSSConditionRule;\ntype GroupingCSSRuleTypes =\n | typeof CSSGroupingRule\n | typeof CSSMediaRule\n | typeof CSSSupportsRule\n | typeof CSSConditionRule;\n\nfunction getNestedCSSRulePositions(rule: CSSRule): number[] {\n const positions: number[] = [];\n function recurse(childRule: CSSRule, pos: number[]) {\n if (\n (hasNestedCSSRule('CSSGroupingRule') &&\n childRule.parentRule instanceof CSSGroupingRule) ||\n (hasNestedCSSRule('CSSMediaRule') &&\n childRule.parentRule instanceof CSSMediaRule) ||\n (hasNestedCSSRule('CSSSupportsRule') &&\n childRule.parentRule instanceof CSSSupportsRule) ||\n (hasNestedCSSRule('CSSConditionRule') &&\n childRule.parentRule instanceof CSSConditionRule)\n ) {\n const rules = Array.from(\n (childRule.parentRule as GroupingCSSRule).cssRules,\n );\n const index = rules.indexOf(childRule);\n pos.unshift(index);\n } else if (childRule.parentStyleSheet) {\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\n const index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n return pos;\n }\n return recurse(rule, positions);\n}\n\n/**\n * For StyleSheets in Element, this function retrieves id of its host element.\n * For adopted StyleSheets, this function retrieves its styleId from a styleMirror.\n */\nfunction getIdAndStyleId(\n sheet: CSSStyleSheet | undefined | null,\n mirror: Mirror,\n styleMirror: StyleSheetMirror,\n): {\n styleId?: number;\n id?: number;\n} {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror.getId(sheet.ownerNode as Node);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id,\n };\n}\n\nfunction initStyleSheetObserver(\n { styleSheetRuleCb, mirror, stylesheetManager }: observerParam,\n { win }: { win: IWindow },\n): listenerHandler {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n // If, for whatever reason, CSSStyleSheet is not available, we skip the observation of stylesheets.\n return () => {\n // Do nothing\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (\n target: typeof insertRule,\n thisArg: CSSStyleSheet,\n argumentsList: [string, number | undefined],\n ) => {\n const [rule, index] = argumentsList;\n\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror,\n stylesheetManager.styleMirror,\n );\n\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule, index }],\n });\n }\n return externalFunctionWrapper(() =>\n target.apply(thisArg, argumentsList),\n )();\n },\n ),\n });\n\n // Support for deprecated addRule method\n win.CSSStyleSheet.prototype.addRule = function (\n this: CSSStyleSheet,\n selector: string,\n styleBlock: string,\n index: number = this.cssRules.length,\n ) {\n const rule = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule, index]);\n };\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (\n target: typeof deleteRule,\n thisArg: CSSStyleSheet,\n argumentsList: [number],\n ) => {\n const [index] = argumentsList;\n\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror,\n stylesheetManager.styleMirror,\n );\n\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index }],\n });\n }\n return externalFunctionWrapper(() =>\n target.apply(thisArg, argumentsList),\n )();\n },\n ),\n });\n\n // Support for deprecated removeRule method\n win.CSSStyleSheet.prototype.removeRule = function (\n this: CSSStyleSheet,\n index: number,\n ) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index]);\n };\n\n let replace: (text: string) => Promise;\n\n if (win.CSSStyleSheet.prototype.replace) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (\n target: typeof replace,\n thisArg: CSSStyleSheet,\n argumentsList: [string],\n ) => {\n const [text] = argumentsList;\n\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror,\n stylesheetManager.styleMirror,\n );\n\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text,\n });\n }\n return target.apply(thisArg, argumentsList);\n },\n ),\n });\n }\n\n let replaceSync: (text: string) => void;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (\n target: typeof replaceSync,\n thisArg: CSSStyleSheet,\n argumentsList: [string],\n ) => {\n const [text] = argumentsList;\n\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror,\n stylesheetManager.styleMirror,\n );\n\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text,\n });\n }\n return target.apply(thisArg, argumentsList);\n },\n ),\n });\n }\n\n const supportedNestedCSSRuleTypes: {\n [key: string]: GroupingCSSRuleTypes;\n } = {};\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n // Some browsers (Safari) don't support CSSGroupingRule\n // https://caniuse.com/?search=cssgroupingrule\n // fall back to monkey patching classes that would have inherited from CSSGroupingRule\n\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n\n const unmodifiedFunctions: {\n [key: string]: {\n insertRule: (rule: string, index?: number) => number;\n deleteRule: (index: number) => void;\n };\n } = {};\n\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule,\n };\n\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (\n target: typeof insertRule,\n thisArg: CSSRule,\n argumentsList: [string, number | undefined],\n ) => {\n const [rule, index] = argumentsList;\n\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror,\n stylesheetManager.styleMirror,\n );\n\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index || 0, // defaults to 0\n ],\n },\n ],\n });\n }\n return target.apply(thisArg, argumentsList);\n },\n ),\n },\n );\n\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (\n target: typeof deleteRule,\n thisArg: CSSRule,\n argumentsList: [number],\n ) => {\n const [index] = argumentsList;\n\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror,\n stylesheetManager.styleMirror,\n );\n\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index] },\n ],\n });\n }\n return target.apply(thisArg, argumentsList);\n },\n ),\n },\n );\n });\n\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\n\nexport function initAdoptedStyleSheetObserver(\n {\n mirror,\n stylesheetManager,\n }: Pick,\n host: Document | ShadowRoot,\n): listenerHandler {\n let hostId: number | null = null;\n // host of adoptedStyleSheets is outermost document or IFrame's document\n if (host.nodeName === '#document') hostId = mirror.getId(host);\n // The host is a ShadowRoot.\n else hostId = mirror.getId(dom.host(host as ShadowRoot));\n\n const patchTarget =\n host.nodeName === '#document'\n ? (host as Document).defaultView?.Document\n : host.ownerDocument?.defaultView?.ShadowRoot;\n const originalPropertyDescriptor = patchTarget?.prototype\n ? Object.getOwnPropertyDescriptor(\n patchTarget?.prototype,\n 'adoptedStyleSheets',\n )\n : undefined;\n if (\n hostId === null ||\n hostId === -1 ||\n !patchTarget ||\n !originalPropertyDescriptor\n )\n return () => {\n //\n };\n\n // Patch adoptedStyleSheets by overriding the original one.\n Object.defineProperty(host, 'adoptedStyleSheets', {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get(): CSSStyleSheet[] {\n return originalPropertyDescriptor.get?.call(this) as CSSStyleSheet[];\n },\n set(sheets: CSSStyleSheet[]) {\n const result = originalPropertyDescriptor.set?.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e) {\n // for safety\n }\n }\n return result;\n },\n });\n\n return callbackWrapper(() => {\n Object.defineProperty(host, 'adoptedStyleSheets', {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set,\n });\n });\n}\n\nfunction initStyleDeclarationObserver(\n {\n styleDeclarationCb,\n mirror,\n ignoreCSSAttributes,\n stylesheetManager,\n }: observerParam,\n { win }: { win: IWindow },\n): listenerHandler {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (\n target: typeof setProperty,\n thisArg: CSSStyleDeclaration,\n argumentsList: [string, string, string],\n ) => {\n const [property, value, priority] = argumentsList;\n\n // ignore this mutation if we do not care about this css attribute\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentRule?.parentStyleSheet,\n mirror,\n stylesheetManager.styleMirror,\n );\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority,\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule!),\n });\n }\n return target.apply(thisArg, argumentsList);\n },\n ),\n });\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (\n target: typeof removeProperty,\n thisArg: CSSStyleDeclaration,\n argumentsList: [string],\n ) => {\n const [property] = argumentsList;\n\n // ignore this mutation if we do not care about this css attribute\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentRule?.parentStyleSheet,\n mirror,\n stylesheetManager.styleMirror,\n );\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property,\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule!),\n });\n }\n return target.apply(thisArg, argumentsList);\n },\n ),\n });\n\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\n\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror,\n sampling,\n doc,\n}: observerParam): listenerHandler {\n const handler = callbackWrapper((type: MediaInteractions) =>\n throttle(\n callbackWrapper((event: Event) => {\n const target = getEventTarget(event);\n if (\n !target ||\n isBlocked(target as Node, blockClass, blockSelector, true)\n ) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } =\n target as HTMLMediaElement;\n mediaInteractionCb({\n type,\n id: mirror.getId(target as Node),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop,\n });\n }),\n sampling.media || 500,\n ),\n );\n const handlers = [\n on('play', handler(MediaInteractions.Play), doc),\n on('pause', handler(MediaInteractions.Pause), doc),\n on('seeked', handler(MediaInteractions.Seeked), doc),\n on('volumechange', handler(MediaInteractions.VolumeChange), doc),\n on('ratechange', handler(MediaInteractions.RateChange), doc),\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\n\nfunction initFontObserver({ fontCb, doc }: observerParam): listenerHandler {\n const win = doc.defaultView as IWindow;\n if (!win) {\n return () => {\n //\n };\n }\n\n const handlers: listenerHandler[] = [];\n\n const fontMap = new WeakMap();\n\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace(\n family: string,\n source: string | ArrayBufferLike,\n descriptors?: FontFaceDescriptors,\n ) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== 'string',\n descriptors,\n fontSource:\n typeof source === 'string'\n ? source\n : JSON.stringify(Array.from(new Uint8Array(source))),\n });\n return fontFace;\n } as unknown as typeof FontFace;\n\n const restoreHandler = patch(\n doc.fonts,\n 'add',\n function (original: (font: FontFace) => void) {\n return function (this: FontFaceSet, fontFace: FontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0,\n );\n return original.apply(this, [fontFace]);\n };\n },\n );\n\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\n\nfunction initSelectionObserver(param: observerParam): listenerHandler {\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n\n if (!selection || (collapsed && selection?.isCollapsed)) return;\n\n collapsed = selection.isCollapsed || false;\n\n const ranges: SelectionRange[] = [];\n const count = selection.rangeCount || 0;\n\n for (let i = 0; i < count; i++) {\n const range = selection.getRangeAt(i);\n\n const { startContainer, startOffset, endContainer, endOffset } = range;\n\n const blocked =\n isBlocked(startContainer, blockClass, blockSelector, true) ||\n isBlocked(endContainer, blockClass, blockSelector, true);\n\n if (blocked) continue;\n\n ranges.push({\n start: mirror.getId(startContainer),\n startOffset,\n end: mirror.getId(endContainer),\n endOffset,\n });\n }\n\n selectionCb({ ranges });\n });\n\n updateSelection();\n\n return on('selectionchange', updateSelection);\n}\n\nfunction initCustomElementObserver({\n doc,\n customElementCb,\n}: observerParam): listenerHandler {\n const win = doc.defaultView as IWindow;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n if (!win || !win.customElements) return () => {};\n const restoreHandler = patch(\n win.customElements,\n 'define',\n function (\n original: (\n name: string,\n constructor: CustomElementConstructor,\n options?: ElementDefinitionOptions,\n ) => void,\n ) {\n return function (\n name: string,\n constructor: CustomElementConstructor,\n options?: ElementDefinitionOptions,\n ) {\n try {\n customElementCb({\n define: {\n name,\n },\n });\n } catch (e) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n },\n );\n return restoreHandler;\n}\n\nfunction mergeHooks(o: observerParam, hooks: hooksParam) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb,\n } = o;\n o.mutationCb = (...p: Arguments) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o.mousemoveCb = (...p: Arguments) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o.mouseInteractionCb = (...p: Arguments) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o.scrollCb = (...p: Arguments) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o.viewportResizeCb = (...p: Arguments) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o.inputCb = (...p: Arguments) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o.mediaInteractionCb = (...p: Arguments) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o.styleSheetRuleCb = (...p: Arguments) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o.styleDeclarationCb = (...p: Arguments) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o.canvasMutationCb = (...p: Arguments) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o.fontCb = (...p: Arguments) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o.selectionCb = (...p: Arguments) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o.customElementCb = (...c: Arguments) => {\n if (hooks.customElement) {\n hooks.customElement(...c);\n }\n customElementCb(...c);\n };\n}\n\nexport function initObservers(\n o: observerParam,\n hooks: hooksParam = {},\n): listenerHandler {\n const currentWindow = o.doc.defaultView; // basically document.window\n if (!currentWindow) {\n return () => {\n //\n };\n }\n\n mergeHooks(o, hooks);\n let mutationObserver: MutationObserver | undefined;\n if (o.recordDOM) {\n mutationObserver = initMutationObserver(o, o.doc);\n }\n const mousemoveHandler = initMoveObserver(o);\n const mouseInteractionHandler = initMouseInteractionObserver(o);\n const scrollHandler = initScrollObserver(o);\n const viewportResizeHandler = initViewportResizeObserver(o, {\n win: currentWindow,\n });\n const inputHandler = initInputObserver(o);\n const mediaInteractionHandler = initMediaInteractionObserver(o);\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n let styleSheetObserver = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n let adoptedStyleSheetObserver = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n let styleDeclarationObserver = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n let fontObserver = () => {};\n if (o.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o, {\n win: currentWindow,\n });\n if (o.collectFonts) {\n fontObserver = initFontObserver(o);\n }\n }\n const selectionObserver = initSelectionObserver(o);\n const customElementObserver = initCustomElementObserver(o);\n\n // plugins\n const pluginHandlers: listenerHandler[] = [];\n for (const plugin of o.plugins) {\n pluginHandlers.push(\n plugin.observer(plugin.callback, currentWindow, plugin.options),\n );\n }\n\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver?.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\n\ntype CSSGroupingProp =\n | 'CSSGroupingRule'\n | 'CSSMediaRule'\n | 'CSSSupportsRule'\n | 'CSSConditionRule';\n\nfunction hasNestedCSSRule(prop: CSSGroupingProp): boolean {\n return typeof window[prop] !== 'undefined';\n}\n\nfunction canMonkeyPatchNestedCSSRule(prop: CSSGroupingProp): boolean {\n return Boolean(\n typeof window[prop] !== 'undefined' &&\n // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype &&\n 'insertRule' in window[prop].prototype &&\n 'deleteRule' in window[prop].prototype,\n );\n}\n","import type { ICrossOriginIframeMirror } from '@amplitude/rrweb-types';\nexport default class CrossOriginIframeMirror\n implements ICrossOriginIframeMirror\n{\n private iframeIdToRemoteIdMap: WeakMap<\n HTMLIFrameElement,\n Map\n > = new WeakMap();\n private iframeRemoteIdToIdMap: WeakMap<\n HTMLIFrameElement,\n Map\n > = new WeakMap();\n\n constructor(private generateIdFn: () => number) {}\n\n getId(\n iframe: HTMLIFrameElement,\n remoteId: number,\n idToRemoteMap?: Map,\n remoteToIdMap?: Map,\n ): number {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n\n getIds(iframe: HTMLIFrameElement, remoteId: number[]): number[] {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map((id) =>\n this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap),\n );\n }\n\n getRemoteId(\n iframe: HTMLIFrameElement,\n id: number,\n map?: Map,\n ): number {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n\n if (typeof id !== 'number') return id;\n\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n\n getRemoteIds(iframe: HTMLIFrameElement, ids: number[]): number[] {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n\n reset(iframe?: HTMLIFrameElement) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = new WeakMap();\n this.iframeRemoteIdToIdMap = new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n\n private getIdToRemoteIdMap(iframe: HTMLIFrameElement) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n\n private getRemoteIdToIdMap(iframe: HTMLIFrameElement) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\n","import type { Mirror, serializedNodeWithId } from '@amplitude/rrweb-snapshot';\nimport { NodeType, genId } from '@amplitude/rrweb-snapshot';\nimport type {\n eventWithTime,\n eventWithoutTime,\n mutationCallBack,\n} from '@amplitude/rrweb-types';\nimport { EventType, IncrementalSource } from '@amplitude/rrweb-types';\nimport type { CrossOriginIframeMessageEvent } from '../types';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror';\nimport type { StylesheetManager } from './stylesheet-manager';\n\nexport class IframeManager {\n private iframes: WeakMap = new WeakMap();\n private crossOriginIframeMap: WeakMap =\n new WeakMap();\n public crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\n public crossOriginIframeStyleMirror: CrossOriginIframeMirror;\n public crossOriginIframeRootIdMap: WeakMap =\n new WeakMap();\n private mirror: Mirror;\n private mutationCb: mutationCallBack;\n private wrappedEmit: (e: eventWithoutTime, isCheckout?: boolean) => void;\n private loadListener?: (iframeEl: HTMLIFrameElement) => unknown;\n private stylesheetManager: StylesheetManager;\n private recordCrossOriginIframes: boolean;\n\n constructor(options: {\n mirror: Mirror;\n mutationCb: mutationCallBack;\n stylesheetManager: StylesheetManager;\n recordCrossOriginIframes: boolean;\n wrappedEmit: (e: eventWithoutTime, isCheckout?: boolean) => void;\n }) {\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror,\n ),\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener('message', this.handleMessage.bind(this));\n }\n }\n\n public addIframe(iframeEl: HTMLIFrameElement) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n\n public addLoadListener(cb: (iframeEl: HTMLIFrameElement) => unknown) {\n this.loadListener = cb;\n }\n\n public attachIframe(\n iframeEl: HTMLIFrameElement,\n childSn: serializedNodeWithId,\n ) {\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn,\n },\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true,\n });\n\n // Receive messages (events) coming from cross-origin iframes that are nested in this same-origin iframe.\n if (this.recordCrossOriginIframes)\n iframeEl.contentWindow?.addEventListener(\n 'message',\n this.handleMessage.bind(this),\n );\n\n this.loadListener?.(iframeEl);\n\n if (\n iframeEl.contentDocument &&\n iframeEl.contentDocument.adoptedStyleSheets &&\n iframeEl.contentDocument.adoptedStyleSheets.length > 0\n )\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument),\n );\n }\n private handleMessage(message: MessageEvent | CrossOriginIframeMessageEvent) {\n const crossOriginMessageEvent = message as CrossOriginIframeMessageEvent;\n if (\n crossOriginMessageEvent.data.type !== 'rrweb' ||\n // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin\n )\n return;\n\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event,\n );\n\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout,\n );\n }\n\n private transformCrossOriginEvent(\n iframeEl: HTMLIFrameElement,\n e: eventWithTime,\n ): eventWithTime | false {\n switch (e.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n /**\n * Replaces the original id of the iframe with a new set of unique ids\n */\n this.replaceIdOnNode(e.data.node, iframeEl);\n const rootId = e.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e.data.node, rootId);\n return {\n timestamp: e.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e.data.node,\n },\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true,\n },\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e;\n }\n case EventType.Custom: {\n this.replaceIds(\n e.data.payload as {\n id?: unknown;\n parentId?: unknown;\n previousId?: unknown;\n nextId?: unknown;\n },\n iframeEl,\n ['id', 'parentId', 'previousId', 'nextId'],\n );\n return e;\n }\n case EventType.IncrementalSnapshot: {\n switch (e.data.source) {\n case IncrementalSource.Mutation: {\n e.data.adds.forEach((n) => {\n this.replaceIds(n, iframeEl, [\n 'parentId',\n 'nextId',\n 'previousId',\n ]);\n this.replaceIdOnNode(n.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n.node, rootId);\n });\n e.data.removes.forEach((n) => {\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\n });\n e.data.attributes.forEach((n) => {\n this.replaceIds(n, iframeEl, ['id']);\n });\n e.data.texts.forEach((n) => {\n this.replaceIds(n, iframeEl, ['id']);\n });\n return e;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, ['id']);\n });\n return e;\n }\n case IncrementalSource.ViewportResize: {\n // can safely ignore these events\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e.data, iframeEl, ['id']);\n return e;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e.data, iframeEl, ['id']);\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\n return e;\n }\n case IncrementalSource.Font: {\n // fine as-is no modification needed\n return e;\n }\n case IncrementalSource.Selection: {\n e.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, ['start', 'end']);\n });\n return e;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e.data, iframeEl, ['id']);\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\n e.data.styles?.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, ['styleId']);\n });\n return e;\n }\n }\n }\n }\n return false;\n }\n\n private replace>(\n iframeMirror: CrossOriginIframeMirror,\n obj: T,\n iframeEl: HTMLIFrameElement,\n keys: Array,\n ): T {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number') continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key] as number[],\n ) as T[keyof T];\n } else {\n (obj[key] as number) = iframeMirror.getId(iframeEl, obj[key] as number);\n }\n }\n\n return obj;\n }\n\n private replaceIds>(\n obj: T,\n iframeEl: HTMLIFrameElement,\n keys: Array,\n ): T {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n\n private replaceStyleIds>(\n obj: T,\n iframeEl: HTMLIFrameElement,\n keys: Array,\n ): T {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n\n private replaceIdOnNode(\n node: serializedNodeWithId,\n iframeEl: HTMLIFrameElement,\n ) {\n this.replaceIds(node, iframeEl, ['id', 'rootId']);\n if ('childNodes' in node) {\n node.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n\n private patchRootIdOnNode(node: serializedNodeWithId, rootId: number) {\n if (node.type !== NodeType.Document && !node.rootId) node.rootId = rootId;\n if ('childNodes' in node) {\n node.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\n","import type { Mirror } from '@amplitude/rrweb-snapshot';\nimport { isNativeShadowDom } from '@amplitude/rrweb-snapshot';\nimport type {\n SamplingStrategy,\n mutationCallBack,\n scrollCallback,\n} from '@amplitude/rrweb-types';\nimport type { MutationBufferParam } from '../types';\nimport { inDom, patch } from '../utils';\nimport {\n initAdoptedStyleSheetObserver,\n initMutationObserver,\n initScrollObserver,\n} from './observer';\nimport dom from '@amplitude/rrweb-utils';\n\ntype BypassOptions = Omit<\n MutationBufferParam,\n 'doc' | 'mutationCb' | 'mirror' | 'shadowDomManager'\n> & {\n sampling: SamplingStrategy;\n};\n\nexport class ShadowDomManager {\n private shadowDoms = new WeakSet();\n private mutationCb: mutationCallBack;\n private scrollCb: scrollCallback;\n private bypassOptions: BypassOptions;\n private mirror: Mirror;\n private restoreHandlers: (() => void)[] = [];\n\n constructor(options: {\n mutationCb: mutationCallBack;\n scrollCb: scrollCallback;\n bypassOptions: BypassOptions;\n mirror: Mirror;\n }) {\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n\n this.init();\n }\n\n public init() {\n this.reset();\n // Patch 'attachShadow' to observe newly added shadow doms.\n this.patchAttachShadow(Element, document);\n }\n\n public addShadowRoot(shadowRoot: ShadowRoot, doc: Document) {\n if (!isNativeShadowDom(shadowRoot)) return;\n if (this.shadowDoms.has(shadowRoot)) return;\n this.shadowDoms.add(shadowRoot);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this,\n },\n shadowRoot,\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot as unknown as Document,\n mirror: this.mirror,\n }),\n );\n // Defer this to avoid adoptedStyleSheet events being created before the full snapshot is created or attachShadow action is recorded.\n setTimeout(() => {\n if (\n shadowRoot.adoptedStyleSheets &&\n shadowRoot.adoptedStyleSheets.length > 0\n )\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot.adoptedStyleSheets,\n this.mirror.getId(dom.host(shadowRoot)),\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager,\n },\n shadowRoot,\n ),\n );\n }, 0);\n }\n\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n public observeAttachShadow(iframeElement: HTMLIFrameElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n\n this.patchAttachShadow(\n (\n iframeElement.contentWindow as Window & {\n Element: { prototype: Element };\n }\n ).Element,\n iframeElement.contentDocument,\n );\n }\n\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n private patchAttachShadow(\n element: {\n prototype: Element;\n },\n doc: Document,\n ) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n 'attachShadow',\n function (original: (init: ShadowRootInit) => ShadowRoot) {\n return function (this: Element, option: ShadowRootInit) {\n const sRoot = original.call(this, option);\n // For the shadow dom elements in the document, monitor their dom mutations.\n // For shadow dom elements that aren't in the document yet,\n // we start monitoring them once their shadow dom host is appended to the document.\n const shadowRootEl = dom.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n },\n ),\n );\n }\n\n public reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e) {\n //\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = new WeakSet();\n }\n}\n","/*\n * base64-arraybuffer 1.0.2 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import type { CanvasArg, IWindow } from '@amplitude/rrweb-types';\nimport { encode } from 'base64-arraybuffer';\n\n// TODO: unify with `replay/webgl.ts`\ntype CanvasVarMap = Map;\nconst canvasVarMap: Map = new Map();\nexport function variableListFor(ctx: RenderingContext, ctor: string) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor) as unknown[];\n}\n\nexport const saveWebGLVar = (\n value: unknown,\n win: IWindow,\n ctx: RenderingContext,\n): number | void => {\n if (\n !value ||\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object')\n )\n return;\n\n const name = value.constructor.name;\n const list = variableListFor(ctx, name);\n let index = list.indexOf(value);\n\n if (index === -1) {\n index = list.length;\n list.push(value);\n }\n return index;\n};\n\n// from webgl-recorder: https://github.com/evanw/webgl-recorder/blob/bef0e65596e981ee382126587e2dcbe0fc7748e2/webgl-recorder.js#L50-L77\nexport function serializeArg(\n value: unknown,\n win: IWindow,\n ctx: RenderingContext,\n): CanvasArg {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (\n value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Uint8Array ||\n value instanceof Uint16Array ||\n value instanceof Int16Array ||\n value instanceof Int8Array ||\n value instanceof Uint8ClampedArray\n ) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)],\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name as 'ArrayBuffer';\n const base64 = encode(value);\n\n return {\n rr_type: name,\n base64,\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength,\n ],\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src,\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = 'HTMLImageElement';\n // TODO: move `toDataURL` to web worker if possible\n const src = value.toDataURL(); // heavy on large canvas\n return {\n rr_type: name,\n src,\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\n };\n // } else if (value instanceof Blob) {\n // const name = value.constructor.name;\n // return {\n // rr_type: name,\n // data: [serializeArg(await value.arrayBuffer(), win, ctx)],\n // type: value.type,\n // };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n const name = value.constructor.name;\n const index = saveWebGLVar(value, win, ctx) as number;\n\n return {\n rr_type: name,\n index: index,\n };\n }\n\n return value as unknown as CanvasArg;\n}\n\nexport const serializeArgs = (\n args: Array,\n win: IWindow,\n ctx: RenderingContext,\n) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\n\nexport const isInstanceOfWebGLObject = (\n value: unknown,\n win: IWindow,\n): value is\n | WebGLActiveInfo\n | WebGLBuffer\n | WebGLFramebuffer\n | WebGLProgram\n | WebGLRenderbuffer\n | WebGLShader\n | WebGLShaderPrecisionFormat\n | WebGLTexture\n | WebGLUniformLocation\n | WebGLVertexArrayObject => {\n const webGLConstructorNames: string[] = [\n 'WebGLActiveInfo',\n 'WebGLBuffer',\n 'WebGLFramebuffer',\n 'WebGLProgram',\n 'WebGLRenderbuffer',\n 'WebGLShader',\n 'WebGLShaderPrecisionFormat',\n 'WebGLTexture',\n 'WebGLUniformLocation',\n 'WebGLVertexArrayObject',\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n 'WebGLVertexArrayObjectOES',\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name: string) => typeof win[name as keyof Window] === 'function',\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name: string) => value instanceof win[name as keyof Window],\n ),\n );\n};\n","import type { ICanvas } from '@amplitude/rrweb-snapshot';\nimport type {\n blockClass,\n IWindow,\n listenerHandler,\n} from '@amplitude/rrweb-types';\nimport { isBlocked, patch } from '../../../utils';\n\nfunction getNormalizedContextName(contextType: string) {\n return contextType === 'experimental-webgl' ? 'webgl' : contextType;\n}\n\nexport default function initCanvasContextObserver(\n win: IWindow,\n blockClass: blockClass,\n blockSelector: string | null,\n setPreserveDrawingBufferToTrue: boolean,\n): listenerHandler {\n const handlers: listenerHandler[] = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n 'getContext',\n function (\n original: (\n this: ICanvas | HTMLCanvasElement,\n contextType: string,\n ...args: Array\n ) => void,\n ) {\n return function (\n this: ICanvas | HTMLCanvasElement,\n contextType: string,\n ...args: Array\n ) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!('__context' in this)) (this as ICanvas).__context = ctxName;\n\n if (\n setPreserveDrawingBufferToTrue &&\n ['webgl', 'webgl2'].includes(ctxName)\n ) {\n if (args[0] && typeof args[0] === 'object') {\n const contextAttributes = args[0] as WebGLContextAttributes;\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true,\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n },\n );\n handlers.push(restoreHandler);\n } catch {\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\n","import {\n type blockClass,\n CanvasContext,\n type canvasManagerMutationCallback,\n type canvasMutationWithType,\n type IWindow,\n type listenerHandler,\n} from '@amplitude/rrweb-types';\nimport { hookSetter, isBlocked, patch } from '../../../utils';\nimport { saveWebGLVar, serializeArgs } from './serialize-args';\n\nfunction patchGLPrototype(\n prototype: WebGLRenderingContext | WebGL2RenderingContext,\n type: CanvasContext,\n cb: canvasManagerMutationCallback,\n blockClass: blockClass,\n blockSelector: string | null,\n win: IWindow,\n): listenerHandler[] {\n const handlers: listenerHandler[] = [];\n\n const props = Object.getOwnPropertyNames(prototype);\n\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n 'isContextLost',\n 'canvas',\n 'drawingBufferWidth',\n 'drawingBufferHeight',\n ].includes(prop)\n ) {\n // skip read only propery/functions\n continue;\n }\n try {\n if (typeof prototype[prop as keyof typeof prototype] !== 'function') {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function (\n original: (this: typeof prototype, ...args: Array) => void,\n ) {\n return function (this: typeof prototype, ...args: Array) {\n const result = original.apply(this, args);\n saveWebGLVar(result, win, this);\n if (\n 'tagName' in this.canvas &&\n !isBlocked(this.canvas, blockClass, blockSelector, true)\n ) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation: canvasMutationWithType = {\n type,\n property: prop,\n args: recordArgs,\n };\n // TODO: this could potentially also be an OffscreenCanvas as well as HTMLCanvasElement\n cb(this.canvas, mutation);\n }\n\n return result;\n };\n },\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v) {\n // TODO: this could potentially also be an OffscreenCanvas as well as HTMLCanvasElement\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n cb(this.canvas as HTMLCanvasElement, {\n type,\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n }\n\n return handlers;\n}\n\nexport default function initCanvasWebGLMutationObserver(\n cb: canvasManagerMutationCallback,\n win: IWindow,\n blockClass: blockClass,\n blockSelector: string | null,\n): listenerHandler {\n const handlers: listenerHandler[] = [];\n\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win,\n ),\n );\n\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win,\n ),\n );\n }\n\n return () => {\n handlers.forEach((h) => h());\n };\n}\n","import type {\n DataURLOptions,\n ICanvas,\n Mirror,\n} from '@amplitude/rrweb-snapshot';\nimport type {\n CanvasArg,\n IWindow,\n blockClass,\n canvasManagerMutationCallback,\n canvasMutationCallback,\n canvasMutationCommand,\n canvasMutationWithType,\n listenerHandler,\n} from '@amplitude/rrweb-types';\nimport { CanvasContext } from '@amplitude/rrweb-types';\nimport { isBlocked } from '../../../utils';\nimport initCanvas2DMutationObserver from './2d';\nimport initCanvasContextObserver from './canvas';\nimport initCanvasWebGLMutationObserver from './webgl';\nimport ImageBitmapDataURLWorker from '../../workers/image-bitmap-data-url-worker?worker&inline';\nimport type { ImageBitmapDataURLRequestWorker } from '../../workers/image-bitmap-data-url-worker';\n\nexport type RafStamps = { latestId: number; invokeId: number | null };\n\ntype pendingCanvasMutationsMap = Map<\n HTMLCanvasElement,\n canvasMutationWithType[]\n>;\n\nexport class CanvasManager {\n private pendingCanvasMutations: pendingCanvasMutationsMap = new Map();\n private rafStamps: RafStamps = { latestId: 0, invokeId: null };\n private mirror: Mirror;\n\n private mutationCb: canvasMutationCallback;\n private resetObservers?: listenerHandler;\n private frozen = false;\n private locked = false;\n\n public reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n\n public freeze() {\n this.frozen = true;\n }\n\n public unfreeze() {\n this.frozen = false;\n }\n\n public lock() {\n this.locked = true;\n }\n\n public unlock() {\n this.locked = false;\n }\n\n constructor(options: {\n recordCanvas: boolean;\n mutationCb: canvasMutationCallback;\n win: IWindow;\n blockClass: blockClass;\n blockSelector: string | null;\n mirror: Mirror;\n sampling?: 'all' | number;\n dataURLOptions: DataURLOptions;\n }) {\n const {\n sampling = 'all',\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions,\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n\n if (recordCanvas && sampling === 'all')\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === 'number')\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions,\n });\n }\n\n private processMutation: canvasManagerMutationCallback = (\n target,\n mutation,\n ) => {\n const newFrame =\n this.rafStamps.invokeId &&\n this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n\n this.pendingCanvasMutations.get(target)!.push(mutation);\n };\n\n private initCanvasFPSObserver(\n fps: number,\n win: IWindow,\n blockClass: blockClass,\n blockSelector: string | null,\n options: {\n dataURLOptions: DataURLOptions;\n },\n ) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true,\n );\n const snapshotInProgressMap: Map = new Map();\n const worker =\n new ImageBitmapDataURLWorker() as ImageBitmapDataURLRequestWorker;\n worker.onmessage = (e) => {\n const { id } = e.data;\n snapshotInProgressMap.set(id, false);\n\n if (!('base64' in e.data)) return;\n\n const { base64, type, width, height } = e.data;\n this.mutationCb({\n id,\n type: CanvasContext['2D'],\n commands: [\n {\n property: 'clearRect', // wipe canvas\n args: [0, 0, width, height],\n },\n {\n property: 'drawImage', // draws (semi-transparent) image\n args: [\n {\n rr_type: 'ImageBitmap',\n args: [\n {\n rr_type: 'Blob',\n data: [{ rr_type: 'ArrayBuffer', base64 }],\n type,\n },\n ],\n } as CanvasArg,\n 0,\n 0,\n ],\n },\n ],\n });\n };\n\n const timeBetweenSnapshots = 1000 / fps;\n let lastSnapshotTime = 0;\n let rafId: number;\n\n const getCanvas = (): HTMLCanvasElement[] => {\n const matchedCanvas: HTMLCanvasElement[] = [];\n win.document.querySelectorAll('canvas').forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n\n const takeCanvasSnapshots = (timestamp: DOMHighResTimeStamp) => {\n if (\n lastSnapshotTime &&\n timestamp - lastSnapshotTime < timeBetweenSnapshots\n ) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n\n getCanvas()\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n .forEach(async (canvas: HTMLCanvasElement) => {\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n\n // The browser throws if the canvas is 0 in size\n // Uncaught (in promise) DOMException: Failed to execute 'createImageBitmap' on 'Window': The source image width is 0.\n // Assuming the same happens with height\n if (canvas.width === 0 || canvas.height === 0) return;\n\n snapshotInProgressMap.set(id, true);\n if (['webgl', 'webgl2'].includes((canvas as ICanvas).__context)) {\n // if the canvas hasn't been modified recently,\n // its contents won't be in memory and `createImageBitmap`\n // will return a transparent imageBitmap\n\n const context = canvas.getContext((canvas as ICanvas).__context) as\n | WebGLRenderingContext\n | WebGL2RenderingContext\n | null;\n if (\n context?.getContextAttributes()?.preserveDrawingBuffer === false\n ) {\n // Hack to load canvas back into memory so `createImageBitmap` can grab it's contents.\n // Context: https://twitter.com/Juice10/status/1499775271758704643\n // Preferably we set `preserveDrawingBuffer` to true, but that's not always possible,\n // especially when canvas is loaded before rrweb.\n // This hack can wipe the background color of the canvas in the (unlikely) event that\n // the canvas background was changed but clear was not called directly afterwards.\n // Example of this hack having negative side effect: https://visgl.github.io/react-map-gl/examples/layers\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions,\n },\n [bitmap],\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n\n private initCanvasMutationObserver(\n win: IWindow,\n blockClass: blockClass,\n blockSelector: string | null,\n ): void {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false,\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector,\n );\n\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector,\n );\n\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n\n private startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n\n private startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp: DOMHighResTimeStamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values: canvasMutationCommand[], canvas: HTMLCanvasElement) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n },\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n\n flushPendingCanvasMutationFor(canvas: HTMLCanvasElement, id: number) {\n if (this.frozen || this.locked) {\n return;\n }\n\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n\n const values = valuesWithType.map((value) => {\n const { type, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n\n this.mutationCb({ id, type, commands: values });\n\n this.pendingCanvasMutations.delete(canvas);\n }\n}\n","import {\n type blockClass,\n CanvasContext,\n type canvasManagerMutationCallback,\n type IWindow,\n type listenerHandler,\n} from '@amplitude/rrweb-types';\nimport { hookSetter, isBlocked, patch } from '../../../utils';\nimport { serializeArgs } from './serialize-args';\n\nexport default function initCanvas2DMutationObserver(\n cb: canvasManagerMutationCallback,\n win: IWindow,\n blockClass: blockClass,\n blockSelector: string | null,\n): listenerHandler {\n const handlers: listenerHandler[] = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype,\n );\n for (const prop of props2D) {\n try {\n if (\n typeof win.CanvasRenderingContext2D.prototype[\n prop as keyof CanvasRenderingContext2D\n ] !== 'function'\n ) {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function (\n original: (\n this: CanvasRenderingContext2D,\n ...args: unknown[]\n ) => void,\n ) {\n return function (\n this: CanvasRenderingContext2D,\n ...args: Array\n ) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n // Using setTimeout as toDataURL can be heavy\n // and we'd rather not block the main thread\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: recordArgs,\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n },\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: [v],\n setter: true,\n });\n },\n },\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\n","import type {\n elementNode,\n serializedNodeWithId,\n} from '@amplitude/rrweb-snapshot';\nimport { stringifyRule } from '@amplitude/rrweb-snapshot';\nimport type {\n adoptedStyleSheetCallback,\n adoptedStyleSheetParam,\n attributeMutation,\n mutationCallBack,\n} from '@amplitude/rrweb-types';\nimport { StyleSheetMirror } from '../utils';\n\nexport class StylesheetManager {\n private trackedLinkElements: WeakSet = new WeakSet();\n private mutationCb: mutationCallBack;\n private adoptedStyleSheetCb: adoptedStyleSheetCallback;\n public styleMirror = new StyleSheetMirror();\n\n constructor(options: {\n mutationCb: mutationCallBack;\n adoptedStyleSheetCb: adoptedStyleSheetCallback;\n }) {\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n\n public attachLinkElement(\n linkEl: HTMLLinkElement,\n childSn: serializedNodeWithId,\n ) {\n if ('_cssText' in (childSn as elementNode).attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: (childSn as elementNode)\n .attributes as attributeMutation['attributes'],\n },\n ],\n });\n\n this.trackLinkElement(linkEl);\n }\n\n public trackLinkElement(linkEl: HTMLLinkElement) {\n if (this.trackedLinkElements.has(linkEl)) return;\n\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n\n public adoptStyleSheets(\n sheets: CSSStyleSheet[] | readonly CSSStyleSheet[],\n hostId: number,\n ) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData: adoptedStyleSheetParam = {\n id: hostId,\n styleIds: [] as number[],\n };\n const styles: NonNullable = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\n rule: stringifyRule(r, sheet.href),\n index,\n })),\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n\n public reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = new WeakSet();\n }\n\n // TODO: take snapshot on stylesheet reload by applying event listener\n private trackStylesheetInLinkElement(_linkEl: HTMLLinkElement) {\n // linkEl.addEventListener('load', () => {\n // // re-loaded, maybe take another snapshot?\n // });\n }\n}\n","import type MutationBuffer from './mutation';\n\n/**\n * Keeps a log of nodes that could show up in multiple mutation buffer but shouldn't be handled twice.\n */\nexport default class ProcessedNodeManager {\n private nodeMap: WeakMap> = new WeakMap();\n\n private active = false;\n\n public inOtherBuffer(node: Node, thisBuffer: MutationBuffer) {\n const buffers = this.nodeMap.get(node);\n return (\n buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer)\n );\n }\n\n public add(node: Node, buffer: MutationBuffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\n }\n\n public destroy() {\n // cleanup no longer needed\n }\n}\n","import {\n snapshot,\n type MaskInputOptions,\n type SlimDOMOptions,\n createMirror,\n} from '@amplitude/rrweb-snapshot';\nimport { initObservers, mutationBuffers } from './observer';\nimport {\n on,\n getWindowWidth,\n getWindowHeight,\n getWindowScroll,\n polyfill,\n hasShadowRoot,\n isSerializedIframe,\n isSerializedStylesheet,\n nowTimestamp,\n} from '../utils';\nimport type { recordOptions } from '../types';\nimport {\n EventType,\n type eventWithoutTime,\n type eventWithTime,\n IncrementalSource,\n type listenerHandler,\n type mutationCallbackParam,\n type scrollCallback,\n type canvasMutationParam,\n type adoptedStyleSheetParam,\n} from '@amplitude/rrweb-types';\nimport type { CrossOriginIframeMessageEventContent } from '../types';\nimport { IframeManager } from './iframe-manager';\nimport { ShadowDomManager } from './shadow-dom-manager';\nimport { CanvasManager } from './observers/canvas/canvas-manager';\nimport { StylesheetManager } from './stylesheet-manager';\nimport ProcessedNodeManager from './processed-node-manager';\nimport {\n callbackWrapper,\n registerErrorHandler,\n unregisterErrorHandler,\n} from './error-handler';\nimport dom from '@amplitude/rrweb-utils';\n\nlet wrappedEmit!: (e: eventWithoutTime, isCheckout?: boolean) => void;\n\nlet takeFullSnapshot!: (isCheckout?: boolean) => void;\nlet canvasManager!: CanvasManager;\nlet recording = false;\n\n// Multiple tools (i.e. MooTools, Prototype.js) override Array.from and drop support for the 2nd parameter\n// Try to pull a clean implementation from a newly created iframe\ntry {\n if (Array.from([1], (x) => x * 2)[0] !== 2) {\n const cleanFrame = document.createElement('iframe');\n document.body.appendChild(cleanFrame);\n // eslint-disable-next-line @typescript-eslint/unbound-method -- Array.from is static and doesn't rely on binding\n Array.from = cleanFrame.contentWindow?.Array.from || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug('Unable to override Array.from', err);\n}\n\nconst mirror = createMirror();\nexport function record(\n options: recordOptions = {},\n): listenerHandler | undefined {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = 'rr-block',\n blockSelector = null,\n ignoreClass = 'rr-ignore',\n ignoreSelector = null,\n maskTextClass = 'rr-mask',\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === 'DOMContentLoaded'\n ? options.recordAfter\n : 'load',\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = new Set([]),\n errorHandler,\n } = options;\n\n registerErrorHandler(errorHandler);\n\n const inEmittingFrame = recordCrossOriginIframes\n ? window.parent === window\n : true;\n\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n // throws if parent is cross-origin\n if (window.parent.document) {\n passEmitsToParent = false; // if parent is same origin we collect iframe events from the parent\n }\n } catch (e) {\n passEmitsToParent = true;\n }\n }\n\n // runtime checks for user options\n if (inEmittingFrame && !emit) {\n throw new Error('emit function is required');\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n /* no-op since in this case we don't need to record anything from this frame in particular */\n };\n }\n // move departed options to new options\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n sampling.mousemove = mousemoveWait;\n }\n\n // reset mirror in case `record` this was called earlier\n mirror.reset();\n\n const maskInputOptions: MaskInputOptions =\n maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true,\n }\n : _maskInputOptions !== undefined\n ? _maskInputOptions\n : { password: true };\n\n const slimDOMOptions: SlimDOMOptions =\n _slimDOMOptions === true || _slimDOMOptions === 'all'\n ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === 'all',\n headMetaDescKeywords: _slimDOMOptions === 'all',\n headTitleMutations: _slimDOMOptions === 'all',\n }\n : _slimDOMOptions\n ? _slimDOMOptions\n : {};\n\n polyfill();\n\n let lastFullSnapshotEvent: eventWithTime;\n let incrementalSnapshotCount = 0;\n\n const eventProcessor = (e: eventWithTime): T => {\n for (const plugin of plugins || []) {\n if (plugin.eventProcessor) {\n e = plugin.eventProcessor(e);\n }\n }\n if (\n packFn &&\n // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent\n ) {\n e = packFn(e) as unknown as eventWithTime;\n }\n return e as unknown as T;\n };\n wrappedEmit = (r: eventWithoutTime, isCheckout?: boolean) => {\n const e = r as eventWithTime;\n e.timestamp = nowTimestamp();\n if (\n mutationBuffers[0]?.isFrozen() &&\n e.type !== EventType.FullSnapshot &&\n !(\n e.type === EventType.IncrementalSnapshot &&\n e.data.source === IncrementalSource.Mutation\n )\n ) {\n // we've got a user initiated event so first we need to apply\n // all DOM changes that have been buffering during paused state\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n\n if (inEmittingFrame) {\n emit?.(eventProcessor(e), isCheckout);\n } else if (passEmitsToParent) {\n const message: CrossOriginIframeMessageEventContent = {\n type: 'rrweb',\n event: eventProcessor(e),\n origin: window.location.origin,\n isCheckout,\n };\n window.parent.postMessage(message, '*');\n }\n\n if (e.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e;\n incrementalSnapshotCount = 0;\n } else if (e.type === EventType.IncrementalSnapshot) {\n // attach iframe should be considered as full snapshot\n if (\n e.data.source === IncrementalSource.Mutation &&\n e.data.isAttachIframe\n ) {\n return;\n }\n\n incrementalSnapshotCount++;\n const exceedCount =\n checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime =\n checkoutEveryNms &&\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot(true);\n }\n }\n };\n\n const wrappedMutationEmit = (m: mutationCallbackParam) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m,\n },\n });\n };\n const wrappedScrollEmit: scrollCallback = (p) =>\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p,\n },\n });\n const wrappedCanvasMutationEmit = (p: canvasMutationParam) =>\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p,\n },\n });\n\n const wrappedAdoptedStyleSheetEmit = (a: adoptedStyleSheetParam) =>\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a,\n },\n });\n\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\n });\n\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager: stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit,\n });\n\n /**\n * Exposes mirror to the plugins\n */\n for (const plugin of plugins || []) {\n if (plugin.getMirror)\n plugin.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror:\n iframeManager.crossOriginIframeStyleMirror,\n });\n }\n\n const processedNodeManager = new ProcessedNodeManager();\n\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions,\n });\n\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager,\n },\n mirror,\n });\n\n takeFullSnapshot = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight(),\n },\n },\n isCheckout,\n );\n\n // When we take a full snapshot, old tracked StyleSheets need to be removed.\n stylesheetManager.reset();\n\n shadowDomManager.init();\n\n mutationBuffers.forEach((buf) => buf.lock()); // don't allow any mirror modifications during snapshotting\n const node = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n) => {\n if (isSerializedIframe(n, mirror)) {\n iframeManager.addIframe(n as HTMLIFrameElement);\n }\n if (isSerializedStylesheet(n, mirror)) {\n stylesheetManager.trackLinkElement(n as HTMLLinkElement);\n }\n if (hasShadowRoot(n)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n shadowDomManager.addShadowRoot(dom.shadowRoot(n as Node)!, document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn,\n });\n\n if (!node) {\n return console.warn('Failed to snapshot the document');\n }\n\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node,\n initialOffset: getWindowScroll(window),\n },\n },\n isCheckout,\n );\n mutationBuffers.forEach((buf) => buf.unlock()); // generate & emit any mutations that happened during snapshotting, as can now apply against the newly built mirror\n\n // Some old browsers don't support adoptedStyleSheets.\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document),\n );\n };\n\n try {\n const handlers: listenerHandler[] = [];\n\n const observe = (doc: Document) => {\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) =>\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions,\n },\n }),\n mouseInteractionCb: (d) =>\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d,\n },\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) =>\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d,\n },\n }),\n inputCb: (v) =>\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v,\n },\n }),\n mediaInteractionCb: (p) =>\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p,\n },\n }),\n styleSheetRuleCb: (r) =>\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r,\n },\n }),\n styleDeclarationCb: (r) =>\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r,\n },\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) =>\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p,\n },\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p,\n },\n });\n },\n customElementCb: (c) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c,\n },\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins:\n plugins\n ?.filter((p) => p.observer)\n ?.map((p) => ({\n observer: p.observer!,\n options: p.options,\n callback: (payload: object) =>\n wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload,\n },\n }),\n })) || [],\n },\n hooks,\n );\n };\n\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument!));\n } catch (error) {\n // TODO: handle internal error\n console.warn(error);\n }\n });\n\n const init = () => {\n takeFullSnapshot();\n handlers.push(observe(document));\n recording = true;\n };\n if (\n document.readyState === 'interactive' ||\n document.readyState === 'complete'\n ) {\n init();\n } else {\n handlers.push(\n on('DOMContentLoaded', () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {},\n });\n if (recordAfter === 'DOMContentLoaded') init();\n }),\n );\n handlers.push(\n on(\n 'load',\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {},\n });\n if (recordAfter === 'load') init();\n },\n window,\n ),\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n // TODO: handle internal error\n console.warn(error);\n }\n}\n\nrecord.addCustomEvent = (tag: string, payload: T) => {\n if (!recording) {\n throw new Error('please add custom event after start recording');\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload,\n },\n });\n};\n\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\n\nrecord.takeFullSnapshot = (isCheckout?: boolean) => {\n if (!recording) {\n throw new Error('please take full snapshot after start recording');\n }\n takeFullSnapshot(isCheckout);\n};\n\nrecord.mirror = mirror;\n\nexport default record;\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n","/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nfunction t(t,n){var e=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!e)return t;var r,o,i=e.call(t),a=[];try{for(;(void 0===n||n-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(e=i.return)&&e.call(i)}finally{if(o)throw o.error}}return a}var n;!function(t){t[t.NotStarted=0]=\"NotStarted\",t[t.Running=1]=\"Running\",t[t.Stopped=2]=\"Stopped\"}(n||(n={}));var e={type:\"xstate.init\"};function r(t){return void 0===t?[]:[].concat(t)}function o(t){return{type:\"xstate.assign\",assignment:t}}function i(t,n){return\"string\"==typeof(t=\"string\"==typeof t&&n&&n[t]?n[t]:t)?{type:t}:\"function\"==typeof t?{type:t.name,exec:t}:t}function a(t){return function(n){return t===n}}function u(t){return\"string\"==typeof t?{type:t}:t}function c(t,n){return{value:t,context:n,actions:[],changed:!1,matches:a(t)}}function f(t,n,e){var r=n,o=!1;return[t.filter((function(t){if(\"xstate.assign\"===t.type){o=!0;var n=Object.assign({},r);return\"function\"==typeof t.assignment?n=t.assignment(r,e):Object.keys(t.assignment).forEach((function(o){n[o]=\"function\"==typeof t.assignment[o]?t.assignment[o](r,e):t.assignment[o]})),r=n,!1}return!0})),r,o]}function s(n,o){void 0===o&&(o={});var s=t(f(r(n.states[n.initial].entry).map((function(t){return i(t,o.actions)})),n.context,e),2),l=s[0],v=s[1],y={config:n,_options:o,initialState:{value:n.initial,actions:l,context:v,matches:a(n.initial)},transition:function(e,o){var s,l,v=\"string\"==typeof e?{value:e,context:n.context}:e,p=v.value,g=v.context,d=u(o),x=n.states[p];if(x.on){var m=r(x.on[d.type]);try{for(var h=function(t){var n=\"function\"==typeof Symbol&&Symbol.iterator,e=n&&t[n],r=0;if(e)return e.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(n?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}(m),b=h.next();!b.done;b=h.next()){var S=b.value;if(void 0===S)return c(p,g);var w=\"string\"==typeof S?{target:S}:S,j=w.target,E=w.actions,R=void 0===E?[]:E,N=w.cond,O=void 0===N?function(){return!0}:N,_=void 0===j,k=null!=j?j:p,T=n.states[k];if(O(g,d)){var q=t(f((_?r(R):[].concat(x.exit,R,T.entry).filter((function(t){return t}))).map((function(t){return i(t,y._options.actions)})),g,d),3),z=q[0],A=q[1],B=q[2],C=null!=j?j:p;return{value:C,context:A,actions:z,changed:j!==p||z.length>0||B,matches:a(C)}}}}catch(t){s={error:t}}finally{try{b&&!b.done&&(l=h.return)&&l.call(h)}finally{if(s)throw s.error}}}return c(p,g)}};return y}var l=function(t,n){return t.actions.forEach((function(e){var r=e.exec;return r&&r(t.context,n)}))};function v(t){var r=t.initialState,o=n.NotStarted,i=new Set,c={_machine:t,send:function(e){o===n.Running&&(r=t.transition(r,e),l(r,u(e)),i.forEach((function(t){return t(r)})))},subscribe:function(t){return i.add(t),t(r),{unsubscribe:function(){return i.delete(t)}}},start:function(i){if(i){var u=\"object\"==typeof i?i:{context:t.config.context,value:i};r={value:u.value,actions:[],context:u.context,matches:a(u.value)}}return o=n.Running,l(r,e),c},stop:function(){return o=n.Stopped,i.clear(),c},get state(){return r},get status(){return o}};return c}export{n as InterpreterStatus,o as assign,s as createMachine,v as interpret};\n","import record from './record';\nimport {\n Replayer,\n type playerConfig,\n type PlayerMachineState,\n type SpeedMachineState,\n} from './replay';\nimport canvasMutation from './replay/canvas';\nimport * as utils from './utils';\nimport { _mirror } from './utils';\n\nexport {\n EventType,\n IncrementalSource,\n MouseInteractions,\n ReplayerEvents,\n type eventWithTime,\n} from '@amplitude/rrweb-types';\n\n// exports style.css from replay\nimport './replay/styles/style.css';\n\nexport type { recordOptions, ReplayPlugin } from './types';\n\nconst { addCustomEvent } = record;\nconst { freezePage } = record;\nconst { takeFullSnapshot } = record;\n\nexport {\n Replayer,\n addCustomEvent,\n freezePage,\n takeFullSnapshot,\n type playerConfig,\n type PlayerMachineState,\n type SpeedMachineState,\n canvasMutation,\n _mirror as mirror,\n record,\n utils,\n};\n","import { BaseTransport } from '@amplitude/analytics-core';\nimport { Config, ServerZone, Status } from '@amplitude/analytics-types';\nimport {\n CreateRemoteConfigFetch,\n RemoteConfigFetch as IRemoteConfigFetch,\n RemoteConfigAPIResponse,\n RemoteConfigMetric,\n} from './types';\n\nconst UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, remote config fetch failed';\nconst SUCCESS_REMOTE_CONFIG = 'Remote config successfully fetched';\nconst MAX_RETRIES_EXCEEDED_MESSAGE = 'Remote config fetch rejected due to exceeded retry count';\nconst TIMEOUT_MESSAGE = 'Remote config fetch rejected due to timeout after 5 seconds';\nconst UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\n\nexport const REMOTE_CONFIG_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexport const REMOTE_CONFIG_SERVER_URL_STAGING = 'https://sr-client-cfg.stag2.amplitude.com/config';\nexport const REMOTE_CONFIG_SERVER_URL_EU = 'https://sr-client-cfg.eu.amplitude.com/config';\n\nexport class RemoteConfigFetch\n implements IRemoteConfigFetch\n{\n localConfig: Config;\n retryTimeout = 1000;\n attempts = 0;\n lastFetchedSessionId: number | string | undefined;\n sessionTargetingMatch = false;\n configKeys: string[];\n metrics: RemoteConfigMetric = {};\n\n constructor({ localConfig, configKeys }: { localConfig: Config; configKeys: string[] }) {\n this.localConfig = localConfig;\n this.configKeys = configKeys;\n }\n\n getRemoteConfig = async (\n configNamespace: string,\n key: K,\n sessionId?: number | string,\n ): Promise => {\n const fetchStartTime = Date.now();\n // Finally fetch via API\n const configAPIResponse = await this.fetchWithTimeout(sessionId);\n if (configAPIResponse) {\n const remoteConfig = configAPIResponse.configs && configAPIResponse.configs[configNamespace];\n if (remoteConfig) {\n this.metrics.fetchTimeAPISuccess = Date.now() - fetchStartTime;\n return remoteConfig[key];\n }\n }\n this.metrics.fetchTimeAPIFail = Date.now() - fetchStartTime;\n return undefined;\n };\n\n getServerUrl() {\n if (this.localConfig.serverZone === ServerZone.STAGING) {\n return REMOTE_CONFIG_SERVER_URL_STAGING;\n }\n\n if (this.localConfig.serverZone === ServerZone.EU) {\n return REMOTE_CONFIG_SERVER_URL_EU;\n }\n\n return REMOTE_CONFIG_SERVER_URL;\n }\n\n fetchWithTimeout = async (sessionId?: number | string): Promise | void> => {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 5000);\n const remoteConfig = await this.fetchRemoteConfig(controller.signal, sessionId);\n clearTimeout(timeoutId);\n return remoteConfig;\n };\n\n fetchRemoteConfig = async (\n signal: AbortController['signal'],\n sessionId?: number | string,\n ): Promise | void> => {\n if (sessionId === this.lastFetchedSessionId && this.attempts >= this.localConfig.flushMaxRetries) {\n return this.completeRequest({ err: MAX_RETRIES_EXCEEDED_MESSAGE });\n } else if (signal.aborted) {\n return this.completeRequest({ err: TIMEOUT_MESSAGE });\n } else if (sessionId !== this.lastFetchedSessionId) {\n this.lastFetchedSessionId = sessionId;\n this.attempts = 0;\n }\n\n try {\n const urlParams = new URLSearchParams({\n api_key: this.localConfig.apiKey,\n });\n for (const configKey of this.configKeys) {\n urlParams.append('config_keys', configKey);\n }\n if (sessionId) {\n urlParams.set('session_id', String(sessionId));\n }\n const options: RequestInit = {\n headers: {\n Accept: '*/*',\n },\n method: 'GET',\n };\n const serverUrl = `${this.getServerUrl()}?${urlParams.toString()}`;\n this.attempts += 1;\n const res = await fetch(serverUrl, { ...options, signal: signal });\n if (res === null) {\n return this.completeRequest({ err: UNEXPECTED_ERROR_MESSAGE });\n }\n const parsedStatus = new BaseTransport().buildStatus(res.status);\n switch (parsedStatus) {\n case Status.Success:\n this.attempts = 0;\n return this.parseAndStoreConfig(res);\n case Status.Failed:\n return this.retryFetch(signal, sessionId);\n default:\n return this.completeRequest({ err: UNEXPECTED_NETWORK_ERROR_MESSAGE });\n }\n } catch (e) {\n const knownError = e as Partial;\n if (signal.aborted) {\n return this.completeRequest({ err: TIMEOUT_MESSAGE });\n }\n return this.completeRequest({ err: knownError.message ?? UNEXPECTED_ERROR_MESSAGE });\n }\n };\n\n retryFetch = async (\n signal: AbortController['signal'],\n sessionId?: number | string,\n ): Promise | void> => {\n await new Promise((resolve) => setTimeout(resolve, this.attempts * this.retryTimeout));\n return this.fetchRemoteConfig(signal, sessionId);\n };\n\n parseAndStoreConfig = async (res: Response): Promise> => {\n const remoteConfig: RemoteConfigAPIResponse =\n (await res.json()) as RemoteConfigAPIResponse;\n this.completeRequest({ success: SUCCESS_REMOTE_CONFIG });\n return remoteConfig;\n };\n\n completeRequest({ err, success }: { err?: string; success?: string }) {\n if (err) {\n throw new Error(err);\n } else if (success) {\n this.localConfig.loggerProvider.log(success);\n }\n }\n}\n\nexport const createRemoteConfigFetch: CreateRemoteConfigFetch = async <\n RemoteConfig extends { [Property in keyof RemoteConfig]: RemoteConfig[Property] },\n>({\n localConfig,\n configKeys,\n}: {\n localConfig: Config;\n configKeys: string[];\n}) => {\n return new RemoteConfigFetch({ localConfig, configKeys });\n};\n","import * as remoteConfigFetch from './remote-config';\nexport { RemoteConfigFetch } from './types';\nexport const { createRemoteConfigFetch } = remoteConfigFetch;\n","import type {\n idNodeMap,\n MaskInputFn,\n MaskInputOptions,\n nodeMetaMap,\n IMirror,\n serializedNodeWithId,\n serializedNode,\n documentNode,\n documentTypeNode,\n textNode,\n elementNode,\n} from './types';\nimport dom from '@amplitude/rrweb-utils';\nimport { NodeType } from './types';\n\nexport function isElement(n: Node): n is Element {\n return n.nodeType === n.ELEMENT_NODE;\n}\n\nexport function isShadowRoot(n: Node): n is ShadowRoot {\n const hostEl: Element | null =\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n (n && 'host' in n && 'mode' in n && dom.host(n as ShadowRoot)) || null;\n return Boolean(\n hostEl && 'shadowRoot' in hostEl && dom.shadowRoot(hostEl) === n,\n );\n}\n\n/**\n * To fix the issue https://github.com/rrweb-io/rrweb/issues/933.\n * Some websites use polyfilled shadow dom and this function is used to detect this situation.\n */\nexport function isNativeShadowDom(shadowRoot: ShadowRoot): boolean {\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\n}\n\n/**\n * Browsers sometimes destructively modify the css rules they receive.\n * This function tries to rectify the modifications the browser made to make it more cross platform compatible.\n * @param cssText - output of `CSSStyleRule.cssText`\n * @returns `cssText` with browser inconsistencies fixed.\n */\nfunction fixBrowserCompatibilityIssuesInCSS(cssText: string): string {\n /**\n * Chrome outputs `-webkit-background-clip` as `background-clip` in `CSSStyleRule.cssText`.\n * But then Chrome ignores `background-clip` as css input.\n * Re-introduce `-webkit-background-clip` to fix this issue.\n */\n if (\n cssText.includes(' background-clip: text;') &&\n !cssText.includes(' -webkit-background-clip: text;')\n ) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n ' -webkit-background-clip: text; background-clip: text;',\n );\n }\n return cssText;\n}\n\n// Remove this declaration once typescript has added `CSSImportRule.supportsText` to the lib.\ndeclare interface CSSImportRule extends CSSRule {\n readonly href: string;\n readonly layerName: string | null;\n readonly media: MediaList;\n readonly styleSheet: CSSStyleSheet;\n /**\n * experimental API, currently only supported in firefox\n * https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule/supportsText\n */\n readonly supportsText?: string | null;\n}\n\n/**\n * Browsers sometimes incorrectly escape `@import` on `.cssText` statements.\n * This function tries to correct the escaping.\n * more info: https://bugs.chromium.org/p/chromium/issues/detail?id=1472259\n * @param cssImportRule\n * @returns `cssText` with browser inconsistencies fixed, or null if not applicable.\n */\nexport function escapeImportStatement(rule: CSSImportRule): string {\n const { cssText } = rule;\n if (cssText.split('\"').length < 3) return cssText;\n\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\n if (rule.layerName === '') {\n statement.push(`layer`);\n } else if (rule.layerName) {\n statement.push(`layer(${rule.layerName})`);\n }\n if (rule.supportsText) {\n statement.push(`supports(${rule.supportsText})`);\n }\n if (rule.media.length) {\n statement.push(rule.media.mediaText);\n }\n return statement.join(' ') + ';';\n}\n\nexport function stringifyStylesheet(s: CSSStyleSheet): string | null {\n try {\n const rules = s.rules || s.cssRules;\n if (!rules) {\n return null;\n }\n const stringifiedRules = Array.from(rules, (rule: CSSRule) =>\n stringifyRule(rule, s.href),\n ).join('');\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\n\nexport function stringifyRule(rule: CSSRule, sheetHref: string | null): string {\n if (isCSSImportRule(rule)) {\n let importStringified;\n try {\n importStringified =\n // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule.styleSheet) ||\n // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule);\n } catch (error) {\n importStringified = rule.cssText;\n }\n if (rule.styleSheet.href) {\n // url()s within the imported stylesheet are relative to _that_ sheet's href\n return absolutifyURLs(importStringified, rule.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule.cssText;\n if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n // Safari does not escape selectors with : properly\n // see https://bugs.webkit.org/show_bug.cgi?id=184604\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\n\nexport function fixSafariColons(cssStringified: string): string {\n // Replace e.g. [aa:bb] with [aa\\\\:bb]\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, '$1\\\\$2');\n}\n\nexport function isCSSImportRule(rule: CSSRule): rule is CSSImportRule {\n return 'styleSheet' in rule;\n}\n\nexport function isCSSStyleRule(rule: CSSRule): rule is CSSStyleRule {\n return 'selectorText' in rule;\n}\n\nexport class Mirror implements IMirror {\n private idNodeMap: idNodeMap = new Map();\n private nodeMetaMap: nodeMetaMap = new WeakMap();\n\n getId(n: Node | undefined | null): number {\n if (!n) return -1;\n\n const id = this.getMeta(n)?.id;\n\n // if n is not a serialized Node, use -1 as its id.\n return id ?? -1;\n }\n\n getNode(id: number): Node | null {\n return this.idNodeMap.get(id) || null;\n }\n\n getIds(): number[] {\n return Array.from(this.idNodeMap.keys());\n }\n\n getMeta(n: Node): serializedNodeWithId | null {\n return this.nodeMetaMap.get(n) || null;\n }\n\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n: Node) {\n const id = this.getId(n);\n this.idNodeMap.delete(id);\n\n if (n.childNodes) {\n n.childNodes.forEach((childNode) =>\n this.removeNodeFromMap(childNode as unknown as Node),\n );\n }\n }\n has(id: number): boolean {\n return this.idNodeMap.has(id);\n }\n\n hasNode(node: Node): boolean {\n return this.nodeMetaMap.has(node);\n }\n\n add(n: Node, meta: serializedNodeWithId) {\n const id = meta.id;\n this.idNodeMap.set(id, n);\n this.nodeMetaMap.set(n, meta);\n }\n\n replace(id: number, n: Node) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n, meta);\n }\n this.idNodeMap.set(id, n);\n }\n\n reset() {\n this.idNodeMap = new Map();\n this.nodeMetaMap = new WeakMap();\n }\n}\n\nexport function createMirror(): Mirror {\n return new Mirror();\n}\n\nexport function maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn,\n}: {\n element: HTMLElement;\n maskInputOptions: MaskInputOptions;\n tagName: string;\n type: string | null;\n value: string | null;\n maskInputFn?: MaskInputFn;\n}): string {\n let text = value || '';\n const actualType = type && toLowerCase(type);\n\n if (\n maskInputOptions[tagName.toLowerCase() as keyof MaskInputOptions] ||\n (actualType && maskInputOptions[actualType as keyof MaskInputOptions])\n ) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = '*'.repeat(text.length);\n }\n }\n return text;\n}\n\nexport function toLowerCase(str: T): Lowercase {\n return str.toLowerCase() as unknown as Lowercase;\n}\n\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\ntype PatchedGetImageData = {\n [ORIGINAL_ATTRIBUTE_NAME]: CanvasImageData['getImageData'];\n} & CanvasImageData['getImageData'];\n\nexport function is2DCanvasBlank(canvas: HTMLCanvasElement): boolean {\n const ctx = canvas.getContext('2d');\n if (!ctx) return true;\n\n const chunkSize = 50;\n\n // get chunks of the canvas and check if it is blank\n for (let x = 0; x < canvas.width; x += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const getImageData = ctx.getImageData as PatchedGetImageData;\n const originalGetImageData =\n ORIGINAL_ATTRIBUTE_NAME in getImageData\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n : getImageData;\n // by getting the canvas in chunks we avoid an expensive\n // `getImageData` call that retrieves everything\n // even if we can already tell from the first chunk(s) that\n // the canvas isn't blank\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x,\n y,\n Math.min(chunkSize, canvas.width - x),\n Math.min(chunkSize, canvas.height - y),\n ).data.buffer,\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\n\nexport function isNodeMetaEqual(a: serializedNode, b: serializedNode): boolean {\n if (!a || !b || a.type !== b.type) return false;\n if (a.type === NodeType.Document)\n return a.compatMode === (b as documentNode).compatMode;\n else if (a.type === NodeType.DocumentType)\n return (\n a.name === (b as documentTypeNode).name &&\n a.publicId === (b as documentTypeNode).publicId &&\n a.systemId === (b as documentTypeNode).systemId\n );\n else if (\n a.type === NodeType.Comment ||\n a.type === NodeType.Text ||\n a.type === NodeType.CDATA\n )\n return a.textContent === (b as textNode).textContent;\n else if (a.type === NodeType.Element)\n return (\n a.tagName === (b as elementNode).tagName &&\n JSON.stringify(a.attributes) ===\n JSON.stringify((b as elementNode).attributes) &&\n a.isSVG === (b as elementNode).isSVG &&\n a.needBlock === (b as elementNode).needBlock\n );\n return false;\n}\n\n/**\n * Get the type of an input element.\n * This takes care of the case where a password input is changed to a text input.\n * In this case, we continue to consider this of type password, in order to avoid leaking sensitive data\n * where passwords should be masked.\n */\nexport function getInputType(element: HTMLElement): Lowercase | null {\n // when omitting the type of input element(e.g. ), the type is treated as text\n const type = (element as HTMLInputElement).type;\n\n return element.hasAttribute('data-rr-is-password')\n ? 'password'\n : type\n ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n : null;\n}\n\n/**\n * Extracts the file extension from an a path, considering search parameters and fragments.\n * @param path - Path to file\n * @param baseURL - [optional] Base URL of the page, used to resolve relative paths. Defaults to current page URL.\n */\nexport function extractFileExtension(\n path: string,\n baseURL?: string,\n): string | null {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return match?.[1] ?? null;\n}\n\nfunction extractOrigin(url: string): string {\n let origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n } else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n}\n\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nexport function absolutifyURLs(cssText: string | null, href: string): string {\n return (cssText || '').replace(\n URL_IN_CSS_REF,\n (\n origin: string,\n quote1: string,\n path1: string,\n quote2: string,\n path2: string,\n path3: string,\n ) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || '';\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === '/') {\n return `url(${maybeQuote}${\n extractOrigin(href) + filePath\n }${maybeQuote})`;\n }\n const stack = href.split('/');\n const parts = filePath.split('/');\n stack.pop();\n for (const part of parts) {\n if (part === '.') {\n continue;\n } else if (part === '..') {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\n },\n );\n}\n","import type { AcceptedPlugin, Rule } from 'postcss';\n\nconst MEDIA_SELECTOR = /(max|min)-device-(width|height)/;\nconst MEDIA_SELECTOR_GLOBAL = new RegExp(MEDIA_SELECTOR.source, 'g');\n\nconst mediaSelectorPlugin: AcceptedPlugin = {\n postcssPlugin: 'postcss-custom-selectors',\n prepare() {\n return {\n postcssPlugin: 'postcss-custom-selectors',\n AtRule: function (atrule) {\n if (atrule.params.match(MEDIA_SELECTOR_GLOBAL)) {\n atrule.params = atrule.params.replace(MEDIA_SELECTOR_GLOBAL, '$1-$2');\n }\n },\n };\n },\n};\n\n// Adapted from https://github.com/giuseppeg/postcss-pseudo-classes/blob/master/index.js\nconst pseudoClassPlugin: AcceptedPlugin = {\n postcssPlugin: 'postcss-hover-classes',\n prepare: function () {\n const fixed: Rule[] = [];\n return {\n Rule: function (rule) {\n if (fixed.indexOf(rule) !== -1) {\n return;\n }\n fixed.push(rule);\n\n rule.selectors.forEach(function (selector) {\n if (!selector.includes(':')) {\n return;\n }\n\n const selectorParts = selector.replace(/\\n/g, ' ').split(' ');\n const pseudoedSelectorParts: string[] = [];\n\n selectorParts.forEach(function (selectorPart) {\n const pseudos = selectorPart.match(/::?([^:]+)/g);\n\n if (!pseudos) {\n pseudoedSelectorParts.push(selectorPart);\n return;\n }\n\n const baseSelector = selectorPart.substr(\n 0,\n selectorPart.length - pseudos.join('').length,\n );\n\n const classPseudos = pseudos.map(function (pseudo) {\n const pseudoToCheck = pseudo.replace(/\\(.*/g, '');\n if (pseudoToCheck !== ':hover') {\n return pseudo;\n }\n\n // Ignore pseudo-elements!\n if (pseudo.match(/^::/)) {\n return pseudo;\n }\n\n // Kill the colon\n pseudo = pseudo.substr(1);\n\n // Replace left and right parens\n pseudo = pseudo.replace(/\\(/g, '\\\\(');\n pseudo = pseudo.replace(/\\)/g, '\\\\)');\n\n return '.' + '\\\\:' + pseudo;\n });\n\n pseudoedSelectorParts.push(baseSelector + classPseudos.join(''));\n });\n\n addSelector(pseudoedSelectorParts.join(' '));\n\n function addSelector(newSelector: string) {\n if (newSelector && newSelector !== selector) {\n rule.selector += ',\\n' + newSelector;\n }\n }\n });\n },\n };\n },\n};\n\nexport { mediaSelectorPlugin, pseudoClassPlugin };\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","export default {}","'use strict'\n\nlet pico = require('picocolors')\n\nlet terminalHighlight = require('./terminal-highlight')\n\nclass CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message)\n this.name = 'CssSyntaxError'\n this.reason = message\n\n if (file) {\n this.file = file\n }\n if (source) {\n this.source = source\n }\n if (plugin) {\n this.plugin = plugin\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n if (typeof line === 'number') {\n this.line = line\n this.column = column\n } else {\n this.line = line.line\n this.column = line.column\n this.endLine = column.line\n this.endColumn = column.column\n }\n }\n\n this.setMessage()\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError)\n }\n }\n\n setMessage() {\n this.message = this.plugin ? this.plugin + ': ' : ''\n this.message += this.file ? this.file : ''\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column\n }\n this.message += ': ' + this.reason\n }\n\n showSourceCode(color) {\n if (!this.source) return ''\n\n let css = this.source\n if (color == null) color = pico.isColorSupported\n if (terminalHighlight) {\n if (color) css = terminalHighlight(css)\n }\n\n let lines = css.split(/\\r?\\n/)\n let start = Math.max(this.line - 3, 0)\n let end = Math.min(this.line + 2, lines.length)\n\n let maxWidth = String(end).length\n\n let mark, aside\n if (color) {\n let { bold, gray, red } = pico.createColors(true)\n mark = text => bold(red(text))\n aside = text => gray(text)\n } else {\n mark = aside = str => str\n }\n\n return lines\n .slice(start, end)\n .map((line, index) => {\n let number = start + 1 + index\n let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n if (number === this.line) {\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^')\n }\n return ' ' + aside(gutter) + line\n })\n .join('\\n')\n }\n\n toString() {\n let code = this.showSourceCode()\n if (code) {\n code = '\\n\\n' + code + '\\n'\n }\n return this.name + ': ' + this.message + code\n }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n","'use strict'\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n","'use strict'\n\nconst DEFAULT_RAW = {\n after: '\\n',\n beforeClose: '\\n',\n beforeComment: '\\n',\n beforeDecl: '\\n',\n beforeOpen: ' ',\n beforeRule: '\\n',\n colon: ': ',\n commentLeft: ' ',\n commentRight: ' ',\n emptyBody: '',\n indent: ' ',\n semicolon: false\n}\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n constructor(builder) {\n this.builder = builder\n }\n\n atrule(node, semicolon) {\n let name = '@' + node.name\n let params = node.params ? this.rawValue(node, 'params') : ''\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName\n } else if (params) {\n name += ' '\n }\n\n if (node.nodes) {\n this.block(node, name + params)\n } else {\n let end = (node.raws.between || '') + (semicolon ? ';' : '')\n this.builder(name + params + end, node)\n }\n }\n\n beforeAfter(node, detect) {\n let value\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment')\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule')\n } else {\n value = this.raw(node, null, 'beforeClose')\n }\n\n let buf = node.parent\n let depth = 0\n while (buf && buf.type !== 'root') {\n depth += 1\n buf = buf.parent\n }\n\n if (value.includes('\\n')) {\n let indent = this.raw(node, null, 'indent')\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent\n }\n }\n\n return value\n }\n\n block(node, start) {\n let between = this.raw(node, 'between', 'beforeOpen')\n this.builder(start + between + '{', node, 'start')\n\n let after\n if (node.nodes && node.nodes.length) {\n this.body(node)\n after = this.raw(node, 'after')\n } else {\n after = this.raw(node, 'after', 'emptyBody')\n }\n\n if (after) this.builder(after)\n this.builder('}', node, 'end')\n }\n\n body(node) {\n let last = node.nodes.length - 1\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break\n last -= 1\n }\n\n let semicolon = this.raw(node, 'semicolon')\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i]\n let before = this.raw(child, 'before')\n if (before) this.builder(before)\n this.stringify(child, last !== i || semicolon)\n }\n }\n\n comment(node) {\n let left = this.raw(node, 'left', 'commentLeft')\n let right = this.raw(node, 'right', 'commentRight')\n this.builder('/*' + left + node.text + right + '*/', node)\n }\n\n decl(node, semicolon) {\n let between = this.raw(node, 'between', 'colon')\n let string = node.prop + between + this.rawValue(node, 'value')\n\n if (node.important) {\n string += node.raws.important || ' !important'\n }\n\n if (semicolon) string += ';'\n this.builder(string, node)\n }\n\n document(node) {\n this.body(node)\n }\n\n raw(node, own, detect) {\n let value\n if (!detect) detect = own\n\n // Already had\n if (own) {\n value = node.raws[own]\n if (typeof value !== 'undefined') return value\n }\n\n let parent = node.parent\n\n if (detect === 'before') {\n // Hack for first rule in CSS\n if (!parent || (parent.type === 'root' && parent.first === node)) {\n return ''\n }\n\n // `root` nodes in `document` should use only their own raws\n if (parent && parent.type === 'document') {\n return ''\n }\n }\n\n // Floating child without parent\n if (!parent) return DEFAULT_RAW[detect]\n\n // Detect style by other nodes\n let root = node.root()\n if (!root.rawCache) root.rawCache = {}\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect]\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect)\n } else {\n let method = 'raw' + capitalize(detect)\n if (this[method]) {\n value = this[method](root, node)\n } else {\n root.walk(i => {\n value = i.raws[own]\n if (typeof value !== 'undefined') return false\n })\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n root.rawCache[detect] = value\n return value\n }\n\n rawBeforeClose(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawBeforeComment(root, node) {\n let value\n root.walkComments(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeDecl(root, node) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeOpen(root) {\n let value\n root.walk(i => {\n if (i.type !== 'decl') {\n value = i.raws.between\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawBeforeRule(root) {\n let value\n root.walk(i => {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawColon(root) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '')\n return false\n }\n })\n return value\n }\n\n rawEmptyBody(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawIndent(root) {\n if (root.raws.indent) return root.raws.indent\n let value\n root.walk(i => {\n let p = i.parent\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n let parts = i.raws.before.split('\\n')\n value = parts[parts.length - 1]\n value = value.replace(/\\S/g, '')\n return false\n }\n }\n })\n return value\n }\n\n rawSemicolon(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawValue(node, prop) {\n let value = node[prop]\n let raw = node.raws[prop]\n if (raw && raw.value === value) {\n return raw.raw\n }\n\n return value\n }\n\n root(node) {\n this.body(node)\n if (node.raws.after) this.builder(node.raws.after)\n }\n\n rule(node) {\n this.block(node, this.rawValue(node, 'selector'))\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end')\n }\n }\n\n stringify(node, semicolon) {\n /* c8 ignore start */\n if (!this[node.type]) {\n throw new Error(\n 'Unknown AST node type ' +\n node.type +\n '. ' +\n 'Maybe you need to change PostCSS stringifier.'\n )\n }\n /* c8 ignore stop */\n this[node.type](node, semicolon)\n }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n","'use strict'\n\nlet Stringifier = require('./stringifier')\n\nfunction stringify(node, builder) {\n let str = new Stringifier(builder)\n str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet CssSyntaxError = require('./css-syntax-error')\nlet Stringifier = require('./stringifier')\nlet stringify = require('./stringify')\n\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor()\n\n for (let i in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n /* c8 ignore next 2 */\n continue\n }\n if (i === 'proxyCache') continue\n let value = obj[i]\n let type = typeof value\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent\n } else if (i === 'source') {\n cloned[i] = value\n } else if (Array.isArray(value)) {\n cloned[i] = value.map(j => cloneNode(j, cloned))\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value)\n cloned[i] = value\n }\n }\n\n return cloned\n}\n\nclass Node {\n constructor(defaults = {}) {\n this.raws = {}\n this[isClean] = false\n this[my] = true\n\n for (let name in defaults) {\n if (name === 'nodes') {\n this.nodes = []\n for (let node of defaults[name]) {\n if (typeof node.clone === 'function') {\n this.append(node.clone())\n } else {\n this.append(node)\n }\n }\n } else {\n this[name] = defaults[name]\n }\n }\n }\n\n addToError(error) {\n error.postcssNode = this\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s = this.source\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n )\n }\n return error\n }\n\n after(add) {\n this.parent.insertAfter(this, add)\n return this\n }\n\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name]\n }\n return this\n }\n\n before(add) {\n this.parent.insertBefore(this, add)\n return this\n }\n\n cleanRaws(keepBetween) {\n delete this.raws.before\n delete this.raws.after\n if (!keepBetween) delete this.raws.between\n }\n\n clone(overrides = {}) {\n let cloned = cloneNode(this)\n for (let name in overrides) {\n cloned[name] = overrides[name]\n }\n return cloned\n }\n\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertAfter(this, cloned)\n return cloned\n }\n\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertBefore(this, cloned)\n return cloned\n }\n\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts)\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n )\n }\n return new CssSyntaxError(message)\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (\n prop === 'prop' ||\n prop === 'value' ||\n prop === 'name' ||\n prop === 'params' ||\n prop === 'important' ||\n /* c8 ignore next */\n prop === 'text'\n ) {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false\n let next = this\n while ((next = next.parent)) {\n next[isClean] = false\n }\n }\n }\n\n next() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index + 1]\n }\n\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation)\n } else if (opts.word) {\n stringRepresentation = this.toString()\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) pos = this.positionInside(index, stringRepresentation)\n }\n return pos\n }\n\n positionInside(index, stringRepresentation) {\n let string = stringRepresentation || this.toString()\n let column = this.source.start.column\n let line = this.source.start.line\n\n for (let i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return { column, line }\n }\n\n prev() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index - 1]\n }\n\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n }\n let end = this.source.end\n ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n }\n : {\n column: start.column + 1,\n line: start.line\n }\n\n if (opts.word) {\n let stringRepresentation = this.toString()\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) {\n start = this.positionInside(index, stringRepresentation)\n end = this.positionInside(index + opts.word.length, stringRepresentation)\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n }\n } else if (opts.index) {\n start = this.positionInside(opts.index)\n }\n\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n }\n } else if (typeof opts.endIndex === 'number') {\n end = this.positionInside(opts.endIndex)\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1)\n }\n }\n\n if (\n end.line < start.line ||\n (end.line === start.line && end.column <= start.column)\n ) {\n end = { column: start.column + 1, line: start.line }\n }\n\n return { end, start }\n }\n\n raw(prop, defaultType) {\n let str = new Stringifier()\n return str.raw(this, prop, defaultType)\n }\n\n remove() {\n if (this.parent) {\n this.parent.removeChild(this)\n }\n this.parent = undefined\n return this\n }\n\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this\n let foundSelf = false\n for (let node of nodes) {\n if (node === this) {\n foundSelf = true\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node)\n bookmark = node\n } else {\n this.parent.insertBefore(bookmark, node)\n }\n }\n\n if (!foundSelf) {\n this.remove()\n }\n }\n\n return this\n }\n\n root() {\n let result = this\n while (result.parent && result.parent.type !== 'document') {\n result = result.parent\n }\n return result\n }\n\n toJSON(_, inputs) {\n let fixed = {}\n let emitInputs = inputs == null\n inputs = inputs || new Map()\n let inputsNextIndex = 0\n\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n /* c8 ignore next 2 */\n continue\n }\n if (name === 'parent' || name === 'proxyCache') continue\n let value = this[name]\n\n if (Array.isArray(value)) {\n fixed[name] = value.map(i => {\n if (typeof i === 'object' && i.toJSON) {\n return i.toJSON(null, inputs)\n } else {\n return i\n }\n })\n } else if (typeof value === 'object' && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs)\n } else if (name === 'source') {\n let inputId = inputs.get(value.input)\n if (inputId == null) {\n inputId = inputsNextIndex\n inputs.set(value.input, inputsNextIndex)\n inputsNextIndex++\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n }\n } else {\n fixed[name] = value\n }\n }\n\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n }\n\n return fixed\n }\n\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor())\n }\n return this.proxyCache\n }\n\n toString(stringifier = stringify) {\n if (stringifier.stringify) stringifier = stringifier.stringify\n let result = ''\n stringifier(this, i => {\n result += i\n })\n return result\n }\n\n warn(result, text, opts) {\n let data = { node: this }\n for (let i in opts) data[i] = opts[i]\n return result.warn(text, data)\n }\n\n get proxyOf() {\n return this\n }\n}\n\nmodule.exports = Node\nNode.default = Node\n","'use strict'\n\nlet Node = require('./node')\n\nclass Declaration extends Node {\n constructor(defaults) {\n if (\n defaults &&\n typeof defaults.value !== 'undefined' &&\n typeof defaults.value !== 'string'\n ) {\n defaults = { ...defaults, value: String(defaults.value) }\n }\n super(defaults)\n this.type = 'decl'\n }\n\n get variable() {\n return this.prop.startsWith('--') || this.prop[0] === '$'\n }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\nmodule.exports = { nanoid, customAlphabet }\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { existsSync, readFileSync } = require('fs')\nlet { dirname, join } = require('path')\n\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, 'base64').toString()\n } else {\n /* c8 ignore next 2 */\n return window.atob(str)\n }\n}\n\nclass PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return\n this.loadAnnotation(css)\n this.inline = this.startWith(this.annotation, 'data:')\n\n let prev = opts.map ? opts.map.prev : undefined\n let text = this.loadMap(opts.from, prev)\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from\n }\n if (this.mapFile) this.root = dirname(this.mapFile)\n if (text) this.text = text\n }\n\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text)\n }\n return this.consumerCache\n }\n\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n let baseUri = /^data:application\\/json;base64,/\n let charsetUri = /^data:application\\/json;charset=utf-?8,/\n let uri = /^data:application\\/json,/\n\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length))\n }\n\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length))\n }\n\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n throw new Error('Unsupported source map encoding ' + encoding)\n }\n\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n }\n\n isMap(map) {\n if (typeof map !== 'object') return false\n return (\n typeof map.mappings === 'string' ||\n typeof map._mappings === 'string' ||\n Array.isArray(map.sections)\n )\n }\n\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm)\n if (!comments) return\n\n // sourceMappingURLs from comments, strings, etc.\n let start = css.lastIndexOf(comments.pop())\n let end = css.indexOf('*/', start)\n\n if (start > -1 && end > -1) {\n // Locate the last sourceMappingURL to avoid pickin\n this.annotation = this.getAnnotationURL(css.substring(start, end))\n }\n }\n\n loadFile(path) {\n this.root = dirname(path)\n if (existsSync(path)) {\n this.mapFile = path\n return readFileSync(path, 'utf-8').toString().trim()\n }\n }\n\n loadMap(file, prev) {\n if (prev === false) return false\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev\n } else if (typeof prev === 'function') {\n let prevPath = prev(file)\n if (prevPath) {\n let map = this.loadFile(prevPath)\n if (!map) {\n throw new Error(\n 'Unable to load previous source map: ' + prevPath.toString()\n )\n }\n return map\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString()\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString()\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev)\n } else {\n throw new Error(\n 'Unsupported previous source map format: ' + prev.toString()\n )\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation)\n } else if (this.annotation) {\n let map = this.annotation\n if (file) map = join(dirname(file), map)\n return this.loadFile(map)\n }\n }\n\n startWith(string, start) {\n if (!string) return false\n return string.substr(0, start.length) === start\n }\n\n withContent() {\n return !!(\n this.consumer().sourcesContent &&\n this.consumer().sourcesContent.length > 0\n )\n }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { fileURLToPath, pathToFileURL } = require('url')\nlet { isAbsolute, resolve } = require('path')\nlet { nanoid } = require('nanoid/non-secure')\n\nlet terminalHighlight = require('./terminal-highlight')\nlet CssSyntaxError = require('./css-syntax-error')\nlet PreviousMap = require('./previous-map')\n\nlet fromOffsetCache = Symbol('fromOffsetCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nclass Input {\n constructor(css, opts = {}) {\n if (\n css === null ||\n typeof css === 'undefined' ||\n (typeof css === 'object' && !css.toString)\n ) {\n throw new Error(`PostCSS received ${css} instead of CSS string`)\n }\n\n this.css = css.toString()\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.hasBOM = true\n this.css = this.css.slice(1)\n } else {\n this.hasBOM = false\n }\n\n if (opts.from) {\n if (\n !pathAvailable ||\n /^\\w+:\\/\\//.test(opts.from) ||\n isAbsolute(opts.from)\n ) {\n this.file = opts.from\n } else {\n this.file = resolve(opts.from)\n }\n }\n\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts)\n if (map.text) {\n this.map = map\n let file = map.consumer().file\n if (!this.file && file) this.file = this.mapResolve(file)\n }\n }\n\n if (!this.file) {\n this.id = ''\n }\n if (this.map) this.map.file = this.from\n }\n\n error(message, line, column, opts = {}) {\n let result, endLine, endColumn\n\n if (line && typeof line === 'object') {\n let start = line\n let end = column\n if (typeof start.offset === 'number') {\n let pos = this.fromOffset(start.offset)\n line = pos.line\n column = pos.col\n } else {\n line = start.line\n column = start.column\n }\n if (typeof end.offset === 'number') {\n let pos = this.fromOffset(end.offset)\n endLine = pos.line\n endColumn = pos.col\n } else {\n endLine = end.line\n endColumn = end.column\n }\n } else if (!column) {\n let pos = this.fromOffset(line)\n line = pos.line\n column = pos.col\n }\n\n let origin = this.origin(line, column, endLine, endColumn)\n if (origin) {\n result = new CssSyntaxError(\n message,\n origin.endLine === undefined\n ? origin.line\n : { column: origin.column, line: origin.line },\n origin.endLine === undefined\n ? origin.column\n : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n )\n } else {\n result = new CssSyntaxError(\n message,\n endLine === undefined ? line : { column, line },\n endLine === undefined ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n )\n }\n\n result.input = { column, endColumn, endLine, line, source: this.css }\n if (this.file) {\n if (pathToFileURL) {\n result.input.url = pathToFileURL(this.file).toString()\n }\n result.input.file = this.file\n }\n\n return result\n }\n\n fromOffset(offset) {\n let lastLine, lineToIndex\n if (!this[fromOffsetCache]) {\n let lines = this.css.split('\\n')\n lineToIndex = new Array(lines.length)\n let prevIndex = 0\n\n for (let i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = prevIndex\n prevIndex += lines[i].length + 1\n }\n\n this[fromOffsetCache] = lineToIndex\n } else {\n lineToIndex = this[fromOffsetCache]\n }\n lastLine = lineToIndex[lineToIndex.length - 1]\n\n let min = 0\n if (offset >= lastLine) {\n min = lineToIndex.length - 1\n } else {\n let max = lineToIndex.length - 2\n let mid\n while (min < max) {\n mid = min + ((max - min) >> 1)\n if (offset < lineToIndex[mid]) {\n max = mid - 1\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1\n } else {\n min = mid\n break\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n }\n }\n\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n }\n\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false\n let consumer = this.map.consumer()\n\n let from = consumer.originalPositionFor({ column, line })\n if (!from.source) return false\n\n let to\n if (typeof endLine === 'number') {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine })\n }\n\n let fromUrl\n\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source)\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n )\n }\n\n let result = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n }\n\n if (fromUrl.protocol === 'file:') {\n if (fileURLToPath) {\n result.file = fileURLToPath(fromUrl)\n } else {\n /* c8 ignore next 2 */\n throw new Error(`file: protocol is not available in this PostCSS build`)\n }\n }\n\n let source = consumer.sourceContentFor(from.source)\n if (source) result.source = source\n\n return result\n }\n\n toJSON() {\n let json = {}\n for (let name of ['hasBOM', 'css', 'file', 'id']) {\n if (this[name] != null) {\n json[name] = this[name]\n }\n }\n if (this.map) {\n json.map = { ...this.map }\n if (json.map.consumerCache) {\n json.map.consumerCache = undefined\n }\n }\n return json\n }\n\n get from() {\n return this.file || this.id\n }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input)\n}\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { dirname, relative, resolve, sep } = require('path')\nlet { pathToFileURL } = require('url')\n\nlet Input = require('./input')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n constructor(stringify, root, opts, cssString) {\n this.stringify = stringify\n this.mapOpts = opts.map || {}\n this.root = root\n this.opts = opts\n this.css = cssString\n this.originalCSS = cssString\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n\n this.memoizedFileURLs = new Map()\n this.memoizedPaths = new Map()\n this.memoizedURLs = new Map()\n }\n\n addAnnotation() {\n let content\n\n if (this.isInline()) {\n content =\n 'data:application/json;base64,' + this.toBase64(this.map.toString())\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation\n } else if (typeof this.mapOpts.annotation === 'function') {\n content = this.mapOpts.annotation(this.opts.to, this.root)\n } else {\n content = this.outputFile() + '.map'\n }\n let eol = '\\n'\n if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n }\n\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file))\n let root = prev.root || dirname(prev.file)\n let map\n\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text)\n if (map.sourcesContent) {\n map.sourcesContent = null\n }\n } else {\n map = prev.consumer()\n }\n\n this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n }\n }\n\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return\n\n if (this.root) {\n let node\n for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i]\n if (node.type !== 'comment') continue\n if (node.text.indexOf('# sourceMappingURL=') === 0) {\n this.root.removeChild(i)\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, '')\n }\n }\n\n generate() {\n this.clearAnnotation()\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap()\n } else {\n let result = ''\n this.stringify(this.root, i => {\n result += i\n })\n return [result]\n }\n }\n\n generateMap() {\n if (this.root) {\n this.generateString()\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer()\n prev.file = this.outputFile()\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n })\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : ''\n })\n }\n\n if (this.isSourcesContent()) this.setSourcesContent()\n if (this.root && this.previous().length > 0) this.applyPrevMaps()\n if (this.isAnnotation()) this.addAnnotation()\n\n if (this.isInline()) {\n return [this.css]\n } else {\n return [this.css, this.map]\n }\n }\n\n generateString() {\n this.css = ''\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n\n let line = 1\n let column = 1\n\n let noSource = ''\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: ''\n }\n\n let lines, last\n this.stringify(this.root, (str, node, type) => {\n this.css += str\n\n if (node && type !== 'end') {\n mapping.generated.line = line\n mapping.generated.column = column - 1\n if (node.source && node.source.start) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.start.line\n mapping.original.column = node.source.start.column - 1\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n this.map.addMapping(mapping)\n }\n }\n\n lines = str.match(/\\n/g)\n if (lines) {\n line += lines.length\n last = str.lastIndexOf('\\n')\n column = str.length - last\n } else {\n column += str.length\n }\n\n if (node && type !== 'start') {\n let p = node.parent || { raws: {} }\n let childless =\n node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n if (!childless || node !== p.last || p.raws.semicolon) {\n if (node.source && node.source.end) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.end.line\n mapping.original.column = node.source.end.column - 1\n mapping.generated.line = line\n mapping.generated.column = column - 2\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n mapping.generated.line = line\n mapping.generated.column = column - 1\n this.map.addMapping(mapping)\n }\n }\n }\n })\n }\n\n isAnnotation() {\n if (this.isInline()) {\n return true\n }\n if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation\n }\n if (this.previous().length) {\n return this.previous().some(i => i.annotation)\n }\n return true\n }\n\n isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline\n }\n\n let annotation = this.mapOpts.annotation\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false\n }\n\n if (this.previous().length) {\n return this.previous().some(i => i.inline)\n }\n return true\n }\n\n isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map\n }\n return this.previous().length > 0\n }\n\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent\n }\n if (this.previous().length) {\n return this.previous().some(i => i.withContent())\n }\n return true\n }\n\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to)\n } else if (this.opts.from) {\n return this.path(this.opts.from)\n } else {\n return 'to.css'\n }\n }\n\n path(file) {\n if (this.mapOpts.absolute) return file\n if (file.charCodeAt(0) === 60 /* `<` */) return file\n if (/^\\w+:\\/\\//.test(file)) return file\n let cached = this.memoizedPaths.get(file)\n if (cached) return cached\n\n let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = dirname(resolve(from, this.mapOpts.annotation))\n }\n\n let path = relative(from, file)\n this.memoizedPaths.set(file, path)\n\n return path\n }\n\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = []\n if (this.root) {\n this.root.walk(node => {\n if (node.source && node.source.input.map) {\n let map = node.source.input.map\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map)\n }\n }\n })\n } else {\n let input = new Input(this.originalCSS, this.opts)\n if (input.map) this.previousMaps.push(input.map)\n }\n }\n\n return this.previousMaps\n }\n\n setSourcesContent() {\n let already = {}\n if (this.root) {\n this.root.walk(node => {\n if (node.source) {\n let from = node.source.input.from\n if (from && !already[from]) {\n already[from] = true\n let fromUrl = this.usesFileUrls\n ? this.toFileUrl(from)\n : this.toUrl(this.path(from))\n this.map.setSourceContent(fromUrl, node.source.input.css)\n }\n }\n })\n } else if (this.css) {\n let from = this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : ''\n this.map.setSourceContent(from, this.css)\n }\n }\n\n sourcePath(node) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from)\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node.source.input.from)\n } else {\n return this.toUrl(this.path(node.source.input.from))\n }\n }\n\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString('base64')\n } else {\n return window.btoa(unescape(encodeURIComponent(str)))\n }\n }\n\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path)\n if (cached) return cached\n\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString()\n this.memoizedFileURLs.set(path, fileURL)\n\n return fileURL\n } else {\n throw new Error(\n '`map.absolute` option is not available in this PostCSS build'\n )\n }\n }\n\n toUrl(path) {\n let cached = this.memoizedURLs.get(path)\n if (cached) return cached\n\n if (sep === '\\\\') {\n path = path.replace(/\\\\/g, '/')\n }\n\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n this.memoizedURLs.set(path, url)\n\n return url\n }\n}\n\nmodule.exports = MapGenerator\n","'use strict'\n\nlet Node = require('./node')\n\nclass Comment extends Node {\n constructor(defaults) {\n super(defaults)\n this.type = 'comment'\n }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet Declaration = require('./declaration')\nlet Comment = require('./comment')\nlet Node = require('./node')\n\nlet parse, Rule, AtRule, Root\n\nfunction cleanSource(nodes) {\n return nodes.map(i => {\n if (i.nodes) i.nodes = cleanSource(i.nodes)\n delete i.source\n return i\n })\n}\n\nfunction markDirtyUp(node) {\n node[isClean] = false\n if (node.proxyOf.nodes) {\n for (let i of node.proxyOf.nodes) {\n markDirtyUp(i)\n }\n }\n}\n\nclass Container extends Node {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last)\n for (let node of nodes) this.proxyOf.nodes.push(node)\n }\n\n this.markDirty()\n\n return this\n }\n\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween)\n if (this.nodes) {\n for (let node of this.nodes) node.cleanRaws(keepBetween)\n }\n }\n\n each(callback) {\n if (!this.proxyOf.nodes) return undefined\n let iterator = this.getIterator()\n\n let index, result\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index = this.indexes[iterator]\n result = callback(this.proxyOf.nodes[index], index)\n if (result === false) break\n\n this.indexes[iterator] += 1\n }\n\n delete this.indexes[iterator]\n return result\n }\n\n every(condition) {\n return this.nodes.every(condition)\n }\n\n getIterator() {\n if (!this.lastEach) this.lastEach = 0\n if (!this.indexes) this.indexes = {}\n\n this.lastEach += 1\n let iterator = this.lastEach\n this.indexes[iterator] = 0\n\n return iterator\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (!node[prop]) {\n return node[prop]\n } else if (\n prop === 'each' ||\n (typeof prop === 'string' && prop.startsWith('walk'))\n ) {\n return (...args) => {\n return node[prop](\n ...args.map(i => {\n if (typeof i === 'function') {\n return (child, index) => i(child.toProxy(), index)\n } else {\n return i\n }\n })\n )\n }\n } else if (prop === 'every' || prop === 'some') {\n return cb => {\n return node[prop]((child, ...other) =>\n cb(child.toProxy(), ...other)\n )\n }\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else if (prop === 'nodes') {\n return node.nodes.map(i => i.toProxy())\n } else if (prop === 'first' || prop === 'last') {\n return node[prop].toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (prop === 'name' || prop === 'params' || prop === 'selector') {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n index(child) {\n if (typeof child === 'number') return child\n if (child.proxyOf) child = child.proxyOf\n return this.proxyOf.nodes.indexOf(child)\n }\n\n insertAfter(exist, add) {\n let existIndex = this.index(exist)\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex < index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n insertBefore(exist, add) {\n let existIndex = this.index(exist)\n let type = existIndex === 0 ? 'prepend' : false\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex <= index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n normalize(nodes, sample) {\n if (typeof nodes === 'string') {\n nodes = cleanSource(parse(nodes).nodes)\n } else if (typeof nodes === 'undefined') {\n nodes = []\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type === 'root' && this.type !== 'document') {\n nodes = nodes.nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type) {\n nodes = [nodes]\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation')\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value)\n }\n nodes = [new Declaration(nodes)]\n } else if (nodes.selector) {\n nodes = [new Rule(nodes)]\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)]\n } else if (nodes.text) {\n nodes = [new Comment(nodes)]\n } else {\n throw new Error('Unknown node type in node creation')\n }\n\n let processed = nodes.map(i => {\n /* c8 ignore next */\n if (!i[my]) Container.rebuild(i)\n i = i.proxyOf\n if (i.parent) i.parent.removeChild(i)\n if (i[isClean]) markDirtyUp(i)\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/\\S/g, '')\n }\n }\n i.parent = this.proxyOf\n return i\n })\n\n return processed\n }\n\n prepend(...children) {\n children = children.reverse()\n for (let child of children) {\n let nodes = this.normalize(child, this.first, 'prepend').reverse()\n for (let node of nodes) this.proxyOf.nodes.unshift(node)\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n push(child) {\n child.parent = this\n this.proxyOf.nodes.push(child)\n return this\n }\n\n removeAll() {\n for (let node of this.proxyOf.nodes) node.parent = undefined\n this.proxyOf.nodes = []\n\n this.markDirty()\n\n return this\n }\n\n removeChild(child) {\n child = this.index(child)\n this.proxyOf.nodes[child].parent = undefined\n this.proxyOf.nodes.splice(child, 1)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (index >= child) {\n this.indexes[id] = index - 1\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts\n opts = {}\n }\n\n this.walkDecls(decl => {\n if (opts.props && !opts.props.includes(decl.prop)) return\n if (opts.fast && !decl.value.includes(opts.fast)) return\n\n decl.value = decl.value.replace(pattern, callback)\n })\n\n this.markDirty()\n\n return this\n }\n\n some(condition) {\n return this.nodes.some(condition)\n }\n\n walk(callback) {\n return this.each((child, i) => {\n let result\n try {\n result = callback(child, i)\n } catch (e) {\n throw child.addToError(e)\n }\n if (result !== false && child.walk) {\n result = child.walk(callback)\n }\n\n return result\n })\n }\n\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name\n return this.walk((child, i) => {\n if (child.type === 'atrule') {\n return callback(child, i)\n }\n })\n }\n if (name instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i)\n }\n })\n }\n\n walkComments(callback) {\n return this.walk((child, i) => {\n if (child.type === 'comment') {\n return callback(child, i)\n }\n })\n }\n\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop\n return this.walk((child, i) => {\n if (child.type === 'decl') {\n return callback(child, i)\n }\n })\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i)\n }\n })\n }\n\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector\n\n return this.walk((child, i) => {\n if (child.type === 'rule') {\n return callback(child, i)\n }\n })\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i)\n }\n })\n }\n\n get first() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[0]\n }\n\n get last() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n }\n}\n\nContainer.registerParse = dependant => {\n parse = dependant\n}\n\nContainer.registerRule = dependant => {\n Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n if (node.type === 'atrule') {\n Object.setPrototypeOf(node, AtRule.prototype)\n } else if (node.type === 'rule') {\n Object.setPrototypeOf(node, Rule.prototype)\n } else if (node.type === 'decl') {\n Object.setPrototypeOf(node, Declaration.prototype)\n } else if (node.type === 'comment') {\n Object.setPrototypeOf(node, Comment.prototype)\n } else if (node.type === 'root') {\n Object.setPrototypeOf(node, Root.prototype)\n }\n\n node[my] = true\n\n if (node.nodes) {\n node.nodes.forEach(child => {\n Container.rebuild(child)\n })\n }\n}\n/* c8 ignore stop */\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n constructor(defaults) {\n // type needs to be passed to super, otherwise child roots won't be normalized correctly\n super({ type: 'document', ...defaults })\n\n if (!this.nodes) {\n this.nodes = []\n }\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n\n return lazy.stringify()\n }\n}\n\nDocument.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n","'use strict'\n\nclass Warning {\n constructor(text, opts = {}) {\n this.type = 'warning'\n this.text = text\n\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts)\n this.line = range.start.line\n this.column = range.start.column\n this.endLine = range.end.line\n this.endColumn = range.end.column\n }\n\n for (let opt in opts) this[opt] = opts[opt]\n }\n\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message\n }\n\n if (this.plugin) {\n return this.plugin + ': ' + this.text\n }\n\n return this.text\n }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n constructor(processor, root, opts) {\n this.processor = processor\n this.messages = []\n this.root = root\n this.opts = opts\n this.css = undefined\n this.map = undefined\n }\n\n toString() {\n return this.css\n }\n\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin\n }\n }\n\n let warning = new Warning(text, opts)\n this.messages.push(warning)\n\n return warning\n }\n\n warnings() {\n return this.messages.filter(i => i.type === 'warning')\n }\n\n get content() {\n return this.css\n }\n}\n\nmodule.exports = Result\nResult.default = Result\n","'use strict'\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n let css = input.css.valueOf()\n let ignore = options.ignoreErrors\n\n let code, next, quote, content, escape\n let escaped, escapePos, prev, n, currentToken\n\n let length = css.length\n let pos = 0\n let buffer = []\n let returned = []\n\n function position() {\n return pos\n }\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, pos)\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length\n }\n\n function nextToken(opts) {\n if (returned.length) return returned.pop()\n if (pos >= length) return\n\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n code = css.charCodeAt(pos)\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos\n do {\n next += 1\n code = css.charCodeAt(next)\n } while (\n code === SPACE ||\n code === NEWLINE ||\n code === TAB ||\n code === CR ||\n code === FEED\n )\n\n currentToken = ['space', css.slice(pos, next)]\n pos = next - 1\n break\n }\n\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code)\n currentToken = [controlChar, controlChar, pos]\n break\n }\n\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : ''\n n = css.charCodeAt(pos + 1)\n if (\n prev === 'url' &&\n n !== SINGLE_QUOTE &&\n n !== DOUBLE_QUOTE &&\n n !== SPACE &&\n n !== NEWLINE &&\n n !== TAB &&\n n !== FEED &&\n n !== CR\n ) {\n next = pos\n do {\n escaped = false\n next = css.indexOf(')', next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos\n break\n } else {\n unclosed('bracket')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n pos = next\n } else {\n next = css.indexOf(')', pos + 1)\n content = css.slice(pos, next + 1)\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = ['(', '(', pos]\n } else {\n currentToken = ['brackets', content, pos, next]\n pos = next\n }\n }\n\n break\n }\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n next = pos\n do {\n escaped = false\n next = css.indexOf(quote, next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1\n break\n } else {\n unclosed('string')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['string', css.slice(pos, next + 1), pos, next]\n pos = next\n break\n }\n\n case AT: {\n RE_AT_END.lastIndex = pos + 1\n RE_AT_END.test(css)\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_AT_END.lastIndex - 2\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n case BACKSLASH: {\n next = pos\n escape = true\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1\n escape = !escape\n }\n code = css.charCodeAt(next + 1)\n if (\n escape &&\n code !== SLASH &&\n code !== SPACE &&\n code !== NEWLINE &&\n code !== TAB &&\n code !== CR &&\n code !== FEED\n ) {\n next += 1\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length\n } else {\n unclosed('comment')\n }\n }\n\n currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n pos = next\n } else {\n RE_WORD_END.lastIndex = pos + 1\n RE_WORD_END.test(css)\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_WORD_END.lastIndex - 2\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n buffer.push(currentToken)\n pos = next\n }\n\n break\n }\n }\n\n pos++\n return currentToken\n }\n\n function back(token) {\n returned.push(token)\n }\n\n return {\n back,\n endOfFile,\n nextToken,\n position\n }\n}\n","'use strict'\n\nlet Container = require('./container')\n\nclass AtRule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'atrule'\n }\n\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.append(...children)\n }\n\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.prepend(...children)\n }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'root'\n if (!this.nodes) this.nodes = []\n }\n\n normalize(child, sample, type) {\n let nodes = super.normalize(child)\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before\n } else {\n delete sample.raws.before\n }\n } else if (this.first !== sample) {\n for (let node of nodes) {\n node.raws.before = sample.raws.before\n }\n }\n }\n\n return nodes\n }\n\n removeChild(child, ignore) {\n let index = this.index(child)\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before\n }\n\n return super.removeChild(child)\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n return lazy.stringify()\n }\n}\n\nRoot.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n","'use strict'\n\nlet list = {\n comma(string) {\n return list.split(string, [','], true)\n },\n\n space(string) {\n let spaces = [' ', '\\n', '\\t']\n return list.split(string, spaces)\n },\n\n split(string, separators, last) {\n let array = []\n let current = ''\n let split = false\n\n let func = 0\n let inQuote = false\n let prevQuote = ''\n let escape = false\n\n for (let letter of string) {\n if (escape) {\n escape = false\n } else if (letter === '\\\\') {\n escape = true\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true\n prevQuote = letter\n } else if (letter === '(') {\n func += 1\n } else if (letter === ')') {\n if (func > 0) func -= 1\n } else if (func === 0) {\n if (separators.includes(letter)) split = true\n }\n\n if (split) {\n if (current !== '') array.push(current.trim())\n current = ''\n split = false\n } else {\n current += letter\n }\n }\n\n if (last || current !== '') array.push(current.trim())\n return array\n }\n}\n\nmodule.exports = list\nlist.default = list\n","'use strict'\n\nlet Container = require('./container')\nlet list = require('./list')\n\nclass Rule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'rule'\n if (!this.nodes) this.nodes = []\n }\n\n get selectors() {\n return list.comma(this.selector)\n }\n\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null\n let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n this.selector = values.join(sep)\n }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n","'use strict'\n\nlet Declaration = require('./declaration')\nlet tokenizer = require('./tokenize')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n}\n\nfunction findLastWithPosition(tokens) {\n for (let i = tokens.length - 1; i >= 0; i--) {\n let token = tokens[i]\n let pos = token[3] || token[2]\n if (pos) return pos\n }\n}\n\nclass Parser {\n constructor(input) {\n this.input = input\n\n this.root = new Root()\n this.current = this.root\n this.spaces = ''\n this.semicolon = false\n\n this.createTokenizer()\n this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }\n }\n\n atrule(token) {\n let node = new AtRule()\n node.name = token[1].slice(1)\n if (node.name === '') {\n this.unnamedAtrule(node, token)\n }\n this.init(node, token[2])\n\n let type\n let prev\n let shift\n let last = false\n let open = false\n let params = []\n let brackets = []\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n type = token[0]\n\n if (type === '(' || type === '[') {\n brackets.push(type === '(' ? ')' : ']')\n } else if (type === '{' && brackets.length > 0) {\n brackets.push('}')\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n }\n\n if (brackets.length === 0) {\n if (type === ';') {\n node.source.end = this.getPosition(token[2])\n node.source.end.offset++\n this.semicolon = true\n break\n } else if (type === '{') {\n open = true\n break\n } else if (type === '}') {\n if (params.length > 0) {\n shift = params.length - 1\n prev = params[shift]\n while (prev && prev[0] === 'space') {\n prev = params[--shift]\n }\n if (prev) {\n node.source.end = this.getPosition(prev[3] || prev[2])\n node.source.end.offset++\n }\n }\n this.end(token)\n break\n } else {\n params.push(token)\n }\n } else {\n params.push(token)\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true\n break\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params)\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params)\n this.raw(node, 'params', params)\n if (last) {\n token = params[params.length - 1]\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n this.spaces = node.raws.between\n node.raws.between = ''\n }\n } else {\n node.raws.afterName = ''\n node.params = ''\n }\n\n if (open) {\n node.nodes = []\n this.current = node\n }\n }\n\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens)\n if (colon === false) return\n\n let founded = 0\n let token\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j]\n if (token[0] !== 'space') {\n founded += 1\n if (founded === 2) break\n }\n }\n // If the token is a word, e.g. `!important`, `red` or any other valid property's value.\n // Then we need to return the colon after that word token. [3] is the \"end\" colon of that word.\n // And because we need it after that one we do +1 to get the next one.\n throw this.input.error(\n 'Missed semicolon',\n token[0] === 'word' ? token[3] + 1 : token[2]\n )\n }\n\n colon(tokens) {\n let brackets = 0\n let token, type, prev\n for (let [i, element] of tokens.entries()) {\n token = element\n type = token[0]\n\n if (type === '(') {\n brackets += 1\n }\n if (type === ')') {\n brackets -= 1\n }\n if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token)\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue\n } else {\n return i\n }\n }\n\n prev = token\n }\n return false\n }\n\n comment(token) {\n let node = new Comment()\n this.init(node, token[2])\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n\n let text = token[1].slice(2, -2)\n if (/^\\s*$/.test(text)) {\n node.text = ''\n node.raws.left = text\n node.raws.right = ''\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n node.text = match[2]\n node.raws.left = match[1]\n node.raws.right = match[3]\n }\n }\n\n createTokenizer() {\n this.tokenizer = tokenizer(this.input)\n }\n\n decl(tokens, customProperty) {\n let node = new Declaration()\n this.init(node, tokens[0][2])\n\n let last = tokens[tokens.length - 1]\n if (last[0] === ';') {\n this.semicolon = true\n tokens.pop()\n }\n\n node.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n )\n node.source.end.offset++\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens)\n node.raws.before += tokens.shift()[1]\n }\n node.source.start = this.getPosition(tokens[0][2])\n\n node.prop = ''\n while (tokens.length) {\n let type = tokens[0][0]\n if (type === ':' || type === 'space' || type === 'comment') {\n break\n }\n node.prop += tokens.shift()[1]\n }\n\n node.raws.between = ''\n\n let token\n while (tokens.length) {\n token = tokens.shift()\n\n if (token[0] === ':') {\n node.raws.between += token[1]\n break\n } else {\n if (token[0] === 'word' && /\\w/.test(token[1])) {\n this.unknownWord([token])\n }\n node.raws.between += token[1]\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0]\n node.prop = node.prop.slice(1)\n }\n\n let firstSpaces = []\n let next\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n firstSpaces.push(tokens.shift())\n }\n\n this.precheckMissedSemicolon(tokens)\n\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i]\n if (token[1].toLowerCase() === '!important') {\n node.important = true\n let string = this.stringFrom(tokens, i)\n string = this.spacesFromEnd(tokens) + string\n if (string !== ' !important') node.raws.important = string\n break\n } else if (token[1].toLowerCase() === 'important') {\n let cache = tokens.slice(0)\n let str = ''\n for (let j = i; j > 0; j--) {\n let type = cache[j][0]\n if (str.trim().indexOf('!') === 0 && type !== 'space') {\n break\n }\n str = cache.pop()[1] + str\n }\n if (str.trim().indexOf('!') === 0) {\n node.important = true\n node.raws.important = str\n tokens = cache\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break\n }\n }\n\n let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n if (hasWord) {\n node.raws.between += firstSpaces.map(i => i[1]).join('')\n firstSpaces = []\n }\n this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n if (node.value.includes(':') && !customProperty) {\n this.checkMissedSemicolon(tokens)\n }\n }\n\n doubleColon(token) {\n throw this.input.error(\n 'Double colon',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n\n emptyRule(token) {\n let node = new Rule()\n this.init(node, token[2])\n node.selector = ''\n node.raws.between = ''\n this.current = node\n }\n\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.semicolon = false\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.spaces = ''\n\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2])\n this.current.source.end.offset++\n this.current = this.current.parent\n } else {\n this.unexpectedClose(token)\n }\n }\n\n endFile() {\n if (this.current.parent) this.unclosedBlock()\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.root.source.end = this.getPosition(this.tokenizer.position())\n }\n\n freeSemicolon(token) {\n this.spaces += token[1]\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1]\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces\n this.spaces = ''\n }\n }\n }\n\n // Helpers\n\n getPosition(offset) {\n let pos = this.input.fromOffset(offset)\n return {\n column: pos.col,\n line: pos.line,\n offset\n }\n }\n\n init(node, offset) {\n this.current.push(node)\n node.source = {\n input: this.input,\n start: this.getPosition(offset)\n }\n node.raws.before = this.spaces\n this.spaces = ''\n if (node.type !== 'comment') this.semicolon = false\n }\n\n other(start) {\n let end = false\n let type = null\n let colon = false\n let bracket = null\n let brackets = []\n let customProperty = start[1].startsWith('--')\n\n let tokens = []\n let token = start\n while (token) {\n type = token[0]\n tokens.push(token)\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token\n brackets.push(type === '(' ? ')' : ']')\n } else if (customProperty && colon && type === '{') {\n if (!bracket) bracket = token\n brackets.push('}')\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens, customProperty)\n return\n } else {\n break\n }\n } else if (type === '{') {\n this.rule(tokens)\n return\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop())\n end = true\n break\n } else if (type === ':') {\n colon = true\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n if (brackets.length === 0) bracket = null\n }\n\n token = this.tokenizer.nextToken()\n }\n\n if (this.tokenizer.endOfFile()) end = true\n if (brackets.length > 0) this.unclosedBracket(bracket)\n\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0]\n if (token !== 'space' && token !== 'comment') break\n this.tokenizer.back(tokens.pop())\n }\n }\n this.decl(tokens, customProperty)\n } else {\n this.unknownWord(tokens)\n }\n }\n\n parse() {\n let token\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n\n switch (token[0]) {\n case 'space':\n this.spaces += token[1]\n break\n\n case ';':\n this.freeSemicolon(token)\n break\n\n case '}':\n this.end(token)\n break\n\n case 'comment':\n this.comment(token)\n break\n\n case 'at-word':\n this.atrule(token)\n break\n\n case '{':\n this.emptyRule(token)\n break\n\n default:\n this.other(token)\n break\n }\n }\n this.endFile()\n }\n\n precheckMissedSemicolon(/* tokens */) {\n // Hook for Safe Parser\n }\n\n raw(node, prop, tokens, customProperty) {\n let token, type\n let length = tokens.length\n let value = ''\n let clean = true\n let next, prev\n\n for (let i = 0; i < length; i += 1) {\n token = tokens[i]\n type = token[0]\n if (type === 'space' && i === length - 1 && !customProperty) {\n clean = false\n } else if (type === 'comment') {\n prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === ',') {\n clean = false\n } else {\n value += token[1]\n }\n } else {\n clean = false\n }\n } else {\n value += token[1]\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i) => all + i[1], '')\n node.raws[prop] = { raw, value }\n }\n node[prop] = value\n }\n\n rule(tokens) {\n tokens.pop()\n\n let node = new Rule()\n this.init(node, tokens[0][2])\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n this.raw(node, 'selector', tokens)\n this.current = node\n }\n\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n // Errors\n\n spacesAndCommentsFromStart(tokens) {\n let next\n let spaces = ''\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n spaces += tokens.shift()[1]\n }\n return spaces\n }\n\n spacesFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n stringFrom(tokens, from) {\n let result = ''\n for (let i = from; i < tokens.length; i++) {\n result += tokens[i][1]\n }\n tokens.splice(from, tokens.length - from)\n return result\n }\n\n unclosedBlock() {\n let pos = this.current.source.start\n throw this.input.error('Unclosed block', pos.line, pos.column)\n }\n\n unclosedBracket(bracket) {\n throw this.input.error(\n 'Unclosed bracket',\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n )\n }\n\n unexpectedClose(token) {\n throw this.input.error(\n 'Unexpected }',\n { offset: token[2] },\n { offset: token[2] + 1 }\n )\n }\n\n unknownWord(tokens) {\n throw this.input.error(\n 'Unknown word',\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n )\n }\n\n unnamedAtrule(node, token) {\n throw this.input.error(\n 'At-rule without name',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n}\n\nmodule.exports = Parser\n","'use strict'\n\nlet Container = require('./container')\nlet Parser = require('./parser')\nlet Input = require('./input')\n\nfunction parse(css, opts) {\n let input = new Input(css, opts)\n let parser = new Parser(input)\n try {\n parser.parse()\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse SCSS with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-scss parser'\n } else if (/\\.sass/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Sass with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-sass parser'\n } else if (/\\.less$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Less with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-less parser'\n }\n }\n }\n throw e\n }\n\n return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet MapGenerator = require('./map-generator')\nlet stringify = require('./stringify')\nlet Container = require('./container')\nlet Document = require('./document')\nlet warnOnce = require('./warn-once')\nlet Result = require('./result')\nlet parse = require('./parse')\nlet Root = require('./root')\n\nconst TYPE_TO_CLASS_NAME = {\n atrule: 'AtRule',\n comment: 'Comment',\n decl: 'Declaration',\n document: 'Document',\n root: 'Root',\n rule: 'Rule'\n}\n\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n}\n\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n let key = false\n let type = TYPE_TO_CLASS_NAME[node.type]\n if (node.type === 'decl') {\n key = node.prop.toLowerCase()\n } else if (node.type === 'atrule') {\n key = node.name.toLowerCase()\n }\n\n if (key && node.append) {\n return [\n type,\n type + '-' + key,\n CHILDREN,\n type + 'Exit',\n type + 'Exit-' + key\n ]\n } else if (key) {\n return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n } else if (node.append) {\n return [type, CHILDREN, type + 'Exit']\n } else {\n return [type, type + 'Exit']\n }\n}\n\nfunction toStack(node) {\n let events\n if (node.type === 'document') {\n events = ['Document', CHILDREN, 'DocumentExit']\n } else if (node.type === 'root') {\n events = ['Root', CHILDREN, 'RootExit']\n } else {\n events = getEvents(node)\n }\n\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node,\n visitorIndex: 0,\n visitors: []\n }\n}\n\nfunction cleanMarks(node) {\n node[isClean] = false\n if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n constructor(processor, css, opts) {\n this.stringified = false\n this.processed = false\n\n let root\n if (\n typeof css === 'object' &&\n css !== null &&\n (css.type === 'root' || css.type === 'document')\n ) {\n root = cleanMarks(css)\n } else if (css instanceof LazyResult || css instanceof Result) {\n root = cleanMarks(css.root)\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {}\n if (!opts.map.inline) opts.map.inline = false\n opts.map.prev = css.map\n }\n } else {\n let parser = parse\n if (opts.syntax) parser = opts.syntax.parse\n if (opts.parser) parser = opts.parser\n if (parser.parse) parser = parser.parse\n\n try {\n root = parser(css, opts)\n } catch (error) {\n this.processed = true\n this.error = error\n }\n\n if (root && !root[my]) {\n /* c8 ignore next 2 */\n Container.rebuild(root)\n }\n }\n\n this.result = new Result(processor, root, opts)\n this.helpers = { ...postcss, postcss, result: this.result }\n this.plugins = this.processor.plugins.map(plugin => {\n if (typeof plugin === 'object' && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) }\n } else {\n return plugin\n }\n })\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n if (this.processed) return Promise.resolve(this.result)\n if (!this.processing) {\n this.processing = this.runAsync()\n }\n return this.processing\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n getAsyncError() {\n throw new Error('Use process(css).then(cb) to work with async plugins')\n }\n\n handleError(error, node) {\n let plugin = this.result.lastPlugin\n try {\n if (node) node.addToError(error)\n this.error = error\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin\n error.setMessage()\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n let pluginName = plugin.postcssPlugin\n let pluginVer = plugin.postcssVersion\n let runtimeVer = this.result.processor.version\n let a = pluginVer.split('.')\n let b = runtimeVer.split('.')\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n // eslint-disable-next-line no-console\n console.error(\n 'Unknown error from PostCSS plugin. Your current PostCSS ' +\n 'version is ' +\n runtimeVer +\n ', but ' +\n pluginName +\n ' uses ' +\n pluginVer +\n '. Perhaps this is the source of the error below.'\n )\n }\n }\n }\n } catch (err) {\n /* c8 ignore next 3 */\n // eslint-disable-next-line no-console\n if (console && console.error) console.error(err)\n }\n return error\n }\n\n prepareVisitors() {\n this.listeners = {}\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = []\n this.listeners[type].push([plugin, cb])\n }\n for (let plugin of this.plugins) {\n if (typeof plugin === 'object') {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n `Try to update PostCSS (${this.processor.version} now).`\n )\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === 'object') {\n for (let filter in plugin[event]) {\n if (filter === '*') {\n add(plugin, event, plugin[event][filter])\n } else {\n add(\n plugin,\n event + '-' + filter.toLowerCase(),\n plugin[event][filter]\n )\n }\n }\n } else if (typeof plugin[event] === 'function') {\n add(plugin, event, plugin[event])\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0\n }\n\n async runAsync() {\n this.plugin = 0\n for (let i = 0; i < this.plugins.length; i++) {\n let plugin = this.plugins[i]\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (error) {\n throw this.handleError(error)\n }\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n let stack = [toStack(root)]\n while (stack.length > 0) {\n let promise = this.visitTick(stack)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (e) {\n let node = stack[stack.length - 1].node\n throw this.handleError(e, node)\n }\n }\n }\n }\n\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin\n try {\n if (root.type === 'document') {\n let roots = root.nodes.map(subRoot =>\n visitor(subRoot, this.helpers)\n )\n\n await Promise.all(roots)\n } else {\n await visitor(root, this.helpers)\n }\n } catch (e) {\n throw this.handleError(e)\n }\n }\n }\n }\n\n this.processed = true\n return this.stringify()\n }\n\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin\n try {\n if (typeof plugin === 'object' && plugin.Once) {\n if (this.result.root.type === 'document') {\n let roots = this.result.root.nodes.map(root =>\n plugin.Once(root, this.helpers)\n )\n\n if (isPromise(roots[0])) {\n return Promise.all(roots)\n }\n\n return roots\n }\n\n return plugin.Once(this.result.root, this.helpers)\n } else if (typeof plugin === 'function') {\n return plugin(this.result.root, this.result)\n }\n } catch (error) {\n throw this.handleError(error)\n }\n }\n\n stringify() {\n if (this.error) throw this.error\n if (this.stringified) return this.result\n this.stringified = true\n\n this.sync()\n\n let opts = this.result.opts\n let str = stringify\n if (opts.syntax) str = opts.syntax.stringify\n if (opts.stringifier) str = opts.stringifier\n if (str.stringify) str = str.stringify\n\n let map = new MapGenerator(str, this.result.root, this.result.opts)\n let data = map.generate()\n this.result.css = data[0]\n this.result.map = data[1]\n\n return this.result\n }\n\n sync() {\n if (this.error) throw this.error\n if (this.processed) return this.result\n this.processed = true\n\n if (this.processing) {\n throw this.getAsyncError()\n }\n\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n this.walkSync(root)\n }\n if (this.listeners.OnceExit) {\n if (root.type === 'document') {\n for (let subRoot of root.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot)\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root)\n }\n }\n }\n\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this.css\n }\n\n visitSync(visitors, node) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin\n let promise\n try {\n promise = visitor(node, this.helpers)\n } catch (e) {\n throw this.handleError(e, node.proxyOf)\n }\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n return true\n }\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n }\n\n visitTick(stack) {\n let visit = stack[stack.length - 1]\n let { node, visitors } = visit\n\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n stack.pop()\n return\n }\n\n if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit.visitorIndex]\n visit.visitorIndex += 1\n if (visit.visitorIndex === visitors.length) {\n visit.visitors = []\n visit.visitorIndex = 0\n }\n this.result.lastPlugin = plugin\n try {\n return visitor(node.toProxy(), this.helpers)\n } catch (e) {\n throw this.handleError(e, node)\n }\n }\n\n if (visit.iterator !== 0) {\n let iterator = visit.iterator\n let child\n while ((child = node.nodes[node.indexes[iterator]])) {\n node.indexes[iterator] += 1\n if (!child[isClean]) {\n child[isClean] = true\n stack.push(toStack(child))\n return\n }\n }\n visit.iterator = 0\n delete node.indexes[iterator]\n }\n\n let events = visit.events\n while (visit.eventIndex < events.length) {\n let event = events[visit.eventIndex]\n visit.eventIndex += 1\n if (event === CHILDREN) {\n if (node.nodes && node.nodes.length) {\n node[isClean] = true\n visit.iterator = node.getIterator()\n }\n return\n } else if (this.listeners[event]) {\n visit.visitors = this.listeners[event]\n return\n }\n }\n stack.pop()\n }\n\n walkSync(node) {\n node[isClean] = true\n let events = getEvents(node)\n for (let event of events) {\n if (event === CHILDREN) {\n if (node.nodes) {\n node.each(child => {\n if (!child[isClean]) this.walkSync(child)\n })\n }\n } else {\n let visitors = this.listeners[event]\n if (visitors) {\n if (this.visitSync(visitors, node.toProxy())) return\n }\n }\n }\n }\n\n warnings() {\n return this.sync().warnings()\n }\n\n get content() {\n return this.stringify().content\n }\n\n get css() {\n return this.stringify().css\n }\n\n get map() {\n return this.stringify().map\n }\n\n get messages() {\n return this.sync().messages\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n return this.sync().root\n }\n\n get [Symbol.toStringTag]() {\n return 'LazyResult'\n }\n}\n\nLazyResult.registerPostcss = dependant => {\n postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n","'use strict'\n\nlet MapGenerator = require('./map-generator')\nlet stringify = require('./stringify')\nlet warnOnce = require('./warn-once')\nlet parse = require('./parse')\nconst Result = require('./result')\n\nclass NoWorkResult {\n constructor(processor, css, opts) {\n css = css.toString()\n this.stringified = false\n\n this._processor = processor\n this._css = css\n this._opts = opts\n this._map = undefined\n let root\n\n let str = stringify\n this.result = new Result(this._processor, root, this._opts)\n this.result.css = css\n\n let self = this\n Object.defineProperty(this.result, 'root', {\n get() {\n return self.root\n }\n })\n\n let map = new MapGenerator(str, root, this._opts, css)\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate()\n if (generatedCSS) {\n this.result.css = generatedCSS\n }\n if (generatedMap) {\n this.result.map = generatedMap\n }\n } else {\n map.clearAnnotation()\n this.result.css = map.css\n }\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n return Promise.resolve(this.result)\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n sync() {\n if (this.error) throw this.error\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this._opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this._css\n }\n\n warnings() {\n return []\n }\n\n get content() {\n return this.result.css\n }\n\n get css() {\n return this.result.css\n }\n\n get map() {\n return this.result.map\n }\n\n get messages() {\n return []\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n if (this._root) {\n return this._root\n }\n\n let root\n let parser = parse\n\n try {\n root = parser(this._css, this._opts)\n } catch (error) {\n this.error = error\n }\n\n if (this.error) {\n throw this.error\n } else {\n this._root = root\n return root\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'NoWorkResult'\n }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n","'use strict'\n\nlet NoWorkResult = require('./no-work-result')\nlet LazyResult = require('./lazy-result')\nlet Document = require('./document')\nlet Root = require('./root')\n\nclass Processor {\n constructor(plugins = []) {\n this.version = '8.4.38'\n this.plugins = this.normalize(plugins)\n }\n\n normalize(plugins) {\n let normalized = []\n for (let i of plugins) {\n if (i.postcss === true) {\n i = i()\n } else if (i.postcss) {\n i = i.postcss\n }\n\n if (typeof i === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins)\n } else if (typeof i === 'object' && i.postcssPlugin) {\n normalized.push(i)\n } else if (typeof i === 'function') {\n normalized.push(i)\n } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n 'one of the syntax/parser/stringifier options as outlined ' +\n 'in your PostCSS runner documentation.'\n )\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin')\n }\n }\n return normalized\n }\n\n process(css, opts = {}) {\n if (\n !this.plugins.length &&\n !opts.parser &&\n !opts.stringifier &&\n !opts.syntax\n ) {\n return new NoWorkResult(this, css, opts)\n } else {\n return new LazyResult(this, css, opts)\n }\n }\n\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]))\n return this\n }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n","'use strict'\n\nlet Declaration = require('./declaration')\nlet PreviousMap = require('./previous-map')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Input = require('./input')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nfunction fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n let { inputs: ownInputs, ...defaults } = json\n if (ownInputs) {\n inputs = []\n for (let input of ownInputs) {\n let inputHydrated = { ...input, __proto__: Input.prototype }\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n }\n }\n inputs.push(inputHydrated)\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source\n defaults.source = source\n if (inputId != null) {\n defaults.source.input = inputs[inputId]\n }\n }\n if (defaults.type === 'root') {\n return new Root(defaults)\n } else if (defaults.type === 'decl') {\n return new Declaration(defaults)\n } else if (defaults.type === 'rule') {\n return new Rule(defaults)\n } else if (defaults.type === 'comment') {\n return new Comment(defaults)\n } else if (defaults.type === 'atrule') {\n return new AtRule(defaults)\n } else {\n throw new Error('Unknown node type: ' + json.type)\n }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n","'use strict'\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet Declaration = require('./declaration')\nlet LazyResult = require('./lazy-result')\nlet Container = require('./container')\nlet Processor = require('./processor')\nlet stringify = require('./stringify')\nlet fromJSON = require('./fromJSON')\nlet Document = require('./document')\nlet Warning = require('./warning')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Result = require('./result.js')\nlet Input = require('./input')\nlet parse = require('./parse')\nlet list = require('./list')\nlet Rule = require('./rule')\nlet Root = require('./root')\nlet Node = require('./node')\n\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0]\n }\n return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n let warningPrinted = false\n function creator(...args) {\n // eslint-disable-next-line no-console\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': postcss.plugin was deprecated. Migration guide:\\n' +\n 'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n )\n if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n /* c8 ignore next 7 */\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n 'https://www.w3ctech.com/topic/2226'\n )\n }\n }\n let transformer = initializer(...args)\n transformer.postcssPlugin = name\n transformer.postcssVersion = new Processor().version\n return transformer\n }\n\n let cache\n Object.defineProperty(creator, 'postcss', {\n get() {\n if (!cache) cache = creator()\n return cache\n }\n })\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts)\n }\n\n return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n","import postcss from './postcss.js'\n\nexport default postcss\n\nexport const stringify = postcss.stringify\nexport const fromJSON = postcss.fromJSON\nexport const plugin = postcss.plugin\nexport const parse = postcss.parse\nexport const list = postcss.list\n\nexport const document = postcss.document\nexport const comment = postcss.comment\nexport const atRule = postcss.atRule\nexport const rule = postcss.rule\nexport const decl = postcss.decl\nexport const root = postcss.root\n\nexport const CssSyntaxError = postcss.CssSyntaxError\nexport const Declaration = postcss.Declaration\nexport const Container = postcss.Container\nexport const Processor = postcss.Processor\nexport const Document = postcss.Document\nexport const Comment = postcss.Comment\nexport const Warning = postcss.Warning\nexport const AtRule = postcss.AtRule\nexport const Result = postcss.Result\nexport const Input = postcss.Input\nexport const Rule = postcss.Rule\nexport const Root = postcss.Root\nexport const Node = postcss.Node\n","import { Config, LogLevel, Logger } from '@amplitude/analytics-types';\nimport { StoreType } from '../typings/session-replay';\n\nexport interface SamplingConfig {\n sample_rate: number;\n capture_enabled: boolean;\n}\n\nexport interface InteractionConfig {\n trackEveryNms?: number;\n enabled: boolean; // defaults to false\n batch: boolean; // defaults to false\n}\n\nexport type SessionReplayRemoteConfig = {\n sr_sampling_config?: SamplingConfig;\n sr_privacy_config?: PrivacyConfig;\n sr_interaction_config?: InteractionConfig;\n};\n\nexport interface SessionReplayRemoteConfigAPIResponse {\n configs: {\n sessionReplay: SessionReplayRemoteConfig;\n };\n}\n\nexport type MaskLevel =\n | 'light' // only mask a subset of inputs that’s deemed sensitive - password, credit card, telephone #, email. These are information we never want to capture.\n | 'medium' // mask all inputs\n | 'conservative'; // mask all inputs and all texts\n\nexport const DEFAULT_MASK_LEVEL = 'medium';\n\n// err on the side of excluding more\nexport type PrivacyConfig = {\n blockSelector?: string | string[]; // exclude in the UI\n defaultMaskLevel?: MaskLevel;\n maskSelector?: string[];\n unmaskSelector?: string[];\n};\n\nexport interface SessionReplayLocalConfig extends Config {\n apiKey: string;\n loggerProvider: Logger;\n logLevel: LogLevel;\n flushMaxRetries: number;\n sampleRate: number;\n privacyConfig?: PrivacyConfig;\n debugMode?: boolean;\n configEndpointUrl?: string;\n shouldInlineStylesheet?: boolean;\n version?: SessionReplayVersion;\n performanceConfig?: SessionReplayPerformanceConfig;\n storeType: StoreType;\n}\n\nexport interface SessionReplayJoinedConfig extends SessionReplayLocalConfig {\n captureEnabled?: boolean;\n interactionConfig?: InteractionConfig;\n}\n\nexport interface SessionReplayRemoteConfigFetch {\n getServerUrl: () => void;\n getSamplingConfig: (sessionId?: number) => Promise;\n fetchRemoteConfig: (sessionId?: number) => Promise;\n getRemoteConfig: (sessionId?: number) => Promise;\n}\n\nexport interface SessionReplayJoinedConfigGenerator {\n generateJoinedConfig: (sessionId?: string | number) => Promise;\n}\n\nexport interface SessionReplayVersion {\n version: string;\n type: SessionReplayType;\n}\n\nexport interface SessionReplayPerformanceConfig {\n enabled: boolean;\n timeout?: number;\n}\n\nexport type SessionReplayType = 'standalone' | 'plugin' | 'segment';\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { ServerZone } from '@amplitude/analytics-types';\nimport { getInputType } from '@amplitude/rrweb-snapshot';\nimport { DEFAULT_MASK_LEVEL, MaskLevel, PrivacyConfig, SessionReplayJoinedConfig } from './config/types';\nimport {\n KB_SIZE,\n MASK_TEXT_CLASS,\n SESSION_REPLAY_EU_URL,\n SESSION_REPLAY_SERVER_URL,\n SESSION_REPLAY_STAGING_URL,\n UNMASK_TEXT_CLASS,\n} from './constants';\nimport { StorageData } from './typings/session-replay';\n\ntype ChromeStorageEstimate = {\n quota?: number;\n usage?: number;\n usageDetails?: { [key: string]: number };\n};\n\n/**\n * Light: Subset of inputs\n * Medium: All inputs\n * Conservative: All inputs and all texts\n */\nconst isMaskedForLevel = (elementType: 'input' | 'text', level: MaskLevel, element: HTMLElement | null): boolean => {\n switch (level) {\n case 'light': {\n if (elementType !== 'input') {\n return true;\n }\n\n const inputType = element ? getInputType(element) : '';\n /* istanbul ignore if */ // TODO(lew): For some reason it's impossible to test this.\n if (!inputType) {\n return false;\n }\n\n if (['password', 'hidden', 'email', 'tel'].includes(inputType)) {\n return true;\n }\n\n if ((element as HTMLInputElement).autocomplete.startsWith('cc-')) {\n return true;\n }\n\n return false;\n }\n case 'medium':\n case 'conservative':\n return true;\n default:\n return isMaskedForLevel(elementType, DEFAULT_MASK_LEVEL, element);\n }\n};\n\n/**\n * Checks if the given element set to be masked by rrweb\n *\n * Priority is:\n * 1. [In code] Element/class based masking/unmasking <> [Config based] Selector based masking/unmasking\n * 2. Use app defaults\n */\nconst isMasked = (\n elementType: 'input' | 'text',\n config: PrivacyConfig = { defaultMaskLevel: DEFAULT_MASK_LEVEL },\n element: HTMLElement | null,\n): boolean => {\n if (element) {\n // Element or parent is explicitly instrumented in code to mask\n if (element.closest('.' + MASK_TEXT_CLASS)) {\n return true;\n }\n\n // Config has override for mask\n const shouldMask = (config.maskSelector ?? []).some((selector) => element.closest(selector));\n if (shouldMask) {\n return true;\n }\n\n // Code or config has override to unmask\n if (element.closest('.' + UNMASK_TEXT_CLASS)) {\n return false;\n }\n\n // Here we are probably sent an element, but we want to match if they have a\n // parent with an unmask selector.\n const shouldUnmask = (config.unmaskSelector ?? []).some((selector) => element.closest(selector));\n if (shouldUnmask) {\n return false;\n }\n }\n\n return isMaskedForLevel(elementType, config.defaultMaskLevel ?? DEFAULT_MASK_LEVEL, element);\n};\n\nexport const maskFn =\n (elementType: 'text' | 'input', config?: PrivacyConfig) =>\n (text: string, element: HTMLElement | null): string => {\n return isMasked(elementType, config, element) ? text.replace(/[^\\s]/g, '*') : text;\n };\n\nexport const generateHashCode = function (str: string) {\n let hash = 0;\n if (str.length === 0) return hash;\n for (let i = 0; i < str.length; i++) {\n const chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n return hash;\n};\n\nexport const isSessionInSample = function (sessionId: string | number, sampleRate: number) {\n const hashNumber = generateHashCode(sessionId.toString());\n const absHash = Math.abs(hashNumber);\n const absHashMultiply = absHash * 31;\n const mod = absHashMultiply % 1000000;\n return mod / 1000000 < sampleRate;\n};\n\nexport const getCurrentUrl = () => {\n const globalScope = getGlobalScope();\n return globalScope?.location ? globalScope.location.href : '';\n};\n\nexport const generateSessionReplayId = (sessionId: string | number, deviceId: string): string => {\n return `${deviceId}/${sessionId}`;\n};\n\nexport const getServerUrl = (serverZone?: keyof typeof ServerZone): string => {\n if (serverZone === ServerZone.STAGING) {\n return SESSION_REPLAY_STAGING_URL;\n }\n\n if (serverZone === ServerZone.EU) {\n return SESSION_REPLAY_EU_URL;\n }\n\n return SESSION_REPLAY_SERVER_URL;\n};\n\nexport const getStorageSize = async (): Promise => {\n try {\n const globalScope = getGlobalScope();\n if (globalScope) {\n const { usage, quota, usageDetails }: ChromeStorageEstimate = await globalScope.navigator.storage.estimate();\n const totalStorageSize = usage ? Math.round(usage / KB_SIZE) : 0;\n const percentOfQuota = usage && quota ? Math.round((usage / quota + Number.EPSILON) * 1000) / 1000 : 0;\n return { totalStorageSize, percentOfQuota, usageDetails: JSON.stringify(usageDetails) };\n }\n } catch (e) {\n // swallow\n }\n return { totalStorageSize: 0, percentOfQuota: 0, usageDetails: '' };\n};\n\nexport const getDebugConfig = (config: SessionReplayJoinedConfig) => {\n const debugConfig = {\n ...config,\n };\n const { apiKey } = debugConfig;\n debugConfig.apiKey = `****${apiKey.substring(apiKey.length - 4)}`;\n return debugConfig;\n};\n","import { RemoteConfigFetch, createRemoteConfigFetch } from '@amplitude/analytics-remote-config';\nimport { Logger } from '@amplitude/analytics-types';\nimport { getDebugConfig } from '../helpers';\nimport { SessionReplayOptions } from '../typings/session-replay';\nimport { SessionReplayLocalConfig } from './local-config';\nimport {\n SessionReplayLocalConfig as ISessionReplayLocalConfig,\n PrivacyConfig,\n SessionReplayJoinedConfig,\n SessionReplayRemoteConfig,\n} from './types';\n\nexport const removeInvalidSelectorsFromPrivacyConfig = (privacyConfig: PrivacyConfig, loggerProvider: Logger) => {\n // This allows us to not search the DOM.\n const fragment = document.createDocumentFragment();\n\n const dropInvalidSelectors = (selectors: string[] | string = []): string[] | undefined => {\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n selectors = selectors.filter((selector: string) => {\n try {\n fragment.querySelector(selector);\n } catch {\n loggerProvider.warn(`[session-replay-browser] omitting selector \"${selector}\" because it is invalid`);\n return false;\n }\n return true;\n });\n if (selectors.length === 0) {\n return undefined;\n }\n return selectors;\n };\n privacyConfig.blockSelector = dropInvalidSelectors(privacyConfig.blockSelector);\n privacyConfig.maskSelector = dropInvalidSelectors(privacyConfig.maskSelector);\n privacyConfig.unmaskSelector = dropInvalidSelectors(privacyConfig.unmaskSelector);\n return privacyConfig;\n};\nexport class SessionReplayJoinedConfigGenerator {\n private readonly localConfig: ISessionReplayLocalConfig;\n private readonly remoteConfigFetch: RemoteConfigFetch;\n\n constructor(remoteConfigFetch: RemoteConfigFetch, localConfig: ISessionReplayLocalConfig) {\n this.localConfig = localConfig;\n this.remoteConfigFetch = remoteConfigFetch;\n }\n\n async generateJoinedConfig(sessionId?: string | number): Promise {\n const config: SessionReplayJoinedConfig = { ...this.localConfig };\n // Special case here as optOut is implemented via getter/setter\n config.optOut = this.localConfig.optOut;\n // We always want captureEnabled to be true, unless there's an override\n // in the remote config.\n config.captureEnabled = true;\n let remoteConfig: SessionReplayRemoteConfig | undefined;\n try {\n const samplingConfig = await this.remoteConfigFetch.getRemoteConfig(\n 'sessionReplay',\n 'sr_sampling_config',\n sessionId,\n );\n\n const privacyConfig = await this.remoteConfigFetch.getRemoteConfig(\n 'sessionReplay',\n 'sr_privacy_config',\n sessionId,\n );\n\n // This is intentionally forced to only be set through the remote config.\n config.interactionConfig = await this.remoteConfigFetch.getRemoteConfig(\n 'sessionReplay',\n 'sr_interaction_config',\n sessionId,\n );\n\n if (samplingConfig || privacyConfig) {\n remoteConfig = {};\n if (samplingConfig) {\n remoteConfig.sr_sampling_config = samplingConfig;\n }\n if (privacyConfig) {\n remoteConfig.sr_privacy_config = privacyConfig;\n }\n }\n } catch (err: unknown) {\n const knownError = err as Error;\n this.localConfig.loggerProvider.warn(knownError.message);\n config.captureEnabled = false;\n }\n\n if (!remoteConfig) {\n return config;\n }\n\n const { sr_sampling_config: samplingConfig, sr_privacy_config: remotePrivacyConfig } = remoteConfig;\n if (samplingConfig && Object.keys(samplingConfig).length > 0) {\n if (Object.prototype.hasOwnProperty.call(samplingConfig, 'capture_enabled')) {\n config.captureEnabled = samplingConfig.capture_enabled;\n } else {\n config.captureEnabled = false;\n }\n\n if (Object.prototype.hasOwnProperty.call(samplingConfig, 'sample_rate')) {\n config.sampleRate = samplingConfig.sample_rate;\n }\n } else {\n // If config API response was valid (ie 200), but no config returned, assume that\n // customer has not yet set up config, and use sample rate from SDK options,\n // allowing for immediate replay capture\n config.captureEnabled = true;\n this.localConfig.loggerProvider.debug(\n 'Remote config successfully fetched, but no values set for project, Session Replay capture enabled.',\n );\n }\n\n // Remote config join acts somewhat like a left join between the remote and the local\n // config. That is, remote config has precedence over local values as with sampling.\n // However, non conflicting values will be added to the lists.\n // Here's an example to illustrate:\n //\n // Remote config: {'.selector1': 'MASK', '.selector2': 'UNMASK'}\n // Local config: {'.selector1': 'UNMASK', '.selector3': 'MASK'}\n //\n // Resolved config: {'.selector1': 'MASK', '.selector2': 'UNMASK', '.selector3': 'MASK'}\n // config.privacyConfig = {\n // ...(config.privacyConfig ?? {}),\n // ...remotePrivacyConfig,\n // };\n\n if (remotePrivacyConfig) {\n const localPrivacyConfig: PrivacyConfig = config.privacyConfig ?? {};\n\n const joinedPrivacyConfig: Required & { blockSelector: string[] } = {\n defaultMaskLevel: remotePrivacyConfig.defaultMaskLevel ?? localPrivacyConfig.defaultMaskLevel ?? 'medium',\n blockSelector: [],\n maskSelector: [],\n unmaskSelector: [],\n };\n\n const privacyConfigSelectorMap = (privacyConfig: PrivacyConfig): Record => {\n const selectorMap: Record = {};\n if (typeof privacyConfig.blockSelector === 'string') {\n privacyConfig.blockSelector = [privacyConfig.blockSelector];\n }\n\n for (const selector of privacyConfig.blockSelector ?? []) {\n selectorMap[selector] = 'block';\n }\n for (const selector of privacyConfig.maskSelector ?? []) {\n selectorMap[selector] = 'mask';\n }\n for (const selector of privacyConfig.unmaskSelector ?? []) {\n selectorMap[selector] = 'unmask';\n }\n return selectorMap;\n };\n\n const selectorMap: Record = {\n ...privacyConfigSelectorMap(localPrivacyConfig),\n ...privacyConfigSelectorMap(remotePrivacyConfig),\n };\n\n for (const [selector, selectorType] of Object.entries(selectorMap)) {\n if (selectorType === 'mask') {\n joinedPrivacyConfig.maskSelector.push(selector);\n } else if (selectorType === 'block') {\n joinedPrivacyConfig.blockSelector.push(selector);\n } else if (selectorType === 'unmask') {\n joinedPrivacyConfig.unmaskSelector.push(selector);\n }\n }\n\n config.privacyConfig = removeInvalidSelectorsFromPrivacyConfig(\n joinedPrivacyConfig,\n this.localConfig.loggerProvider,\n );\n }\n\n this.localConfig.loggerProvider.debug(\n JSON.stringify({ name: 'session replay joined config', config: getDebugConfig(config) }, null, 2),\n );\n\n return config;\n }\n}\n\nexport const createSessionReplayJoinedConfigGenerator = async (apiKey: string, options: SessionReplayOptions) => {\n const localConfig = new SessionReplayLocalConfig(apiKey, options);\n const remoteConfigFetch = await createRemoteConfigFetch({\n localConfig,\n configKeys: ['sessionReplay'],\n });\n\n return new SessionReplayJoinedConfigGenerator(remoteConfigFetch, localConfig);\n};\n","export const UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport const UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, event batch rejected';\nexport const MAX_RETRIES_EXCEEDED_MESSAGE = 'Session replay event batch rejected due to exceeded retry count';\nexport const STORAGE_FAILURE = 'Failed to store session replay events in IndexedDB';\nexport const MISSING_DEVICE_ID_MESSAGE = 'Session replay event batch not sent due to missing device ID';\nexport const MISSING_API_KEY_MESSAGE = 'Session replay event batch not sent due to missing api key';\n","// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.17.0';\n","import { BaseTransport } from '@amplitude/analytics-core';\nimport { Logger as ILogger, Status } from '@amplitude/analytics-types';\nimport { getCurrentUrl, getServerUrl } from './helpers';\nimport {\n MAX_RETRIES_EXCEEDED_MESSAGE,\n MISSING_API_KEY_MESSAGE,\n MISSING_DEVICE_ID_MESSAGE,\n UNEXPECTED_ERROR_MESSAGE,\n UNEXPECTED_NETWORK_ERROR_MESSAGE,\n} from './messages';\nimport {\n SessionReplayTrackDestination as AmplitudeSessionReplayTrackDestination,\n SessionReplayDestination,\n SessionReplayDestinationContext,\n} from './typings/session-replay';\nimport { VERSION } from './version';\nimport { KB_SIZE } from './constants';\n\nexport type PayloadBatcher = ({ version, events }: { version: number; events: string[] }) => {\n version: number;\n events: unknown[];\n};\n\nexport class SessionReplayTrackDestination implements AmplitudeSessionReplayTrackDestination {\n loggerProvider: ILogger;\n storageKey = '';\n retryTimeout = 1000;\n private scheduled: ReturnType | null = null;\n payloadBatcher: PayloadBatcher;\n queue: SessionReplayDestinationContext[] = [];\n\n constructor({ loggerProvider, payloadBatcher }: { loggerProvider: ILogger; payloadBatcher?: PayloadBatcher }) {\n this.loggerProvider = loggerProvider;\n this.payloadBatcher = payloadBatcher ? payloadBatcher : (payload) => payload;\n }\n\n sendEventsList(destinationData: SessionReplayDestination) {\n this.addToQueue({\n ...destinationData,\n attempts: 0,\n timeout: 0,\n });\n }\n\n addToQueue(...list: SessionReplayDestinationContext[]) {\n const tryable = list.filter((context) => {\n if (context.attempts < (context.flushMaxRetries || 0)) {\n context.attempts += 1;\n return true;\n }\n this.completeRequest({\n context,\n err: MAX_RETRIES_EXCEEDED_MESSAGE,\n });\n return false;\n });\n tryable.forEach((context) => {\n this.queue = this.queue.concat(context);\n if (context.timeout === 0) {\n this.schedule(0);\n return;\n }\n\n setTimeout(() => {\n context.timeout = 0;\n this.schedule(0);\n }, context.timeout);\n });\n }\n\n schedule(timeout: number) {\n if (this.scheduled) return;\n this.scheduled = setTimeout(() => {\n void this.flush(true).then(() => {\n if (this.queue.length > 0) {\n this.schedule(timeout);\n }\n });\n }, timeout);\n }\n\n async flush(useRetry = false) {\n const list: SessionReplayDestinationContext[] = [];\n const later: SessionReplayDestinationContext[] = [];\n this.queue.forEach((context) => (context.timeout === 0 ? list.push(context) : later.push(context)));\n this.queue = later;\n\n if (this.scheduled) {\n clearTimeout(this.scheduled);\n this.scheduled = null;\n }\n\n await Promise.all(list.map((context) => this.send(context, useRetry)));\n }\n\n async send(context: SessionReplayDestinationContext, useRetry = true) {\n const apiKey = context.apiKey;\n if (!apiKey) {\n return this.completeRequest({ context, err: MISSING_API_KEY_MESSAGE });\n }\n const deviceId = context.deviceId;\n if (!deviceId) {\n return this.completeRequest({ context, err: MISSING_DEVICE_ID_MESSAGE });\n }\n const url = getCurrentUrl();\n const version = VERSION;\n const sampleRate = context.sampleRate;\n const urlParams = new URLSearchParams({\n device_id: deviceId,\n session_id: `${context.sessionId}`,\n type: `${context.type}`,\n });\n const sessionReplayLibrary = `${context.version?.type || 'standalone'}/${context.version?.version || version}`;\n const payload = this.payloadBatcher({\n version: 1,\n events: context.events,\n });\n\n if (payload.events.length === 0) {\n this.completeRequest({ context });\n return;\n }\n\n try {\n const options: RequestInit = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n Authorization: `Bearer ${apiKey}`,\n 'X-Client-Version': version,\n 'X-Client-Library': sessionReplayLibrary,\n 'X-Client-Url': url,\n 'X-Client-Sample-Rate': `${sampleRate}`,\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n const server_url = `${getServerUrl(context.serverZone)}?${urlParams.toString()}`;\n const res = await fetch(server_url, options);\n if (res === null) {\n this.completeRequest({ context, err: UNEXPECTED_ERROR_MESSAGE });\n return;\n }\n if (!useRetry) {\n let responseBody = '';\n try {\n responseBody = JSON.stringify(res.body, null, 2);\n } catch {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n this.completeRequest({ context, success: `${res.status}: ${responseBody}` });\n } else {\n this.handleReponse(res.status, context);\n }\n } catch (e) {\n this.completeRequest({ context, err: e as string });\n }\n }\n\n handleReponse(status: number, context: SessionReplayDestinationContext) {\n const parsedStatus = new BaseTransport().buildStatus(status);\n switch (parsedStatus) {\n case Status.Success:\n this.handleSuccessResponse(context);\n break;\n case Status.Failed:\n this.handleOtherResponse(context);\n break;\n default:\n this.completeRequest({ context, err: UNEXPECTED_NETWORK_ERROR_MESSAGE });\n }\n }\n\n handleSuccessResponse(context: SessionReplayDestinationContext) {\n const sizeOfEventsList = Math.round(new Blob(context.events).size / KB_SIZE);\n this.completeRequest({\n context,\n success: `Session replay event batch tracked successfully for session id ${context.sessionId}, size of events: ${sizeOfEventsList} KB`,\n });\n }\n\n handleOtherResponse(context: SessionReplayDestinationContext) {\n this.addToQueue({\n ...context,\n timeout: context.attempts * this.retryTimeout,\n });\n }\n\n completeRequest({\n context,\n err,\n success,\n }: {\n context: SessionReplayDestinationContext;\n err?: string;\n success?: string;\n }) {\n void context.onComplete();\n if (err) {\n this.loggerProvider.warn(err);\n } else if (success) {\n this.loggerProvider.log(success);\n }\n }\n}\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(this.request);\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","import { MAX_EVENT_LIST_SIZE_IN_BYTES, MAX_INTERVAL, MIN_INTERVAL } from '../constants';\nimport { Events, EventsStore, SendingSequencesReturn } from '../typings/session-replay';\nimport { Logger } from '@amplitude/analytics-types';\n\nexport type InstanceArgs = {\n loggerProvider: Logger;\n minInterval?: number;\n maxInterval?: number;\n maxPersistedEventsSize?: number;\n};\n\nexport abstract class BaseEventsStore implements EventsStore {\n protected readonly loggerProvider: Logger;\n private minInterval = MIN_INTERVAL;\n private maxInterval = MAX_INTERVAL;\n private maxPersistedEventsSize = MAX_EVENT_LIST_SIZE_IN_BYTES;\n private interval = this.minInterval;\n private _timeAtLastSplit = Date.now(); // Initialize this so we have a point of comparison when events are recorded\n\n public get timeAtLastSplit() {\n return this._timeAtLastSplit;\n }\n\n constructor(args: InstanceArgs) {\n this.loggerProvider = args.loggerProvider;\n this.minInterval = args.minInterval ?? this.minInterval;\n this.maxInterval = args.maxInterval ?? this.maxInterval;\n this.maxPersistedEventsSize = args.maxPersistedEventsSize ?? this.maxPersistedEventsSize;\n }\n\n abstract addEventToCurrentSequence(\n sessionId: string | number,\n event: string,\n ): Promise | undefined>;\n abstract getSequencesToSend(): Promise[] | undefined>;\n abstract storeCurrentSequence(sessionId: number): Promise | undefined>;\n abstract storeSendingEvents(sessionId: string | number, events: Events): Promise;\n abstract cleanUpSessionEventsStore(sessionId: number, sequenceId: KeyType): Promise;\n\n /**\n * Determines whether to send the events list to the backend and start a new\n * empty events list, based on the size of the list as well as the last time sent\n * @param nextEventString\n * @returns boolean\n */\n shouldSplitEventsList = (events: Events, nextEventString: string): boolean => {\n const sizeOfNextEvent = new Blob([nextEventString]).size;\n const sizeOfEventsList = new Blob(events).size;\n if (sizeOfEventsList + sizeOfNextEvent >= this.maxPersistedEventsSize) {\n return true;\n }\n if (Date.now() - this.timeAtLastSplit > this.interval && events.length) {\n this.interval = Math.min(this.maxInterval, this.interval + this.minInterval);\n this._timeAtLastSplit = Date.now();\n return true;\n }\n return false;\n };\n}\n","import { SessionReplayRemoteConfig } from '../config/types';\nimport { Events } from '../typings/session-replay';\n\nexport enum RecordingStatus {\n RECORDING = 'recording',\n SENT = 'sent',\n}\n\nexport interface IDBStoreSequence {\n events: Events;\n status: RecordingStatus;\n}\n\ninterface IDBRemoteConfig {\n config: SessionReplayRemoteConfig;\n lastFetchedSessionId: number | undefined;\n}\nexport interface IDBStoreSession {\n currentSequenceId: number;\n sessionSequences: {\n [sequenceId: number]: IDBStoreSequence;\n };\n}\n\nexport interface IDBStore {\n remoteConfig?: IDBRemoteConfig;\n [sessionId: number]: IDBStoreSession;\n}\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { STORAGE_PREFIX } from '@amplitude/analytics-core';\nimport { DBSchema, IDBPDatabase, openDB } from 'idb';\nimport { STORAGE_FAILURE } from '../messages';\nimport { EventType, Events, SendingSequencesReturn } from '../typings/session-replay';\nimport { BaseEventsStore, InstanceArgs as BaseInstanceArgs } from './base-events-store';\nimport { IDBStore, IDBStoreSession, RecordingStatus } from './legacy-idb-types';\n\nexport const currentSequenceKey = 'sessionCurrentSequence';\nexport const sequencesToSendKey = 'sequencesToSend';\nexport const remoteConfigKey = 'remoteConfig';\n\nexport interface SessionReplayDB extends DBSchema {\n sessionCurrentSequence: {\n key: number;\n value: Omit, 'sequenceId'>;\n };\n sequencesToSend: {\n key: number;\n value: Omit, 'sequenceId'>;\n indexes: { sessionId: string | number };\n };\n}\n\nexport const keyValDatabaseExists = function (): Promise {\n const globalScope = getGlobalScope();\n return new Promise((resolve, reject) => {\n if (!globalScope) {\n return reject(new Error('Global scope not found'));\n }\n\n if (!globalScope.indexedDB) {\n return reject(new Error('Session Replay: cannot find indexedDB'));\n }\n\n try {\n const request = globalScope.indexedDB.open('keyval-store');\n request.onupgradeneeded = function () {\n if (request.result.version === 1) {\n request.result.close();\n request.transaction && request.transaction.abort();\n globalScope.indexedDB.deleteDatabase('keyval-store');\n resolve();\n }\n };\n request.onsuccess = function () {\n resolve(request.result);\n };\n } catch (e) {\n reject(e);\n }\n });\n};\n\nconst batchPromiseAll = async (promiseBatch: Promise[]) => {\n while (promiseBatch.length > 0) {\n const chunkSize = 10;\n const batch = promiseBatch.splice(0, chunkSize);\n await Promise.all(batch);\n }\n};\n\nexport const defineObjectStores = (db: IDBPDatabase) => {\n let sequencesStore;\n let currentSequenceStore;\n if (!db.objectStoreNames.contains(currentSequenceKey)) {\n currentSequenceStore = db.createObjectStore(currentSequenceKey, {\n keyPath: 'sessionId',\n });\n }\n if (!db.objectStoreNames.contains(sequencesToSendKey)) {\n sequencesStore = db.createObjectStore(sequencesToSendKey, {\n keyPath: 'sequenceId',\n autoIncrement: true,\n });\n sequencesStore.createIndex('sessionId', 'sessionId');\n }\n return {\n sequencesStore,\n currentSequenceStore,\n };\n};\n\nexport const createStore = async (dbName: string) => {\n return await openDB(dbName, 1, {\n upgrade: defineObjectStores,\n });\n};\n\ntype InstanceArgs = {\n apiKey: string;\n db: IDBPDatabase;\n} & BaseInstanceArgs;\n\nexport class SessionReplayEventsIDBStore extends BaseEventsStore {\n private readonly apiKey: string;\n private readonly db: IDBPDatabase;\n\n constructor(args: InstanceArgs) {\n super(args);\n this.apiKey = args.apiKey;\n this.db = args.db;\n }\n\n static async new(\n type: EventType,\n args: Omit,\n sessionId?: string | number,\n ): Promise {\n try {\n const dbSuffix = type === 'replay' ? '' : `_${type}`;\n const dbName = `${args.apiKey.substring(0, 10)}_amp_session_replay_events${dbSuffix}`;\n const db = await createStore(dbName);\n const eventsIDBStore = new SessionReplayEventsIDBStore({\n ...args,\n db,\n });\n await eventsIDBStore.transitionFromKeyValStore(sessionId);\n return eventsIDBStore;\n } catch (e) {\n args.loggerProvider.warn(`${STORAGE_FAILURE}: ${e as string}`);\n }\n return;\n }\n\n async getCurrentSequenceEvents(sessionId?: number) {\n if (sessionId) {\n const events = await this.db.get('sessionCurrentSequence', sessionId);\n if (!events) {\n return undefined;\n }\n return [events];\n }\n\n const allEvents = [];\n for (const events of await this.db.getAll('sessionCurrentSequence')) {\n allEvents.push(events);\n }\n\n return allEvents;\n }\n\n getSequencesToSend = async (): Promise[] | undefined> => {\n try {\n const sequences: SendingSequencesReturn[] = [];\n let cursor = await this.db.transaction('sequencesToSend').store.openCursor();\n while (cursor) {\n const { sessionId, events } = cursor.value;\n sequences.push({\n events,\n sequenceId: cursor.key,\n sessionId,\n });\n cursor = await cursor.continue();\n }\n\n return sequences;\n } catch (e) {\n this.loggerProvider.warn(`${STORAGE_FAILURE}: ${e as string}`);\n }\n return undefined;\n };\n\n storeCurrentSequence = async (sessionId: number) => {\n try {\n const currentSequenceData = await this.db.get<'sessionCurrentSequence'>(currentSequenceKey, sessionId);\n if (!currentSequenceData) {\n return undefined;\n }\n\n const sequenceId = await this.db.put<'sequencesToSend'>(sequencesToSendKey, {\n sessionId: sessionId,\n events: currentSequenceData.events,\n });\n\n await this.db.put<'sessionCurrentSequence'>(currentSequenceKey, {\n sessionId,\n events: [],\n });\n\n return {\n ...currentSequenceData,\n sessionId,\n sequenceId,\n };\n } catch (e) {\n this.loggerProvider.warn(`${STORAGE_FAILURE}: ${e as string}`);\n }\n return undefined;\n };\n\n addEventToCurrentSequence = async (sessionId: number, event: string) => {\n try {\n const tx = this.db.transaction<'sessionCurrentSequence', 'readwrite'>(currentSequenceKey, 'readwrite');\n const sequenceEvents = await tx.store.get(sessionId);\n if (!sequenceEvents) {\n await tx.store.put({ sessionId, events: [event] });\n return;\n }\n let eventsToSend;\n if (this.shouldSplitEventsList(sequenceEvents.events, event)) {\n eventsToSend = sequenceEvents.events;\n // set store to empty array\n await tx.store.put({ sessionId, events: [event] });\n } else {\n // add event to array\n const updatedEvents = sequenceEvents.events.concat(event);\n await tx.store.put({ sessionId, events: updatedEvents });\n }\n\n await tx.done;\n if (!eventsToSend) {\n return undefined;\n }\n\n const sequenceId = await this.storeSendingEvents(sessionId, eventsToSend);\n\n if (!sequenceId) {\n return undefined;\n }\n\n return {\n events: eventsToSend,\n sessionId,\n sequenceId,\n };\n } catch (e) {\n this.loggerProvider.warn(`${STORAGE_FAILURE}: ${e as string}`);\n }\n return undefined;\n };\n\n storeSendingEvents = async (sessionId: number, events: Events) => {\n try {\n const sequenceId = await this.db.put<'sequencesToSend'>(sequencesToSendKey, {\n sessionId: sessionId,\n events: events,\n });\n return sequenceId;\n } catch (e) {\n this.loggerProvider.warn(`${STORAGE_FAILURE}: ${e as string}`);\n }\n return undefined;\n };\n\n cleanUpSessionEventsStore = async (_sessionId: number, sequenceId?: number) => {\n if (!sequenceId) {\n return;\n }\n try {\n await this.db.delete<'sequencesToSend'>(sequencesToSendKey, sequenceId);\n } catch (e) {\n this.loggerProvider.warn(`${STORAGE_FAILURE}: ${e as string}`);\n }\n };\n\n transitionFromKeyValStore = async (sessionId?: string | number) => {\n try {\n const keyValDb = await keyValDatabaseExists();\n if (!keyValDb) {\n return;\n }\n\n const transitionCurrentSessionSequences = async (numericSessionId: number, sessionStore: IDBStoreSession) => {\n const currentSessionSequences = sessionStore.sessionSequences;\n const promisesToBatch: Promise | undefined>[] = [];\n\n Object.keys(currentSessionSequences).forEach((sequenceId) => {\n const numericSequenceId = parseInt(sequenceId, 10);\n const sequence = currentSessionSequences[numericSequenceId];\n if (numericSequenceId === sessionStore.currentSequenceId) {\n const eventAddPromises: Promise | undefined>[] = sequence.events.map(\n async (event) => this.addEventToCurrentSequence(numericSessionId, event),\n );\n promisesToBatch.concat(eventAddPromises);\n } else if (sequence.status !== RecordingStatus.SENT) {\n promisesToBatch.push(this.storeSendingEvents(numericSessionId, sequence.events));\n }\n });\n\n await batchPromiseAll(promisesToBatch);\n };\n\n const storageKey = `${STORAGE_PREFIX}_${this.apiKey.substring(0, 10)}`;\n try {\n const getAllRequest = keyValDb.transaction('keyval').objectStore('keyval').getAll(storageKey);\n const transitionPromise = new Promise((resolve) => {\n getAllRequest.onsuccess = async (e) => {\n const storedReplaySessionContextList = e && ((e.target as IDBRequest).result as IDBStore[]);\n const storedReplaySessionContexts = storedReplaySessionContextList && storedReplaySessionContextList[0];\n if (storedReplaySessionContexts) {\n const promisesToBatch: Promise[] = [];\n\n Object.keys(storedReplaySessionContexts).forEach((storedSessionId) => {\n const numericSessionId = parseInt(storedSessionId, 10);\n const oldSessionStore = storedReplaySessionContexts[numericSessionId];\n\n if (sessionId === numericSessionId) {\n promisesToBatch.push(transitionCurrentSessionSequences(numericSessionId, oldSessionStore));\n } else {\n const oldSessionSequences = oldSessionStore.sessionSequences;\n Object.keys(oldSessionSequences).forEach((sequenceId) => {\n const numericSequenceId = parseInt(sequenceId, 10);\n if (oldSessionSequences[numericSequenceId].status !== RecordingStatus.SENT) {\n promisesToBatch.push(\n this.storeSendingEvents(numericSessionId, oldSessionSequences[numericSequenceId].events),\n );\n }\n });\n }\n });\n\n await batchPromiseAll(promisesToBatch);\n }\n resolve();\n };\n });\n\n await transitionPromise;\n const globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.indexedDB.deleteDatabase('keyval-store');\n }\n } catch (e) {\n this.loggerProvider.warn(`Failed to transition session replay events from keyval to new store: ${e as string}`);\n }\n } catch (e) {\n this.loggerProvider.warn(\n `Failed to access keyval store: ${\n e as string\n }. For more information, visit: https://www.docs.developers.amplitude.com/session-replay/sdks/standalone/#indexeddb-best-practices`,\n );\n }\n };\n}\n","/* istanbul ignore file */\n\n// DO NOT EDIT (unless you know what you're doing)\n// Taken directly from git@github.com:antonmedv/finder.git@77d33158440dfffee4a300d2975b43a5283004ab\n\n/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */\n/* eslint-disable prefer-const */\n\n// License: MIT\n// Author: Anton Medvedev \n// Source: https://github.com/antonmedv/finder\n\ntype Knot = {\n name: string;\n penalty: number;\n level?: number;\n};\n\ntype Path = Knot[];\n\nexport type Options = {\n root: Element;\n idName: (name: string) => boolean;\n className: (name: string) => boolean;\n tagName: (name: string) => boolean;\n attr: (name: string, value: string) => boolean;\n seedMinLength: number;\n optimizedMinLength: number;\n threshold: number;\n maxNumberOfTries: number;\n timeoutMs: number | undefined;\n};\n\nlet config: Options;\nlet rootDocument: Document | Element;\nlet start: Date;\n\nexport function finder(input: Element, options?: Partial): string {\n start = new Date();\n if (input.nodeType !== Node.ELEMENT_NODE) {\n throw new Error(`Can't generate CSS selector for non-element node type.`);\n }\n if ('html' === input.tagName.toLowerCase()) {\n return 'html';\n }\n const defaults: Options = {\n root: document.body,\n idName: (_name: string) => true,\n className: (_name: string) => true,\n tagName: (_name: string) => true,\n attr: (_name: string, _value: string) => false,\n seedMinLength: 1,\n optimizedMinLength: 2,\n threshold: 1000,\n maxNumberOfTries: 10000,\n timeoutMs: undefined,\n };\n\n config = { ...defaults, ...options };\n rootDocument = findRootDocument(config.root, defaults);\n\n let path = bottomUpSearch(input, 'all', () =>\n bottomUpSearch(input, 'two', () => bottomUpSearch(input, 'one', () => bottomUpSearch(input, 'none'))),\n );\n\n if (path) {\n const optimized = sort(optimize(path, input));\n if (optimized.length > 0) {\n path = optimized[0];\n }\n return selector(path);\n } else {\n throw new Error(`Selector was not found.`);\n }\n}\n\nfunction findRootDocument(rootNode: Element | Document, defaults: Options) {\n if (rootNode.nodeType === Node.DOCUMENT_NODE) {\n return rootNode;\n }\n if (rootNode === defaults.root) {\n return rootNode.ownerDocument as Document;\n }\n return rootNode;\n}\n\nfunction bottomUpSearch(\n input: Element,\n limit: 'all' | 'two' | 'one' | 'none',\n fallback?: () => Path | null,\n): Path | null {\n let path: Path | null = null;\n let stack: Knot[][] = [];\n let current: Element | null = input;\n let i = 0;\n while (current) {\n const elapsedTime = new Date().getTime() - start.getTime();\n if (config.timeoutMs !== undefined && elapsedTime > config.timeoutMs) {\n throw new Error(`Timeout: Can't find a unique selector after ${elapsedTime}ms`);\n }\n let level: Knot[] = maybe(id(current)) ||\n maybe(...attr(current)) ||\n maybe(...classNames(current)) ||\n maybe(tagName(current)) || [any()];\n const nth = index(current);\n if (limit == 'all') {\n if (nth) {\n level = level.concat(level.filter(dispensableNth).map((node) => nthChild(node, nth)));\n }\n } else if (limit == 'two') {\n level = level.slice(0, 1);\n if (nth) {\n level = level.concat(level.filter(dispensableNth).map((node) => nthChild(node, nth)));\n }\n } else if (limit == 'one') {\n const [node] = (level = level.slice(0, 1));\n if (nth && dispensableNth(node)) {\n level = [nthChild(node, nth)];\n }\n } else if (limit == 'none') {\n level = [any()];\n if (nth) {\n level = [nthChild(level[0], nth)];\n }\n }\n for (let node of level) {\n node.level = i;\n }\n stack.push(level);\n if (stack.length >= config.seedMinLength) {\n path = findUniquePath(stack, fallback);\n if (path) {\n break;\n }\n }\n current = current.parentElement;\n i++;\n }\n if (!path) {\n path = findUniquePath(stack, fallback);\n }\n if (!path && fallback) {\n return fallback();\n }\n return path;\n}\n\nfunction findUniquePath(stack: Knot[][], fallback?: () => Path | null): Path | null {\n const paths = sort(combinations(stack));\n if (paths.length > config.threshold) {\n return fallback ? fallback() : null;\n }\n for (let candidate of paths) {\n if (unique(candidate)) {\n return candidate;\n }\n }\n return null;\n}\n\nfunction selector(path: Path): string {\n let node = path[0];\n let query = node.name;\n for (let i = 1; i < path.length; i++) {\n const level = path[i].level || 0;\n if (node.level === level - 1) {\n query = `${path[i].name} > ${query}`;\n } else {\n query = `${path[i].name} ${query}`;\n }\n node = path[i];\n }\n return query;\n}\n\nfunction penalty(path: Path): number {\n return path.map((node) => node.penalty).reduce((acc, i) => acc + i, 0);\n}\n\nfunction unique(path: Path) {\n const css = selector(path);\n switch (rootDocument.querySelectorAll(css).length) {\n case 0:\n throw new Error(`Can't select any node with this selector: ${css}`);\n case 1:\n return true;\n default:\n return false;\n }\n}\n\nfunction id(input: Element): Knot | null {\n const elementId = input.getAttribute('id');\n if (elementId && config.idName(elementId)) {\n return {\n name: '#' + CSS.escape(elementId),\n penalty: 0,\n };\n }\n return null;\n}\n\nfunction attr(input: Element): Knot[] {\n const attrs = Array.from(input.attributes).filter((attr) => config.attr(attr.name, attr.value));\n return attrs.map(\n (attr): Knot => ({\n name: `[${CSS.escape(attr.name)}=\"${CSS.escape(attr.value)}\"]`,\n penalty: 0.5,\n }),\n );\n}\n\nfunction classNames(input: Element): Knot[] {\n const names = Array.from(input.classList).filter(config.className);\n return names.map(\n (name): Knot => ({\n name: '.' + CSS.escape(name),\n penalty: 1,\n }),\n );\n}\n\nfunction tagName(input: Element): Knot | null {\n const name = input.tagName.toLowerCase();\n if (config.tagName(name)) {\n return {\n name,\n penalty: 2,\n };\n }\n return null;\n}\n\nfunction any(): Knot {\n return {\n name: '*',\n penalty: 3,\n };\n}\n\nfunction index(input: Element): number | null {\n const parent = input.parentNode;\n if (!parent) {\n return null;\n }\n let child = parent.firstChild;\n if (!child) {\n return null;\n }\n let i = 0;\n while (child) {\n if (child.nodeType === Node.ELEMENT_NODE) {\n i++;\n }\n if (child === input) {\n break;\n }\n child = child.nextSibling;\n }\n return i;\n}\n\nfunction nthChild(node: Knot, i: number): Knot {\n return {\n name: node.name + `:nth-child(${i})`,\n penalty: node.penalty + 1,\n };\n}\n\nfunction dispensableNth(node: Knot) {\n return node.name !== 'html' && !node.name.startsWith('#');\n}\n\nfunction maybe(...level: (Knot | null)[]): Knot[] | null {\n const list = level.filter(notEmpty);\n if (list.length > 0) {\n return list;\n }\n return null;\n}\n\nfunction notEmpty(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nfunction* combinations(stack: Knot[][], path: Knot[] = []): Generator {\n if (stack.length > 0) {\n for (let node of stack[0]) {\n yield* combinations(stack.slice(1, stack.length), path.concat(node));\n }\n } else {\n yield path;\n }\n}\n\nfunction sort(paths: Iterable): Path[] {\n return [...paths].sort((a, b) => penalty(a) - penalty(b));\n}\n\ntype Scope = {\n counter: number;\n visited: Map;\n};\n\nfunction* optimize(\n path: Path,\n input: Element,\n scope: Scope = {\n counter: 0,\n visited: new Map(),\n },\n): Generator {\n if (path.length > 2 && path.length > config.optimizedMinLength) {\n for (let i = 1; i < path.length - 1; i++) {\n if (scope.counter > config.maxNumberOfTries) {\n return; // Okay At least I tried!\n }\n scope.counter += 1;\n const newPath = [...path];\n newPath.splice(i, 1);\n const newPathKey = selector(newPath);\n if (scope.visited.has(newPathKey)) {\n return;\n }\n if (unique(newPath) && same(newPath, input)) {\n yield newPath;\n scope.visited.set(newPathKey, true);\n yield* optimize(newPath, input, scope);\n }\n }\n }\n}\n\nfunction same(path: Path, input: Element) {\n return rootDocument.querySelector(selector(path)) === input;\n}\n","import { Events, SendingSequencesReturn } from '../typings/session-replay';\nimport { BaseEventsStore } from './base-events-store';\n\nexport class InMemoryEventsStore extends BaseEventsStore {\n private finalizedSequences: Record = {};\n private sequences: Record = {};\n private sequenceId = 0;\n\n private resetCurrentSequence(sessionId: string | number) {\n this.sequences[sessionId] = [];\n }\n\n private addSequence(sessionId: string | number): SendingSequencesReturn {\n const sequenceId = this.sequenceId++;\n const events = [...this.sequences[sessionId]];\n this.finalizedSequences[sequenceId] = { sessionId, events };\n this.resetCurrentSequence(sessionId);\n return { sequenceId, events, sessionId };\n }\n\n async getSequencesToSend(): Promise[] | undefined> {\n return Object.entries(this.finalizedSequences).map(([sequenceId, { sessionId, events }]) => ({\n sequenceId: Number(sequenceId),\n sessionId,\n events,\n }));\n }\n\n async storeCurrentSequence(sessionId: string | number): Promise | undefined> {\n if (!this.sequences[sessionId]) {\n return undefined;\n }\n return this.addSequence(sessionId);\n }\n\n async addEventToCurrentSequence(\n sessionId: number,\n event: string,\n ): Promise | undefined> {\n if (!this.sequences[sessionId]) {\n this.resetCurrentSequence(sessionId);\n }\n\n let sequenceReturn: SendingSequencesReturn | undefined;\n if (this.shouldSplitEventsList(this.sequences[sessionId], event)) {\n sequenceReturn = this.addSequence(sessionId);\n }\n\n this.sequences[sessionId].push(event);\n\n return sequenceReturn;\n }\n\n async storeSendingEvents(sessionId: number, events: Events): Promise {\n this.finalizedSequences[this.sequenceId] = { sessionId, events };\n\n return this.sequenceId++;\n }\n\n async cleanUpSessionEventsStore(_sessionId: number, sequenceId?: number): Promise {\n if (sequenceId !== undefined) {\n delete this.finalizedSequences[sequenceId];\n }\n }\n}\n","import {\n SessionReplayEventsManager as AmplitudeSessionReplayEventsManager,\n EventsStore,\n EventType,\n StoreType,\n} from '../typings/session-replay';\n\nimport { SessionReplayJoinedConfig } from '../config/types';\nimport { getStorageSize } from '../helpers';\nimport { PayloadBatcher, SessionReplayTrackDestination } from '../track-destination';\nimport { SessionReplayEventsIDBStore } from './events-idb-store';\nimport { InMemoryEventsStore } from './events-memory-store';\n\nexport const createEventsManager = async ({\n config,\n sessionId,\n minInterval,\n maxInterval,\n type,\n payloadBatcher,\n storeType,\n}: {\n config: SessionReplayJoinedConfig;\n type: Type;\n minInterval?: number;\n maxInterval?: number;\n sessionId?: string | number;\n payloadBatcher?: PayloadBatcher;\n storeType: StoreType;\n}): Promise> => {\n const trackDestination = new SessionReplayTrackDestination({ loggerProvider: config.loggerProvider, payloadBatcher });\n\n const getMemoryStore = (): EventsStore => {\n return new InMemoryEventsStore({\n loggerProvider: config.loggerProvider,\n maxInterval,\n minInterval,\n });\n };\n\n const getIdbStoreOrFallback = async (): Promise> => {\n const store = await SessionReplayEventsIDBStore.new(\n type,\n {\n loggerProvider: config.loggerProvider,\n minInterval,\n maxInterval,\n apiKey: config.apiKey,\n },\n sessionId,\n );\n config.loggerProvider.log('Failed to initialize idb store, falling back to memory store.');\n return store ?? getMemoryStore();\n };\n\n const store: EventsStore = storeType === 'idb' ? await getIdbStoreOrFallback() : getMemoryStore();\n\n /**\n * Immediately sends events to the track destination.\n */\n const sendEventsList = ({\n events,\n sessionId,\n deviceId,\n sequenceId,\n }: {\n events: string[];\n sessionId: string | number;\n deviceId: string;\n sequenceId?: number;\n }) => {\n if (config.debugMode) {\n getStorageSize()\n .then(({ totalStorageSize, percentOfQuota, usageDetails }) => {\n config.loggerProvider.debug(\n `Total storage size: ${totalStorageSize} KB, percentage of quota: ${percentOfQuota}%, usage details: ${usageDetails}`,\n );\n })\n .catch(() => {\n // swallow error\n });\n }\n\n trackDestination.sendEventsList({\n events: events,\n sessionId: sessionId,\n flushMaxRetries: config.flushMaxRetries,\n apiKey: config.apiKey,\n deviceId: deviceId,\n sampleRate: config.sampleRate,\n serverZone: config.serverZone,\n version: config.version,\n type,\n onComplete: async () => {\n await store.cleanUpSessionEventsStore(sessionId, sequenceId);\n return;\n },\n });\n };\n\n const sendCurrentSequenceEvents = ({ sessionId, deviceId }: { sessionId: number; deviceId: string }) => {\n store\n .storeCurrentSequence(sessionId)\n .then((currentSequence) => {\n if (currentSequence) {\n sendEventsList({\n sequenceId: currentSequence.sequenceId,\n events: currentSequence.events,\n sessionId: currentSequence.sessionId,\n deviceId,\n });\n }\n })\n .catch((e) => {\n config.loggerProvider.warn('Failed to get current sequence of session replay events for session:', e);\n });\n };\n\n const sendStoredEvents = async ({ deviceId }: { deviceId: string }) => {\n const sequencesToSend = await store.getSequencesToSend();\n sequencesToSend &&\n sequencesToSend.forEach((sequence) => {\n sendEventsList({\n sequenceId: sequence.sequenceId,\n events: sequence.events,\n sessionId: sequence.sessionId,\n deviceId,\n });\n });\n };\n\n const addEvent = ({\n event,\n sessionId,\n deviceId,\n }: {\n event: { type: Type; data: string };\n sessionId: number;\n deviceId: string;\n }) => {\n store\n .addEventToCurrentSequence(sessionId, event.data)\n .then((sequenceToSend) => {\n return (\n sequenceToSend &&\n sendEventsList({\n sequenceId: sequenceToSend.sequenceId,\n events: sequenceToSend.events,\n sessionId: sequenceToSend.sessionId,\n deviceId,\n })\n );\n })\n .catch((e) => {\n config.loggerProvider.warn('Failed to add event to session replay capture:', e);\n });\n };\n\n async function flush(useRetry = false) {\n return trackDestination.flush(useRetry);\n }\n\n return {\n sendCurrentSequenceEvents,\n addEvent,\n sendStoredEvents,\n flush,\n };\n};\n","import {\n SessionReplayEventsManager as AmplitudeSessionReplayEventsManager,\n EventsManagerWithType,\n} from '../typings/session-replay';\n\n/**\n * \"Registers\" events managers internally. When an event is added this class routes the event to the correct\n * manager. For all send or flush methods this will invoke the event for all registered managers.\n */\nexport class MultiEventManager\n implements AmplitudeSessionReplayEventsManager\n{\n private managers: Map>;\n\n constructor(...managers: EventsManagerWithType[]) {\n const managersMap = new Map>();\n managers.forEach((t) => {\n managersMap.set(t.name, t.manager);\n });\n this.managers = managersMap;\n }\n\n async sendStoredEvents(opts: { deviceId: string }): Promise {\n const promises: Promise[] = [];\n this.managers.forEach((manager) => {\n promises.push(manager.sendStoredEvents(opts));\n });\n await Promise.all(promises);\n }\n\n addEvent({\n sessionId,\n event,\n deviceId,\n }: {\n sessionId: number;\n event: { type: EventType; data: EventDataType };\n deviceId: string;\n }): void {\n this.managers.get(event.type)?.addEvent({ sessionId, event, deviceId });\n }\n\n sendCurrentSequenceEvents({ sessionId, deviceId }: { sessionId: number; deviceId: string }): void {\n this.managers.forEach((manager) => {\n manager.sendCurrentSequenceEvents({ sessionId, deviceId });\n });\n }\n\n async flush(useRetry?: boolean | undefined): Promise {\n const promises: Promise[] = [];\n this.managers.forEach((manager) => {\n promises.push(manager.flush(useRetry));\n });\n await Promise.all(promises);\n }\n}\n","import type {\n DataURLOptions,\n INode,\n Mirror,\n serializedNodeWithId,\n} from '@amplitude/rrweb-snapshot';\n\nexport enum EventType {\n DomContentLoaded,\n Load,\n FullSnapshot,\n IncrementalSnapshot,\n Meta,\n Custom,\n Plugin,\n}\n\nexport type domContentLoadedEvent = {\n type: EventType.DomContentLoaded;\n data: unknown;\n};\n\nexport type loadedEvent = {\n type: EventType.Load;\n data: unknown;\n};\n\nexport type fullSnapshotEvent = {\n type: EventType.FullSnapshot;\n data: {\n node: serializedNodeWithId;\n initialOffset: {\n top: number;\n left: number;\n };\n };\n};\n\nexport type incrementalSnapshotEvent = {\n type: EventType.IncrementalSnapshot;\n data: incrementalData;\n};\n\nexport type metaEvent = {\n type: EventType.Meta;\n data: {\n href: string;\n width: number;\n height: number;\n };\n};\n\nexport type customEvent = {\n type: EventType.Custom;\n data: {\n tag: string;\n payload: T;\n };\n};\n\nexport type pluginEvent = {\n type: EventType.Plugin;\n data: {\n plugin: string;\n payload: T;\n };\n};\n\nexport enum IncrementalSource {\n Mutation,\n MouseMove,\n MouseInteraction,\n Scroll,\n ViewportResize,\n Input,\n TouchMove,\n MediaInteraction,\n StyleSheetRule,\n CanvasMutation,\n Font,\n Log,\n Drag,\n StyleDeclaration,\n Selection,\n AdoptedStyleSheet,\n CustomElement,\n}\n\nexport type mutationData = {\n source: IncrementalSource.Mutation;\n} & mutationCallbackParam;\n\nexport type mousemoveData = {\n source:\n | IncrementalSource.MouseMove\n | IncrementalSource.TouchMove\n | IncrementalSource.Drag;\n positions: mousePosition[];\n};\n\nexport type mouseInteractionData = {\n source: IncrementalSource.MouseInteraction;\n} & mouseInteractionParam;\n\nexport type scrollData = {\n source: IncrementalSource.Scroll;\n} & scrollPosition;\n\nexport type viewportResizeData = {\n source: IncrementalSource.ViewportResize;\n} & viewportResizeDimension;\n\nexport type inputData = {\n source: IncrementalSource.Input;\n id: number;\n} & inputValue;\n\nexport type mediaInteractionData = {\n source: IncrementalSource.MediaInteraction;\n} & mediaInteractionParam;\n\nexport type styleSheetRuleData = {\n source: IncrementalSource.StyleSheetRule;\n} & styleSheetRuleParam;\n\nexport type styleDeclarationData = {\n source: IncrementalSource.StyleDeclaration;\n} & styleDeclarationParam;\n\nexport type canvasMutationData = {\n source: IncrementalSource.CanvasMutation;\n} & canvasMutationParam;\n\nexport type fontData = {\n source: IncrementalSource.Font;\n} & fontParam;\n\nexport type selectionData = {\n source: IncrementalSource.Selection;\n} & selectionParam;\n\nexport type adoptedStyleSheetData = {\n source: IncrementalSource.AdoptedStyleSheet;\n} & adoptedStyleSheetParam;\n\nexport type customElementData = {\n source: IncrementalSource.CustomElement;\n} & customElementParam;\n\nexport type incrementalData =\n | mutationData\n | mousemoveData\n | mouseInteractionData\n | scrollData\n | viewportResizeData\n | inputData\n | mediaInteractionData\n | styleSheetRuleData\n | canvasMutationData\n | fontData\n | selectionData\n | styleDeclarationData\n | adoptedStyleSheetData\n | customElementData;\n\nexport type eventWithoutTime =\n | domContentLoadedEvent\n | loadedEvent\n | fullSnapshotEvent\n | incrementalSnapshotEvent\n | metaEvent\n | customEvent\n | pluginEvent;\n\n/**\n * @deprecated intended for internal use\n * a synonym for eventWithoutTime\n */\nexport type event = eventWithoutTime;\n\nexport type eventWithTime = eventWithoutTime & {\n timestamp: number;\n delay?: number;\n};\n\nexport type canvasEventWithTime = eventWithTime & {\n type: EventType.IncrementalSnapshot;\n data: canvasMutationData;\n};\n\nexport type blockClass = string | RegExp;\n\nexport type maskTextClass = string | RegExp;\n\nexport type SamplingStrategy = Partial<{\n /**\n * false means not to record mouse/touch move events\n * number is the throttle threshold of recording mouse/touch move\n */\n mousemove: boolean | number;\n /**\n * number is the throttle threshold of mouse/touch move callback\n */\n mousemoveCallback: number;\n /**\n * false means not to record mouse interaction events\n * can also specify record some kinds of mouse interactions\n */\n mouseInteraction: boolean | Record;\n /**\n * number is the throttle threshold of recording scroll\n */\n scroll: number;\n /**\n * number is the throttle threshold of recording media interactions\n */\n media: number;\n /**\n * 'all' will record all the input events\n * 'last' will only record the last input value while input a sequence of chars\n */\n input: 'all' | 'last';\n /**\n * 'all' will record every single canvas call\n * number between 1 and 60, will record an image snapshots in a web-worker a (maximum) number of times per second.\n * Number only supported where [`OffscreenCanvas`](http://mdn.io/offscreencanvas) is supported.\n */\n canvas: 'all' | number;\n}>;\n\nexport interface ICrossOriginIframeMirror {\n getId(\n iframe: HTMLIFrameElement,\n remoteId: number,\n parentToRemoteMap?: Map,\n remoteToParentMap?: Map,\n ): number;\n getIds(iframe: HTMLIFrameElement, remoteId: number[]): number[];\n getRemoteId(\n iframe: HTMLIFrameElement,\n parentId: number,\n map?: Map,\n ): number;\n getRemoteIds(iframe: HTMLIFrameElement, parentId: number[]): number[];\n reset(iframe?: HTMLIFrameElement): void;\n}\n\nexport type RecordPlugin = {\n name: string;\n observer?: (\n cb: (...args: Array) => void,\n win: IWindow,\n options: TOptions,\n ) => listenerHandler;\n eventProcessor?: (event: eventWithTime) => eventWithTime & TExtend;\n getMirror?: (mirrors: {\n nodeMirror: Mirror;\n crossOriginIframeMirror: ICrossOriginIframeMirror;\n crossOriginIframeStyleMirror: ICrossOriginIframeMirror;\n }) => void;\n options: TOptions;\n};\n\nexport type hooksParam = {\n mutation?: mutationCallBack;\n mousemove?: mousemoveCallBack;\n mouseInteraction?: mouseInteractionCallBack;\n scroll?: scrollCallback;\n viewportResize?: viewportResizeCallback;\n input?: inputCallback;\n mediaInteaction?: mediaInteractionCallback;\n styleSheetRule?: styleSheetRuleCallback;\n styleDeclaration?: styleDeclarationCallback;\n canvasMutation?: canvasMutationCallback;\n font?: fontCallback;\n selection?: selectionCallback;\n customElement?: customElementCallback;\n};\n\n// https://dom.spec.whatwg.org/#interface-mutationrecord\nexport type mutationRecord = Readonly<{\n type: string;\n target: Node;\n oldValue: string | null;\n addedNodes: NodeList;\n removedNodes: NodeList;\n attributeName: string | null;\n}>;\n\nexport type textCursor = {\n node: Node;\n value: string | null;\n};\nexport type textMutation = {\n id: number;\n value: string | null;\n};\n\nexport type styleOMValue = {\n [key: string]: styleValueWithPriority | string | false;\n};\n\nexport type styleValueWithPriority = [string, string];\n\nexport type attributeCursor = {\n node: Node;\n attributes: {\n [key: string]: string | styleOMValue | null;\n };\n styleDiff: styleOMValue;\n _unchangedStyles: styleOMValue;\n};\nexport type attributeMutation = {\n id: number;\n attributes: {\n [key: string]: string | styleOMValue | null;\n };\n};\n\nexport type removedNodeMutation = {\n parentId: number;\n id: number;\n isShadow?: boolean;\n};\n\nexport type addedNodeMutation = {\n parentId: number;\n // Newly recorded mutations will not have previousId any more, just for compatibility\n previousId?: number | null;\n nextId: number | null;\n node: serializedNodeWithId;\n};\n\nexport type mutationCallbackParam = {\n texts: textMutation[];\n attributes: attributeMutation[];\n removes: removedNodeMutation[];\n adds: addedNodeMutation[];\n isAttachIframe?: true;\n};\n\nexport type mutationCallBack = (m: mutationCallbackParam) => void;\n\nexport type mousemoveCallBack = (\n p: mousePosition[],\n source:\n | IncrementalSource.MouseMove\n | IncrementalSource.TouchMove\n | IncrementalSource.Drag,\n) => void;\n\nexport type mousePosition = {\n x: number;\n y: number;\n id: number;\n timeOffset: number;\n};\n\nexport type mouseMovePos = {\n x: number;\n y: number;\n id: number;\n debugData: incrementalData;\n};\n\nexport enum MouseInteractions {\n MouseUp,\n MouseDown,\n Click,\n ContextMenu,\n DblClick,\n Focus,\n Blur,\n TouchStart,\n TouchMove_Departed, // we will start a separate observer for touch move event\n TouchEnd,\n TouchCancel,\n}\n\nexport enum PointerTypes {\n Mouse,\n Pen,\n Touch,\n}\n\nexport enum CanvasContext {\n '2D',\n WebGL,\n WebGL2,\n}\n\nexport type SerializedCanvasArg =\n | {\n rr_type: 'ArrayBuffer';\n base64: string; // base64\n }\n | {\n rr_type: 'Blob';\n data: Array;\n type?: string;\n }\n | {\n rr_type: string;\n src: string; // url of image\n }\n | {\n rr_type: string;\n args: Array;\n }\n | {\n rr_type: string;\n index: number;\n };\n\nexport type CanvasArg =\n | SerializedCanvasArg\n | string\n | number\n | boolean\n | null\n | CanvasArg[];\n\ntype mouseInteractionParam = {\n type: MouseInteractions;\n id: number;\n x?: number;\n y?: number;\n pointerType?: PointerTypes;\n};\n\nexport type mouseInteractionCallBack = (d: mouseInteractionParam) => void;\n\nexport type scrollPosition = {\n id: number;\n x: number;\n y: number;\n};\n\nexport type scrollCallback = (p: scrollPosition) => void;\n\nexport type styleSheetAddRule = {\n rule: string;\n index?: number | number[];\n};\n\nexport type styleSheetDeleteRule = {\n index: number | number[];\n};\n\nexport type styleSheetRuleParam = {\n id?: number;\n styleId?: number;\n removes?: styleSheetDeleteRule[];\n adds?: styleSheetAddRule[];\n replace?: string;\n replaceSync?: string;\n};\n\nexport type styleSheetRuleCallback = (s: styleSheetRuleParam) => void;\n\nexport type adoptedStyleSheetParam = {\n // id indicates the node id of document or shadow DOMs' host element.\n id: number;\n // New CSSStyleSheets which have never appeared before.\n styles?: {\n styleId: number;\n rules: styleSheetAddRule[];\n }[];\n // StyleSheet ids to be adopted.\n styleIds: number[];\n};\n\nexport type adoptedStyleSheetCallback = (a: adoptedStyleSheetParam) => void;\n\nexport type styleDeclarationParam = {\n id?: number;\n styleId?: number;\n index: number[];\n set?: {\n property: string;\n value: string | null;\n priority: string | undefined;\n };\n remove?: {\n property: string;\n };\n};\n\nexport type styleDeclarationCallback = (s: styleDeclarationParam) => void;\n\nexport type canvasMutationCommand = {\n property: string;\n args: Array;\n setter?: true;\n};\n\nexport type canvasMutationParam =\n | {\n id: number;\n type: CanvasContext;\n commands: canvasMutationCommand[];\n }\n | ({\n id: number;\n type: CanvasContext;\n } & canvasMutationCommand);\n\nexport type canvasMutationWithType = {\n type: CanvasContext;\n} & canvasMutationCommand;\n\nexport type canvasMutationCallback = (p: canvasMutationParam) => void;\n\nexport type canvasManagerMutationCallback = (\n target: HTMLCanvasElement,\n p: canvasMutationWithType,\n) => void;\n\nexport type ImageBitmapDataURLWorkerParams = {\n id: number;\n bitmap: ImageBitmap;\n width: number;\n height: number;\n dataURLOptions: DataURLOptions;\n};\n\nexport type ImageBitmapDataURLWorkerResponse =\n | {\n id: number;\n }\n | {\n id: number;\n type: string;\n base64: string;\n width: number;\n height: number;\n };\n\nexport type fontParam = {\n family: string;\n fontSource: string;\n buffer: boolean;\n descriptors?: FontFaceDescriptors;\n};\n\nexport type fontCallback = (p: fontParam) => void;\n\nexport type viewportResizeDimension = {\n width: number;\n height: number;\n};\n\nexport type viewportResizeCallback = (d: viewportResizeDimension) => void;\n\nexport type inputValue = {\n text: string;\n isChecked: boolean;\n\n // `userTriggered` indicates if this event was triggered directly by user (userTriggered: true)\n // or was triggered indirectly (userTriggered: false)\n // Example of `userTriggered` in action:\n // User clicks on radio element (userTriggered: true) which triggers the other radio element to change (userTriggered: false)\n userTriggered?: boolean;\n};\n\nexport type inputCallback = (v: inputValue & { id: number }) => void;\n\nexport enum MediaInteractions {\n Play,\n Pause,\n Seeked,\n VolumeChange,\n RateChange,\n}\n\nexport type mediaInteractionParam = {\n type: MediaInteractions;\n id: number;\n currentTime?: number;\n volume?: number;\n muted?: boolean;\n loop?: boolean;\n playbackRate?: number;\n};\n\nexport type mediaInteractionCallback = (p: mediaInteractionParam) => void;\n\nexport type DocumentDimension = {\n x: number;\n y: number;\n // scale value relative to its parent iframe\n relativeScale: number;\n // scale value relative to the root iframe\n absoluteScale: number;\n};\n\nexport type SelectionRange = {\n start: number;\n startOffset: number;\n end: number;\n endOffset: number;\n};\n\nexport type selectionParam = {\n ranges: Array;\n};\n\nexport type selectionCallback = (p: selectionParam) => void;\n\nexport type customElementParam = {\n define?: {\n name: string;\n };\n};\n\nexport type customElementCallback = (c: customElementParam) => void;\n\nexport type DeprecatedMirror = {\n map: {\n [key: number]: INode;\n };\n getId: (n: Node) => number;\n getNode: (id: number) => INode | null;\n removeNodeFromMap: (n: Node) => void;\n has: (id: number) => boolean;\n reset: () => void;\n};\n\nexport type throttleOptions = {\n leading?: boolean;\n trailing?: boolean;\n};\n\nexport type listenerHandler = () => void;\nexport type hookResetter = () => void;\n\nexport type playerMetaData = {\n startTime: number;\n endTime: number;\n totalTime: number;\n};\n\nexport type actionWithDelay = {\n doAction: () => void;\n delay: number;\n};\n\nexport type Handler = (event?: unknown) => void;\n\nexport type Emitter = {\n on(type: string, handler: Handler): void;\n emit(type: string, event?: unknown): void;\n off(type: string, handler: Handler): void;\n};\n\nexport type Arguments = T extends (...payload: infer U) => unknown\n ? U\n : unknown;\n\nexport enum ReplayerEvents {\n Start = 'start',\n Pause = 'pause',\n /**\n * @deprecated use Play instead\n */\n Resume = 'resume',\n Resize = 'resize',\n Finish = 'finish',\n FullsnapshotRebuilded = 'fullsnapshot-rebuilded',\n LoadStylesheetStart = 'load-stylesheet-start',\n LoadStylesheetEnd = 'load-stylesheet-end',\n SkipStart = 'skip-start',\n SkipEnd = 'skip-end',\n MouseInteraction = 'mouse-interaction',\n EventCast = 'event-cast',\n CustomEvent = 'custom-event',\n Flush = 'flush',\n StateChange = 'state-change',\n PlayBack = 'play-back',\n Destroy = 'destroy',\n}\n\nexport type KeepIframeSrcFn = (src: string) => boolean;\n\ndeclare global {\n interface Window {\n FontFace: typeof FontFace;\n }\n}\n\nexport type IWindow = Window & typeof globalThis;\n\nexport type Optional = Pick, K> & Omit;\n\nexport type GetTypedKeys = TakeTypeHelper<\n Obj,\n ValueType\n>[keyof TakeTypeHelper];\nexport type TakeTypeHelper = {\n [K in keyof Obj]: Obj[K] extends ValueType ? K : never;\n};\n\nexport type TakeTypedKeyValues = Pick<\n Obj,\n TakeTypeHelper[keyof TakeTypeHelper]\n>;\n\n// Types for @rrweb/packer\nexport type PackFn = (event: eventWithTime) => string;\nexport type UnpackFn = (raw: string) => eventWithTime;\n","import { mouseInteractionCallBack, MouseInteractions } from '@amplitude/rrweb-types';\nimport { record, utils } from '@amplitude/rrweb';\nimport { SessionReplayEventsManager as AmplitudeSessionReplayEventsManager } from '../typings/session-replay';\nimport { PayloadBatcher } from 'src/track-destination';\nimport { finder } from '../libs/finder';\nimport { getGlobalScope } from '@amplitude/analytics-client-common';\n\n// exported for testing\nexport type ClickEvent = {\n timestamp: number;\n x: number;\n y: number;\n viewportWidth: number;\n viewportHeight: number;\n pageUrl: string;\n selector?: string;\n type: 'click';\n};\n\n// exported for testing\nexport type ClickEventWithCount = ClickEvent & { count: number };\n\ntype Options = {\n sessionId: string | number;\n deviceIdFn: () => string | undefined;\n eventsManager: AmplitudeSessionReplayEventsManager<'interaction', string>;\n};\n\nconst HOUR_IN_MILLISECONDS = 3_600_000;\n\nexport const clickNonBatcher: PayloadBatcher = ({ version, events }) => {\n const clickEvents: ClickEvent[] = [];\n events.forEach((evt: string) => {\n const record = JSON.parse(evt) as Record;\n record.count = 1;\n if (record.type === 'click') {\n clickEvents.push(record as ClickEvent);\n }\n });\n return { version, events: clickEvents };\n};\n\nexport const clickBatcher: PayloadBatcher = ({ version, events }) => {\n const clickEvents: ClickEvent[] = [];\n events.forEach((evt: string) => {\n const record = JSON.parse(evt) as Record;\n if (record.type === 'click') {\n clickEvents.push(record as ClickEvent);\n }\n });\n\n const reduced = clickEvents.reduce>((prev, curr) => {\n const { x, y, selector, timestamp } = curr;\n\n // round down to nearest hour.\n const hour = timestamp - (timestamp % HOUR_IN_MILLISECONDS);\n\n const k = `${x}:${y}:${selector ?? ''}:${hour}`;\n if (!prev[k]) {\n prev[k] = { ...curr, timestamp: hour, count: 1 };\n } else {\n prev[k].count += 1;\n }\n return prev;\n }, {});\n\n return { version, events: Object.values(reduced) };\n};\n\nexport const clickHook: (options: Options) => mouseInteractionCallBack =\n ({ eventsManager, sessionId, deviceIdFn }) =>\n (e) => {\n if (e.type !== MouseInteractions.Click) {\n return;\n }\n\n const globalScope = getGlobalScope();\n if (!globalScope) {\n return;\n }\n\n const { location, innerHeight, innerWidth } = globalScope;\n // it only makes sense to send events if a pageUrl exists\n if (!location) {\n return;\n }\n\n const { x, y } = e;\n if (x === undefined || y === undefined) {\n return;\n }\n\n const node = record.mirror.getNode(e.id);\n let selector;\n if (node) {\n selector = finder(node as Element);\n }\n\n const { left: scrollX, top: scrollY } = utils.getWindowScroll(globalScope as unknown as Window);\n\n const event: ClickEvent = {\n x: x + scrollX,\n y: y + scrollY,\n selector,\n\n viewportHeight: innerHeight,\n viewportWidth: innerWidth,\n pageUrl: location.href,\n timestamp: Date.now(),\n type: 'click',\n };\n const deviceId = deviceIdFn();\n if (deviceId) {\n eventsManager.addEvent({ sessionId, event: { type: 'interaction', data: JSON.stringify(event) }, deviceId });\n }\n };\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { SessionReplayJoinedConfig } from './config/types';\nimport { SessionReplayDestinationSessionMetadata } from './typings/session-replay';\nimport { getServerUrl } from './helpers';\n\ntype BeaconSendFn = (pageUrl: string, payload: T) => boolean;\n\n/**\n * For very small payloads it's preferable to use the [Beacon API](https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API).\n * While it doesn't provide 100% guarantees on sends, it greatly helps with overall reliability and page load performance. As\n * the Beacon API has a potential to fail due to size constraints we want to fall back to XHR if need be. This is mostly to\n * be used with 'pagehide' or 'beforeunload' events.\n *\n * Note there are only 3 CORS safelisted Content-Types you can send:\n *\n * - application/x-www-form-urlencoded\n * - multipart/form-data\n * - text/plain\n *\n * If we do not send one of these, some browsers like Chrome may not send this at all. Also we incur the overhead of a preflight\n * request. In our case we will add no additional content-type header. If you are trying to ping a server that requires this\n * header, you may want to use the regular fetch API or a different mechanism.\n */\nexport class BeaconTransport {\n private sendBeacon: BeaconSendFn;\n private sendXhr: BeaconSendFn;\n private readonly basePageUrl: string;\n private readonly context: Omit;\n private readonly apiKey: string;\n\n constructor(context: Omit, config: SessionReplayJoinedConfig) {\n const globalScope = getGlobalScope();\n if (globalScope && globalScope.navigator && typeof globalScope.navigator.sendBeacon === 'function') {\n this.sendBeacon = (pageUrl, payload) => {\n try {\n if (globalScope.navigator.sendBeacon(pageUrl, JSON.stringify(payload))) {\n return true;\n }\n } catch (e) {\n // not logging error, since it would be hard to view and just adds overhead.\n }\n return false;\n };\n } else {\n this.sendBeacon = () => false;\n }\n\n this.sendXhr = (pageUrl, payload) => {\n const xhr = new XMLHttpRequest();\n xhr.open('POST', pageUrl, true);\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n return true;\n };\n\n this.basePageUrl = getServerUrl(config.serverZone);\n this.apiKey = config.apiKey;\n this.context = context;\n }\n\n send(deviceId: string, payload: T) {\n const { sessionId, type } = this.context;\n const urlParams = new URLSearchParams({\n device_id: deviceId,\n session_id: String(sessionId),\n type: String(type),\n api_key: this.apiKey,\n });\n\n const pageUrl = `${this.basePageUrl}?${urlParams.toString()}`;\n\n // ideally send using the beacon API, but there is a chance it may fail, possibly due to a payload\n // size limit. in this case, try best effort to send using xhr.\n this.sendBeacon(pageUrl, payload) || this.sendXhr(pageUrl, payload);\n }\n}\n","import { utils } from '@amplitude/rrweb';\nimport { scrollCallback, scrollPosition } from '@amplitude/rrweb-types';\nimport { BeaconTransport } from '../beacon-transport';\nimport { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { SessionReplayJoinedConfig } from '../config/types';\nimport { SessionReplayDestinationSessionMetadata } from '../typings/session-replay';\n\nconst { getWindowHeight, getWindowWidth } = utils;\n\nexport type ScrollEvent = {\n timestamp: number; // Timestamp the event occurred\n maxScrollX: number; // Max window scroll X on a page\n maxScrollY: number; // Max window scroll Y on a page\n maxScrollHeight: number; // Max window scroll Y + window height on a page\n maxScrollWidth: number; // Max window scroll X + window width on a page\n viewportWidth: number;\n viewportHeight: number;\n pageUrl: string;\n type: 'scroll';\n};\n\nexport type ScrollEventPayload = { version: number; events: ScrollEvent[] };\n\n/**\n * This is intended to watch and update max scroll activity when loaded for a particular page.\n * A new instance should be created if the page URL changes, since by default it does not reset\n * it's max scroll state. It is intended to send very few and very small events utilizing the\n * Beacon API.\n * @see {@link BeaconTransport} for more details on Beacon API usage.\n */\nexport class ScrollWatcher {\n private timestamp = Date.now();\n private _maxScrollX: number;\n private _maxScrollY: number;\n private _maxScrollWidth: number;\n private _maxScrollHeight: number;\n private readonly transport: BeaconTransport;\n\n static default(\n context: Omit,\n config: SessionReplayJoinedConfig,\n ): ScrollWatcher {\n return new ScrollWatcher(new BeaconTransport(context, config));\n }\n\n constructor(transport: BeaconTransport) {\n this._maxScrollX = 0;\n this._maxScrollY = 0;\n this._maxScrollWidth = getWindowWidth();\n this._maxScrollHeight = getWindowHeight();\n\n this.transport = transport;\n }\n\n public get maxScrollX(): number {\n return this._maxScrollX;\n }\n\n public get maxScrollY(): number {\n return this._maxScrollY;\n }\n\n public get maxScrollWidth(): number {\n return this._maxScrollWidth;\n }\n\n public get maxScrollHeight(): number {\n return this._maxScrollHeight;\n }\n\n update(e: scrollPosition) {\n const now = Date.now();\n if (e.x > this._maxScrollX) {\n const width = getWindowWidth();\n this._maxScrollX = e.x;\n const maxScrollWidth = e.x + width;\n if (maxScrollWidth > this._maxScrollWidth) {\n this._maxScrollWidth = maxScrollWidth;\n }\n this.timestamp = now;\n }\n\n if (e.y > this._maxScrollY) {\n const height = getWindowHeight();\n this._maxScrollY = e.y;\n const maxScrollHeight = e.y + height;\n if (maxScrollHeight > this._maxScrollHeight) {\n this._maxScrollHeight = maxScrollHeight;\n }\n this.timestamp = now;\n }\n }\n\n hook: scrollCallback = (e: scrollPosition) => {\n this.update(e);\n };\n\n send: (deviceIdFn: () => string | undefined) => (_: PageTransitionEvent | Event) => void = (deviceIdFn) => (_) => {\n const deviceId = deviceIdFn();\n const globalScope = getGlobalScope();\n if (globalScope && deviceId) {\n this.transport.send(deviceId, {\n version: 1,\n events: [\n {\n maxScrollX: this._maxScrollX,\n maxScrollY: this._maxScrollY,\n maxScrollWidth: this._maxScrollWidth,\n maxScrollHeight: this._maxScrollHeight,\n\n viewportHeight: getWindowHeight(),\n viewportWidth: getWindowWidth(),\n pageUrl: globalScope.location.href,\n timestamp: this.timestamp,\n type: 'scroll',\n },\n ],\n });\n }\n };\n}\n","import { generateSessionReplayId } from './helpers';\nimport { SessionIdentifiers as ISessionIdentifiers } from './typings/session-replay';\n\nexport class SessionIdentifiers implements ISessionIdentifiers {\n deviceId?: string;\n sessionId?: string | number;\n sessionReplayId?: string;\n\n constructor({ sessionId, deviceId }: { sessionId?: string | number; deviceId?: string }) {\n this.deviceId = deviceId;\n this.sessionId = sessionId;\n\n if (sessionId && deviceId) {\n this.sessionReplayId = generateSessionReplayId(sessionId, deviceId);\n }\n }\n}\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Much of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// Many optimizations have been made, so the bundle size is ultimately smaller but performance is similar.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var u = ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([c], { type: 'text/javascript' })));\n var w = new Worker(u);\n w.onerror = function (e) { return cb(e.error, null); };\n w.onmessage = function (e) { return cb(null, e.data); };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\n// fixed length extra bits\nvar fleb = new u8([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, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\n// see fleb note\nvar fdeb = new u8([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, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new u32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i)\n ++l[cd[i] - 1];\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 0; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i)\n co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) >> 0;\n return ((d[o] | (d[o + 1] << 8)) >>> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) >> 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >>> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p / 8) >> 0) + (p & 7 && 1); };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, buf, st) {\n // source length\n var sl = dat.length;\n // have to estimate size\n var noBuf = !buf || st;\n // no state\n var noSt = !st || st.i;\n if (!st)\n st = {};\n // Assumes roughly 33% compression ratio average\n if (!buf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n st.f = final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n throw 'unexpected EOF';\n break;\n }\n // ensure size\n if (noBuf)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n if (!noSt && pos + tl * (clb + 7) > tbts)\n break;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >>> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n throw 'invalid block type';\n if (pos > tbts)\n throw 'unexpected EOF';\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17;\n if (noBuf)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var mxa = lbt + dbt + 18;\n while (noSt || pos + mxa < tbts) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts)\n throw 'unexpected EOF';\n if (!c)\n throw 'invalid length/literal';\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n if (!d)\n throw 'invalid distance';\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;\n }\n if (pos > tbts)\n throw 'unexpected EOF';\n if (noBuf)\n cbuf(bt + 131072);\n var end = bt + add;\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n bt = end;\n }\n }\n st.l = lm, st.p = pos, st.b = bt;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt == buf.length ? buf : slc(buf, 0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return [new u8(0), 0];\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return [new u8(tr), mbt];\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return [cl.subarray(0, cli), s];\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];\n var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];\n var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n lcfreq[lclt[i] & 31]++;\n for (var i = 0; i < lcdt.length; ++i)\n lcfreq[lcdt[i] & 31]++;\n var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = (syms[i] >>> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.floor(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n if (e < s) {\n // write full block\n pos = wfblk(w, pos, dat.subarray(i, e));\n }\n else {\n // write final block\n w[i] = lst;\n pos = wfblk(w, pos, dat.subarray(i, s));\n }\n }\n }\n else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = new u16(32768), head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new u32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx bitpos\n var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n for (; i < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768\n var imod = i & 32767;\n // previous index with this value\n var pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = (i - dif + j + 32768) & 32767;\n var pti = prev[ti];\n var cd = (ti - pti + 32768) & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += (imod - pimod + 32768) & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n // this is the easiest way to avoid needing to maintain state\n if (!lst)\n pos = wfblk(w, pos, et);\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new u32(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && 0xEDB88320) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = 0xFFFFFFFF;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return c ^ 0xFFFFFFFF; }\n };\n};\n// Alder32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 5552, l);\n for (; i < e; ++i)\n n += d[i], m += n;\n n %= 65521, m %= 65521;\n }\n a = n, b = m;\n },\n d: function () { return ((a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8)) + ((a & 255) << 23) * 2; }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return [fnStr, td];\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32)\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n var _a;\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n ch[id] = wcln(fns[m], fnStr, td_1);\n }\n var td = mrg({}, ch[id][1]);\n return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, hMap, max, bits, bits16, shft, slc, inflt, inflateSync, pbf, gu8]; };\nvar bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zlv]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get u8\nvar gu8 = function (o) { return o && o.size && new u8(o.size); };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n if (!opts.consume)\n dat = new u8(dat);\n w.postMessage([dat, opts], [dat.buffer]);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.push = function (d, f) {\n if (t)\n throw 'stream finished';\n if (!strm.ondata)\n throw 'no stream handler';\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16)) + (d[b + 3] << 23) * 2; };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n throw 'invalid gzip data';\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += d[10] | (d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) + (2 * (d[l - 1] << 23));\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);\n};\n// zlib valid\nvar zlv = function (d) {\n if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n throw 'invalid zlib data';\n if (d[1] & 32)\n throw 'invalid zlib data: preset dictionaries not supported';\n};\nfunction AsyncCmpStrm(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n// zlib footer: -4 to -0 is Adler32\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, !f), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (this.d)\n throw 'stream finished';\n if (!this.ondata)\n throw 'no stream handler';\n this.d = final;\n this.p(chunk, final || false);\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n return dopt(data, opts, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n /**\n * Creates an inflation stream\n * @param cb The callback to call whenever data is inflated\n */\n function Inflate(cb) {\n this.s = {};\n this.p = new u8(0);\n this.ondata = cb;\n }\n Inflate.prototype.e = function (c) {\n if (this.d)\n throw 'stream finished';\n if (!this.ondata)\n throw 'no stream handler';\n var l = this.p.length;\n var n = new u8(l + c.length);\n n.set(this.p), n.set(c, l), this.p = n;\n };\n Inflate.prototype.c = function (final) {\n this.d = this.s.i = final || false;\n var bts = this.s.b;\n var dt = inflt(this.p, this.o, this.s);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) >> 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous inflation stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncInflate(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, 0, function () {\n var strm = new Inflate();\n onmessage = astrm(strm);\n }, 7);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, out) {\n return inflt(data, out);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n this.c.p(c);\n this.l += c.length;\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n /**\n * Creates a GUNZIP stream\n * @param cb The callback to call whenever data is inflated\n */\n function Gunzip(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n var s = gzs(this.p);\n if (s >= this.p.length && !final)\n return;\n this.p = this.p.subarray(s), this.v = 0;\n }\n if (final) {\n if (this.p.length < 8)\n throw 'invalid gzip stream';\n this.p = this.p.subarray(0, -8);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous GUNZIP stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncGunzip(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, 0, function () {\n var strm = new Gunzip();\n onmessage = astrm(strm);\n }, 9);\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, out) {\n return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n this.c.p(c);\n var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n /**\n * Creates a Zlib decompression stream\n * @param cb The callback to call whenever data is inflated\n */\n function Unzlib(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 2 && !final)\n return;\n this.p = this.p.subarray(2), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n throw 'invalid zlib stream';\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous Zlib decompression stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncUnzlib(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, 0, function () {\n var strm = new Unzlib();\n onmessage = astrm(strm);\n }, 11);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function Decompress(cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n throw 'no stream handler';\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n var _this_1 = this;\n var cb = function () { _this_1.ondata.apply(_this_1, arguments); };\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(cb)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(cb)\n : new this.Z(cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function AsyncDecompress(cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, out) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, out)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, out)\n : unzlibSync(data, out);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k;\n if (val instanceof u8)\n t[n] = [val, o];\n else if (Array.isArray(val))\n t[n] = [val[0], mrg(o, val[1])];\n else\n fltn(val, n + '/', t, o);\n }\n};\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n var l = str.length;\n if (!latin1 && typeof TextEncoder != 'undefined')\n return new TextEncoder().encode(str);\n var ar = new u8(str.length + (str.length >>> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >>> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >>> 18)), w(128 | ((c >>> 12) & 63)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >>> 12)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n var r = '';\n if (!latin1 && typeof TextDecoder != 'undefined')\n return new TextDecoder().decode(dat);\n for (var i = 0; i < dat.length;) {\n var c = dat[i++];\n if (c < 128 || latin1)\n r += String.fromCharCode(c);\n else if (c < 224)\n r += String.fromCharCode((c & 31) << 6 | (dat[i++] & 63));\n else if (c < 240)\n r += String.fromCharCode((c & 15) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63));\n else\n c = ((c & 15) << 18 | (dat[i++] & 63) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n return r;\n}\n;\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;\n var _a = z ? z64e(d, es) : [b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b4(d, b + 12), b4(d, b + 4), b4(d, b + 20)];\n};\n// write zip header\nvar wzh = function (d, b, c, cmp, su, fn, u, o, ce, t) {\n var fl = fn.length, l = cmp.length;\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b] = 20, b += 2;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (t == 8 && (o.level == 1 ? 6 : o.level < 6 ? 4 : o.level == 9 ? 2 : 0)), d[b++] = u && 8;\n d[b] = t, b += 2;\n var dt = new Date(o.mtime || Date.now()), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n throw 'date not in range 1980-2099';\n wbytes(d, b, ((y << 24) * 2) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1));\n b += 4;\n wbytes(d, b, c);\n wbytes(d, b + 4, l);\n wbytes(d, b + 8, su);\n wbytes(d, b + 12, fl), b += 16; // skip extra field, comment\n if (ce != null)\n wbytes(d, b += 10, ce), b += 4;\n d.set(fn, b);\n b += fl;\n if (ce == null)\n d.set(cmp, b);\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n wzh(out, tot, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, tot, f.t), o += 46 + f.n.length, tot += 30 + f.n.length + f.d.length;\n }\n catch (e) {\n return cb(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cb(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), m = file.length;\n c.p(file);\n var n = strToU8(fn), s = n.length;\n var t = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cb(e, null);\n }\n else {\n var l = d.length;\n files[i] = {\n t: t,\n d: d,\n m: m,\n c: c.d(),\n u: fn.length != l,\n n: n,\n p: p\n };\n o += 30 + s + l;\n tot += 76 + 2 * s + l;\n if (!--lft)\n cbf();\n }\n };\n if (n.length > 65535)\n cbl('filename too long', null);\n if (!t)\n cbl(null, file);\n else if (m < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var t = p.level == 0 ? 0 : 8;\n var n = strToU8(fn), s = n.length;\n if (n.length > 65535)\n throw 'filename too long';\n var d = t ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push({\n t: t,\n d: d,\n m: file.length,\n c: c.d(),\n u: fn.length != s,\n n: n,\n o: o,\n p: p\n });\n o += 30 + s + l;\n tot += 76 + 2 * s + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, f.o, f.t), o += 46 + f.n.length;\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Asynchronously decompresses a ZIP archive\n * @param data The raw compressed ZIP file\n * @param cb The callback to call with the decompressed files\n * @returns A function that can be used to immediately terminate the unzipping\n */\nexport function unzip(data, cb) {\n if (typeof cb != 'function')\n throw 'no callback';\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cb('invalid zip file', null);\n return;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (!lft)\n cb(null, {});\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50)\n throw 'invalid zip file';\n c = lft = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n var _loop_2 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cb(e, null);\n }\n else {\n files[fn] = d;\n if (!--lft)\n cb(null, files);\n }\n };\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, new u8(su)));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl('unknown compression type ' + c_1, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_2(i);\n }\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @returns The decompressed files\n */\nexport function unzipSync(data) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n throw 'invalid zip file';\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50)\n throw 'invalid zip file';\n c = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));\n else\n throw 'unknown compression type ' + c_2;\n }\n return files;\n}\n","import type { eventWithTime } from '@amplitude/rrweb-types';\n\nexport type eventWithTimeAndPacker = eventWithTime & {\n v: string;\n};\n\nexport const MARK = 'v1';\n","import { strFromU8, strToU8, zlibSync } from 'fflate';\nimport type { PackFn } from '@amplitude/rrweb-types';\nimport { type eventWithTimeAndPacker, MARK } from './base';\n\nexport const pack: PackFn = (event) => {\n const _e: eventWithTimeAndPacker = {\n ...event,\n v: MARK,\n };\n return strFromU8(zlibSync(strToU8(JSON.stringify(_e))), true);\n};\n","import type { eventWithTime } from '@amplitude/rrweb-types';\nimport { SessionReplayJoinedConfig } from 'src/config/types';\nimport { SessionReplayEventsManager } from 'src/typings/session-replay';\nimport { pack } from '@amplitude/rrweb-packer';\nimport { getGlobalScope } from '@amplitude/analytics-client-common';\n\ninterface TaskQueue {\n event: eventWithTime;\n sessionId: string | number;\n}\n\nconst DEFAULT_TIMEOUT = 2000;\nexport class EventCompressor {\n taskQueue: TaskQueue[] = [];\n isProcessing = false;\n eventsManager?: SessionReplayEventsManager<'replay' | 'interaction', string>;\n config: SessionReplayJoinedConfig;\n deviceId: string | undefined;\n canUseIdleCallback: boolean | undefined;\n timeout: number;\n\n constructor(\n eventsManager: SessionReplayEventsManager<'replay' | 'interaction', string>,\n config: SessionReplayJoinedConfig,\n deviceId: string | undefined,\n ) {\n const globalScope = getGlobalScope();\n this.canUseIdleCallback = globalScope && 'requestIdleCallback' in globalScope;\n this.eventsManager = eventsManager;\n this.config = config;\n this.deviceId = deviceId;\n this.timeout = config.performanceConfig?.timeout || DEFAULT_TIMEOUT;\n }\n\n // Schedule processing during idle time\n public scheduleIdleProcessing(): void {\n if (!this.isProcessing) {\n this.isProcessing = true;\n requestIdleCallback(\n (idleDeadline) => {\n this.processQueue(idleDeadline);\n },\n { timeout: this.timeout },\n );\n }\n }\n\n // Add an event to the task queue if idle callback is supported or compress the event directly\n public enqueueEvent(event: eventWithTime, sessionId: string | number): void {\n if (this.canUseIdleCallback && this.config.performanceConfig?.enabled) {\n this.config.loggerProvider.debug('Enqueuing event for processing during idle time.');\n this.taskQueue.push({ event, sessionId });\n this.scheduleIdleProcessing();\n } else {\n this.config.loggerProvider.debug('Processing event without idle callback.');\n this.addCompressedEvent(event, sessionId);\n }\n }\n\n // Process the task queue during idle time\n public processQueue(idleDeadline: IdleDeadline): void {\n // Process tasks while there's idle time or until the max number of tasks is reached\n while (this.taskQueue.length > 0 && (idleDeadline.timeRemaining() > 0 || idleDeadline.didTimeout)) {\n const task = this.taskQueue.shift();\n if (task) {\n const { event, sessionId } = task;\n this.addCompressedEvent(event, sessionId);\n }\n }\n\n // If there are still tasks in the queue, schedule the next idle callback\n if (this.taskQueue.length > 0) {\n requestIdleCallback(\n (idleDeadline) => {\n this.processQueue(idleDeadline);\n },\n { timeout: this.timeout },\n );\n } else {\n this.isProcessing = false;\n }\n }\n\n compressEvent = (event: eventWithTime) => {\n const packedEvent = pack(event);\n return JSON.stringify(packedEvent);\n };\n\n public addCompressedEvent = (event: eventWithTime, sessionId: string | number) => {\n const compressedEvent = this.compressEvent(event);\n\n if (this.eventsManager && this.deviceId) {\n this.eventsManager.addEvent({\n event: { type: 'replay', data: compressedEvent },\n sessionId,\n deviceId: this.deviceId,\n });\n }\n };\n}\n","import { getAnalyticsConnector, getGlobalScope } from '@amplitude/analytics-client-common';\nimport { Logger, returnWrapper } from '@amplitude/analytics-core';\nimport { Logger as ILogger, LogLevel } from '@amplitude/analytics-types';\nimport { record } from '@amplitude/rrweb';\nimport { scrollCallback } from '@amplitude/rrweb-types';\nimport { createSessionReplayJoinedConfigGenerator } from './config/joined-config';\nimport { SessionReplayJoinedConfig, SessionReplayJoinedConfigGenerator } from './config/types';\nimport {\n BLOCK_CLASS,\n CustomRRwebEvent,\n DEFAULT_SESSION_REPLAY_PROPERTY,\n INTERACTION_MAX_INTERVAL,\n INTERACTION_MIN_INTERVAL,\n MASK_TEXT_CLASS,\n SESSION_REPLAY_DEBUG_PROPERTY,\n} from './constants';\nimport { createEventsManager } from './events/events-manager';\nimport { MultiEventManager } from './events/multi-manager';\nimport { generateHashCode, getDebugConfig, getStorageSize, isSessionInSample, maskFn } from './helpers';\nimport { clickBatcher, clickHook, clickNonBatcher } from './hooks/click';\nimport { ScrollWatcher } from './hooks/scroll';\nimport { SessionIdentifiers } from './identifiers';\nimport {\n AmplitudeSessionReplay,\n SessionReplayEventsManager as AmplitudeSessionReplayEventsManager,\n DebugInfo,\n EventType,\n EventsManagerWithType,\n SessionIdentifiers as ISessionIdentifiers,\n SessionReplayOptions,\n} from './typings/session-replay';\nimport { VERSION } from './version';\nimport { EventCompressor } from './events/event-compressor';\n\ntype PageLeaveFn = (e: PageTransitionEvent | Event) => void;\n\nexport class SessionReplay implements AmplitudeSessionReplay {\n name = '@amplitude/session-replay-browser';\n config: SessionReplayJoinedConfig | undefined;\n joinedConfigGenerator: SessionReplayJoinedConfigGenerator | undefined;\n identifiers: ISessionIdentifiers | undefined;\n eventsManager?: AmplitudeSessionReplayEventsManager<'replay' | 'interaction', string>;\n loggerProvider: ILogger;\n recordCancelCallback: ReturnType | null = null;\n eventCount = 0;\n eventCompressor: EventCompressor | undefined;\n\n // Visible for testing\n pageLeaveFns: PageLeaveFn[] = [];\n private scrollHook?: scrollCallback;\n\n constructor() {\n this.loggerProvider = new Logger();\n }\n\n init(apiKey: string, options: SessionReplayOptions) {\n return returnWrapper(this._init(apiKey, options));\n }\n\n private teardownEventListeners = (teardown: boolean) => {\n const globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.removeEventListener('blur', this.blurListener);\n globalScope.removeEventListener('focus', this.focusListener);\n !teardown && globalScope.addEventListener('blur', this.blurListener);\n !teardown && globalScope.addEventListener('focus', this.focusListener);\n // prefer pagehide to unload events, this is the standard going forward. it is not\n // 100% reliable, but is bfcache-compatible.\n if (globalScope.self && 'onpagehide' in globalScope.self) {\n globalScope.removeEventListener('pagehide', this.pageLeaveListener);\n !teardown && globalScope.addEventListener('pagehide', this.pageLeaveListener);\n } else {\n // this has performance implications, but is the only way we can reliably send events\n // in browser that don't support pagehide.\n globalScope.removeEventListener('beforeunload', this.pageLeaveListener);\n !teardown && globalScope.addEventListener('beforeunload', this.pageLeaveListener);\n }\n }\n };\n\n protected async _init(apiKey: string, options: SessionReplayOptions) {\n this.loggerProvider = options.loggerProvider || new Logger();\n Object.prototype.hasOwnProperty.call(options, 'logLevel') &&\n this.loggerProvider.enable(options.logLevel as LogLevel);\n this.identifiers = new SessionIdentifiers({ sessionId: options.sessionId, deviceId: options.deviceId });\n this.joinedConfigGenerator = await createSessionReplayJoinedConfigGenerator(apiKey, options);\n this.config = await this.joinedConfigGenerator.generateJoinedConfig(this.identifiers.sessionId);\n\n if (options.sessionId && this.config.interactionConfig?.enabled) {\n const scrollWatcher = ScrollWatcher.default(\n {\n sessionId: options.sessionId,\n type: 'interaction',\n },\n this.config,\n );\n this.pageLeaveFns = [scrollWatcher.send(this.getDeviceId.bind(this)).bind(scrollWatcher)];\n this.scrollHook = scrollWatcher.hook.bind(scrollWatcher);\n }\n\n const managers: EventsManagerWithType[] = [];\n let { storeType } = this.config;\n if (storeType === 'idb' && !getGlobalScope()?.indexedDB) {\n storeType = 'memory';\n this.loggerProvider.warn('Could not use preferred indexedDB storage, reverting to in memory option.');\n }\n this.loggerProvider.log(`Using ${storeType} for event storage.`);\n try {\n const rrwebEventManager = await createEventsManager<'replay'>({\n config: this.config,\n sessionId: this.identifiers.sessionId,\n type: 'replay',\n storeType,\n });\n managers.push({ name: 'replay', manager: rrwebEventManager });\n } catch (error) {\n const typedError = error as Error;\n this.loggerProvider.warn(`Error occurred while creating replay events manager: ${typedError.toString()}`);\n }\n\n if (this.config.interactionConfig?.enabled) {\n const payloadBatcher = this.config.interactionConfig.batch ? clickBatcher : clickNonBatcher;\n try {\n const interactionEventManager = await createEventsManager<'interaction'>({\n config: this.config,\n sessionId: this.identifiers.sessionId,\n type: 'interaction',\n minInterval: this.config.interactionConfig.trackEveryNms ?? INTERACTION_MIN_INTERVAL,\n maxInterval: INTERACTION_MAX_INTERVAL,\n payloadBatcher,\n storeType,\n });\n managers.push({ name: 'interaction', manager: interactionEventManager });\n } catch (error) {\n const typedError = error as Error;\n this.loggerProvider.warn(`Error occurred while creating interaction events manager: ${typedError.toString()}`);\n }\n }\n\n this.eventsManager = new MultiEventManager<'replay' | 'interaction', string>(...managers);\n this.eventCompressor = new EventCompressor(this.eventsManager, this.config, this.getDeviceId());\n\n this.loggerProvider.log('Installing @amplitude/session-replay-browser.');\n\n this.teardownEventListeners(false);\n\n this.initialize(true);\n }\n\n setSessionId(sessionId: string | number, deviceId?: string) {\n return returnWrapper(this.asyncSetSessionId(sessionId, deviceId));\n }\n\n async asyncSetSessionId(sessionId: string | number, deviceId?: string) {\n const previousSessionId = this.identifiers && this.identifiers.sessionId;\n if (previousSessionId) {\n this.sendEvents(previousSessionId);\n }\n\n const deviceIdForReplayId = deviceId || this.getDeviceId();\n this.identifiers = new SessionIdentifiers({\n sessionId: sessionId,\n deviceId: deviceIdForReplayId,\n });\n\n // If there is no previous session id, SDK is being initialized for the first time,\n // and config was just fetched in initialization, so no need to fetch it a second time\n if (this.joinedConfigGenerator && previousSessionId) {\n this.config = await this.joinedConfigGenerator.generateJoinedConfig(this.identifiers.sessionId);\n }\n this.recordEvents();\n }\n\n getSessionReplayProperties() {\n const config = this.config;\n const identifiers = this.identifiers;\n if (!config || !identifiers) {\n this.loggerProvider.warn('Session replay init has not been called, cannot get session replay properties.');\n return {};\n }\n\n const shouldRecord = this.getShouldRecord();\n let eventProperties: { [key: string]: string | null } = {};\n\n if (shouldRecord) {\n eventProperties = {\n [DEFAULT_SESSION_REPLAY_PROPERTY]: identifiers.sessionReplayId ? identifiers.sessionReplayId : null,\n };\n if (config.debugMode) {\n eventProperties[SESSION_REPLAY_DEBUG_PROPERTY] = JSON.stringify({\n appHash: generateHashCode(config.apiKey).toString(),\n });\n }\n }\n\n void this.addCustomRRWebEvent(\n CustomRRwebEvent.GET_SR_PROPS,\n {\n shouldRecord,\n eventProperties: eventProperties,\n },\n this.eventCount === 10,\n );\n if (this.eventCount === 10) {\n this.eventCount = 0;\n }\n this.eventCount++;\n\n return eventProperties;\n }\n\n blurListener = () => {\n this.sendEvents();\n };\n\n focusListener = () => {\n // Restart recording on focus to ensure that when user\n // switches tabs, we take a full snapshot\n this.recordEvents();\n };\n\n /**\n * This is an instance member so that if init is called multiple times\n * it doesn't add another listener to the page leave event. This is to\n * prevent duplicate listener actions from firing.\n */\n private pageLeaveListener = (e: PageTransitionEvent | Event) => {\n this.pageLeaveFns.forEach((fn) => {\n fn(e);\n });\n };\n\n sendEvents(sessionId?: string | number) {\n const sessionIdToSend = sessionId || this.identifiers?.sessionId;\n const deviceId = this.getDeviceId();\n this.eventsManager &&\n sessionIdToSend &&\n deviceId &&\n this.eventsManager.sendCurrentSequenceEvents({ sessionId: sessionIdToSend, deviceId });\n }\n\n initialize(shouldSendStoredEvents = false) {\n if (!this.identifiers?.sessionId) {\n this.loggerProvider.log(`Session is not being recorded due to lack of session id.`);\n return;\n }\n\n const deviceId = this.getDeviceId();\n if (!deviceId) {\n this.loggerProvider.log(`Session is not being recorded due to lack of device id.`);\n return;\n }\n this.eventsManager && shouldSendStoredEvents && this.eventsManager.sendStoredEvents({ deviceId });\n\n this.recordEvents();\n }\n\n shouldOptOut() {\n let identityStoreOptOut: boolean | undefined;\n if (this.config?.instanceName) {\n const identityStore = getAnalyticsConnector(this.config.instanceName).identityStore;\n identityStoreOptOut = identityStore.getIdentity().optOut;\n }\n\n return identityStoreOptOut !== undefined ? identityStoreOptOut : this.config?.optOut;\n }\n\n getShouldRecord() {\n if (!this.identifiers || !this.config || !this.identifiers.sessionId) {\n this.loggerProvider.warn(`Session is not being recorded due to lack of config, please call sessionReplay.init.`);\n return false;\n }\n if (!this.config.captureEnabled) {\n this.loggerProvider.log(\n `Session ${this.identifiers.sessionId} not being captured due to capture being disabled for project or because the remote config could not be fetched.`,\n );\n return false;\n }\n\n if (this.shouldOptOut()) {\n this.loggerProvider.log(`Opting session ${this.identifiers.sessionId} out of recording due to optOut config.`);\n return false;\n }\n\n const isInSample = isSessionInSample(this.identifiers.sessionId, this.config.sampleRate);\n if (!isInSample) {\n this.loggerProvider.log(`Opting session ${this.identifiers.sessionId} out of recording due to sample rate.`);\n }\n return isInSample;\n }\n\n getBlockSelectors(): string | string[] | undefined {\n // For some reason, this defaults to empty array ([]) if undefined in the compiled script.\n // Empty arrays cause errors when being evaluated in Safari.\n // Force the selector to be undefined if it's an empty array.\n const blockSelector = this.config?.privacyConfig?.blockSelector ?? [];\n if (blockSelector.length === 0) {\n return undefined;\n }\n return blockSelector;\n }\n\n getMaskTextSelectors(): string | undefined {\n if (this.config?.privacyConfig?.defaultMaskLevel === 'conservative') {\n return '*';\n }\n\n const maskSelector = this.config?.privacyConfig?.maskSelector;\n if (!maskSelector) {\n return;\n }\n\n return maskSelector as unknown as string;\n }\n\n recordEvents() {\n const config = this.config;\n const shouldRecord = this.getShouldRecord();\n const sessionId = this.identifiers?.sessionId;\n if (!shouldRecord || !sessionId || !config) {\n return;\n }\n this.stopRecordingEvents();\n const { privacyConfig } = config;\n\n this.loggerProvider.log(`Session Replay capture beginning for ${sessionId}.`);\n this.recordCancelCallback = record({\n emit: (event) => {\n if (this.shouldOptOut()) {\n this.loggerProvider.log(`Opting session ${sessionId} out of recording due to optOut config.`);\n this.stopRecordingEvents();\n this.sendEvents();\n return;\n }\n\n if (this.eventCompressor) {\n // Schedule processing during idle time if the browser supports requestIdleCallback\n this.eventCompressor.enqueueEvent(event, sessionId);\n }\n },\n inlineStylesheet: config.shouldInlineStylesheet,\n hooks: {\n mouseInteraction:\n this.eventsManager &&\n clickHook({\n eventsManager: this.eventsManager,\n sessionId,\n deviceIdFn: this.getDeviceId.bind(this),\n }),\n scroll: this.scrollHook,\n },\n maskAllInputs: true,\n maskTextClass: MASK_TEXT_CLASS,\n blockClass: BLOCK_CLASS,\n // rrweb only exposes string type through its types, but arrays are also be supported. #class, ['#class', 'id']\n blockSelector: this.getBlockSelectors() as string | undefined,\n maskInputFn: maskFn('input', privacyConfig),\n maskTextFn: maskFn('text', privacyConfig),\n // rrweb only exposes string type through its types, but arrays are also be supported. since rrweb uses .matches() which supports arrays.\n maskTextSelector: this.getMaskTextSelectors(),\n recordCanvas: false,\n errorHandler: (error) => {\n const typedError = error as Error & { _external_?: boolean };\n\n // styled-components relies on this error being thrown and bubbled up, rrweb is otherwise suppressing it\n if (typedError.message.includes('insertRule') && typedError.message.includes('CSSStyleSheet')) {\n throw typedError;\n }\n\n // rrweb does monkey patching on certain window functions such as CSSStyleSheet.proptype.insertRule,\n // and errors from external clients calling these functions can get suppressed. Styled components depend\n // on these errors being re-thrown.\n if (typedError._external_) {\n throw typedError;\n }\n\n this.loggerProvider.warn('Error while capturing replay: ', typedError.toString());\n // Return true so that we don't clutter user's consoles with internal rrweb errors\n return true;\n },\n });\n\n void this.addCustomRRWebEvent(CustomRRwebEvent.DEBUG_INFO);\n }\n\n addCustomRRWebEvent = async (\n eventName: CustomRRwebEvent,\n eventData: { [key: string]: any } = {},\n addStorageInfo = true,\n ) => {\n try {\n let debugInfo: DebugInfo | undefined = undefined;\n const config = this.config;\n if (config) {\n debugInfo = {\n config: getDebugConfig(config),\n version: VERSION,\n };\n if (addStorageInfo) {\n const storageSizeData = await getStorageSize();\n debugInfo = {\n ...storageSizeData,\n ...debugInfo,\n };\n }\n }\n // Check first to ensure we are recording\n if (this.recordCancelCallback) {\n record.addCustomEvent(eventName, {\n ...eventData,\n ...debugInfo,\n });\n } else {\n this.loggerProvider.debug(\n `Not able to add custom replay capture event ${eventName} due to no ongoing recording.`,\n );\n }\n } catch (e) {\n this.loggerProvider.debug('Error while adding custom replay capture event: ', e);\n }\n };\n\n stopRecordingEvents = () => {\n try {\n this.loggerProvider.log('Session Replay capture stopping.');\n this.recordCancelCallback && this.recordCancelCallback();\n this.recordCancelCallback = null;\n } catch (error) {\n const typedError = error as Error;\n this.loggerProvider.warn(`Error occurred while stopping replay capture: ${typedError.toString()}`);\n }\n };\n\n getDeviceId() {\n return this.identifiers?.deviceId;\n }\n\n getSessionId() {\n return this.identifiers?.sessionId;\n }\n\n async flush(useRetry = false) {\n return this.eventsManager?.flush(useRetry);\n }\n\n shutdown() {\n this.teardownEventListeners(true);\n this.stopRecordingEvents();\n this.sendEvents();\n }\n}\n","import { debugWrapper } from '@amplitude/analytics-core';\nimport { LogConfig } from '@amplitude/analytics-types';\nimport { getDefaultConfig } from './config/local-config';\nimport { SessionReplay } from './session-replay';\nimport { AmplitudeSessionReplay } from './typings/session-replay';\n\nexport const getLogConfig = (sessionReplay: SessionReplay) => (): LogConfig => {\n const { config } = sessionReplay;\n const { loggerProvider: logger, logLevel } = config || getDefaultConfig();\n return {\n logger,\n logLevel,\n };\n};\n\nconst createInstance: () => AmplitudeSessionReplay = () => {\n const sessionReplay = new SessionReplay();\n return {\n init: debugWrapper(sessionReplay.init.bind(sessionReplay), 'init', getLogConfig(sessionReplay)),\n setSessionId: debugWrapper(\n sessionReplay.setSessionId.bind(sessionReplay),\n 'setSessionId',\n getLogConfig(sessionReplay),\n ),\n getSessionId: debugWrapper(\n sessionReplay.getSessionId.bind(sessionReplay),\n 'getSessionId',\n getLogConfig(sessionReplay),\n ),\n getSessionReplayProperties: debugWrapper(\n sessionReplay.getSessionReplayProperties.bind(sessionReplay),\n 'getSessionReplayProperties',\n getLogConfig(sessionReplay),\n ),\n flush: debugWrapper(sessionReplay.flush.bind(sessionReplay), 'flush', getLogConfig(sessionReplay)),\n shutdown: debugWrapper(sessionReplay.shutdown.bind(sessionReplay), 'shutdown', getLogConfig(sessionReplay)),\n };\n};\n\nexport default createInstance();\n","import sessionReplay from './session-replay-factory';\nexport const { init, setSessionId, getSessionId, getSessionReplayProperties, flush, shutdown } = sessionReplay;\nexport { SessionReplayOptions, StoreType } from './typings/session-replay';\n","// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.10.0';\n","import { BrowserConfig, EnrichmentPlugin, Event } from '@amplitude/analytics-types';\nimport * as sessionReplay from '@amplitude/session-replay-browser';\nimport { SessionReplayOptions } from './typings/session-replay';\nimport { VERSION } from './version';\n\nexport class SessionReplayPlugin implements EnrichmentPlugin {\n name = '@amplitude/plugin-session-replay-browser';\n type = 'enrichment' as const;\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n options: SessionReplayOptions;\n\n constructor(options?: SessionReplayOptions) {\n this.options = { ...options };\n // The user did not explicitly configure forceSessionTracking to false, default to true.\n if (this.options.forceSessionTracking !== false) {\n this.options.forceSessionTracking = true;\n }\n }\n\n async setup(config: BrowserConfig) {\n try {\n config.loggerProvider.log(`Installing @amplitude/plugin-session-replay, version ${VERSION}.`);\n\n this.config = config;\n\n if (this.options.forceSessionTracking) {\n if (typeof config.defaultTracking === 'boolean') {\n if (config.defaultTracking === false) {\n config.defaultTracking = {\n pageViews: false,\n formInteractions: false,\n fileDownloads: false,\n sessions: true,\n };\n }\n } else {\n config.defaultTracking = {\n ...config.defaultTracking,\n sessions: true,\n };\n }\n }\n\n await sessionReplay.init(config.apiKey, {\n instanceName: this.config.instanceName,\n deviceId: this.config.deviceId,\n optOut: this.config.optOut,\n sessionId: this.options.customSessionId ? undefined : this.config.sessionId,\n loggerProvider: this.config.loggerProvider,\n logLevel: this.config.logLevel,\n flushMaxRetries: this.config.flushMaxRetries,\n serverZone: this.config.serverZone,\n sampleRate: this.options.sampleRate,\n privacyConfig: {\n blockSelector: this.options.privacyConfig?.blockSelector,\n maskSelector: this.options.privacyConfig?.maskSelector,\n unmaskSelector: this.options.privacyConfig?.unmaskSelector,\n defaultMaskLevel: this.options.privacyConfig?.defaultMaskLevel,\n },\n debugMode: this.options.debugMode,\n configEndpointUrl: this.options.configEndpointUrl,\n shouldInlineStylesheet: this.options.shouldInlineStylesheet,\n version: { type: 'plugin', version: VERSION },\n performanceConfig: this.options.performanceConfig,\n storeType: this.options.storeType,\n }).promise;\n } catch (error) {\n config.loggerProvider.error(`Session Replay: Failed to initialize due to ${(error as Error).message}`);\n }\n }\n\n async execute(event: Event) {\n try {\n if (this.options.customSessionId) {\n const sessionId = this.options.customSessionId(event);\n if (sessionId) {\n // On event, synchronize the session id to the custom session id from the event. This may\n // suffer from offline/delayed events messing up the state stored\n if (sessionId !== sessionReplay.getSessionId()) {\n await sessionReplay.setSessionId(sessionId).promise;\n }\n\n const sessionRecordingProperties = sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n } else {\n // On event, synchronize the session id to the what's on the browserConfig (source of truth)\n // Choosing not to read from event object here, concerned about offline/delayed events messing up the state stored\n // in SR.\n const sessionId: string | number | undefined = this.config.sessionId;\n if (sessionId && sessionId !== sessionReplay.getSessionId()) {\n await sessionReplay.setSessionId(sessionId).promise;\n }\n\n // Treating config.sessionId as source of truth, if the event's session id doesn't match, the\n // event is not of the current session (offline/late events). In that case, don't tag the events\n if (sessionId && sessionId === event.session_id) {\n const sessionRecordingProperties = sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n }\n\n return Promise.resolve(event);\n } catch (error) {\n this.config.loggerProvider.error(`Session Replay: Failed to enrich event due to ${(error as Error).message}`);\n return Promise.resolve(event);\n }\n }\n\n async teardown(): Promise {\n try {\n sessionReplay.shutdown();\n // the following are initialized in setup() which will always be called first\n // here we reset them to null to prevent memory leaks\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.config = null;\n } catch (error) {\n this.config.loggerProvider.error(`Session Replay: teardown failed due to ${(error as Error).message}`);\n }\n }\n\n getSessionReplayProperties() {\n return sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => EnrichmentPlugin = (\n options?: SessionReplayOptions,\n) => {\n return new SessionReplayPlugin(options);\n};\n","import * as amplitude from '@amplitude/analytics-browser'\nimport { sessionReplayPlugin } from '@amplitude/plugin-session-replay-browser'\n\nexport const hasCurrentLocation = 'hasCurrentLocation'\n\nexport const initAmplitude = () => {\n amplitude.init(process.env.REACT_APP_AMPLITUDE_API_KEY ?? '', {\n defaultTracking: process.env.NODE_ENV === 'production',\n appVersion: process.env.REACT_APP_GOJI_VERSION ?? 'dev'\n })\n if (process.env.NODE_ENV === 'production') {\n const sessionReplayTracking = sessionReplayPlugin({\n sampleRate: 0.05\n })\n amplitude.add(sessionReplayTracking)\n }\n}\n\nexport const setAmplitudeUserId = (userId: string) => {\n amplitude.setUserId(userId)\n}\n\nexport const trackAmplitudeEvent = (eventType: string, eventProperties?: Record) => {\n if (process.env.NODE_ENV === 'production') amplitude.track(eventType, eventProperties)\n}\n\nexport const trackUserPropertyFlag = (key: string, value: boolean) => {\n if (process.env.NODE_ENV === 'production') {\n const new_prop = new amplitude.Identify()\n new_prop.set(key, value)\n amplitude.identify(new_prop)\n }\n}\n","import * as React from 'react'\nimport { UsePlan } from '../../services/planService/Plan.service'\nimport { Plan } from '../../services/planService/Plan'\n\nexport function useGetPlansInfo(planIds: Plan['planId'][]) {\n const allPlans = UsePlan.useAllPlans()\n\n return React.useMemo(() => {\n let filteredPlans: Plan[] = []\n\n if (planIds && allPlans.data) {\n filteredPlans = allPlans.data.filter((plan) => planIds.includes(plan.planId))\n }\n\n return { loading: allPlans.isLoading, data: filteredPlans }\n }, [allPlans.data, allPlans.isLoading, planIds])\n}\n","import { useQuery } from 'react-query'\nimport { Address } from '../../store/address'\nimport { Carrier } from '../../store/carrierSelector'\nimport { getStatesFromAddresses } from '../Address'\n\nexport function excludeCarriersFromOtherRegions(carriers: Carrier[], addressStates: string[]) {\n return carriers.filter((carrier) => {\n if (!carrier.carrier_availability) {\n return false\n }\n return carrier.available_nationwide || addressStates.some((state) => carrier.carrier_availability!.includes(state))\n })\n}\n\nexport const useAddressesStates = (addresses: Address[]) => {\n return useQuery({\n queryKey: ['states', addresses],\n staleTime: Infinity,\n queryFn: async () => {\n return getStatesFromAddresses(addresses)\n }\n })\n}\n\nexport const useGetRegionFilter = (addresses: Address[], skipRegionFilter = false) => {\n const states = useAddressesStates(addresses)\n\n return useQuery({\n queryKey: ['statesFilter', states, skipRegionFilter],\n enabled: !!states.data,\n staleTime: Infinity,\n queryFn: async () => {\n if (skipRegionFilter) {\n return 'includeRegionalCarriers=true'\n }\n if (!addresses.length) {\n return ''\n }\n return `includeRegionalCarriers=${states.data!.length ? `true&states=${states.data!.join(',')}` : 'false'}`\n }\n })\n}\n","import React from 'react'\nimport { useHistory } from 'react-router'\nimport { ALL_PLANS_TAB } from '../../pages/plans/tabs/PlanTab'\nimport { MainNavigationPaths } from '../../paths'\nimport { Plan } from '../../services/planService/Plan'\n\nconst generatePlanPath = (carrierId: string, planId: string) => {\n return `${MainNavigationPaths.plans}/${ALL_PLANS_TAB}/${carrierId}/${planId}`\n}\n\nexport const useNavigateToPlan = () => {\n const history = useHistory()\n\n const navigateToPlan = React.useCallback(\n (plan: Plan, planScrollIdx?: number) => {\n history.replace(history.location.pathname + history.location.search, { planScrollIdx })\n history.push(generatePlanPath(plan.carrierId, plan.planId), {\n fromPlanResults: history.location.pathname.startsWith(MainNavigationPaths.plans)\n })\n },\n [history]\n )\n\n return { navigateToPlan, planScrollIdx: (history.location.state as any)?.planScrollIdx as number }\n}\n","let service: google.maps.places.AutocompleteService\nexport function createGoogleAutocompleteService() {\n if (process.env.NODE_ENV === 'test') {\n return {\n getPlacePredictions: (_, resolve) => resolve?.([], 'OK' as any) as any,\n getQueryPredictions: (_, resolve) => resolve([], 'OK' as any) as any\n } as google.maps.places.AutocompleteService\n }\n service = !service ? new google.maps.places.AutocompleteService() : service\n return service\n}\n","import React from 'react'\nimport { useQuery } from 'react-query'\nimport { createGoogleAutocompleteService } from '../../services/googleAutocompleteService'\n\ninterface UseAddressPredictionsOptions {\n value: string\n bounds?: google.maps.LatLngBounds\n types?: string[]\n service?: google.maps.places.AutocompleteService\n}\n\nconst useAddressPredictions = ({\n value,\n bounds,\n types = ['address'],\n service = createGoogleAutocompleteService()\n}: UseAddressPredictionsOptions) => {\n const search = React.useCallback(\n async (value: string, bounds?: google.maps.LatLngBounds) => {\n if (!value) {\n return Promise.resolve([])\n }\n\n const result = await new Promise((resolve) => {\n return service.getPlacePredictions(\n {\n input: value,\n types: types.length ? types : undefined,\n componentRestrictions: { country: 'us' },\n locationBias: bounds\n },\n resolve\n )\n })\n\n return result ?? []\n },\n [service, types]\n )\n\n const predictions = useQuery({\n queryKey: ['predictions', value, bounds],\n enabled: !!value,\n queryFn: () => search(value, bounds)\n })\n\n return { predictions, search }\n}\n\nexport default useAddressPredictions\n","import { Location } from 'history'\nimport { useLocation } from 'react-router'\n\n// For Modal routes, using the `useLocation` hook throws an error\n// we are relying on useLocation in our useBoundStore hook so we need\n// a workaround to avoid app to crash\n//\n// TODO: find a better way to not depend on useLocation or make the modal views subroutes\n//\nexport const useSafeLocation = () => {\n let location: Location | null = null\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n location = useLocation()\n } catch (error: unknown) {}\n\n return location\n}\n","import React from 'react'\nimport { useHistory } from 'react-router'\n\nexport function patchQueryParams(searchParamsStr: string, value: any) {\n const searchParams = new URLSearchParams(searchParamsStr)\n for (const key of Object.keys(value)) {\n if (value[key] === undefined) {\n searchParams.delete(key)\n } else {\n searchParams.set(key, String(value[key as any]))\n }\n }\n return searchParams\n}\n\nexport function useQueryParamsState>(\n initialState: T\n): [T, (value: Partial) => void] {\n const history = useHistory()\n const initialStateRef = React.useRef(initialState)\n\n const state = React.useMemo(() => {\n const searchParams = new URLSearchParams(history.location.search)\n return { ...initialStateRef.current, ...Object.fromEntries(searchParams) }\n }, [history.location.search])\n\n const patchState = React.useCallback(\n (value: Partial) => {\n const searchParams = patchQueryParams(history.location.search, value)\n history.replace({ ...history.location, pathname: window.location.pathname, search: searchParams.toString() })\n },\n [history]\n )\n\n return [state, patchState]\n}\n","import * as React from 'react'\n\nconst initialWidth = window.innerWidth\nconst initialHeight = window.innerHeight\nexport function useWindowSize() {\n const [size, setSize] = React.useState<{ width: number; height: number }>({\n width: initialWidth,\n height: initialHeight\n })\n\n React.useLayoutEffect(() => {\n const handleResize = () => {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight\n })\n }\n\n handleResize()\n window.addEventListener('resize', handleResize)\n\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n return size\n}\n\nexport const MOBILE_BREAKPOINT = 768\nexport const MOBILE_BREAKPOINT_MAX = MOBILE_BREAKPOINT - 1\nexport function useIsMobileSize() {\n const size = useWindowSize()\n return Boolean(size.width && size.width < MOBILE_BREAKPOINT)\n}\n","const nameToTitle = {\n poor: 'Poor',\n fair: 'Fair',\n good: 'Good',\n excellent: 'Excellent',\n noData: 'No data'\n}\n\nexport const noSignalColor = '#B20009'\n\nexport const GridColorScale = ['#FF4F58', '#FD979C', '#F8F1B8', '#E5E832', '#5DBB61', '#265A28'] as const\n\nexport function getGridColor(performance: number) {\n return GridColorScale[Math.min(Math.max(Math.floor(performance * 10) - 1, 0), GridColorScale.length - 1)]\n}\n\nconst MAX_NETWORK_PERFORMANCE = 10\nexport function normalizeNetworkPerformance(networkPerformance: number) {\n return networkPerformance / MAX_NETWORK_PERFORMANCE\n}\n\nexport function getTitleForNetworkPerformance(performance: number) {\n if (performance === 0) {\n return nameToTitle.noData\n }\n if (performance < 0.4) {\n return nameToTitle.poor\n }\n\n if (performance < 0.7) {\n return nameToTitle.fair\n }\n\n if (performance < 0.8) {\n return nameToTitle.good\n }\n return nameToTitle.excellent\n}\n","import { css } from '@emotion/css'\n\nexport const ResetMargin = css`\n margin: 0;\n`\n","import { css } from '@emotion/css'\nimport { MOBILE_BREAKPOINT } from '../hooks/useWindowSize'\n\nexport const HideDesktopStyles = css`\n @media screen and (min-width: ${MOBILE_BREAKPOINT}px) {\n display: none !important;\n }\n`\n\nexport const HideMobileStyles = css`\n @media screen and (max-width: ${MOBILE_BREAKPOINT - 1}px) {\n display: none !important;\n }\n`\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nconst SELF = '_self';\n\nexport const launchUri = (url: string) => {\n\tconst windowProxy = window.open(url, SELF);\n\tif (windowProxy) {\n\t\treturn Promise.resolve(windowProxy);\n\t} else {\n\t\treturn Promise.reject();\n\t}\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { parse } from 'url'; // Used for OAuth parsing of Cognito Hosted UI\nimport { launchUri } from './urlOpener';\nimport * as oAuthStorage from './oauthStorage';\nimport { Buffer } from 'buffer';\n\nimport {\n\tOAuthOpts,\n\tisCognitoHostedOpts,\n\tCognitoHostedUIIdentityProvider,\n} from '../types/Auth';\n\nimport {\n\tAuthAction,\n\tCategory,\n\tConsoleLogger as Logger,\n\tCustomUserAgentDetails,\n\tgetAmplifyUserAgent,\n\tHub,\n\turlSafeEncode,\n\tUSER_AGENT_HEADER,\n} from '@aws-amplify/core';\n\nimport { Sha256 } from '@aws-crypto/sha256-js';\n\nconst AMPLIFY_SYMBOL = (\n\ttypeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n\t\t? Symbol.for('amplify_default')\n\t\t: '@@amplify_default'\n) as Symbol;\n\nconst dispatchAuthEvent = (event: string, data: any, message: string) => {\n\tHub.dispatch('auth', { event, data, message }, 'Auth', AMPLIFY_SYMBOL);\n};\n\nconst logger = new Logger('OAuth');\n\nexport default class OAuth {\n\tprivate _urlOpener;\n\tprivate _config;\n\tprivate _cognitoClientId;\n\tprivate _scopes;\n\n\tconstructor({\n\t\tconfig,\n\t\tcognitoClientId,\n\t\tscopes = [],\n\t}: {\n\t\tscopes: string[];\n\t\tconfig: OAuthOpts;\n\t\tcognitoClientId: string;\n\t}) {\n\t\tthis._urlOpener = config.urlOpener || launchUri;\n\t\tthis._config = config;\n\t\tthis._cognitoClientId = cognitoClientId;\n\n\t\tif (!this.isValidScopes(scopes))\n\t\t\tthrow Error('scopes must be a String Array');\n\t\tthis._scopes = scopes;\n\t}\n\n\tprivate isValidScopes(scopes: string[]) {\n\t\treturn (\n\t\t\tArray.isArray(scopes) && scopes.every(scope => typeof scope === 'string')\n\t\t);\n\t}\n\n\tpublic oauthSignIn(\n\t\tresponseType = 'code',\n\t\tdomain: string,\n\t\tredirectSignIn: string,\n\t\tclientId: string,\n\t\tprovider:\n\t\t\t| CognitoHostedUIIdentityProvider\n\t\t\t| string = CognitoHostedUIIdentityProvider.Cognito,\n\t\tcustomState?: string\n\t) {\n\t\tconst generatedState = this._generateState(32);\n\n\t\t/* encodeURIComponent is not URL safe, use urlSafeEncode instead. Cognito \n\t\tsingle-encodes/decodes url on first sign in and double-encodes/decodes url\n\t\twhen user already signed in. Using encodeURIComponent, Base32, Base64 add \n\t\tcharacters % or = which on further encoding becomes unsafe. '=' create issue \n\t\tfor parsing query params. \n\t\tRefer: https://github.com/aws-amplify/amplify-js/issues/5218 */\n\t\tconst state = customState\n\t\t\t? `${generatedState}-${urlSafeEncode(customState)}`\n\t\t\t: generatedState;\n\n\t\toAuthStorage.setState(state);\n\n\t\tconst pkce_key = this._generateRandom(128);\n\t\toAuthStorage.setPKCE(pkce_key);\n\n\t\tconst code_challenge = this._generateChallenge(pkce_key);\n\t\tconst code_challenge_method = 'S256';\n\n\t\tconst scopesString = this._scopes.join(' ');\n\n\t\tconst queryString = Object.entries({\n\t\t\tredirect_uri: redirectSignIn,\n\t\t\tresponse_type: responseType,\n\t\t\tclient_id: clientId,\n\t\t\tidentity_provider: provider,\n\t\t\tscope: scopesString,\n\t\t\tstate,\n\t\t\t...(responseType === 'code' ? { code_challenge } : {}),\n\t\t\t...(responseType === 'code' ? { code_challenge_method } : {}),\n\t\t})\n\t\t\t.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)\n\t\t\t.join('&');\n\n\t\tconst URL = `https://${domain}/oauth2/authorize?${queryString}`;\n\t\tlogger.debug(`Redirecting to ${URL}`);\n\t\tthis._urlOpener(URL, redirectSignIn);\n\t}\n\n\tprivate async _handleCodeFlow(currentUrl: string) {\n\t\t/* Convert URL into an object with parameters as keys\n { redirect_uri: 'http://localhost:3000/', response_type: 'code', ...} */\n\t\tconst { code } = (parse(currentUrl).query || '')\n\t\t\t.split('&')\n\t\t\t.map(pairings => pairings.split('='))\n\t\t\t.reduce((accum, [k, v]) => ({ ...accum, [k]: v }), { code: undefined });\n\n\t\tconst currentUrlPathname = parse(currentUrl).pathname || '/';\n\t\tconst redirectSignInPathname =\n\t\t\tparse(this._config.redirectSignIn).pathname || '/';\n\n\t\tif (!code || currentUrlPathname !== redirectSignInPathname) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst oAuthTokenEndpoint =\n\t\t\t'https://' + this._config.domain + '/oauth2/token';\n\n\t\tdispatchAuthEvent(\n\t\t\t'codeFlow',\n\t\t\t{},\n\t\t\t`Retrieving tokens from ${oAuthTokenEndpoint}`\n\t\t);\n\n\t\tconst client_id = isCognitoHostedOpts(this._config)\n\t\t\t? this._cognitoClientId\n\t\t\t: this._config.clientID;\n\n\t\tconst redirect_uri = isCognitoHostedOpts(this._config)\n\t\t\t? this._config.redirectSignIn\n\t\t\t: this._config.redirectUri;\n\n\t\tconst code_verifier = oAuthStorage.getPKCE();\n\n\t\tconst oAuthTokenBody = {\n\t\t\tgrant_type: 'authorization_code',\n\t\t\tcode,\n\t\t\tclient_id,\n\t\t\tredirect_uri,\n\t\t\t...(code_verifier ? { code_verifier } : {}),\n\t\t};\n\n\t\tlogger.debug(\n\t\t\t`Calling token endpoint: ${oAuthTokenEndpoint} with`,\n\t\t\toAuthTokenBody\n\t\t);\n\n\t\tconst body = Object.entries(oAuthTokenBody)\n\t\t\t.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)\n\t\t\t.join('&');\n\n\t\tconst customUserAgentDetails: CustomUserAgentDetails = {\n\t\t\tcategory: Category.Auth,\n\t\t\taction: AuthAction.FederatedSignIn,\n\t\t};\n\n\t\tconst { access_token, refresh_token, id_token, error } = await (\n\t\t\t(await fetch(oAuthTokenEndpoint, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t\t\t[USER_AGENT_HEADER]: getAmplifyUserAgent(customUserAgentDetails),\n\t\t\t\t},\n\t\t\t\tbody,\n\t\t\t})) as any\n\t\t).json();\n\n\t\tif (error) {\n\t\t\tthrow new Error(error);\n\t\t}\n\n\t\treturn {\n\t\t\taccessToken: access_token,\n\t\t\trefreshToken: refresh_token,\n\t\t\tidToken: id_token,\n\t\t};\n\t}\n\n\tprivate async _handleImplicitFlow(currentUrl: string) {\n\t\t// hash is `null` if `#` doesn't exist on URL\n\t\tconst { id_token, access_token } = (parse(currentUrl).hash || '#')\n\t\t\t.substr(1) // Remove # from returned code\n\t\t\t.split('&')\n\t\t\t.map(pairings => pairings.split('='))\n\t\t\t.reduce((accum, [k, v]) => ({ ...accum, [k]: v }), {\n\t\t\t\tid_token: undefined,\n\t\t\t\taccess_token: undefined,\n\t\t\t});\n\n\t\tdispatchAuthEvent('implicitFlow', {}, `Got tokens from ${currentUrl}`);\n\t\tlogger.debug(`Retrieving implicit tokens from ${currentUrl} with`);\n\n\t\treturn {\n\t\t\taccessToken: access_token,\n\t\t\tidToken: id_token,\n\t\t\trefreshToken: null,\n\t\t};\n\t}\n\n\tpublic async handleAuthResponse(currentUrl?: string) {\n\t\ttry {\n\t\t\tconst urlParams = currentUrl\n\t\t\t\t? ({\n\t\t\t\t\t\t...(parse(currentUrl).hash || '#')\n\t\t\t\t\t\t\t.substr(1)\n\t\t\t\t\t\t\t.split('&')\n\t\t\t\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t\t\t\t.reduce((acc, [k, v]) => ((acc[k] = v), acc), {}),\n\t\t\t\t\t\t...(parse(currentUrl).query || '')\n\t\t\t\t\t\t\t.split('&')\n\t\t\t\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t\t\t\t.reduce((acc, [k, v]) => ((acc[k] = v), acc), {}),\n\t\t\t\t } as any)\n\t\t\t\t: {};\n\t\t\tconst { error, error_description } = urlParams;\n\n\t\t\tif (error) {\n\t\t\t\tthrow new Error(error_description);\n\t\t\t}\n\n\t\t\tconst state: string = this._validateState(urlParams);\n\n\t\t\tlogger.debug(\n\t\t\t\t`Starting ${this._config.responseType} flow with ${currentUrl}`\n\t\t\t);\n\t\t\tif (this._config.responseType === 'code') {\n\t\t\t\treturn { ...(await this._handleCodeFlow(currentUrl)), state };\n\t\t\t} else {\n\t\t\t\treturn { ...(await this._handleImplicitFlow(currentUrl)), state };\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tlogger.debug(`Error handling auth response.`, e);\n\t\t\tthrow e;\n\t\t}\n\t}\n\n\tprivate _validateState(urlParams: any): string {\n\t\tif (!urlParams) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst savedState = oAuthStorage.getState();\n\t\tconst { state: returnedState } = urlParams;\n\n\t\t// This is because savedState only exists if the flow was initiated by Amplify\n\t\tif (savedState && savedState !== returnedState) {\n\t\t\tthrow new Error('Invalid state in OAuth flow');\n\t\t}\n\t\treturn returnedState;\n\t}\n\n\tpublic async signOut() {\n\t\tlet oAuthLogoutEndpoint = 'https://' + this._config.domain + '/logout?';\n\n\t\tconst client_id = isCognitoHostedOpts(this._config)\n\t\t\t? this._cognitoClientId\n\t\t\t: this._config.oauth.clientID;\n\n\t\tconst signout_uri = isCognitoHostedOpts(this._config)\n\t\t\t? this._config.redirectSignOut\n\t\t\t: this._config.returnTo;\n\n\t\toAuthLogoutEndpoint += Object.entries({\n\t\t\tclient_id,\n\t\t\tlogout_uri: encodeURIComponent(signout_uri),\n\t\t})\n\t\t\t.map(([k, v]) => `${k}=${v}`)\n\t\t\t.join('&');\n\n\t\tdispatchAuthEvent(\n\t\t\t'oAuthSignOut',\n\t\t\t{ oAuth: 'signOut' },\n\t\t\t`Signing out from ${oAuthLogoutEndpoint}`\n\t\t);\n\t\tlogger.debug(`Signing out from ${oAuthLogoutEndpoint}`);\n\n\t\treturn this._urlOpener(oAuthLogoutEndpoint, signout_uri);\n\t}\n\n\tprivate _generateState(length: number) {\n\t\tlet result = '';\n\t\tlet i = length;\n\t\tconst chars =\n\t\t\t'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\t\tfor (; i > 0; --i)\n\t\t\tresult += chars[Math.round(Math.random() * (chars.length - 1))];\n\t\treturn result;\n\t}\n\n\tprivate _generateChallenge(code: string) {\n\t\tconst awsCryptoHash = new Sha256();\n\t\tawsCryptoHash.update(code);\n\n\t\tconst resultFromAWSCrypto = awsCryptoHash.digestSync();\n\t\tconst b64 = Buffer.from(resultFromAWSCrypto).toString('base64');\n\t\tconst base64URLFromAWSCrypto = this._base64URL(b64);\n\n\t\treturn base64URLFromAWSCrypto;\n\t}\n\n\tprivate _base64URL(string) {\n\t\treturn string.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n\t}\n\n\tprivate _generateRandom(size: number) {\n\t\tconst CHARSET =\n\t\t\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';\n\t\tconst buffer = new Uint8Array(size);\n\t\tif (typeof window !== 'undefined' && !!window.crypto) {\n\t\t\twindow.crypto.getRandomValues(buffer);\n\t\t} else {\n\t\t\tfor (let i = 0; i < size; i += 1) {\n\t\t\t\tbuffer[i] = (Math.random() * CHARSET.length) | 0;\n\t\t\t}\n\t\t}\n\t\treturn this._bufferToString(buffer);\n\t}\n\n\tprivate _bufferToString(buffer: Uint8Array) {\n\t\tconst CHARSET =\n\t\t\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\t\tconst state = [];\n\t\tfor (let i = 0; i < buffer.byteLength; i += 1) {\n\t\t\tconst index = buffer[i] % CHARSET.length;\n\t\t\tstate.push(CHARSET[index]);\n\t\t}\n\t\treturn state.join('');\n\t}\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function urlSafeEncode(str) {\n return str\n .split('')\n .map(function (char) {\n return char\n .charCodeAt(0)\n .toString(16)\n .padStart(2, '0');\n })\n .join('');\n}\nexport function urlSafeDecode(hex) {\n return hex\n .match(/.{2}/g)\n .map(function (char) { return String.fromCharCode(parseInt(char, 16)); })\n .join('');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport const setState = (state: string) => {\n\twindow.sessionStorage.setItem('oauth_state', state);\n};\n\nexport const getState = () => {\n\tconst oauth_state = window.sessionStorage.getItem('oauth_state');\n\twindow.sessionStorage.removeItem('oauth_state');\n\treturn oauth_state;\n};\n\nexport const setPKCE = (private_key: string) => {\n\twindow.sessionStorage.setItem('ouath_pkce_key', private_key);\n};\n\nexport const getPKCE = () => {\n\tconst ouath_pkce_key = window.sessionStorage.getItem('ouath_pkce_key');\n\twindow.sessionStorage.removeItem('ouath_pkce_key');\n\treturn ouath_pkce_key;\n};\n\nexport const clearAll = () => {\n\twindow.sessionStorage.removeItem('ouath_pkce_key');\n\twindow.sessionStorage.removeItem('oauth_state');\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport enum AuthErrorStrings {\n\tDEFAULT_MSG = 'Authentication Error',\n\tEMPTY_EMAIL = 'Email cannot be empty',\n\tEMPTY_PHONE = 'Phone number cannot be empty',\n\tEMPTY_USERNAME = 'Username cannot be empty',\n\tINVALID_USERNAME = 'The username should either be a string or one of the sign in types',\n\tEMPTY_PASSWORD = 'Password cannot be empty',\n\tEMPTY_CODE = 'Confirmation code cannot be empty',\n\tSIGN_UP_ERROR = 'Error creating account',\n\tNO_MFA = 'No valid MFA method provided',\n\tINVALID_MFA = 'Invalid MFA type',\n\tEMPTY_CHALLENGE = 'Challenge response cannot be empty',\n\tNO_USER_SESSION = 'Failed to get the session because the user is empty',\n\tNETWORK_ERROR = 'Network Error',\n\tDEVICE_CONFIG = 'Device tracking has not been configured in this User Pool',\n\tAUTOSIGNIN_ERROR = 'Please use your credentials to sign in',\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AuthErrorMessages, AuthErrorTypes } from './types';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { AuthErrorStrings } from './common/AuthErrorStrings';\n\nconst logger = new Logger('AuthError');\n\nexport class AuthError extends Error {\n\tpublic log: string;\n\tconstructor(type: AuthErrorTypes) {\n\t\tconst { message, log } = authErrorMessages[type];\n\t\tsuper(message);\n\n\t\t// Hack for making the custom error class work when transpiled to es5\n\t\t// TODO: Delete the following 2 lines after we change the build target to >= es2015\n\t\tthis.constructor = AuthError;\n\t\tObject.setPrototypeOf(this, AuthError.prototype);\n\n\t\tthis.name = 'AuthError';\n\t\tthis.log = log || message;\n\n\t\tlogger.error(this.log);\n\t}\n}\n\nexport class NoUserPoolError extends AuthError {\n\tconstructor(type: AuthErrorTypes) {\n\t\tsuper(type);\n\n\t\t// Hack for making the custom error class work when transpiled to es5\n\t\t// TODO: Delete the following 2 lines after we change the build target to >= es2015\n\t\tthis.constructor = NoUserPoolError;\n\t\tObject.setPrototypeOf(this, NoUserPoolError.prototype);\n\n\t\tthis.name = 'NoUserPoolError';\n\t}\n}\n\nexport const authErrorMessages: AuthErrorMessages = {\n\tnoConfig: {\n\t\tmessage: AuthErrorStrings.DEFAULT_MSG,\n\t\tlog: `\n Error: Amplify has not been configured correctly.\n This error is typically caused by one of the following scenarios:\n\n 1. Make sure you're passing the awsconfig object to Amplify.configure() in your app's entry point\n See https://aws-amplify.github.io/docs/js/authentication#configure-your-app for more information\n \n 2. There might be multiple conflicting versions of amplify packages in your node_modules.\n\t\t\t\tRefer to our docs site for help upgrading Amplify packages (https://docs.amplify.aws/lib/troubleshooting/upgrading/q/platform/js)\n `,\n\t},\n\tmissingAuthConfig: {\n\t\tmessage: AuthErrorStrings.DEFAULT_MSG,\n\t\tlog: `\n Error: Amplify has not been configured correctly. \n The configuration object is missing required auth properties.\n This error is typically caused by one of the following scenarios:\n\n 1. Did you run \\`amplify push\\` after adding auth via \\`amplify add auth\\`?\n See https://aws-amplify.github.io/docs/js/authentication#amplify-project-setup for more information\n\n 2. This could also be caused by multiple conflicting versions of amplify packages, see (https://docs.amplify.aws/lib/troubleshooting/upgrading/q/platform/js) for help upgrading Amplify packages.\n `,\n\t},\n\temptyUsername: {\n\t\tmessage: AuthErrorStrings.EMPTY_USERNAME,\n\t},\n\t// TODO: should include a list of valid sign-in types\n\tinvalidUsername: {\n\t\tmessage: AuthErrorStrings.INVALID_USERNAME,\n\t},\n\temptyPassword: {\n\t\tmessage: AuthErrorStrings.EMPTY_PASSWORD,\n\t},\n\temptyCode: {\n\t\tmessage: AuthErrorStrings.EMPTY_CODE,\n\t},\n\tsignUpError: {\n\t\tmessage: AuthErrorStrings.SIGN_UP_ERROR,\n\t\tlog: 'The first parameter should either be non-null string or object',\n\t},\n\tnoMFA: {\n\t\tmessage: AuthErrorStrings.NO_MFA,\n\t},\n\tinvalidMFA: {\n\t\tmessage: AuthErrorStrings.INVALID_MFA,\n\t},\n\temptyChallengeResponse: {\n\t\tmessage: AuthErrorStrings.EMPTY_CHALLENGE,\n\t},\n\tnoUserSession: {\n\t\tmessage: AuthErrorStrings.NO_USER_SESSION,\n\t},\n\tdeviceConfig: {\n\t\tmessage: AuthErrorStrings.DEVICE_CONFIG,\n\t},\n\tnetworkError: {\n\t\tmessage: AuthErrorStrings.NETWORK_ERROR,\n\t},\n\tautoSignInError: {\n\t\tmessage: AuthErrorStrings.AUTOSIGNIN_ERROR,\n\t},\n\tdefault: {\n\t\tmessage: AuthErrorStrings.DEFAULT_MSG,\n\t},\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tAuthOptions,\n\tFederatedResponse,\n\tSignUpParams,\n\tFederatedUser,\n\tConfirmSignUpOptions,\n\tSignOutOpts,\n\tCurrentUserOpts,\n\tGetPreferredMFAOpts,\n\tSignInOpts,\n\tisUsernamePasswordOpts,\n\tisCognitoHostedOpts,\n\tisFederatedSignInOptions,\n\tisFederatedSignInOptionsCustom,\n\thasCustomState,\n\tFederatedSignInOptionsCustom,\n\tLegacyProvider,\n\tFederatedSignInOptions,\n\tAwsCognitoOAuthOpts,\n\tClientMetaData,\n} from './types';\n\nimport {\n\tAmplify,\n\tConsoleLogger as Logger,\n\tCredentials,\n\tHub,\n\tStorageHelper,\n\tICredentials,\n\tPlatform,\n\tbrowserOrNode,\n\tparseAWSExports,\n\tUniversalStorage,\n\turlSafeDecode,\n\tHubCallback,\n} from '@aws-amplify/core';\nimport {\n\tCookieStorage,\n\tCognitoUserPool,\n\tAuthenticationDetails,\n\tICognitoUserPoolData,\n\tICognitoUserData,\n\tISignUpResult,\n\tCognitoUser,\n\tMFAOption,\n\tCognitoUserSession,\n\tIAuthenticationCallback,\n\tICognitoUserAttributeData,\n\tCognitoUserAttribute,\n\tCognitoIdToken,\n\tCognitoRefreshToken,\n\tCognitoAccessToken,\n\tNodeCallback,\n\tCodeDeliveryDetails,\n} from 'amazon-cognito-identity-js';\nimport {\n\taddAuthCategoryToCognitoUserAgent,\n\taddFrameworkToCognitoUserAgent,\n} from 'amazon-cognito-identity-js/internals';\n\nimport { parse } from 'url';\nimport OAuth from './OAuth/OAuth';\nimport { default as urlListener } from './urlListener';\nimport { AuthError, NoUserPoolError } from './Errors';\nimport {\n\tAuthErrorTypes,\n\tAutoSignInOptions,\n\tCognitoHostedUIIdentityProvider,\n\tIAuthDevice,\n} from './types/Auth';\n\nconst logger = new Logger('AuthClass');\nconst USER_ADMIN_SCOPE = 'aws.cognito.signin.user.admin';\n\n// 10 sec, following this guide https://www.nngroup.com/articles/response-times-3-important-limits/\nconst OAUTH_FLOW_MS_TIMEOUT = 10 * 1000;\n\nconst AMPLIFY_SYMBOL = (\n\ttypeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n\t\t? Symbol.for('amplify_default')\n\t\t: '@@amplify_default'\n) as Symbol;\n\nconst dispatchAuthEvent = (event: string, data: any, message: string) => {\n\tHub.dispatch('auth', { event, data, message }, 'Auth', AMPLIFY_SYMBOL);\n};\n\n// Cognito Documentation for max device\n// tslint:disable-next-line:max-line-length\n// https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html#API_ListDevices_RequestSyntax\nconst MAX_DEVICES = 60;\n\nconst MAX_AUTOSIGNIN_POLLING_MS = 3 * 60 * 1000;\n\n/**\n * Provide authentication steps\n */\nexport class AuthClass {\n\tprivate _config: AuthOptions;\n\tprivate userPool: CognitoUserPool = null;\n\tprivate user: any = null;\n\tprivate _oAuthHandler: OAuth;\n\tprivate _storage;\n\tprivate _storageSync;\n\tprivate oAuthFlowInProgress: boolean = false;\n\tprivate pendingSignIn: ReturnType | null;\n\tprivate autoSignInInitiated: boolean = false;\n\tprivate inflightSessionPromise: Promise | null = null;\n\tprivate inflightSessionPromiseCounter: number = 0;\n\tCredentials = Credentials;\n\n\t/**\n\t * Initialize Auth with AWS configurations\n\t * @param {Object} config - Configuration of the Auth\n\t */\n\tconstructor(config: AuthOptions) {\n\t\tthis.configure(config);\n\t\tthis.currentCredentials = this.currentCredentials.bind(this);\n\t\tthis.currentUserCredentials = this.currentUserCredentials.bind(this);\n\n\t\tHub.listen('auth', ({ payload }) => {\n\t\t\tconst { event } = payload;\n\t\t\tswitch (event) {\n\t\t\t\tcase 'verify':\n\t\t\t\tcase 'signIn':\n\t\t\t\t\tthis._storage.setItem('amplify-signin-with-hostedUI', 'false');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'signOut':\n\t\t\t\t\tthis._storage.removeItem('amplify-signin-with-hostedUI');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'cognitoHostedUI':\n\t\t\t\t\tthis._storage.setItem('amplify-signin-with-hostedUI', 'true');\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\taddAuthCategoryToCognitoUserAgent();\n\t\taddFrameworkToCognitoUserAgent(Platform.framework);\n\t\tPlatform.observeFrameworkChanges(() => {\n\t\t\taddFrameworkToCognitoUserAgent(Platform.framework);\n\t\t});\n\t}\n\n\tpublic getModuleName() {\n\t\treturn 'Auth';\n\t}\n\n\tconfigure(config?) {\n\t\tif (!config) return this._config || {};\n\t\tlogger.debug('configure Auth');\n\t\tconst conf = Object.assign(\n\t\t\t{},\n\t\t\tthis._config,\n\t\t\tparseAWSExports(config).Auth,\n\t\t\tconfig\n\t\t);\n\t\tthis._config = conf;\n\t\tconst {\n\t\t\tuserPoolId,\n\t\t\tuserPoolWebClientId,\n\t\t\tcookieStorage,\n\t\t\toauth,\n\t\t\tregion,\n\t\t\tidentityPoolId,\n\t\t\tmandatorySignIn,\n\t\t\trefreshHandlers,\n\t\t\tidentityPoolRegion,\n\t\t\tclientMetadata,\n\t\t\tendpoint,\n\t\t\tstorage,\n\t\t} = this._config;\n\n\t\tif (!storage) {\n\t\t\t// backward compatability\n\t\t\tif (cookieStorage) this._storage = new CookieStorage(cookieStorage);\n\t\t\telse {\n\t\t\t\tthis._storage = config.ssr\n\t\t\t\t\t? new UniversalStorage()\n\t\t\t\t\t: new StorageHelper().getStorage();\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this._isValidAuthStorage(storage)) {\n\t\t\t\tlogger.error('The storage in the Auth config is not valid!');\n\t\t\t\tthrow new Error('Empty storage object');\n\t\t\t}\n\t\t\tthis._storage = storage;\n\t\t}\n\n\t\tthis._storageSync = Promise.resolve();\n\t\tif (typeof this._storage['sync'] === 'function') {\n\t\t\tthis._storageSync = this._storage['sync']();\n\t\t}\n\n\t\tif (userPoolId) {\n\t\t\tconst userPoolData: ICognitoUserPoolData = {\n\t\t\t\tUserPoolId: userPoolId,\n\t\t\t\tClientId: userPoolWebClientId,\n\t\t\t\tendpoint,\n\t\t\t};\n\t\t\tuserPoolData.Storage = this._storage;\n\n\t\t\tthis.userPool = new CognitoUserPool(\n\t\t\t\tuserPoolData,\n\t\t\t\tthis.wrapRefreshSessionCallback\n\t\t\t);\n\t\t}\n\n\t\tthis.Credentials.configure({\n\t\t\tmandatorySignIn,\n\t\t\tregion,\n\t\t\tuserPoolId,\n\t\t\tidentityPoolId,\n\t\t\trefreshHandlers,\n\t\t\tstorage: this._storage,\n\t\t\tidentityPoolRegion,\n\t\t});\n\n\t\t// initialize cognitoauth client if hosted ui options provided\n\t\t// to keep backward compatibility:\n\t\tconst cognitoHostedUIConfig = oauth\n\t\t\t? isCognitoHostedOpts(this._config.oauth)\n\t\t\t\t? oauth\n\t\t\t\t: (oauth).awsCognito\n\t\t\t: undefined;\n\n\t\tif (cognitoHostedUIConfig) {\n\t\t\tconst cognitoAuthParams = Object.assign(\n\t\t\t\t{\n\t\t\t\t\tcognitoClientId: userPoolWebClientId,\n\t\t\t\t\tUserPoolId: userPoolId,\n\t\t\t\t\tdomain: cognitoHostedUIConfig['domain'],\n\t\t\t\t\tscopes: cognitoHostedUIConfig['scope'],\n\t\t\t\t\tredirectSignIn: cognitoHostedUIConfig['redirectSignIn'],\n\t\t\t\t\tredirectSignOut: cognitoHostedUIConfig['redirectSignOut'],\n\t\t\t\t\tresponseType: cognitoHostedUIConfig['responseType'],\n\t\t\t\t\tStorage: this._storage,\n\t\t\t\t\turlOpener: cognitoHostedUIConfig['urlOpener'],\n\t\t\t\t\tclientMetadata,\n\t\t\t\t},\n\t\t\t\tcognitoHostedUIConfig['options']\n\t\t\t);\n\n\t\t\tthis._oAuthHandler = new OAuth({\n\t\t\t\tscopes: cognitoAuthParams.scopes,\n\t\t\t\tconfig: cognitoAuthParams,\n\t\t\t\tcognitoClientId: cognitoAuthParams.cognitoClientId,\n\t\t\t});\n\n\t\t\t// **NOTE** - Remove this in a future major release as it is a breaking change\n\t\t\t// Prevents _handleAuthResponse from being called multiple times in Expo\n\t\t\t// See https://github.com/aws-amplify/amplify-js/issues/4388\n\t\t\tconst usedResponseUrls = {};\n\t\t\turlListener(({ url }) => {\n\t\t\t\tif (usedResponseUrls[url]) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tusedResponseUrls[url] = true;\n\t\t\t\tthis._handleAuthResponse(url);\n\t\t\t});\n\t\t}\n\n\t\tdispatchAuthEvent(\n\t\t\t'configured',\n\t\t\tnull,\n\t\t\t`The Auth category has been configured successfully`\n\t\t);\n\n\t\tif (\n\t\t\t!this.autoSignInInitiated &&\n\t\t\ttypeof this._storage['getItem'] === 'function'\n\t\t) {\n\t\t\tconst pollingInitiated = this.isTrueStorageValue(\n\t\t\t\t'amplify-polling-started'\n\t\t\t);\n\t\t\tif (pollingInitiated) {\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'autoSignIn_failure',\n\t\t\t\t\tnull,\n\t\t\t\t\tAuthErrorTypes.AutoSignInError\n\t\t\t\t);\n\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t}\n\t\t\tthis._storage.removeItem('amplify-polling-started');\n\t\t}\n\t\treturn this._config;\n\t}\n\n\twrapRefreshSessionCallback = (callback: NodeCallback.Any) => {\n\t\tconst wrapped: NodeCallback.Any = (error, data) => {\n\t\t\tif (data) {\n\t\t\t\tdispatchAuthEvent('tokenRefresh', undefined, `New token retrieved`);\n\t\t\t} else {\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'tokenRefresh_failure',\n\t\t\t\t\terror,\n\t\t\t\t\t`Failed to retrieve new token`\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn callback(error, data);\n\t\t};\n\t\treturn wrapped;\n\t} // prettier-ignore\n\n\t/**\n\t * Sign up with username, password and other attributes like phone, email\n\t * @param {String | object} params - The user attributes used for signin\n\t * @param {String[]} restOfAttrs - for the backward compatability\n\t * @return - A promise resolves callback data if success\n\t */\n\tpublic signUp(\n\t\tparams: string | SignUpParams,\n\t\t...restOfAttrs: string[]\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\n\t\tlet username: string = null;\n\t\tlet password: string = null;\n\t\tconst attributes: CognitoUserAttribute[] = [];\n\t\tlet validationData: CognitoUserAttribute[] = null;\n\t\tlet clientMetadata;\n\t\tlet autoSignIn: AutoSignInOptions = { enabled: false };\n\t\tlet autoSignInValidationData = {};\n\t\tlet autoSignInClientMetaData: ClientMetaData = {};\n\n\t\tif (params && typeof params === 'string') {\n\t\t\tusername = params;\n\t\t\tpassword = restOfAttrs ? restOfAttrs[0] : null;\n\t\t\tconst email: string = restOfAttrs ? restOfAttrs[1] : null;\n\t\t\tconst phone_number: string = restOfAttrs ? restOfAttrs[2] : null;\n\n\t\t\tif (email)\n\t\t\t\tattributes.push(\n\t\t\t\t\tnew CognitoUserAttribute({ Name: 'email', Value: email })\n\t\t\t\t);\n\n\t\t\tif (phone_number)\n\t\t\t\tattributes.push(\n\t\t\t\t\tnew CognitoUserAttribute({\n\t\t\t\t\t\tName: 'phone_number',\n\t\t\t\t\t\tValue: phone_number,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t} else if (params && typeof params === 'object') {\n\t\t\tusername = params['username'];\n\t\t\tpassword = params['password'];\n\n\t\t\tif (params && params.clientMetadata) {\n\t\t\t\tclientMetadata = params.clientMetadata;\n\t\t\t} else if (this._config.clientMetadata) {\n\t\t\t\tclientMetadata = this._config.clientMetadata;\n\t\t\t}\n\n\t\t\tconst attrs = params['attributes'];\n\t\t\tif (attrs) {\n\t\t\t\tObject.keys(attrs).map(key => {\n\t\t\t\t\tattributes.push(\n\t\t\t\t\t\tnew CognitoUserAttribute({ Name: key, Value: attrs[key] })\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst validationDataObject = params['validationData'];\n\t\t\tif (validationDataObject) {\n\t\t\t\tvalidationData = [];\n\t\t\t\tObject.keys(validationDataObject).map(key => {\n\t\t\t\t\tvalidationData.push(\n\t\t\t\t\t\tnew CognitoUserAttribute({\n\t\t\t\t\t\t\tName: key,\n\t\t\t\t\t\t\tValue: validationDataObject[key],\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tautoSignIn = params.autoSignIn ?? { enabled: false };\n\t\t\tif (autoSignIn.enabled) {\n\t\t\t\tthis._storage.setItem('amplify-auto-sign-in', 'true');\n\t\t\t\tautoSignInValidationData = autoSignIn.validationData ?? {};\n\t\t\t\tautoSignInClientMetaData = autoSignIn.clientMetaData ?? {};\n\t\t\t}\n\t\t} else {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.SignUpError);\n\t\t}\n\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tif (!password) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n\t\t}\n\n\t\tlogger.debug('signUp attrs:', attributes);\n\t\tlogger.debug('signUp validation data:', validationData);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.userPool.signUp(\n\t\t\t\tusername,\n\t\t\t\tpassword,\n\t\t\t\tattributes,\n\t\t\t\tvalidationData,\n\t\t\t\t(err, data) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'signUp_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${username} failed to signup`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'signUp',\n\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t`${username} has signed up successfully`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (autoSignIn.enabled) {\n\t\t\t\t\t\t\tthis.handleAutoSignIn(\n\t\t\t\t\t\t\t\tusername,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tautoSignInValidationData,\n\t\t\t\t\t\t\t\tautoSignInClientMetaData,\n\t\t\t\t\t\t\t\tdata\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate handleAutoSignIn(\n\t\tusername: string,\n\t\tpassword: string,\n\t\tvalidationData: {},\n\t\tclientMetadata: any,\n\t\tdata: any\n\t) {\n\t\tthis.autoSignInInitiated = true;\n\t\tconst authDetails = new AuthenticationDetails({\n\t\t\tUsername: username,\n\t\t\tPassword: password,\n\t\t\tValidationData: validationData,\n\t\t\tClientMetadata: clientMetadata,\n\t\t});\n\t\tif (data.userConfirmed) {\n\t\t\tthis.signInAfterUserConfirmed(authDetails);\n\t\t} else if (this._config.signUpVerificationMethod === 'link') {\n\t\t\tthis.handleLinkAutoSignIn(authDetails);\n\t\t} else {\n\t\t\tthis.handleCodeAutoSignIn(authDetails);\n\t\t}\n\t}\n\n\tprivate handleCodeAutoSignIn(authDetails: AuthenticationDetails) {\n\t\tconst listenEvent = ({ payload }) => {\n\t\t\tif (payload.event === 'confirmSignUp') {\n\t\t\t\tthis.signInAfterUserConfirmed(authDetails, listenEvent);\n\t\t\t}\n\t\t};\n\t\tHub.listen('auth', listenEvent);\n\t}\n\n\tprivate handleLinkAutoSignIn(authDetails: AuthenticationDetails) {\n\t\tthis._storage.setItem('amplify-polling-started', 'true');\n\t\tconst start = Date.now();\n\t\tconst autoSignInPollingIntervalId = setInterval(() => {\n\t\t\tif (Date.now() - start > MAX_AUTOSIGNIN_POLLING_MS) {\n\t\t\t\tclearInterval(autoSignInPollingIntervalId);\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'autoSignIn_failure',\n\t\t\t\t\tnull,\n\t\t\t\t\t'Please confirm your account and use your credentials to sign in.'\n\t\t\t\t);\n\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t} else {\n\t\t\t\tthis.signInAfterUserConfirmed(\n\t\t\t\t\tauthDetails,\n\t\t\t\t\tnull,\n\t\t\t\t\tautoSignInPollingIntervalId\n\t\t\t\t);\n\t\t\t}\n\t\t}, 5000);\n\t}\n\n\tprivate async signInAfterUserConfirmed(\n\t\tauthDetails: AuthenticationDetails,\n\t\tlistenEvent?: HubCallback,\n\t\tautoSignInPollingIntervalId?: ReturnType\n\t) {\n\t\tconst user = this.createCognitoUser(authDetails.getUsername());\n\t\ttry {\n\t\t\tawait user.authenticateUser(\n\t\t\t\tauthDetails,\n\t\t\t\tthis.authCallbacks(\n\t\t\t\t\tuser,\n\t\t\t\t\tvalue => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'autoSignIn',\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t`${authDetails.getUsername()} has signed in successfully`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (listenEvent) {\n\t\t\t\t\t\t\tHub.remove('auth', listenEvent);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (autoSignInPollingIntervalId) {\n\t\t\t\t\t\t\tclearInterval(autoSignInPollingIntervalId);\n\t\t\t\t\t\t\tthis._storage.removeItem('amplify-polling-started');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\tlogger.error(error);\n\t\t\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tlogger.error(error);\n\t\t}\n\t}\n\n\t/**\n\t * Send the verification code to confirm sign up\n\t * @param {String} username - The username to be confirmed\n\t * @param {String} code - The verification code\n\t * @param {ConfirmSignUpOptions} options - other options for confirm signup\n\t * @return - A promise resolves callback data if success\n\t */\n\tpublic confirmSignUp(\n\t\tusername: string,\n\t\tcode: string,\n\t\toptions?: ConfirmSignUpOptions\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\tconst forceAliasCreation =\n\t\t\toptions && typeof options.forceAliasCreation === 'boolean'\n\t\t\t\t? options.forceAliasCreation\n\t\t\t\t: true;\n\n\t\tlet clientMetadata;\n\t\tif (options && options.clientMetadata) {\n\t\t\tclientMetadata = options.clientMetadata;\n\t\t} else if (this._config.clientMetadata) {\n\t\t\tclientMetadata = this._config.clientMetadata;\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.confirmRegistration(\n\t\t\t\tcode,\n\t\t\t\tforceAliasCreation,\n\t\t\t\t(err, data) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'confirmSignUp',\n\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t`${username} has been confirmed successfully`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoSignIn = this.isTrueStorageValue('amplify-auto-sign-in');\n\t\t\t\t\t\tif (autoSignIn && !this.autoSignInInitiated) {\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'autoSignIn_failure',\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tAuthErrorTypes.AutoSignInError\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate isTrueStorageValue(value: string) {\n\t\tconst item = this._storage.getItem(value);\n\t\treturn item ? item === 'true' : false;\n\t}\n\n\t/**\n\t * Resend the verification code\n\t * @param {String} username - The username to be confirmed\n\t * @param {ClientMetadata} clientMetadata - Metadata to be passed to Cognito Lambda triggers\n\t * @return - A promise resolves code delivery details if successful\n\t */\n\tpublic resendSignUp(\n\t\tusername: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.resendConfirmationCode((err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(data);\n\t\t\t\t}\n\t\t\t}, clientMetadata);\n\t\t});\n\t}\n\n\t/**\n\t * Sign in\n\t * @param {String | SignInOpts} usernameOrSignInOpts - The username to be signed in or the sign in options\n\t * @param {String} pw - The password of the username\n\t * @param {ClientMetaData} clientMetadata - Client metadata for custom workflows\n\t * @return - A promise resolves the CognitoUser\n\t */\n\tpublic signIn(\n\t\tusernameOrSignInOpts: string | SignInOpts,\n\t\tpw?: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\n\t\tlet username = null;\n\t\tlet password = null;\n\t\tlet validationData = {};\n\n\t\t// for backward compatibility\n\t\tif (typeof usernameOrSignInOpts === 'string') {\n\t\t\tusername = usernameOrSignInOpts;\n\t\t\tpassword = pw;\n\t\t} else if (isUsernamePasswordOpts(usernameOrSignInOpts)) {\n\t\t\tif (typeof pw !== 'undefined') {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t'The password should be defined under the first parameter object!'\n\t\t\t\t);\n\t\t\t}\n\t\t\tusername = usernameOrSignInOpts.username;\n\t\t\tpassword = usernameOrSignInOpts.password;\n\t\t\tvalidationData = usernameOrSignInOpts.validationData;\n\t\t} else {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.InvalidUsername);\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tconst authDetails = new AuthenticationDetails({\n\t\t\tUsername: username,\n\t\t\tPassword: password,\n\t\t\tValidationData: validationData,\n\t\t\tClientMetadata: clientMetadata,\n\t\t});\n\t\tif (password) {\n\t\t\treturn this.signInWithPassword(authDetails);\n\t\t} else {\n\t\t\treturn this.signInWithoutPassword(authDetails);\n\t\t}\n\t}\n\n\t/**\n\t * Return an object with the authentication callbacks\n\t * @param {CognitoUser} user - the cognito user object\n\t * @param {} resolve - function called when resolving the current step\n\t * @param {} reject - function called when rejecting the current step\n\t * @return - an object with the callback methods for user authentication\n\t */\n\tprivate authCallbacks(\n\t\tuser: CognitoUser,\n\t\tresolve: (value?: CognitoUser | any) => void,\n\t\treject: (value?: any) => void\n\t): IAuthenticationCallback {\n\t\tconst that = this;\n\t\treturn {\n\t\t\tonSuccess: async session => {\n\t\t\t\tlogger.debug(session);\n\t\t\t\tdelete user['challengeName'];\n\t\t\t\tdelete user['challengeParam'];\n\t\t\t\ttry {\n\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\tconst cred = await this.Credentials.set(session, 'session');\n\t\t\t\t\tlogger.debug('succeed to get cognito credentials', cred);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tlogger.debug('cannot get cognito credentials', e);\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// In order to get user attributes and MFA methods\n\t\t\t\t\t\t// We need to trigger currentUserPoolUser again\n\t\t\t\t\t\tconst currentUser = await this.currentUserPoolUser();\n\t\t\t\t\t\tthat.user = currentUser;\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\t\tcurrentUser,\n\t\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(currentUser);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tlogger.error('Failed to get the signed in user', e);\n\t\t\t\t\t\treject(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFailure: err => {\n\t\t\t\tlogger.debug('signIn failure', err);\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'signIn_failure',\n\t\t\t\t\terr,\n\t\t\t\t\t`${user.getUsername()} failed to signin`\n\t\t\t\t);\n\t\t\t\treject(err);\n\t\t\t},\n\t\t\tcustomChallenge: challengeParam => {\n\t\t\t\tlogger.debug('signIn custom challenge answer required');\n\t\t\t\tuser['challengeName'] = 'CUSTOM_CHALLENGE';\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tmfaRequired: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn MFA required');\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tmfaSetup: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn mfa setup', challengeName);\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tnewPasswordRequired: (userAttributes, requiredAttributes) => {\n\t\t\t\tlogger.debug('signIn new password');\n\t\t\t\tuser['challengeName'] = 'NEW_PASSWORD_REQUIRED';\n\t\t\t\tuser['challengeParam'] = {\n\t\t\t\t\tuserAttributes,\n\t\t\t\t\trequiredAttributes,\n\t\t\t\t};\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\ttotpRequired: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn totpRequired');\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tselectMFAType: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn selectMFAType', challengeName);\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Sign in with a password\n\t * @private\n\t * @param {AuthenticationDetails} authDetails - the user sign in data\n\t * @return - A promise resolves the CognitoUser object if success or mfa required\n\t */\n\tprivate signInWithPassword(\n\t\tauthDetails: AuthenticationDetails\n\t): Promise {\n\t\tif (this.pendingSignIn) {\n\t\t\tthrow new Error('Pending sign-in attempt already in progress');\n\t\t}\n\n\t\tconst user = this.createCognitoUser(authDetails.getUsername());\n\n\t\tthis.pendingSignIn = new Promise((resolve, reject) => {\n\t\t\tuser.authenticateUser(\n\t\t\t\tauthDetails,\n\t\t\t\tthis.authCallbacks(\n\t\t\t\t\tuser,\n\t\t\t\t\tvalue => {\n\t\t\t\t\t\tthis.pendingSignIn = null;\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\tthis.pendingSignIn = null;\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t});\n\n\t\treturn this.pendingSignIn;\n\t}\n\n\t/**\n\t * Sign in without a password\n\t * @private\n\t * @param {AuthenticationDetails} authDetails - the user sign in data\n\t * @return - A promise resolves the CognitoUser object if success or mfa required\n\t */\n\tprivate signInWithoutPassword(\n\t\tauthDetails: AuthenticationDetails\n\t): Promise {\n\t\tconst user = this.createCognitoUser(authDetails.getUsername());\n\t\tuser.setAuthenticationFlowType('CUSTOM_AUTH');\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.initiateAuth(authDetails, this.authCallbacks(user, resolve, reject));\n\t\t});\n\t}\n\n\t/**\n\t * This was previously used by an authenticated user to get MFAOptions,\n\t * but no longer returns a meaningful response. Refer to the documentation for\n\t * how to setup and use MFA: https://docs.amplify.aws/lib/auth/mfa/q/platform/js\n\t * @deprecated\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves the current preferred mfa option if success\n\t */\n\tpublic getMFAOptions(user: CognitoUser | any): Promise {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.getMFAOptions((err, mfaOptions) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('get MFA Options failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlogger.debug('get MFA options success', mfaOptions);\n\t\t\t\tres(mfaOptions);\n\t\t\t\treturn;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * get preferred mfa method\n\t * @param {CognitoUser} user - the current cognito user\n\t * @param {GetPreferredMFAOpts} params - options for getting the current user preferred MFA\n\t */\n\tpublic getPreferredMFA(\n\t\tuser: CognitoUser | any,\n\t\tparams?: GetPreferredMFAOpts\n\t): Promise {\n\t\tconst that = this;\n\t\treturn new Promise((res, rej) => {\n\t\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\t\tconst bypassCache = params ? params.bypassCache : false;\n\t\t\tuser.getUserData(\n\t\t\t\tasync (err, data) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tlogger.debug('getting preferred mfa failed', err);\n\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst mfaType = that._getMfaTypeFromUserData(data);\n\t\t\t\t\tif (!mfaType) {\n\t\t\t\t\t\trej('invalid MFA Type');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tres(mfaType);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ bypassCache, clientMetadata }\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate _getMfaTypeFromUserData(data) {\n\t\tlet ret = null;\n\t\tconst preferredMFA = data.PreferredMfaSetting;\n\t\t// if the user has used Auth.setPreferredMFA() to setup the mfa type\n\t\t// then the \"PreferredMfaSetting\" would exist in the response\n\t\tif (preferredMFA) {\n\t\t\tret = preferredMFA;\n\t\t} else {\n\t\t\t// if mfaList exists but empty, then its noMFA\n\t\t\tconst mfaList = data.UserMFASettingList;\n\t\t\tif (!mfaList) {\n\t\t\t\t// if SMS was enabled by using Auth.enableSMS(),\n\t\t\t\t// the response would contain MFAOptions\n\t\t\t\t// as for now Cognito only supports for SMS, so we will say it is 'SMS_MFA'\n\t\t\t\t// if it does not exist, then it should be NOMFA\n\t\t\t\tconst MFAOptions = data.MFAOptions;\n\t\t\t\tif (MFAOptions) {\n\t\t\t\t\tret = 'SMS_MFA';\n\t\t\t\t} else {\n\t\t\t\t\tret = 'NOMFA';\n\t\t\t\t}\n\t\t\t} else if (mfaList.length === 0) {\n\t\t\t\tret = 'NOMFA';\n\t\t\t} else {\n\t\t\t\tlogger.debug('invalid case for getPreferredMFA', data);\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t}\n\n\tprivate _getUserData(user, params) {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.getUserData(async (err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('getting user data failed', err);\n\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tres(data);\n\t\t\t\t}\n\t\t\t}, params);\n\t\t});\n\t}\n\n\t/**\n\t * set preferred MFA method\n\t * @param {CognitoUser} user - the current Cognito user\n\t * @param {string} mfaMethod - preferred mfa method\n\t * @return - A promise resolve if success\n\t */\n\tpublic async setPreferredMFA(\n\t\tuser: CognitoUser | any,\n\t\tmfaMethod: 'TOTP' | 'SMS' | 'NOMFA' | 'SMS_MFA' | 'SOFTWARE_TOKEN_MFA'\n\t): Promise {\n\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\tconst userData = await this._getUserData(user, {\n\t\t\tbypassCache: true,\n\t\t\tclientMetadata,\n\t\t});\n\t\tlet smsMfaSettings = null;\n\t\tlet totpMfaSettings = null;\n\n\t\tswitch (mfaMethod) {\n\t\t\tcase 'TOTP':\n\t\t\tcase 'SOFTWARE_TOKEN_MFA':\n\t\t\t\ttotpMfaSettings = {\n\t\t\t\t\tPreferredMfa: true,\n\t\t\t\t\tEnabled: true,\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'SMS':\n\t\t\tcase 'SMS_MFA':\n\t\t\t\tsmsMfaSettings = {\n\t\t\t\t\tPreferredMfa: true,\n\t\t\t\t\tEnabled: true,\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'NOMFA':\n\t\t\t\tconst mfaList = userData['UserMFASettingList'];\n\t\t\t\tconst currentMFAType = await this._getMfaTypeFromUserData(userData);\n\t\t\t\tif (currentMFAType === 'NOMFA') {\n\t\t\t\t\treturn Promise.resolve('No change for mfa type');\n\t\t\t\t} else if (currentMFAType === 'SMS_MFA') {\n\t\t\t\t\tsmsMfaSettings = {\n\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t};\n\t\t\t\t} else if (currentMFAType === 'SOFTWARE_TOKEN_MFA') {\n\t\t\t\t\ttotpMfaSettings = {\n\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn this.rejectAuthError(AuthErrorTypes.InvalidMFA);\n\t\t\t\t}\n\t\t\t\t// if there is a UserMFASettingList in the response\n\t\t\t\t// we need to disable every mfa type in that list\n\t\t\t\tif (mfaList && mfaList.length !== 0) {\n\t\t\t\t\t// to disable SMS or TOTP if exists in that list\n\t\t\t\t\tmfaList.forEach(mfaType => {\n\t\t\t\t\t\tif (mfaType === 'SMS_MFA') {\n\t\t\t\t\t\t\tsmsMfaSettings = {\n\t\t\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (mfaType === 'SOFTWARE_TOKEN_MFA') {\n\t\t\t\t\t\t\ttotpMfaSettings = {\n\t\t\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlogger.debug('no validmfa method provided');\n\t\t\t\treturn this.rejectAuthError(AuthErrorTypes.NoMFA);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.setUserMfaPreference(\n\t\t\t\tsmsMfaSettings,\n\t\t\t\ttotpMfaSettings,\n\t\t\t\t(err, result) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tlogger.debug('Set user mfa preference error', err);\n\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t}\n\t\t\t\t\tlogger.debug('Set user mfa success', result);\n\t\t\t\t\tlogger.debug('Caching the latest user data into local');\n\t\t\t\t\t// cache the latest result into user data\n\t\t\t\t\tuser.getUserData(\n\t\t\t\t\t\tasync (err, data) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tlogger.debug('getting user data failed', err);\n\t\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn res(result);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbypassCache: true,\n\t\t\t\t\t\t\tclientMetadata,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * disable SMS\n\t * @deprecated\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves is success\n\t */\n\tpublic disableSMS(user: CognitoUser): Promise {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.disableMFA((err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('disable mfa failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlogger.debug('disable mfa succeed', data);\n\t\t\t\tres(data);\n\t\t\t\treturn;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * enable SMS\n\t * @deprecated\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves is success\n\t */\n\tpublic enableSMS(user: CognitoUser): Promise {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.enableMFA((err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('enable mfa failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlogger.debug('enable mfa succeed', data);\n\t\t\t\tres(data);\n\t\t\t\treturn;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Setup TOTP\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves with the secret code if success\n\t */\n\tpublic setupTOTP(user: CognitoUser | any): Promise {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.associateSoftwareToken({\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tlogger.debug('associateSoftwareToken failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t\tassociateSecretCode: secretCode => {\n\t\t\t\t\tlogger.debug('associateSoftwareToken success', secretCode);\n\t\t\t\t\tres(secretCode);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * verify TOTP setup\n\t * @param {CognitoUser} user - the current user\n\t * @param {string} challengeAnswer - challenge answer\n\t * @return - A promise resolves is success\n\t */\n\tpublic verifyTotpToken(\n\t\tuser: CognitoUser | any,\n\t\tchallengeAnswer: string\n\t): Promise {\n\t\tlogger.debug('verification totp token', user, challengeAnswer);\n\n\t\tlet signInUserSession;\n\t\tif (user && typeof user.getSignInUserSession === 'function') {\n\t\t\tsignInUserSession = (user as CognitoUser).getSignInUserSession();\n\t\t}\n\t\tconst isLoggedIn = signInUserSession?.isValid();\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.verifySoftwareToken(challengeAnswer, 'My TOTP device', {\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tlogger.debug('verifyTotpToken failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t\tonSuccess: data => {\n\t\t\t\t\tif (!isLoggedIn) {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'verify',\n\t\t\t\t\t\tuser,\n\t\t\t\t\t\t`A user ${user.getUsername()} has been verified`\n\t\t\t\t\t);\n\t\t\t\t\tlogger.debug('verifyTotpToken success', data);\n\t\t\t\t\tres(data);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Send MFA code to confirm sign in\n\t * @param {Object} user - The CognitoUser object\n\t * @param {String} code - The confirmation code\n\t */\n\tpublic confirmSignIn(\n\t\tuser: CognitoUser | any,\n\t\tcode: string,\n\t\tmfaType?: 'SMS_MFA' | 'SOFTWARE_TOKEN_MFA' | null,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.sendMFACode(\n\t\t\t\tcode,\n\t\t\t\t{\n\t\t\t\t\tonSuccess: async session => {\n\t\t\t\t\t\tlogger.debug(session);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\t\t\tconst cred = await this.Credentials.set(session, 'session');\n\t\t\t\t\t\t\tlogger.debug('succeed to get cognito credentials', cred);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tlogger.debug('cannot get cognito credentials', e);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tthat.user = user;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst currentUser = await this.currentUserPoolUser();\n\t\t\t\t\t\t\t\tuser.attributes = currentUser.attributes;\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\tlogger.debug('cannot get updated Cognito User', e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tlogger.debug('confirm signIn failure', err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tmfaType,\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic completeNewPassword(\n\t\tuser: CognitoUser | any,\n\t\tpassword: string,\n\t\trequiredAttributes: any = {},\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!password) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.completeNewPasswordChallenge(\n\t\t\t\tpassword,\n\t\t\t\trequiredAttributes,\n\t\t\t\t{\n\t\t\t\t\tonSuccess: async session => {\n\t\t\t\t\t\tlogger.debug(session);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\t\t\tconst cred = await this.Credentials.set(session, 'session');\n\t\t\t\t\t\t\tlogger.debug('succeed to get cognito credentials', cred);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tlogger.debug('cannot get cognito credentials', e);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tthat.user = user;\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tlogger.debug('completeNewPassword failure', err);\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'completeNewPassword_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${this.user} failed to complete the new password flow`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t},\n\t\t\t\t\tmfaRequired: (challengeName, challengeParam) => {\n\t\t\t\t\t\tlogger.debug('signIn MFA required');\n\t\t\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t},\n\t\t\t\t\tmfaSetup: (challengeName, challengeParam) => {\n\t\t\t\t\t\tlogger.debug('signIn mfa setup', challengeName);\n\t\t\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t},\n\t\t\t\t\ttotpRequired: (challengeName, challengeParam) => {\n\t\t\t\t\t\tlogger.debug('signIn mfa setup', challengeName);\n\t\t\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Send the answer to a custom challenge\n\t * @param {CognitoUser} user - The CognitoUser object\n\t * @param {String} challengeResponses - The confirmation code\n\t */\n\tpublic sendCustomChallengeAnswer(\n\t\tuser: CognitoUser | any,\n\t\tchallengeResponses: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!challengeResponses) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyChallengeResponse);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.sendCustomChallengeAnswer(\n\t\t\t\tchallengeResponses,\n\t\t\t\tthis.authCallbacks(user, resolve, reject),\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Delete an authenticated users' attributes\n\t * @param {CognitoUser} - The currently logged in user object\n\t * @return {Promise}\n\t **/\n\tpublic deleteUserAttributes(\n\t\tuser: CognitoUser | any,\n\t\tattributeNames: string[]\n\t) {\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthat.userSession(user).then(session => {\n\t\t\t\tuser.deleteAttributes(attributeNames, (err, result) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn resolve(result);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Delete the current authenticated user\n\t * @return {Promise}\n\t **/\n\t// TODO: Check return type void\n\tpublic async deleteUser(): Promise {\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow new Error(e);\n\t\t}\n\n\t\tconst isSignedInHostedUI =\n\t\t\tthis._oAuthHandler &&\n\t\t\tthis._storage.getItem('amplify-signin-with-hostedUI') === 'true';\n\n\t\treturn new Promise(async (res, rej) => {\n\t\t\tif (this.userPool) {\n\t\t\t\tconst user = this.userPool.getCurrentUser();\n\n\t\t\t\tif (!user) {\n\t\t\t\t\tlogger.debug('Failed to get user from user pool');\n\t\t\t\t\treturn rej(new Error('No current user.'));\n\t\t\t\t} else {\n\t\t\t\t\tuser.getSession(async (err, session) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tlogger.debug('Failed to get the user session', err);\n\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuser.deleteUser((err, result: string) => {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\trej(err);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t\t\t'userDeleted',\n\t\t\t\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\t\t\t\t'The authenticated user has been deleted.'\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tuser.signOut();\n\t\t\t\t\t\t\t\t\tthis.user = null;\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tthis.cleanCachedItems(); // clean aws credentials\n\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t// TODO: change to rejects in refactor\n\t\t\t\t\t\t\t\t\t\tlogger.debug('failed to clear cached items');\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (isSignedInHostedUI) {\n\t\t\t\t\t\t\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t\t\t\t'signOut',\n\t\t\t\t\t\t\t\t\t\t\tthis.user,\n\t\t\t\t\t\t\t\t\t\t\t`A user has been signed out`\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tres(result);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlogger.debug('no Congito User pool');\n\t\t\t\trej(new Error('Cognito User pool does not exist'));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Update an authenticated users' attributes\n\t * @param {CognitoUser} - The currently logged in user object\n\t * @return {Promise}\n\t **/\n\tpublic updateUserAttributes(\n\t\tuser: CognitoUser | any,\n\t\tattributes: object,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tconst attributeList: ICognitoUserAttributeData[] = [];\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthat.userSession(user).then(session => {\n\t\t\t\tfor (const key in attributes) {\n\t\t\t\t\tif (key !== 'sub' && key.indexOf('_verified') < 0) {\n\t\t\t\t\t\tconst attr: ICognitoUserAttributeData = {\n\t\t\t\t\t\t\tName: key,\n\t\t\t\t\t\t\tValue: attributes[key],\n\t\t\t\t\t\t};\n\t\t\t\t\t\tattributeList.push(attr);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuser.updateAttributes(\n\t\t\t\t\tattributeList,\n\t\t\t\t\t(err, result, details) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'updateUserAttributes_failure',\n\t\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t\t'Failed to update attributes'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst attrs = this.createUpdateAttributesResultList(\n\t\t\t\t\t\t\t\tattributes as Record,\n\t\t\t\t\t\t\t\tdetails?.CodeDeliveryDetailsList\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'updateUserAttributes',\n\t\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t\t\t'Attributes successfully updated'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn resolve(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tclientMetadata\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate createUpdateAttributesResultList(\n\t\tattributes: Record,\n\t\tcodeDeliveryDetailsList?: CodeDeliveryDetails[]\n\t): Record {\n\t\tconst attrs = {};\n\t\tObject.keys(attributes).forEach(key => {\n\t\t\tattrs[key] = {\n\t\t\t\tisUpdated: true,\n\t\t\t};\n\t\t\tconst codeDeliveryDetails = codeDeliveryDetailsList?.find(\n\t\t\t\tvalue => value.AttributeName === key\n\t\t\t);\n\t\t\tif (codeDeliveryDetails) {\n\t\t\t\tattrs[key].isUpdated = false;\n\t\t\t\tattrs[key].codeDeliveryDetails = codeDeliveryDetails;\n\t\t\t}\n\t\t});\n\t\treturn attrs;\n\t}\n\n\t/**\n\t * Return user attributes\n\t * @param {Object} user - The CognitoUser object\n\t * @return - A promise resolves to user attributes if success\n\t */\n\tpublic userAttributes(\n\t\tuser: CognitoUser | any\n\t): Promise {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.userSession(user).then(session => {\n\t\t\t\tuser.getUserAttributes((err, attributes) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(attributes);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic verifiedContact(user: CognitoUser | any) {\n\t\tconst that = this;\n\t\treturn this.userAttributes(user).then(attributes => {\n\t\t\tconst attrs = that.attributesToObject(attributes);\n\t\t\tconst unverified = {};\n\t\t\tconst verified = {};\n\t\t\tif (attrs['email']) {\n\t\t\t\tif (attrs['email_verified']) {\n\t\t\t\t\tverified['email'] = attrs['email'];\n\t\t\t\t} else {\n\t\t\t\t\tunverified['email'] = attrs['email'];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (attrs['phone_number']) {\n\t\t\t\tif (attrs['phone_number_verified']) {\n\t\t\t\t\tverified['phone_number'] = attrs['phone_number'];\n\t\t\t\t} else {\n\t\t\t\t\tunverified['phone_number'] = attrs['phone_number'];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tverified,\n\t\t\t\tunverified,\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate isErrorWithMessage(err: any): err is { message: string } {\n\t\treturn (\n\t\t\ttypeof err === 'object' &&\n\t\t\tObject.prototype.hasOwnProperty.call(err, 'message')\n\t\t);\n\t}\n\n\t// Session revoked by another app\n\tprivate isTokenRevokedError(\n\t\terr: any\n\t): err is { message: 'Access Token has been revoked' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) &&\n\t\t\terr.message === 'Access Token has been revoked'\n\t\t);\n\t}\n\n\tprivate isRefreshTokenRevokedError(\n\t\terr: any\n\t): err is { message: 'Refresh Token has been revoked' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) &&\n\t\t\terr.message === 'Refresh Token has been revoked'\n\t\t);\n\t}\n\n\tprivate isUserDisabledError(\n\t\terr: any\n\t): err is { message: 'User is disabled.' } {\n\t\treturn this.isErrorWithMessage(err) && err.message === 'User is disabled.';\n\t}\n\n\tprivate isUserDoesNotExistError(\n\t\terr: any\n\t): err is { message: 'User does not exist.' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) && err.message === 'User does not exist.'\n\t\t);\n\t}\n\n\tprivate isRefreshTokenExpiredError(\n\t\terr: any\n\t): err is { message: 'Refresh Token has expired' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) &&\n\t\t\terr.message === 'Refresh Token has expired'\n\t\t);\n\t}\n\n\tprivate isPasswordResetRequiredError(\n\t\terr: any\n\t): err is { message: 'Password reset required for the user' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) &&\n\t\t\terr.message === 'Password reset required for the user'\n\t\t);\n\t}\n\n\tprivate isSignedInHostedUI() {\n\t\treturn (\n\t\t\tthis._oAuthHandler &&\n\t\t\tthis._storage.getItem('amplify-signin-with-hostedUI') === 'true'\n\t\t);\n\t}\n\n\tprivate isSessionInvalid(err: any) {\n\t\treturn (\n\t\t\tthis.isUserDisabledError(err) ||\n\t\t\tthis.isUserDoesNotExistError(err) ||\n\t\t\tthis.isTokenRevokedError(err) ||\n\t\t\tthis.isRefreshTokenRevokedError(err) ||\n\t\t\tthis.isRefreshTokenExpiredError(err) ||\n\t\t\tthis.isPasswordResetRequiredError(err)\n\t\t);\n\t}\n\n\tprivate async cleanUpInvalidSession(user: CognitoUser) {\n\t\tuser.signOut();\n\t\tthis.user = null;\n\t\ttry {\n\t\t\tawait this.cleanCachedItems(); // clean aws credentials\n\t\t} catch (e) {\n\t\t\tlogger.debug('failed to clear cached items');\n\t\t}\n\t\tif (this.isSignedInHostedUI()) {\n\t\t\treturn new Promise((res, rej) => {\n\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t});\n\t\t} else {\n\t\t\tdispatchAuthEvent('signOut', this.user, `A user has been signed out`);\n\t\t}\n\t}\n\n\t/**\n\t * Get current authenticated user\n\t * @return - A promise resolves to current authenticated CognitoUser if success\n\t */\n\tpublic currentUserPoolUser(\n\t\tparams?: CurrentUserOpts\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tthis._storageSync\n\t\t\t\t.then(async () => {\n\t\t\t\t\tif (this.isOAuthInProgress()) {\n\t\t\t\t\t\tlogger.debug('OAuth signIn in progress, waiting for resolution...');\n\n\t\t\t\t\t\tawait new Promise(res => {\n\t\t\t\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\t\t\t\tlogger.debug('OAuth signIn in progress timeout');\n\n\t\t\t\t\t\t\t\tHub.remove('auth', hostedUISignCallback);\n\n\t\t\t\t\t\t\t\tres();\n\t\t\t\t\t\t\t}, OAUTH_FLOW_MS_TIMEOUT);\n\n\t\t\t\t\t\t\tHub.listen('auth', hostedUISignCallback);\n\n\t\t\t\t\t\t\tfunction hostedUISignCallback({ payload }) {\n\t\t\t\t\t\t\t\tconst { event } = payload;\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tevent === 'cognitoHostedUI' ||\n\t\t\t\t\t\t\t\t\tevent === 'cognitoHostedUI_failure'\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tlogger.debug(`OAuth signIn resolved: ${event}`);\n\t\t\t\t\t\t\t\t\tclearTimeout(timeoutId);\n\n\t\t\t\t\t\t\t\t\tHub.remove('auth', hostedUISignCallback);\n\n\t\t\t\t\t\t\t\t\tres();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst user = this.userPool.getCurrentUser();\n\n\t\t\t\t\tif (!user) {\n\t\t\t\t\t\tlogger.debug('Failed to get user from user pool');\n\t\t\t\t\t\trej('No current user');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// refresh the session if the session expired.\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst session = await this._userSession(user);\n\n\t\t\t\t\t\t// get user data from Cognito\n\t\t\t\t\t\tconst bypassCache = params ? params.bypassCache : false;\n\n\t\t\t\t\t\tif (bypassCache) {\n\t\t\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst clientMetadata = this._config.clientMetadata;\n\n\t\t\t\t\t\t// validate the token's scope first before calling this function\n\t\t\t\t\t\tconst { scope = '' } = session.getAccessToken().decodePayload();\n\t\t\t\t\t\tif (scope.split(' ').includes(USER_ADMIN_SCOPE)) {\n\t\t\t\t\t\t\tuser.getUserData(\n\t\t\t\t\t\t\t\tasync (err, data) => {\n\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tlogger.debug('getting user data failed', err);\n\t\t\t\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\trej(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tres(user);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst preferredMFA = data.PreferredMfaSetting || 'NOMFA';\n\t\t\t\t\t\t\t\t\tconst attributeList = [];\n\n\t\t\t\t\t\t\t\t\tfor (let i = 0; i < data.UserAttributes.length; i++) {\n\t\t\t\t\t\t\t\t\t\tconst attribute = {\n\t\t\t\t\t\t\t\t\t\t\tName: data.UserAttributes[i].Name,\n\t\t\t\t\t\t\t\t\t\t\tValue: data.UserAttributes[i].Value,\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tconst userAttribute = new CognitoUserAttribute(attribute);\n\t\t\t\t\t\t\t\t\t\tattributeList.push(userAttribute);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst attributes = this.attributesToObject(attributeList);\n\t\t\t\t\t\t\t\t\tObject.assign(user, { attributes, preferredMFA });\n\t\t\t\t\t\t\t\t\treturn res(user);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ bypassCache, clientMetadata }\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t\t\t`Unable to get the user data because the ${USER_ADMIN_SCOPE} ` +\n\t\t\t\t\t\t\t\t\t`is not in the scopes of the access token`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn res(user);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\t\t\treturn rej(e);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tprivate isOAuthInProgress(): boolean {\n\t\treturn this.oAuthFlowInProgress;\n\t}\n\n\t/**\n\t * Get current authenticated user\n\t * @param {CurrentUserOpts} - options for getting the current user\n\t * @return - A promise resolves to current authenticated CognitoUser if success\n\t */\n\tpublic async currentAuthenticatedUser(\n\t\tparams?: CurrentUserOpts\n\t): Promise {\n\t\tlogger.debug('getting current authenticated user');\n\t\tlet federatedUser = null;\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow e;\n\t\t}\n\n\t\ttry {\n\t\t\tconst federatedInfo = JSON.parse(\n\t\t\t\tthis._storage.getItem('aws-amplify-federatedInfo')\n\t\t\t);\n\t\t\tif (federatedInfo) {\n\t\t\t\tfederatedUser = {\n\t\t\t\t\t...federatedInfo.user,\n\t\t\t\t\ttoken: federatedInfo.token,\n\t\t\t\t};\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tlogger.debug('cannot load federated user from auth storage');\n\t\t}\n\n\t\tif (federatedUser) {\n\t\t\tthis.user = federatedUser;\n\t\t\tlogger.debug('get current authenticated federated user', this.user);\n\t\t\treturn this.user;\n\t\t} else {\n\t\t\tlogger.debug('get current authenticated userpool user');\n\t\t\tlet user = null;\n\t\t\ttry {\n\t\t\t\tuser = await this.currentUserPoolUser(params);\n\t\t\t} catch (e) {\n\t\t\t\tif (e === 'No userPool') {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t'Cannot get the current user because the user pool is missing. ' +\n\t\t\t\t\t\t\t'Please make sure the Auth module is configured with a valid Cognito User Pool ID'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tlogger.debug('The user is not authenticated by the error', e);\n\t\t\t\treturn Promise.reject('The user is not authenticated');\n\t\t\t}\n\t\t\tthis.user = user;\n\t\t\treturn this.user;\n\t\t}\n\t}\n\n\t/**\n\t * Get current user's session\n\t * @return - A promise resolves to session object if success\n\t */\n\tpublic currentSession(): Promise {\n\t\tconst that = this;\n\t\tlogger.debug('Getting current session');\n\t\t// Purposely not calling the reject method here because we don't need a console error\n\t\tif (!this.userPool) {\n\t\t\treturn Promise.reject(new Error('No User Pool in the configuration.'));\n\t\t}\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tthat\n\t\t\t\t.currentUserPoolUser()\n\t\t\t\t.then(user => {\n\t\t\t\t\tthat\n\t\t\t\t\t\t.userSession(user)\n\t\t\t\t\t\t.then(session => {\n\t\t\t\t\t\t\tres(session);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(e => {\n\t\t\t\t\t\t\tlogger.debug('Failed to get the current session', e);\n\t\t\t\t\t\t\trej(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tlogger.debug('Failed to get the current user', e);\n\t\t\t\t\trej(e);\n\t\t\t\t\treturn;\n\t\t\t\t});\n\t\t});\n\t}\n\n\tprivate async _userSession(user?: CognitoUser): Promise {\n\t\tif (!user) {\n\t\t\tlogger.debug('the user is null');\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.NoUserSession);\n\t\t}\n\t\tconst clientMetadata = this._config.clientMetadata;\n\t\t// Debouncing the concurrent userSession calls by caching the promise.\n\t\t// This solution assumes users will always call this function with the same CognitoUser instance.\n\t\tif (this.inflightSessionPromiseCounter === 0) {\n\t\t\tthis.inflightSessionPromise = new Promise(\n\t\t\t\t(res, rej) => {\n\t\t\t\t\tuser.getSession(\n\t\t\t\t\t\tasync (err, session) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tlogger.debug('Failed to get the session from user', user);\n\t\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trej(err);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlogger.debug('Succeed to get the user session', session);\n\t\t\t\t\t\t\t\tres(session);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ clientMetadata }\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tthis.inflightSessionPromiseCounter++;\n\n\t\ttry {\n\t\t\tconst userSession = await this.inflightSessionPromise;\n\t\t\t// Set private member. Avoid user.setSignInUserSession() to prevent excessive localstorage refresh.\n\t\t\t// @ts-ignore\n\t\t\tuser.signInUserSession = userSession;\n\t\t\treturn userSession!;\n\t\t} finally {\n\t\t\tthis.inflightSessionPromiseCounter--;\n\t\t}\n\t}\n\n\t/**\n\t * Get the corresponding user session\n\t * @param {Object} user - The CognitoUser object\n\t * @return - A promise resolves to the session\n\t */\n\tpublic userSession(user): Promise {\n\t\treturn this._userSession(user);\n\t}\n\n\t/**\n\t * Get authenticated credentials of current user.\n\t * @return - A promise resolves to be current user's credentials\n\t */\n\tpublic async currentUserCredentials(): Promise {\n\t\tlogger.debug('Getting current user credentials');\n\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow e;\n\t\t}\n\n\t\t// first to check whether there is federation info in the auth storage\n\t\tlet federatedInfo = null;\n\t\ttry {\n\t\t\tfederatedInfo = JSON.parse(\n\t\t\t\tthis._storage.getItem('aws-amplify-federatedInfo')\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tlogger.debug('failed to get or parse item aws-amplify-federatedInfo', e);\n\t\t}\n\n\t\tif (federatedInfo) {\n\t\t\t// refresh the jwt token here if necessary\n\t\t\treturn this.Credentials.refreshFederatedToken(federatedInfo);\n\t\t} else {\n\t\t\treturn this.currentSession()\n\t\t\t\t.then(session => {\n\t\t\t\t\tlogger.debug('getting session success', session);\n\t\t\t\t\treturn this.Credentials.set(session, 'session');\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tlogger.debug('getting guest credentials');\n\t\t\t\t\treturn this.Credentials.set(null, 'guest');\n\t\t\t\t});\n\t\t}\n\t}\n\n\tpublic currentCredentials(): Promise {\n\t\tlogger.debug('getting current credentials');\n\t\treturn this.Credentials.get();\n\t}\n\n\t/**\n\t * Initiate an attribute confirmation request\n\t * @param {Object} user - The CognitoUser\n\t * @param {Object} attr - The attributes to be verified\n\t * @return - A promise resolves to callback data if success\n\t */\n\tpublic verifyUserAttribute(\n\t\tuser: CognitoUser | any,\n\t\tattr: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.getAttributeVerificationCode(\n\t\t\t\tattr,\n\t\t\t\t{\n\t\t\t\t\tonSuccess(success) {\n\t\t\t\t\t\treturn resolve(success);\n\t\t\t\t\t},\n\t\t\t\t\tonFailure(err) {\n\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Confirm an attribute using a confirmation code\n\t * @param {Object} user - The CognitoUser\n\t * @param {Object} attr - The attribute to be verified\n\t * @param {String} code - The confirmation code\n\t * @return - A promise resolves to callback data if success\n\t */\n\tpublic verifyUserAttributeSubmit(\n\t\tuser: CognitoUser | any,\n\t\tattr: string,\n\t\tcode: string\n\t): Promise {\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.verifyAttribute(attr, code, {\n\t\t\t\tonSuccess(data) {\n\t\t\t\t\tresolve(data);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t\tonFailure(err) {\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic verifyCurrentUserAttribute(attr: string): Promise {\n\t\tconst that = this;\n\t\treturn that\n\t\t\t.currentUserPoolUser()\n\t\t\t.then(user => that.verifyUserAttribute(user, attr));\n\t}\n\n\t/**\n\t * Confirm current user's attribute using a confirmation code\n\t * @param {Object} attr - The attribute to be verified\n\t * @param {String} code - The confirmation code\n\t * @return - A promise resolves to callback data if success\n\t */\n\tverifyCurrentUserAttributeSubmit(\n\t\tattr: string,\n\t\tcode: string\n\t): Promise {\n\t\tconst that = this;\n\t\treturn that\n\t\t\t.currentUserPoolUser()\n\t\t\t.then(user => that.verifyUserAttributeSubmit(user, attr, code));\n\t}\n\n\tprivate async cognitoIdentitySignOut(\n\t\topts: SignOutOpts,\n\t\tuser: CognitoUser | any\n\t) {\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow e;\n\t\t}\n\n\t\tconst isSignedInHostedUI =\n\t\t\tthis._oAuthHandler &&\n\t\t\tthis._storage.getItem('amplify-signin-with-hostedUI') === 'true';\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tif (opts && opts.global) {\n\t\t\t\tlogger.debug('user global sign out', user);\n\t\t\t\t// in order to use global signout\n\t\t\t\t// we must validate the user as an authenticated user by using getSession\n\t\t\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\t\t\tuser.getSession(\n\t\t\t\t\tasync (err, result) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tlogger.debug('failed to get the user session', err);\n\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tuser.globalSignOut({\n\t\t\t\t\t\t\tonSuccess: data => {\n\t\t\t\t\t\t\t\tlogger.debug('global sign out success');\n\t\t\t\t\t\t\t\tif (isSignedInHostedUI) {\n\t\t\t\t\t\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn res();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\t\t\tlogger.debug('global sign out failed', err);\n\t\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t{ clientMetadata }\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tlogger.debug('user sign out', user);\n\t\t\t\tuser.signOut(() => {\n\t\t\t\t\tif (isSignedInHostedUI) {\n\t\t\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn res();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate oAuthSignOutRedirect(\n\t\tresolve: () => void,\n\t\treject: (reason?: any) => void\n\t) {\n\t\tconst { isBrowser } = browserOrNode();\n\n\t\tif (isBrowser) {\n\t\t\tthis.oAuthSignOutRedirectOrReject(reject);\n\t\t} else {\n\t\t\tthis.oAuthSignOutAndResolve(resolve);\n\t\t}\n\t}\n\n\tprivate oAuthSignOutAndResolve(resolve: () => void) {\n\t\tthis._oAuthHandler.signOut();\n\t\tresolve();\n\t}\n\n\tprivate oAuthSignOutRedirectOrReject(reject: (reason?: any) => void) {\n\t\tthis._oAuthHandler.signOut(); // this method redirects url\n\n\t\t// App should be redirected to another url otherwise it will reject\n\t\tsetTimeout(() => reject(Error('Signout timeout fail')), 3000);\n\t}\n\n\t/**\n\t * Sign out method\n\t * @\n\t * @return - A promise resolved if success\n\t */\n\tpublic async signOut(opts: SignOutOpts = {}): Promise {\n\t\ttry {\n\t\t\tawait this.cleanCachedItems();\n\t\t} catch (e) {\n\t\t\tlogger.debug('failed to clear cached items');\n\t\t}\n\n\t\tif (this.userPool) {\n\t\t\ttry {\n\t\t\t\tawait this._storageSync;\n\t\t\t} catch (e) {\n\t\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t\tconst user = this.userPool.getCurrentUser();\n\t\t\tif (user) {\n\t\t\t\tawait this.cognitoIdentitySignOut(opts, user);\n\t\t\t} else {\n\t\t\t\tlogger.debug('no current Cognito user');\n\t\t\t}\n\t\t} else {\n\t\t\tlogger.debug('no Cognito User pool');\n\t\t}\n\n\t\t/**\n\t\t * Note for future refactor - no reliable way to get username with\n\t\t * Cognito User Pools vs Identity when federating with Social Providers\n\t\t * This is why we need a well structured session object that can be inspected\n\t\t * and information passed back in the message below for Hub dispatch\n\t\t */\n\t\tdispatchAuthEvent('signOut', this.user, `A user has been signed out`);\n\t\tthis.user = null;\n\t}\n\n\tprivate async cleanCachedItems() {\n\t\t// clear cognito cached item\n\t\tawait this.Credentials.clear();\n\t}\n\n\t/**\n\t * Change a password for an authenticated user\n\t * @param {Object} user - The CognitoUser object\n\t * @param {String} oldPassword - the current password\n\t * @param {String} newPassword - the requested new password\n\t * @return - A promise resolves if success\n\t */\n\tpublic changePassword(\n\t\tuser: CognitoUser | any,\n\t\toldPassword: string,\n\t\tnewPassword: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<'SUCCESS'> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.userSession(user).then(session => {\n\t\t\t\tuser.changePassword(\n\t\t\t\t\toldPassword,\n\t\t\t\t\tnewPassword,\n\t\t\t\t\t(err, data) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tlogger.debug('change password failure', err);\n\t\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn resolve(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tclientMetadata\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Initiate a forgot password request\n\t * @param {String} username - the username to change password\n\t * @return - A promise resolves if success\n\t */\n\tpublic forgotPassword(\n\t\tusername: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.forgotPassword(\n\t\t\t\t{\n\t\t\t\t\tonSuccess: () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tlogger.debug('forgot password failure', err);\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPassword_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${username} forgotPassword failed`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tinputVerificationCode: data => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPassword',\n\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t`${username} has initiated forgot password flow`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Confirm a new password using a confirmation Code\n\t * @param {String} username - The username\n\t * @param {String} code - The confirmation code\n\t * @param {String} password - The new password\n\t * @return - A promise that resolves if success\n\t */\n\tpublic forgotPasswordSubmit(\n\t\tusername: string,\n\t\tcode: string,\n\t\tpassword: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\t\tif (!password) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.confirmPassword(\n\t\t\t\tcode,\n\t\t\t\tpassword,\n\t\t\t\t{\n\t\t\t\t\tonSuccess: success => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPasswordSubmit',\n\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t`${username} forgotPasswordSubmit successful`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(success);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPasswordSubmit_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${username} forgotPasswordSubmit failed`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Get user information\n\t * @async\n\t * @return {Object }- current User's information\n\t */\n\tpublic async currentUserInfo() {\n\t\tconst source = this.Credentials.getCredSource();\n\n\t\tif (!source || source === 'aws' || source === 'userPool') {\n\t\t\tconst user = await this.currentUserPoolUser().catch(err =>\n\t\t\t\tlogger.error(err)\n\t\t\t);\n\t\t\tif (!user) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst attributes = await this.userAttributes(user);\n\t\t\t\tconst userAttrs: object = this.attributesToObject(attributes);\n\t\t\t\tlet credentials = null;\n\t\t\t\ttry {\n\t\t\t\t\tcredentials = await this.currentCredentials();\n\t\t\t\t} catch (e) {\n\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t'Failed to retrieve credentials while getting current user info',\n\t\t\t\t\t\te\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst info = {\n\t\t\t\t\tid: credentials ? credentials.identityId : undefined,\n\t\t\t\t\tusername: user.getUsername(),\n\t\t\t\t\tattributes: userAttrs,\n\t\t\t\t};\n\t\t\t\treturn info;\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error('currentUserInfo error', err);\n\t\t\t\treturn {};\n\t\t\t}\n\t\t}\n\n\t\tif (source === 'federated') {\n\t\t\tconst user = this.user;\n\t\t\treturn user ? user : {};\n\t\t}\n\t}\n\n\tpublic async federatedSignIn(\n\t\toptions?: FederatedSignInOptions\n\t): Promise;\n\tpublic async federatedSignIn(\n\t\tprovider: LegacyProvider,\n\t\tresponse: FederatedResponse,\n\t\tuser: FederatedUser\n\t): Promise;\n\tpublic async federatedSignIn(\n\t\toptions?: FederatedSignInOptionsCustom\n\t): Promise;\n\tpublic async federatedSignIn(\n\t\tproviderOrOptions:\n\t\t\t| LegacyProvider\n\t\t\t| FederatedSignInOptions\n\t\t\t| FederatedSignInOptionsCustom,\n\t\tresponse?: FederatedResponse,\n\t\tuser?: FederatedUser\n\t): Promise {\n\t\tif (!this._config.identityPoolId && !this._config.userPoolId) {\n\t\t\tthrow new Error(\n\t\t\t\t`Federation requires either a User Pool or Identity Pool in config`\n\t\t\t);\n\t\t}\n\n\t\t// Ensure backwards compatability\n\t\tif (typeof providerOrOptions === 'undefined') {\n\t\t\tif (this._config.identityPoolId && !this._config.userPoolId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Federation with Identity Pools requires tokens passed as arguments`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tisFederatedSignInOptions(providerOrOptions) ||\n\t\t\tisFederatedSignInOptionsCustom(providerOrOptions) ||\n\t\t\thasCustomState(providerOrOptions) ||\n\t\t\ttypeof providerOrOptions === 'undefined'\n\t\t) {\n\t\t\tconst options = providerOrOptions || {\n\t\t\t\tprovider: CognitoHostedUIIdentityProvider.Cognito,\n\t\t\t};\n\t\t\tconst provider = isFederatedSignInOptions(options)\n\t\t\t\t? options.provider\n\t\t\t\t: (options as FederatedSignInOptionsCustom).customProvider;\n\n\t\t\tconst customState = isFederatedSignInOptions(options)\n\t\t\t\t? options.customState\n\t\t\t\t: (options as FederatedSignInOptionsCustom).customState;\n\n\t\t\tif (this._config.userPoolId) {\n\t\t\t\tconst client_id = isCognitoHostedOpts(this._config.oauth)\n\t\t\t\t\t? this._config.userPoolWebClientId\n\t\t\t\t\t: this._config.oauth.clientID;\n\t\t\t\t/*Note: Invenstigate automatically adding trailing slash */\n\t\t\t\tconst redirect_uri = isCognitoHostedOpts(this._config.oauth)\n\t\t\t\t\t? this._config.oauth.redirectSignIn\n\t\t\t\t\t: this._config.oauth.redirectUri;\n\n\t\t\t\tthis._oAuthHandler.oauthSignIn(\n\t\t\t\t\tthis._config.oauth.responseType,\n\t\t\t\t\tthis._config.oauth.domain,\n\t\t\t\t\tredirect_uri,\n\t\t\t\t\tclient_id,\n\t\t\t\t\tprovider,\n\t\t\t\t\tcustomState\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tconst provider = providerOrOptions;\n\t\t\t// To check if the user is already logged in\n\t\t\ttry {\n\t\t\t\tconst loggedInUser = JSON.stringify(\n\t\t\t\t\tJSON.parse(this._storage.getItem('aws-amplify-federatedInfo')).user\n\t\t\t\t);\n\t\t\t\tif (loggedInUser) {\n\t\t\t\t\tlogger.warn(`There is already a signed in user: ${loggedInUser} in your app.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tYou should not call Auth.federatedSignIn method again as it may cause unexpected behavior.`);\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tconst { token, identity_id, expires_at } = response;\n\t\t\t// Because this.Credentials.set would update the user info with identity id\n\t\t\t// So we need to retrieve the user again.\n\t\t\tconst credentials = await this.Credentials.set(\n\t\t\t\t{ provider, token, identity_id, user, expires_at },\n\t\t\t\t'federation'\n\t\t\t);\n\t\t\tconst currentUser = await this.currentAuthenticatedUser();\n\t\t\tdispatchAuthEvent(\n\t\t\t\t'signIn',\n\t\t\t\tcurrentUser,\n\t\t\t\t`A user ${currentUser.username} has been signed in`\n\t\t\t);\n\t\t\tlogger.debug('federated sign in credentials', credentials);\n\t\t\treturn credentials;\n\t\t}\n\t}\n\n\t/**\n\t * Used to complete the OAuth flow with or without the Cognito Hosted UI\n\t * @param {String} URL - optional parameter for customers to pass in the response URL\n\t */\n\tprivate async _handleAuthResponse(URL?: string) {\n\t\tif (this.oAuthFlowInProgress) {\n\t\t\tlogger.debug(`Skipping URL ${URL} current flow in progress`);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tthis.oAuthFlowInProgress = true;\n\t\t\tif (!this._config.userPoolId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`OAuth responses require a User Pool defined in config`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tdispatchAuthEvent(\n\t\t\t\t'parsingCallbackUrl',\n\t\t\t\t{ url: URL },\n\t\t\t\t`The callback url is being parsed`\n\t\t\t);\n\n\t\t\tconst currentUrl =\n\t\t\t\tURL || (browserOrNode().isBrowser ? window.location.href : '');\n\n\t\t\tconst hasCodeOrError = !!(parse(currentUrl).query || '')\n\t\t\t\t.split('&')\n\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t.find(([k]) => k === 'code' || k === 'error');\n\n\t\t\tconst hasTokenOrError = !!(parse(currentUrl).hash || '#')\n\t\t\t\t.substr(1)\n\t\t\t\t.split('&')\n\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t.find(([k]) => k === 'access_token' || k === 'error');\n\n\t\t\tif (hasCodeOrError || hasTokenOrError) {\n\t\t\t\tthis._storage.setItem('amplify-redirected-from-hosted-ui', 'true');\n\t\t\t\ttry {\n\t\t\t\t\tconst { accessToken, idToken, refreshToken, state } =\n\t\t\t\t\t\tawait this._oAuthHandler.handleAuthResponse(currentUrl);\n\t\t\t\t\tconst session = new CognitoUserSession({\n\t\t\t\t\t\tIdToken: new CognitoIdToken({ IdToken: idToken }),\n\t\t\t\t\t\tRefreshToken: new CognitoRefreshToken({\n\t\t\t\t\t\t\tRefreshToken: refreshToken,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tAccessToken: new CognitoAccessToken({\n\t\t\t\t\t\t\tAccessToken: accessToken,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tlet credentials;\n\t\t\t\t\t// Get AWS Credentials & store if Identity Pool is defined\n\t\t\t\t\tif (this._config.identityPoolId) {\n\t\t\t\t\t\tcredentials = await this.Credentials.set(session, 'session');\n\t\t\t\t\t\tlogger.debug('AWS credentials', credentials);\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\tPrior to the request we do sign the custom state along with the state we set. This check will verify\n\t\t\t\tif there is a dash indicated when setting custom state from the request. If a dash is contained\n\t\t\t\tthen there is custom state present on the state string.\n\t\t\t\t*/\n\t\t\t\t\tconst isCustomStateIncluded = /-/.test(state);\n\n\t\t\t\t\t/*\n\t\t\t\tThe following is to create a user for the Cognito Identity SDK to store the tokens\n\t\t\t\tWhen we remove this SDK later that logic will have to be centralized in our new version\n\t\t\t\t*/\n\t\t\t\t\t//#region\n\t\t\t\t\tconst currentUser = this.createCognitoUser(\n\t\t\t\t\t\tsession.getIdToken().decodePayload()['cognito:username']\n\t\t\t\t\t);\n\n\t\t\t\t\t// This calls cacheTokens() in Cognito SDK\n\t\t\t\t\tcurrentUser.setSignInUserSession(session);\n\n\t\t\t\t\tif (window && typeof window.history !== 'undefined') {\n\t\t\t\t\t\twindow.history.replaceState(\n\t\t\t\t\t\t\twindow.history.state,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t(this._config.oauth as AwsCognitoOAuthOpts).redirectSignIn\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\tcurrentUser,\n\t\t\t\t\t\t`A user ${currentUser.getUsername()} has been signed in`\n\t\t\t\t\t);\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'cognitoHostedUI',\n\t\t\t\t\t\tcurrentUser,\n\t\t\t\t\t\t`A user ${currentUser.getUsername()} has been signed in via Cognito Hosted UI`\n\t\t\t\t\t);\n\n\t\t\t\t\tif (isCustomStateIncluded) {\n\t\t\t\t\t\tconst customState = state.split('-').splice(1).join('-');\n\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'customOAuthState',\n\t\t\t\t\t\t\turlSafeDecode(customState),\n\t\t\t\t\t\t\t`State for user ${currentUser.getUsername()}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//#endregion\n\n\t\t\t\t\treturn credentials;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tlogger.debug('Error in cognito hosted auth response', err);\n\n\t\t\t\t\t// Just like a successful handling of `?code`, replace the window history to \"dispose\" of the `code`.\n\t\t\t\t\t// Otherwise, reloading the page will throw errors as the `code` has already been spent.\n\t\t\t\t\tif (window && typeof window.history !== 'undefined') {\n\t\t\t\t\t\twindow.history.replaceState(\n\t\t\t\t\t\t\twindow.history.state,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t(this._config.oauth as AwsCognitoOAuthOpts).redirectSignIn\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'signIn_failure',\n\t\t\t\t\t\terr,\n\t\t\t\t\t\t`The OAuth response flow failed`\n\t\t\t\t\t);\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'cognitoHostedUI_failure',\n\t\t\t\t\t\terr,\n\t\t\t\t\t\t`A failure occurred when returning to the Cognito Hosted UI`\n\t\t\t\t\t);\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'customState_failure',\n\t\t\t\t\t\terr,\n\t\t\t\t\t\t`A failure occurred when returning state`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tthis.oAuthFlowInProgress = false;\n\t\t}\n\t}\n\n\t/**\n\t * Compact version of credentials\n\t * @param {Object} credentials\n\t * @return {Object} - Credentials\n\t */\n\tpublic essentialCredentials(credentials): ICredentials {\n\t\treturn {\n\t\t\taccessKeyId: credentials.accessKeyId,\n\t\t\tsessionToken: credentials.sessionToken,\n\t\t\tsecretAccessKey: credentials.secretAccessKey,\n\t\t\tidentityId: credentials.identityId,\n\t\t\tauthenticated: credentials.authenticated,\n\t\t};\n\t}\n\n\tprivate attributesToObject(attributes) {\n\t\tconst obj = {};\n\t\tif (attributes) {\n\t\t\tattributes.map(attribute => {\n\t\t\t\tif (\n\t\t\t\t\tattribute.Name === 'email_verified' ||\n\t\t\t\t\tattribute.Name === 'phone_number_verified'\n\t\t\t\t) {\n\t\t\t\t\tobj[attribute.Name] =\n\t\t\t\t\t\tthis.isTruthyString(attribute.Value) || attribute.Value === true;\n\t\t\t\t} else {\n\t\t\t\t\tobj[attribute.Name] = attribute.Value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn obj;\n\t}\n\n\tprivate isTruthyString(value: any): boolean {\n\t\treturn (\n\t\t\ttypeof value.toLowerCase === 'function' && value.toLowerCase() === 'true'\n\t\t);\n\t}\n\n\tprivate createCognitoUser(username: string): CognitoUser {\n\t\tconst userData: ICognitoUserData = {\n\t\t\tUsername: username,\n\t\t\tPool: this.userPool,\n\t\t};\n\t\tuserData.Storage = this._storage;\n\n\t\tconst { authenticationFlowType } = this._config;\n\n\t\tconst user = new CognitoUser(userData);\n\t\tif (authenticationFlowType) {\n\t\t\tuser.setAuthenticationFlowType(authenticationFlowType);\n\t\t}\n\t\treturn user;\n\t}\n\n\tprivate _isValidAuthStorage(obj) {\n\t\t// We need to check if the obj has the functions of Storage\n\t\treturn (\n\t\t\t!!obj &&\n\t\t\ttypeof obj.getItem === 'function' &&\n\t\t\ttypeof obj.setItem === 'function' &&\n\t\t\ttypeof obj.removeItem === 'function' &&\n\t\t\ttypeof obj.clear === 'function'\n\t\t);\n\t}\n\n\tprivate noUserPoolErrorHandler(config: AuthOptions): AuthErrorTypes {\n\t\tif (config) {\n\t\t\tif (!config.userPoolId || !config.identityPoolId) {\n\t\t\t\treturn AuthErrorTypes.MissingAuthConfig;\n\t\t\t}\n\t\t}\n\t\treturn AuthErrorTypes.NoConfig;\n\t}\n\n\tprivate rejectAuthError(type: AuthErrorTypes): Promise {\n\t\treturn Promise.reject(new AuthError(type));\n\t}\n\n\tprivate rejectNoUserPool(): Promise {\n\t\tconst type = this.noUserPoolErrorHandler(this._config);\n\t\treturn Promise.reject(new NoUserPoolError(type));\n\t}\n\n\tpublic async rememberDevice(): Promise {\n\t\tlet currUser;\n\n\t\ttry {\n\t\t\tcurrUser = await this.currentUserPoolUser();\n\t\t} catch (error) {\n\t\t\tlogger.debug('The user is not authenticated by the error', error);\n\t\t\treturn Promise.reject('The user is not authenticated');\n\t\t}\n\n\t\tcurrUser.getCachedDeviceKeyAndPassword();\n\t\treturn new Promise((res, rej) => {\n\t\t\tcurrUser.setDeviceStatusRemembered({\n\t\t\t\tonSuccess: data => {\n\t\t\t\t\tres(data);\n\t\t\t\t},\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tif (err.code === 'InvalidParameterException') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.DeviceConfig));\n\t\t\t\t\t} else if (err.code === 'NetworkError') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.NetworkError));\n\t\t\t\t\t} else {\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic async forgetDevice(): Promise {\n\t\tlet currUser;\n\n\t\ttry {\n\t\t\tcurrUser = await this.currentUserPoolUser();\n\t\t} catch (error) {\n\t\t\tlogger.debug('The user is not authenticated by the error', error);\n\t\t\treturn Promise.reject('The user is not authenticated');\n\t\t}\n\n\t\tcurrUser.getCachedDeviceKeyAndPassword();\n\t\treturn new Promise((res, rej) => {\n\t\t\tcurrUser.forgetDevice({\n\t\t\t\tonSuccess: data => {\n\t\t\t\t\tres(data);\n\t\t\t\t},\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tif (err.code === 'InvalidParameterException') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.DeviceConfig));\n\t\t\t\t\t} else if (err.code === 'NetworkError') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.NetworkError));\n\t\t\t\t\t} else {\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic async fetchDevices(): Promise {\n\t\tlet currUser;\n\n\t\ttry {\n\t\t\tcurrUser = await this.currentUserPoolUser();\n\t\t} catch (error) {\n\t\t\tlogger.debug('The user is not authenticated by the error', error);\n\t\t\tthrow new Error('The user is not authenticated');\n\t\t}\n\n\t\tcurrUser.getCachedDeviceKeyAndPassword();\n\t\treturn new Promise((res, rej) => {\n\t\t\tconst cb = {\n\t\t\t\tonSuccess(data) {\n\t\t\t\t\tconst deviceList: IAuthDevice[] = data.Devices.map(device => {\n\t\t\t\t\t\tconst deviceName =\n\t\t\t\t\t\t\tdevice.DeviceAttributes.find(\n\t\t\t\t\t\t\t\t({ Name }) => Name === 'device_name'\n\t\t\t\t\t\t\t) || {};\n\n\t\t\t\t\t\tconst deviceInfo: IAuthDevice = {\n\t\t\t\t\t\t\tid: device.DeviceKey,\n\t\t\t\t\t\t\tname: deviceName.Value,\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn deviceInfo;\n\t\t\t\t\t});\n\t\t\t\t\tres(deviceList);\n\t\t\t\t},\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tif (err.code === 'InvalidParameterException') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.DeviceConfig));\n\t\t\t\t\t} else if (err.code === 'NetworkError') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.NetworkError));\n\t\t\t\t\t} else {\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t\tcurrUser.listDevices(MAX_DEVICES, null, cb);\n\t\t});\n\t}\n}\n\nexport const Auth = new AuthClass(null);\n\nAmplify.register(Auth);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { browserOrNode } from '@aws-amplify/core';\n\nexport default callback => {\n\tif (browserOrNode().isBrowser && window.location) {\n\t\tconst url = window.location.href;\n\n\t\tcallback({ url });\n\t} else if (browserOrNode().isNode) {\n\t\t// continue building on ssr\n\t\t() => {}; // noop\n\t} else {\n\t\tthrow new Error('Not supported');\n\t}\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tICookieStorageData,\n\tICognitoStorage,\n} from 'amazon-cognito-identity-js';\n\n/**\n * Parameters for user sign up\n */\nexport interface SignUpParams {\n\tusername: string;\n\tpassword: string;\n\tattributes?: object;\n\tvalidationData?: { [key: string]: any };\n\tclientMetadata?: { [key: string]: string };\n\tautoSignIn?: AutoSignInOptions;\n}\n\nexport interface AuthCache {\n\tsetItem();\n\tgetItem();\n\tremoveItem();\n}\n\n/**\n * Auth instance options\n */\nexport interface AuthOptions {\n\tuserPoolId?: string;\n\tuserPoolWebClientId?: string;\n\tidentityPoolId?: string;\n\tregion?: string;\n\tmandatorySignIn?: boolean;\n\tcookieStorage?: ICookieStorageData;\n\toauth?: OAuthOpts;\n\trefreshHandlers?: object;\n\tstorage?: ICognitoStorage;\n\tauthenticationFlowType?: string;\n\tidentityPoolRegion?: string;\n\tclientMetadata?: any;\n\tendpoint?: string;\n\tsignUpVerificationMethod?: 'code' | 'link';\n}\n\nexport enum CognitoHostedUIIdentityProvider {\n\tCognito = 'COGNITO',\n\tGoogle = 'Google',\n\tFacebook = 'Facebook',\n\tAmazon = 'LoginWithAmazon',\n\tApple = 'SignInWithApple',\n}\n\nexport type LegacyProvider =\n\t| 'google'\n\t| 'facebook'\n\t| 'amazon'\n\t| 'developer'\n\t| string;\n\nexport type FederatedSignInOptions = {\n\tprovider: CognitoHostedUIIdentityProvider;\n\tcustomState?: string;\n};\n\nexport type FederatedSignInOptionsCustom = {\n\tcustomProvider: string;\n\tcustomState?: string;\n};\n\nexport function isFederatedSignInOptions(\n\tobj: any\n): obj is FederatedSignInOptions {\n\tconst keys: (keyof FederatedSignInOptions)[] = ['provider'];\n\treturn obj && !!keys.find(k => obj.hasOwnProperty(k));\n}\n\nexport function isFederatedSignInOptionsCustom(\n\tobj: any\n): obj is FederatedSignInOptionsCustom {\n\tconst keys: (keyof FederatedSignInOptionsCustom)[] = ['customProvider'];\n\treturn obj && !!keys.find(k => obj.hasOwnProperty(k));\n}\n\nexport function hasCustomState(obj: any): boolean {\n\tconst keys: (keyof (\n\t\t| FederatedSignInOptions\n\t\t| FederatedSignInOptionsCustom\n\t))[] = ['customState'];\n\treturn obj && !!keys.find(k => obj.hasOwnProperty(k));\n}\n\n/**\n * Details for multi-factor authentication\n */\nexport interface MfaRequiredDetails {\n\tchallengeName: any;\n\tchallengeParameters: any;\n}\n\n/**\n * interface for federatedResponse\n */\nexport interface FederatedResponse {\n\t// access token\n\ttoken: string;\n\t// identity id\n\tidentity_id?: string;\n\t// the universal time when token expired\n\texpires_at: number;\n}\n\n/**\n * interface for federatedUser\n */\nexport interface FederatedUser {\n\tname: string;\n\temail?: string;\n\tpicture?: string;\n}\n\nexport interface AwsCognitoOAuthOpts {\n\tdomain: string;\n\tscope: Array;\n\tredirectSignIn: string;\n\tredirectSignOut: string;\n\tresponseType: string;\n\toptions?: object;\n\turlOpener?: (url: string, redirectUrl: string) => Promise;\n}\n\nexport function isCognitoHostedOpts(\n\toauth: OAuthOpts\n): oauth is AwsCognitoOAuthOpts {\n\treturn (oauth).redirectSignIn !== undefined;\n}\n\nexport interface Auth0OAuthOpts {\n\tdomain: string;\n\tclientID: string;\n\tscope: string;\n\tredirectUri: string;\n\taudience: string;\n\tresponseType: string;\n\treturnTo: string;\n\turlOpener?: (url: string, redirectUrl: string) => Promise;\n}\n\n// Replacing to fix typings\n// export interface OAuth {\n// awsCognito?: awsCognitoOAuthOpts,\n// auth0?: any\n// }\n\nexport type OAuthOpts = AwsCognitoOAuthOpts | Auth0OAuthOpts;\n\nexport interface ConfirmSignUpOptions {\n\tforceAliasCreation?: boolean;\n\tclientMetadata?: ClientMetaData;\n}\n\nexport interface SignOutOpts {\n\tglobal?: boolean;\n}\n\nexport interface CurrentUserOpts {\n\tbypassCache: boolean;\n}\n\nexport interface GetPreferredMFAOpts {\n\tbypassCache: boolean;\n}\n\nexport type UsernamePasswordOpts = {\n\tusername: string;\n\tpassword: string;\n\tvalidationData?: { [key: string]: any };\n};\n\nexport enum AuthErrorTypes {\n\tNoConfig = 'noConfig',\n\tMissingAuthConfig = 'missingAuthConfig',\n\tEmptyUsername = 'emptyUsername',\n\tInvalidUsername = 'invalidUsername',\n\tEmptyPassword = 'emptyPassword',\n\tEmptyCode = 'emptyCode',\n\tSignUpError = 'signUpError',\n\tNoMFA = 'noMFA',\n\tInvalidMFA = 'invalidMFA',\n\tEmptyChallengeResponse = 'emptyChallengeResponse',\n\tNoUserSession = 'noUserSession',\n\tDefault = 'default',\n\tDeviceConfig = 'deviceConfig',\n\tNetworkError = 'networkError',\n\tAutoSignInError = 'autoSignInError',\n}\n\nexport type AuthErrorMessages = { [key in AuthErrorTypes]: AuthErrorMessage };\n\nexport interface AuthErrorMessage {\n\tmessage: string;\n\tlog?: string;\n}\n\n// We can extend this in the future if needed\nexport type SignInOpts = UsernamePasswordOpts;\n\nexport type ClientMetaData =\n\t| {\n\t\t\t[key: string]: string;\n\t }\n\t| undefined;\n\nexport function isUsernamePasswordOpts(obj: any): obj is UsernamePasswordOpts {\n\treturn !!(obj as UsernamePasswordOpts).username;\n}\n\nexport interface IAuthDevice {\n\tid: string;\n\tname: string;\n}\n\nexport interface AutoSignInOptions {\n\tenabled: boolean;\n\tclientMetaData?: ClientMetaData;\n\tvalidationData?: { [key: string]: any };\n}\n\nexport enum GRAPHQL_AUTH_MODE {\n\tAPI_KEY = 'API_KEY',\n\tAWS_IAM = 'AWS_IAM',\n\tOPENID_CONNECT = 'OPENID_CONNECT',\n\tAMAZON_COGNITO_USER_POOLS = 'AMAZON_COGNITO_USER_POOLS',\n\tAWS_LAMBDA = 'AWS_LAMBDA',\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger as LoggerClass } from './Logger';\nvar logger = new LoggerClass('Amplify');\nvar AmplifyClass = /** @class */ (function () {\n function AmplifyClass() {\n // Everything that is `register`ed is tracked here\n this._components = [];\n this._config = {};\n // All modules (with `getModuleName()`) are stored here for dependency injection\n this._modules = {};\n // for backward compatibility to avoid breaking change\n // if someone is using like Amplify.Auth\n this.Auth = null;\n this.Analytics = null;\n this.API = null;\n this.Credentials = null;\n this.Storage = null;\n this.I18n = null;\n this.Cache = null;\n this.PubSub = null;\n this.Interactions = null;\n this.Pushnotification = null;\n this.UI = null;\n this.XR = null;\n this.Predictions = null;\n this.DataStore = null;\n this.Geo = null;\n this.Notifications = null;\n this.Logger = LoggerClass;\n this.ServiceWorker = null;\n }\n AmplifyClass.prototype.register = function (comp) {\n logger.debug('component registered in amplify', comp);\n this._components.push(comp);\n if (typeof comp.getModuleName === 'function') {\n this._modules[comp.getModuleName()] = comp;\n this[comp.getModuleName()] = comp;\n }\n else {\n logger.debug('no getModuleName method for component', comp);\n }\n // Finally configure this new component(category) loaded\n // With the new modularization changes in Amplify V3, all the Amplify\n // component are not loaded/registered right away but when they are\n // imported (and hence instantiated) in the client's app. This ensures\n // that all new components imported get correctly configured with the\n // configuration that Amplify.configure() was called with.\n comp.configure(this._config);\n };\n AmplifyClass.prototype.configure = function (config) {\n var _this = this;\n if (!config)\n return this._config;\n this._config = Object.assign(this._config, config);\n logger.debug('amplify config', this._config);\n // Dependency Injection via property-setting.\n // This avoids introducing a public method/interface/setter that's difficult to remove later.\n // Plus, it reduces `if` statements within the `constructor` and `configure` of each module\n Object.entries(this._modules).forEach(function (_a) {\n var _b = __read(_a, 2), Name = _b[0], comp = _b[1];\n // e.g. Auth.*\n Object.keys(comp).forEach(function (property) {\n // e.g. Auth[\"Credentials\"] = this._modules[\"Credentials\"] when set\n if (_this._modules[property]) {\n comp[property] = _this._modules[property];\n }\n });\n });\n this._components.map(function (comp) {\n comp.configure(_this._config);\n });\n return this._config;\n };\n AmplifyClass.prototype.addPluggable = function (pluggable) {\n if (pluggable &&\n pluggable['getCategory'] &&\n typeof pluggable['getCategory'] === 'function') {\n this._components.map(function (comp) {\n if (comp['addPluggable'] &&\n typeof comp['addPluggable'] === 'function') {\n comp.addPluggable(pluggable);\n }\n });\n }\n };\n return AmplifyClass;\n}());\nexport { AmplifyClass };\nexport var Amplify = new AmplifyClass();\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { NonRetryableError } from '../Util';\nvar logger = new Logger('CognitoCredentials');\nvar waitForInit = new Promise(function (res, rej) {\n if (!browserOrNode().isBrowser) {\n logger.debug('not in the browser, directly resolved');\n return res();\n }\n var ga = window['gapi'] && window['gapi'].auth2 ? window['gapi'].auth2 : null;\n if (ga) {\n logger.debug('google api already loaded');\n return res();\n }\n else {\n setTimeout(function () {\n return res();\n }, 2000);\n }\n});\nvar GoogleOAuth = /** @class */ (function () {\n function GoogleOAuth() {\n this.initialized = false;\n this.refreshGoogleToken = this.refreshGoogleToken.bind(this);\n this._refreshGoogleTokenImpl = this._refreshGoogleTokenImpl.bind(this);\n }\n GoogleOAuth.prototype.refreshGoogleToken = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this.initialized) return [3 /*break*/, 2];\n logger.debug('need to wait for the Google SDK loaded');\n return [4 /*yield*/, waitForInit];\n case 1:\n _a.sent();\n this.initialized = true;\n logger.debug('finish waiting');\n _a.label = 2;\n case 2: return [2 /*return*/, this._refreshGoogleTokenImpl()];\n }\n });\n });\n };\n GoogleOAuth.prototype._refreshGoogleTokenImpl = function () {\n var ga = null;\n if (browserOrNode().isBrowser)\n ga = window['gapi'] && window['gapi'].auth2 ? window['gapi'].auth2 : null;\n if (!ga) {\n logger.debug('no gapi auth2 available');\n return Promise.reject('no gapi auth2 available');\n }\n return new Promise(function (res, rej) {\n ga.getAuthInstance()\n .then(function (googleAuth) {\n if (!googleAuth) {\n logger.debug('google Auth undefined');\n rej(new NonRetryableError('google Auth undefined'));\n }\n var googleUser = googleAuth.currentUser.get();\n // refresh the token\n if (googleUser.isSignedIn()) {\n logger.debug('refreshing the google access token');\n googleUser\n .reloadAuthResponse()\n .then(function (authResponse) {\n var id_token = authResponse.id_token, expires_at = authResponse.expires_at;\n res({ token: id_token, expires_at: expires_at });\n })\n .catch(function (err) {\n if (err && err.error === 'network_error') {\n // Not using NonRetryableError so handler will be retried\n rej('Network error reloading google auth response');\n }\n else {\n rej(new NonRetryableError('Failed to reload google auth response'));\n }\n });\n }\n else {\n rej(new NonRetryableError('User is not signed in with Google'));\n }\n })\n .catch(function (err) {\n logger.debug('Failed to refresh google token', err);\n rej(new NonRetryableError('Failed to refresh google token'));\n });\n });\n };\n return GoogleOAuth;\n}());\nexport { GoogleOAuth };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { NonRetryableError } from '../Util';\nvar logger = new Logger('CognitoCredentials');\nvar waitForInit = new Promise(function (res, rej) {\n if (!browserOrNode().isBrowser) {\n logger.debug('not in the browser, directly resolved');\n return res();\n }\n var fb = window['FB'];\n if (fb) {\n logger.debug('FB SDK already loaded');\n return res();\n }\n else {\n setTimeout(function () {\n return res();\n }, 2000);\n }\n});\nvar FacebookOAuth = /** @class */ (function () {\n function FacebookOAuth() {\n this.initialized = false;\n this.refreshFacebookToken = this.refreshFacebookToken.bind(this);\n this._refreshFacebookTokenImpl = this._refreshFacebookTokenImpl.bind(this);\n }\n FacebookOAuth.prototype.refreshFacebookToken = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this.initialized) return [3 /*break*/, 2];\n logger.debug('need to wait for the Facebook SDK loaded');\n return [4 /*yield*/, waitForInit];\n case 1:\n _a.sent();\n this.initialized = true;\n logger.debug('finish waiting');\n _a.label = 2;\n case 2: return [2 /*return*/, this._refreshFacebookTokenImpl()];\n }\n });\n });\n };\n FacebookOAuth.prototype._refreshFacebookTokenImpl = function () {\n var fb = null;\n if (browserOrNode().isBrowser)\n fb = window['FB'];\n if (!fb) {\n var errorMessage = 'no fb sdk available';\n logger.debug(errorMessage);\n return Promise.reject(new NonRetryableError(errorMessage));\n }\n return new Promise(function (res, rej) {\n fb.getLoginStatus(function (fbResponse) {\n if (!fbResponse || !fbResponse.authResponse) {\n var errorMessage = 'no response from facebook when refreshing the jwt token';\n logger.debug(errorMessage);\n // There is no definitive indication for a network error in\n // fbResponse, so we are treating it as an invalid token.\n rej(new NonRetryableError(errorMessage));\n }\n else {\n var response = fbResponse.authResponse;\n var accessToken = response.accessToken, expiresIn = response.expiresIn;\n var date = new Date();\n var expires_at = expiresIn * 1000 + date.getTime();\n if (!accessToken) {\n var errorMessage = 'the jwtToken is undefined';\n logger.debug(errorMessage);\n rej(new NonRetryableError(errorMessage));\n }\n res({\n token: accessToken,\n expires_at: expires_at,\n });\n }\n }, { scope: 'public_profile,email' });\n });\n };\n return FacebookOAuth;\n}());\nexport { FacebookOAuth };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { GoogleOAuth as GoogleOAuthClass } from './GoogleOAuth';\nimport { FacebookOAuth as FacebookOAuthClass } from './FacebookOAuth';\nexport var GoogleOAuth = new GoogleOAuthClass();\nexport var FacebookOAuth = new FacebookOAuthClass();\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { retryMiddleware } from '../middleware/retry';\nimport { userAgentMiddleware } from '../middleware/userAgent';\nimport { composeTransferHandler } from '../internal/composeTransferHandler';\nimport { fetchTransferHandler } from './fetch';\nexport var unauthenticatedHandler = composeTransferHandler(fetchTransferHandler, [userAgentMiddleware, retryMiddleware]);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { getDnsSuffix, unauthenticatedHandler, parseJsonError, } from '../../clients';\nimport { composeTransferHandler } from '../../clients/internal/composeTransferHandler';\nimport { jitteredBackoff, getRetryDecider, } from '../../clients/middleware/retry';\nimport { getAmplifyUserAgent } from '../../Platform';\nimport { observeFrameworkChanges } from '../../Platform/detectFramework';\n/**\n * The service name used to sign requests if the API requires authentication.\n */\nvar SERVICE_NAME = 'cognito-identity';\n/**\n * The endpoint resolver function that returns the endpoint URL for a given region.\n */\nvar endpointResolver = function (_a) {\n var region = _a.region;\n return ({\n url: new URL(\"https://cognito-identity.\".concat(region, \".\").concat(getDnsSuffix(region))),\n });\n};\n/**\n * A Cognito Identity-specific middleware that disables caching for all requests.\n */\nvar disableCacheMiddleware = function () { return function (next, context) {\n return function disableCacheMiddleware(request) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n request.headers['cache-control'] = 'no-store';\n return [2 /*return*/, next(request)];\n });\n });\n };\n}; };\n/**\n * A Cognito Identity-specific transfer handler that does NOT sign requests, and\n * disables caching.\n *\n * @internal\n */\nexport var cognitoIdentityTransferHandler = composeTransferHandler(unauthenticatedHandler, [disableCacheMiddleware]);\n/**\n * @internal\n */\nexport var defaultConfig = {\n service: SERVICE_NAME,\n endpointResolver: endpointResolver,\n retryDecider: getRetryDecider(parseJsonError),\n computeDelay: jitteredBackoff,\n userAgentValue: getAmplifyUserAgent(),\n};\nobserveFrameworkChanges(function () {\n defaultConfig.userAgentValue = getAmplifyUserAgent();\n});\n/**\n * @internal\n */\nexport var getSharedHeaders = function (operation) { return ({\n 'content-type': 'application/x-amz-json-1.1',\n 'x-amz-target': \"AWSCognitoIdentityService.\".concat(operation),\n}); };\n/**\n * @internal\n */\nexport var buildHttpRpcRequest = function (_a, headers, body) {\n var url = _a.url;\n return ({\n headers: headers,\n url: url,\n body: body,\n method: 'POST',\n });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { buildHttpRpcRequest, cognitoIdentityTransferHandler, defaultConfig, getSharedHeaders, } from './base';\nimport { parseJsonBody, parseJsonError, parseMetadata, } from '../../clients';\nimport { composeServiceApi } from '../../clients/internal';\nvar getIdSerializer = function (input, endpoint) {\n var headers = getSharedHeaders('GetId');\n var body = JSON.stringify(input);\n return buildHttpRpcRequest(endpoint, headers, body);\n};\nvar getIdDeserializer = function (response) { return __awaiter(void 0, void 0, void 0, function () {\n var error, body;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(response.statusCode >= 300)) return [3 /*break*/, 2];\n return [4 /*yield*/, parseJsonError(response)];\n case 1:\n error = _a.sent();\n throw error;\n case 2: return [4 /*yield*/, parseJsonBody(response)];\n case 3:\n body = _a.sent();\n return [2 /*return*/, {\n IdentityId: body.IdentityId,\n $metadata: parseMetadata(response),\n }];\n }\n });\n}); };\n/**\n * @internal\n */\nexport var getId = composeServiceApi(cognitoIdentityTransferHandler, getIdSerializer, getIdDeserializer, defaultConfig);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { buildHttpRpcRequest, cognitoIdentityTransferHandler, defaultConfig, getSharedHeaders, } from './base';\nimport { parseJsonBody, parseJsonError, parseMetadata, } from '../../clients';\nimport { composeServiceApi } from '../../clients/internal';\nvar getCredentialsForIdentitySerializer = function (input, endpoint) {\n var headers = getSharedHeaders('GetCredentialsForIdentity');\n var body = JSON.stringify(input);\n return buildHttpRpcRequest(endpoint, headers, body);\n};\nvar getCredentialsForIdentityDeserializer = function (response) { return __awaiter(void 0, void 0, void 0, function () {\n var error, body;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(response.statusCode >= 300)) return [3 /*break*/, 2];\n return [4 /*yield*/, parseJsonError(response)];\n case 1:\n error = _a.sent();\n throw error;\n case 2: return [4 /*yield*/, parseJsonBody(response)];\n case 3:\n body = _a.sent();\n return [2 /*return*/, {\n IdentityId: body.IdentityId,\n Credentials: deserializeCredentials(body.Credentials),\n $metadata: parseMetadata(response),\n }];\n }\n });\n}); };\nvar deserializeCredentials = function (output) {\n if (output === void 0) { output = {}; }\n return ({\n AccessKeyId: output['AccessKeyId'],\n SecretKey: output['SecretKey'],\n SessionToken: output['SessionToken'],\n Expiration: new Date(output['Expiration'] * 1000),\n });\n};\n/**\n * @internal\n */\nexport var getCredentialsForIdentity = composeServiceApi(cognitoIdentityTransferHandler, getCredentialsForIdentitySerializer, getCredentialsForIdentityDeserializer, defaultConfig);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger as Logger } from './Logger';\nimport { StorageHelper } from './StorageHelper';\nimport { makeQuerablePromise } from './JS';\nimport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nimport { jitteredExponentialRetry } from './Util';\nimport { Amplify } from './Amplify';\nimport { getId, getCredentialsForIdentity } from './AwsClients/CognitoIdentity';\nimport { parseAWSExports } from './parseAWSExports';\nimport { Hub } from './Hub';\nvar logger = new Logger('Credentials');\nvar CREDENTIALS_TTL = 50 * 60 * 1000; // 50 min, can be modified on config if required in the future\nvar COGNITO_IDENTITY_KEY_PREFIX = 'CognitoIdentityId-';\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nvar dispatchCredentialsEvent = function (event, data, message) {\n Hub.dispatch('core', { event: event, data: data, message: message }, 'Credentials', AMPLIFY_SYMBOL);\n};\nvar CredentialsClass = /** @class */ (function () {\n function CredentialsClass(config) {\n this._gettingCredPromise = null;\n this._refreshHandlers = {};\n // Allow `Auth` to be injected for SSR, but Auth isn't a required dependency for Credentials\n this.Auth = undefined;\n this.configure(config);\n this._refreshHandlers['google'] = GoogleOAuth.refreshGoogleToken;\n this._refreshHandlers['facebook'] = FacebookOAuth.refreshFacebookToken;\n }\n CredentialsClass.prototype.getModuleName = function () {\n return 'Credentials';\n };\n CredentialsClass.prototype.getCredSource = function () {\n return this._credentials_source;\n };\n CredentialsClass.prototype.configure = function (config) {\n if (!config)\n return this._config || {};\n this._config = Object.assign({}, this._config, config);\n var refreshHandlers = this._config.refreshHandlers;\n // If the developer has provided an object of refresh handlers,\n // then we can merge the provided handlers with the current handlers.\n if (refreshHandlers) {\n this._refreshHandlers = __assign(__assign({}, this._refreshHandlers), refreshHandlers);\n }\n this._storage = this._config.storage;\n if (!this._storage) {\n this._storage = new StorageHelper().getStorage();\n }\n this._storageSync = Promise.resolve();\n if (typeof this._storage['sync'] === 'function') {\n this._storageSync = this._storage['sync']();\n }\n dispatchCredentialsEvent('credentials_configured', null, \"Credentials has been configured successfully\");\n return this._config;\n };\n CredentialsClass.prototype.get = function () {\n logger.debug('getting credentials');\n return this._pickupCredentials();\n };\n // currently we only store the guest identity in local storage\n CredentialsClass.prototype._getCognitoIdentityIdStorageKey = function (identityPoolId) {\n return \"\".concat(COGNITO_IDENTITY_KEY_PREFIX).concat(identityPoolId);\n };\n CredentialsClass.prototype._pickupCredentials = function () {\n logger.debug('picking up credentials');\n if (!this._gettingCredPromise || !this._gettingCredPromise.isPending()) {\n logger.debug('getting new cred promise');\n this._gettingCredPromise = makeQuerablePromise(this._keepAlive());\n }\n else {\n logger.debug('getting old cred promise');\n }\n return this._gettingCredPromise;\n };\n CredentialsClass.prototype._keepAlive = function () {\n return __awaiter(this, void 0, void 0, function () {\n var cred, _a, Auth, user_1, session, refreshToken_1, refreshRequest, err_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug('checking if credentials exists and not expired');\n cred = this._credentials;\n if (cred && !this._isExpired(cred) && !this._isPastTTL()) {\n logger.debug('credentials not changed and not expired, directly return');\n return [2 /*return*/, Promise.resolve(cred)];\n }\n logger.debug('need to get a new credential or refresh the existing one');\n _a = this.Auth, Auth = _a === void 0 ? Amplify.Auth : _a;\n if (!Auth || typeof Auth.currentUserCredentials !== 'function') {\n // If Auth module is not imported, do a best effort to get guest credentials\n return [2 /*return*/, this._setCredentialsForGuest()];\n }\n if (!(!this._isExpired(cred) && this._isPastTTL())) return [3 /*break*/, 6];\n logger.debug('ttl has passed but token is not yet expired');\n _b.label = 1;\n case 1:\n _b.trys.push([1, 5, , 6]);\n return [4 /*yield*/, Auth.currentUserPoolUser()];\n case 2:\n user_1 = _b.sent();\n return [4 /*yield*/, Auth.currentSession()];\n case 3:\n session = _b.sent();\n refreshToken_1 = session.refreshToken;\n refreshRequest = new Promise(function (res, rej) {\n user_1.refreshSession(refreshToken_1, function (err, data) {\n return err ? rej(err) : res(data);\n });\n });\n return [4 /*yield*/, refreshRequest];\n case 4:\n _b.sent(); // note that rejections will be caught and handled in the catch block.\n return [3 /*break*/, 6];\n case 5:\n err_1 = _b.sent();\n // should not throw because user might just be on guest access or is authenticated through federation\n logger.debug('Error attempting to refreshing the session', err_1);\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/, Auth.currentUserCredentials()];\n }\n });\n });\n };\n CredentialsClass.prototype.refreshFederatedToken = function (federatedInfo) {\n logger.debug('Getting federated credentials');\n var provider = federatedInfo.provider, user = federatedInfo.user, token = federatedInfo.token, identity_id = federatedInfo.identity_id;\n var expires_at = federatedInfo.expires_at;\n // Make sure expires_at is in millis\n expires_at =\n new Date(expires_at).getFullYear() === 1970\n ? expires_at * 1000\n : expires_at;\n var that = this;\n logger.debug('checking if federated jwt token expired');\n if (expires_at > new Date().getTime()) {\n // if not expired\n logger.debug('token not expired');\n return this._setCredentialsFromFederation({\n provider: provider,\n token: token,\n user: user,\n identity_id: identity_id,\n expires_at: expires_at,\n });\n }\n else {\n // if refresh handler exists\n if (that._refreshHandlers[provider] &&\n typeof that._refreshHandlers[provider] === 'function') {\n logger.debug('getting refreshed jwt token from federation provider');\n return this._providerRefreshWithRetry({\n refreshHandler: that._refreshHandlers[provider],\n provider: provider,\n user: user,\n });\n }\n else {\n logger.debug('no refresh handler for provider:', provider);\n this.clear();\n return Promise.reject('no refresh handler for provider');\n }\n }\n };\n CredentialsClass.prototype._providerRefreshWithRetry = function (_a) {\n var _this = this;\n var refreshHandler = _a.refreshHandler, provider = _a.provider, user = _a.user;\n var MAX_DELAY_MS = 10 * 1000;\n // refreshHandler will retry network errors, otherwise it will\n // return NonRetryableError to break out of jitteredExponentialRetry\n return jitteredExponentialRetry(refreshHandler, [], MAX_DELAY_MS)\n .then(function (data) {\n logger.debug('refresh federated token sucessfully', data);\n return _this._setCredentialsFromFederation({\n provider: provider,\n token: data.token,\n user: user,\n identity_id: data.identity_id,\n expires_at: data.expires_at,\n });\n })\n .catch(function (e) {\n var isNetworkError = typeof e === 'string' &&\n e.toLowerCase().lastIndexOf('network error', e.length) === 0;\n if (!isNetworkError) {\n _this.clear();\n }\n logger.debug('refresh federated token failed', e);\n return Promise.reject('refreshing federation token failed: ' + e);\n });\n };\n CredentialsClass.prototype._isExpired = function (credentials) {\n if (!credentials) {\n logger.debug('no credentials for expiration check');\n return true;\n }\n logger.debug('are these credentials expired?', credentials);\n var ts = Date.now();\n /* returns date object.\n https://github.com/aws/aws-sdk-js-v3/blob/v1.0.0-beta.1/packages/types/src/credentials.ts#L26\n */\n var expiration = credentials.expiration;\n return expiration.getTime() <= ts;\n };\n CredentialsClass.prototype._isPastTTL = function () {\n return this._nextCredentialsRefresh <= Date.now();\n };\n CredentialsClass.prototype._setCredentialsForGuest = function () {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var _b, identityPoolId, region, mandatorySignIn, identityPoolRegion, identityId, _c, cognitoConfig, guestCredentialsProvider, credentials;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n logger.debug('setting credentials for guest');\n if (!((_a = this._config) === null || _a === void 0 ? void 0 : _a.identityPoolId)) {\n // If Credentials are not configured thru Auth module,\n // doing best effort to check if the library was configured\n this._config = Object.assign({}, this._config, parseAWSExports(this._config || {}).Auth);\n }\n _b = this._config, identityPoolId = _b.identityPoolId, region = _b.region, mandatorySignIn = _b.mandatorySignIn, identityPoolRegion = _b.identityPoolRegion;\n if (mandatorySignIn) {\n return [2 /*return*/, Promise.reject('cannot get guest credentials when mandatory signin enabled')];\n }\n if (!identityPoolId) {\n logger.debug('No Cognito Identity pool provided for unauthenticated access');\n return [2 /*return*/, Promise.reject('No Cognito Identity pool provided for unauthenticated access')];\n }\n if (!identityPoolRegion && !region) {\n logger.debug('region is not configured for getting the credentials');\n return [2 /*return*/, Promise.reject('region is not configured for getting the credentials')];\n }\n _c = this;\n return [4 /*yield*/, this._getGuestIdentityId()];\n case 1:\n identityId = (_c._identityId = _d.sent());\n cognitoConfig = { region: identityPoolRegion !== null && identityPoolRegion !== void 0 ? identityPoolRegion : region };\n guestCredentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n var IdentityId, Credentials;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!identityId) return [3 /*break*/, 2];\n return [4 /*yield*/, getId(cognitoConfig, {\n IdentityPoolId: identityPoolId,\n })];\n case 1:\n IdentityId = (_a.sent()).IdentityId;\n this._identityId = IdentityId;\n _a.label = 2;\n case 2: return [4 /*yield*/, getCredentialsForIdentity(cognitoConfig, {\n IdentityId: this._identityId,\n })];\n case 3:\n Credentials = (_a.sent()).Credentials;\n return [2 /*return*/, {\n identityId: this._identityId,\n accessKeyId: Credentials.AccessKeyId,\n secretAccessKey: Credentials.SecretKey,\n sessionToken: Credentials.SessionToken,\n expiration: Credentials.Expiration,\n }];\n }\n });\n }); };\n credentials = guestCredentialsProvider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw err;\n });\n }); });\n return [2 /*return*/, this._loadCredentials(credentials, 'guest', false, null)\n .then(function (res) {\n return res;\n })\n .catch(function (e) { return __awaiter(_this, void 0, void 0, function () {\n var guestCredentialsProvider_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(e.name === 'ResourceNotFoundException' &&\n e.message === \"Identity '\".concat(identityId, \"' not found.\"))) return [3 /*break*/, 2];\n logger.debug('Failed to load guest credentials');\n return [4 /*yield*/, this._removeGuestIdentityId()];\n case 1:\n _a.sent();\n guestCredentialsProvider_1 = function () { return __awaiter(_this, void 0, void 0, function () {\n var IdentityId, Credentials;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, getId(cognitoConfig, {\n IdentityPoolId: identityPoolId,\n })];\n case 1:\n IdentityId = (_a.sent()).IdentityId;\n this._identityId = IdentityId;\n return [4 /*yield*/, getCredentialsForIdentity(cognitoConfig, {\n IdentityId: IdentityId,\n })];\n case 2:\n Credentials = (_a.sent()).Credentials;\n return [2 /*return*/, {\n identityId: IdentityId,\n accessKeyId: Credentials.AccessKeyId,\n secretAccessKey: Credentials.SecretKey,\n sessionToken: Credentials.SessionToken,\n expiration: Credentials.Expiration,\n }];\n }\n });\n }); };\n credentials = guestCredentialsProvider_1().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw err;\n });\n }); });\n return [2 /*return*/, this._loadCredentials(credentials, 'guest', false, null)];\n case 2: return [2 /*return*/, e];\n }\n });\n }); })];\n }\n });\n });\n };\n CredentialsClass.prototype._setCredentialsFromFederation = function (params) {\n var _this = this;\n var provider = params.provider, token = params.token;\n var identity_id = params.identity_id;\n var domains = {\n google: 'accounts.google.com',\n facebook: 'graph.facebook.com',\n amazon: 'www.amazon.com',\n developer: 'cognito-identity.amazonaws.com',\n };\n // Use custom provider url instead of the predefined ones\n var domain = domains[provider] || provider;\n if (!domain) {\n return Promise.reject('You must specify a federated provider');\n }\n var logins = {};\n logins[domain] = token;\n var _a = this._config, identityPoolId = _a.identityPoolId, region = _a.region, identityPoolRegion = _a.identityPoolRegion;\n if (!identityPoolId) {\n logger.debug('No Cognito Federated Identity pool provided');\n return Promise.reject('No Cognito Federated Identity pool provided');\n }\n if (!identityPoolRegion && !region) {\n logger.debug('region is not configured for getting the credentials');\n return Promise.reject('region is not configured for getting the credentials');\n }\n var cognitoConfig = { region: identityPoolRegion !== null && identityPoolRegion !== void 0 ? identityPoolRegion : region };\n var authenticatedCredentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n var IdentityId, Credentials;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!identity_id) return [3 /*break*/, 2];\n return [4 /*yield*/, getId(cognitoConfig, {\n IdentityPoolId: identityPoolId,\n Logins: logins,\n })];\n case 1:\n IdentityId = (_a.sent()).IdentityId;\n identity_id = IdentityId;\n _a.label = 2;\n case 2: return [4 /*yield*/, getCredentialsForIdentity(cognitoConfig, {\n IdentityId: identity_id,\n Logins: logins,\n })];\n case 3:\n Credentials = (_a.sent()).Credentials;\n return [2 /*return*/, {\n identityId: identity_id,\n accessKeyId: Credentials.AccessKeyId,\n secretAccessKey: Credentials.SecretKey,\n sessionToken: Credentials.SessionToken,\n expiration: Credentials.Expiration,\n }];\n }\n });\n }); };\n var credentials = authenticatedCredentialsProvider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw err;\n });\n }); });\n return this._loadCredentials(credentials, 'federated', true, params);\n };\n CredentialsClass.prototype._setCredentialsFromSession = function (session) {\n var _this = this;\n logger.debug('set credentials from session');\n var idToken = session.getIdToken().getJwtToken();\n var _a = this._config, region = _a.region, userPoolId = _a.userPoolId, identityPoolId = _a.identityPoolId, identityPoolRegion = _a.identityPoolRegion;\n if (!identityPoolId) {\n logger.debug('No Cognito Federated Identity pool provided');\n return Promise.reject('No Cognito Federated Identity pool provided');\n }\n if (!identityPoolRegion && !region) {\n logger.debug('region is not configured for getting the credentials');\n return Promise.reject('region is not configured for getting the credentials');\n }\n var key = 'cognito-idp.' + region + '.amazonaws.com/' + userPoolId;\n var logins = {};\n logins[key] = idToken;\n var cognitoConfig = { region: identityPoolRegion !== null && identityPoolRegion !== void 0 ? identityPoolRegion : region };\n /*\n Retreiving identityId with GetIdCommand to mimic the behavior in the following code in aws-sdk-v3:\n https://git.io/JeDxU\n\n Note: Retreive identityId from CredentialsProvider once aws-sdk-js v3 supports this.\n */\n var credentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n var guestIdentityId, generatedOrRetrievedIdentityId, IdentityId, _a, _b, AccessKeyId, Expiration, SecretKey, SessionToken, primaryIdentityId;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this._getGuestIdentityId()];\n case 1:\n guestIdentityId = _c.sent();\n if (!!guestIdentityId) return [3 /*break*/, 3];\n return [4 /*yield*/, getId(cognitoConfig, {\n IdentityPoolId: identityPoolId,\n Logins: logins,\n })];\n case 2:\n IdentityId = (_c.sent()).IdentityId;\n generatedOrRetrievedIdentityId = IdentityId;\n _c.label = 3;\n case 3: return [4 /*yield*/, getCredentialsForIdentity(cognitoConfig, {\n IdentityId: guestIdentityId || generatedOrRetrievedIdentityId,\n Logins: logins,\n })];\n case 4:\n _a = _c.sent(), _b = _a.Credentials, AccessKeyId = _b.AccessKeyId, Expiration = _b.Expiration, SecretKey = _b.SecretKey, SessionToken = _b.SessionToken, primaryIdentityId = _a.IdentityId;\n this._identityId = primaryIdentityId;\n if (!guestIdentityId) return [3 /*break*/, 6];\n // if guestIdentity is found and used by GetCredentialsForIdentity\n // it will be linked to the logins provided, and disqualified as an unauth identity\n logger.debug(\"The guest identity \".concat(guestIdentityId, \" has been successfully linked to the logins\"));\n if (guestIdentityId === primaryIdentityId) {\n logger.debug(\"The guest identity \".concat(guestIdentityId, \" has become the primary identity\"));\n }\n // remove it from local storage to avoid being used as a guest Identity by _setCredentialsForGuest\n return [4 /*yield*/, this._removeGuestIdentityId()];\n case 5:\n // remove it from local storage to avoid being used as a guest Identity by _setCredentialsForGuest\n _c.sent();\n _c.label = 6;\n case 6: \n // https://github.com/aws/aws-sdk-js-v3/blob/main/packages/credential-provider-cognito-identity/src/fromCognitoIdentity.ts#L40\n return [2 /*return*/, {\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: Expiration,\n identityId: primaryIdentityId,\n }];\n }\n });\n }); };\n var credentials = credentialsProvider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw err;\n });\n }); });\n return this._loadCredentials(credentials, 'userPool', true, null);\n };\n CredentialsClass.prototype._loadCredentials = function (credentials, source, authenticated, info) {\n var _this = this;\n var that = this;\n return new Promise(function (res, rej) {\n credentials\n .then(function (credentials) { return __awaiter(_this, void 0, void 0, function () {\n var user, provider, token, expires_at, identity_id;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug('Load credentials successfully', credentials);\n if (this._identityId && !credentials.identityId) {\n credentials['identityId'] = this._identityId;\n }\n that._credentials = credentials;\n that._credentials.authenticated = authenticated;\n that._credentials_source = source;\n that._nextCredentialsRefresh = new Date().getTime() + CREDENTIALS_TTL;\n if (source === 'federated') {\n user = Object.assign({ id: this._credentials.identityId }, info.user);\n provider = info.provider, token = info.token, expires_at = info.expires_at, identity_id = info.identity_id;\n try {\n this._storage.setItem('aws-amplify-federatedInfo', JSON.stringify({\n provider: provider,\n token: token,\n user: user,\n expires_at: expires_at,\n identity_id: identity_id,\n }));\n }\n catch (e) {\n logger.debug('Failed to put federated info into auth storage', e);\n }\n }\n if (!(source === 'guest')) return [3 /*break*/, 2];\n return [4 /*yield*/, this._setGuestIdentityId(credentials.identityId)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n res(that._credentials);\n return [2 /*return*/];\n }\n });\n }); })\n .catch(function (err) {\n if (err) {\n logger.debug('Failed to load credentials', credentials);\n logger.debug('Error loading credentials', err);\n rej(err);\n return;\n }\n });\n });\n };\n CredentialsClass.prototype.set = function (params, source) {\n if (source === 'session') {\n return this._setCredentialsFromSession(params);\n }\n else if (source === 'federation') {\n return this._setCredentialsFromFederation(params);\n }\n else if (source === 'guest') {\n return this._setCredentialsForGuest();\n }\n else {\n logger.debug('no source specified for setting credentials');\n return Promise.reject('invalid source');\n }\n };\n CredentialsClass.prototype.clear = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this._credentials = null;\n this._credentials_source = null;\n logger.debug('removing aws-amplify-federatedInfo from storage');\n this._storage.removeItem('aws-amplify-federatedInfo');\n return [2 /*return*/];\n });\n });\n };\n /* operations on local stored guest identity */\n CredentialsClass.prototype._getGuestIdentityId = function () {\n return __awaiter(this, void 0, void 0, function () {\n var identityPoolId, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n identityPoolId = this._config.identityPoolId;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._storageSync];\n case 2:\n _a.sent();\n return [2 /*return*/, this._storage.getItem(this._getCognitoIdentityIdStorageKey(identityPoolId))];\n case 3:\n e_1 = _a.sent();\n logger.debug('Failed to get the cached guest identityId', e_1);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CredentialsClass.prototype._setGuestIdentityId = function (identityId) {\n return __awaiter(this, void 0, void 0, function () {\n var identityPoolId, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n identityPoolId = this._config.identityPoolId;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._storageSync];\n case 2:\n _a.sent();\n this._storage.setItem(this._getCognitoIdentityIdStorageKey(identityPoolId), identityId);\n return [3 /*break*/, 4];\n case 3:\n e_2 = _a.sent();\n logger.debug('Failed to cache guest identityId', e_2);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CredentialsClass.prototype._removeGuestIdentityId = function () {\n return __awaiter(this, void 0, void 0, function () {\n var identityPoolId;\n return __generator(this, function (_a) {\n identityPoolId = this._config.identityPoolId;\n logger.debug(\"removing \".concat(this._getCognitoIdentityIdStorageKey(identityPoolId), \" from storage\"));\n this._storage.removeItem(this._getCognitoIdentityIdStorageKey(identityPoolId));\n return [2 /*return*/];\n });\n });\n };\n /**\n * Compact version of credentials\n * @param {Object} credentials\n * @return {Object} - Credentials\n */\n CredentialsClass.prototype.shear = function (credentials) {\n return {\n accessKeyId: credentials.accessKeyId,\n sessionToken: credentials.sessionToken,\n secretAccessKey: credentials.secretAccessKey,\n identityId: credentials.identityId,\n authenticated: credentials.authenticated,\n };\n };\n return CredentialsClass;\n}());\nexport { CredentialsClass };\nexport var Credentials = new CredentialsClass(null);\nAmplify.register(Credentials);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ConsoleLogger as Logger } from './Logger';\nvar logger = new Logger('Hub');\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nfunction isLegacyCallback(callback) {\n return callback.onHubCapsule !== undefined;\n}\nvar HubClass = /** @class */ (function () {\n function HubClass(name) {\n this.listeners = [];\n this.patterns = [];\n this.protectedChannels = [\n 'core',\n 'auth',\n 'api',\n 'analytics',\n 'interactions',\n 'pubsub',\n 'storage',\n 'ui',\n 'xr',\n ];\n this.name = name;\n }\n /**\n * Used internally to remove a Hub listener.\n *\n * @remarks\n * This private method is for internal use only. Instead of calling Hub.remove, call the result of Hub.listen.\n */\n HubClass.prototype._remove = function (channel, listener) {\n if (channel instanceof RegExp) {\n var pattern_1 = this.patterns.find(function (_a) {\n var pattern = _a.pattern;\n return pattern.source === channel.source;\n });\n if (!pattern_1) {\n logger.warn(\"No listeners for \".concat(channel));\n return;\n }\n this.patterns = __spreadArray([], __read(this.patterns.filter(function (x) { return x !== pattern_1; })), false);\n }\n else {\n var holder = this.listeners[channel];\n if (!holder) {\n logger.warn(\"No listeners for \".concat(channel));\n return;\n }\n this.listeners[channel] = __spreadArray([], __read(holder.filter(function (_a) {\n var callback = _a.callback;\n return callback !== listener;\n })), false);\n }\n };\n /**\n * @deprecated Instead of calling Hub.remove, call the result of Hub.listen.\n */\n HubClass.prototype.remove = function (channel, listener) {\n this._remove(channel, listener);\n };\n /**\n * Used to send a Hub event.\n *\n * @param channel - The channel on which the event will be broadcast\n * @param payload - The HubPayload\n * @param source - The source of the event; defaults to ''\n * @param ampSymbol - Symbol used to determine if the event is dispatched internally on a protected channel\n *\n */\n HubClass.prototype.dispatch = function (channel, payload, source, ampSymbol) {\n if (source === void 0) { source = ''; }\n if (this.protectedChannels.indexOf(channel) > -1) {\n var hasAccess = ampSymbol === AMPLIFY_SYMBOL;\n if (!hasAccess) {\n logger.warn(\"WARNING: \".concat(channel, \" is protected and dispatching on it can have unintended consequences\"));\n }\n }\n var capsule = {\n channel: channel,\n payload: __assign({}, payload),\n source: source,\n patternInfo: [],\n };\n try {\n this._toListeners(capsule);\n }\n catch (e) {\n logger.error(e);\n }\n };\n /**\n * Used to listen for Hub events.\n *\n * @param channel - The channel on which to listen\n * @param callback - The callback to execute when an event is received on the specified channel\n * @param listenerName - The name of the listener; defaults to 'noname'\n * @returns A function which can be called to cancel the listener.\n *\n */\n HubClass.prototype.listen = function (channel, callback, listenerName) {\n var _this = this;\n if (listenerName === void 0) { listenerName = 'noname'; }\n var cb;\n // Check for legacy onHubCapsule callback for backwards compatability\n if (isLegacyCallback(callback)) {\n logger.warn(\"WARNING onHubCapsule is Deprecated. Please pass in a callback.\");\n cb = callback.onHubCapsule.bind(callback);\n }\n else if (typeof callback !== 'function') {\n throw new Error('No callback supplied to Hub');\n }\n else {\n cb = callback;\n }\n if (channel instanceof RegExp) {\n this.patterns.push({\n pattern: channel,\n callback: cb,\n });\n }\n else {\n var holder = this.listeners[channel];\n if (!holder) {\n holder = [];\n this.listeners[channel] = holder;\n }\n holder.push({\n name: listenerName,\n callback: cb,\n });\n }\n return function () {\n _this._remove(channel, cb);\n };\n };\n HubClass.prototype._toListeners = function (capsule) {\n var channel = capsule.channel, payload = capsule.payload;\n var holder = this.listeners[channel];\n if (holder) {\n holder.forEach(function (listener) {\n logger.debug(\"Dispatching to \".concat(channel, \" with \"), payload);\n try {\n listener.callback(capsule);\n }\n catch (e) {\n logger.error(e);\n }\n });\n }\n if (this.patterns.length > 0) {\n if (!payload.message) {\n logger.warn(\"Cannot perform pattern matching without a message key\");\n return;\n }\n var payloadStr_1 = payload.message;\n this.patterns.forEach(function (pattern) {\n var match = payloadStr_1.match(pattern.pattern);\n if (match) {\n var _a = __read(match), groups = _a.slice(1);\n var dispatchingCapsule = __assign(__assign({}, capsule), { patternInfo: groups });\n try {\n pattern.callback(dispatchingCapsule);\n }\n catch (e) {\n logger.error(e);\n }\n }\n });\n }\n };\n return HubClass;\n}());\nexport { HubClass };\n/*We export a __default__ instance of HubClass to use it as a\npseudo Singleton for the main messaging bus, however you can still create\nyour own instance of HubClass() for a separate \"private bus\" of events.*/\nexport var Hub = new HubClass('__default__');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar MIME_MAP = [\n { type: 'text/plain', ext: 'txt' },\n { type: 'text/html', ext: 'html' },\n { type: 'text/javascript', ext: 'js' },\n { type: 'text/css', ext: 'css' },\n { type: 'text/csv', ext: 'csv' },\n { type: 'text/yaml', ext: 'yml' },\n { type: 'text/yaml', ext: 'yaml' },\n { type: 'text/calendar', ext: 'ics' },\n { type: 'text/calendar', ext: 'ical' },\n { type: 'image/apng', ext: 'apng' },\n { type: 'image/bmp', ext: 'bmp' },\n { type: 'image/gif', ext: 'gif' },\n { type: 'image/x-icon', ext: 'ico' },\n { type: 'image/x-icon', ext: 'cur' },\n { type: 'image/jpeg', ext: 'jpg' },\n { type: 'image/jpeg', ext: 'jpeg' },\n { type: 'image/jpeg', ext: 'jfif' },\n { type: 'image/jpeg', ext: 'pjp' },\n { type: 'image/jpeg', ext: 'pjpeg' },\n { type: 'image/png', ext: 'png' },\n { type: 'image/svg+xml', ext: 'svg' },\n { type: 'image/tiff', ext: 'tif' },\n { type: 'image/tiff', ext: 'tiff' },\n { type: 'image/webp', ext: 'webp' },\n { type: 'application/json', ext: 'json' },\n { type: 'application/xml', ext: 'xml' },\n { type: 'application/x-sh', ext: 'sh' },\n { type: 'application/zip', ext: 'zip' },\n { type: 'application/x-rar-compressed', ext: 'rar' },\n { type: 'application/x-tar', ext: 'tar' },\n { type: 'application/x-bzip', ext: 'bz' },\n { type: 'application/x-bzip2', ext: 'bz2' },\n { type: 'application/pdf', ext: 'pdf' },\n { type: 'application/java-archive', ext: 'jar' },\n { type: 'application/msword', ext: 'doc' },\n { type: 'application/vnd.ms-excel', ext: 'xls' },\n { type: 'application/vnd.ms-excel', ext: 'xlsx' },\n { type: 'message/rfc822', ext: 'eml' },\n];\nexport var isEmpty = function (obj) {\n if (obj === void 0) { obj = {}; }\n return Object.keys(obj).length === 0;\n};\nexport var sortByField = function (list, field, dir) {\n if (!list || !list.sort) {\n return false;\n }\n var dirX = dir && dir === 'desc' ? -1 : 1;\n list.sort(function (a, b) {\n var a_val = a[field];\n var b_val = b[field];\n if (typeof b_val === 'undefined') {\n return typeof a_val === 'undefined' ? 0 : 1 * dirX;\n }\n if (typeof a_val === 'undefined') {\n return -1 * dirX;\n }\n if (a_val < b_val) {\n return -1 * dirX;\n }\n if (a_val > b_val) {\n return 1 * dirX;\n }\n return 0;\n });\n return true;\n};\nexport var objectLessAttributes = function (obj, less) {\n var ret = Object.assign({}, obj);\n if (less) {\n if (typeof less === 'string') {\n delete ret[less];\n }\n else {\n less.forEach(function (attr) {\n delete ret[attr];\n });\n }\n }\n return ret;\n};\nexport var filenameToContentType = function (filename, defVal) {\n if (defVal === void 0) { defVal = 'application/octet-stream'; }\n var name = filename.toLowerCase();\n var filtered = MIME_MAP.filter(function (mime) { return name.endsWith('.' + mime.ext); });\n return filtered.length > 0 ? filtered[0].type : defVal;\n};\nexport var isTextFile = function (contentType) {\n var type = contentType.toLowerCase();\n if (type.startsWith('text/')) {\n return true;\n }\n return ('application/json' === type ||\n 'application/xml' === type ||\n 'application/sh' === type);\n};\nexport var generateRandomString = function () {\n var result = '';\n var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n for (var i = 32; i > 0; i -= 1) {\n result += chars[Math.floor(Math.random() * chars.length)];\n }\n return result;\n};\nexport var makeQuerablePromise = function (promise) {\n if (promise.isResolved)\n return promise;\n var isPending = true;\n var isRejected = false;\n var isFullfilled = false;\n var result = promise.then(function (data) {\n isFullfilled = true;\n isPending = false;\n return data;\n }, function (e) {\n isRejected = true;\n isPending = false;\n throw e;\n });\n result.isFullfilled = function () { return isFullfilled; };\n result.isPending = function () { return isPending; };\n result.isRejected = function () { return isRejected; };\n return result;\n};\nexport var isWebWorker = function () {\n if (typeof self === 'undefined') {\n return false;\n }\n var selfContext = self;\n return (typeof selfContext.WorkerGlobalScope !== 'undefined' &&\n self instanceof selfContext.WorkerGlobalScope);\n};\nexport var browserOrNode = function () {\n var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var isNode = typeof process !== 'undefined' &&\n process.versions != null &&\n process.versions.node != null;\n return {\n isBrowser: isBrowser,\n isNode: isNode,\n };\n};\n/**\n * transfer the first letter of the keys to lowercase\n * @param {Object} obj - the object need to be transferred\n * @param {Array} whiteListForItself - whitelist itself from being transferred\n * @param {Array} whiteListForChildren - whitelist its children keys from being transferred\n */\nexport var transferKeyToLowerCase = function (obj, whiteListForItself, whiteListForChildren) {\n if (whiteListForItself === void 0) { whiteListForItself = []; }\n if (whiteListForChildren === void 0) { whiteListForChildren = []; }\n if (!isStrictObject(obj))\n return obj;\n var ret = {};\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n var transferedKey = whiteListForItself.includes(key)\n ? key\n : key[0].toLowerCase() + key.slice(1);\n ret[transferedKey] = whiteListForChildren.includes(key)\n ? obj[key]\n : transferKeyToLowerCase(obj[key], whiteListForItself, whiteListForChildren);\n }\n }\n return ret;\n};\n/**\n * transfer the first letter of the keys to lowercase\n * @param {Object} obj - the object need to be transferred\n * @param {Array} whiteListForItself - whitelist itself from being transferred\n * @param {Array} whiteListForChildren - whitelist its children keys from being transferred\n */\nexport var transferKeyToUpperCase = function (obj, whiteListForItself, whiteListForChildren) {\n if (whiteListForItself === void 0) { whiteListForItself = []; }\n if (whiteListForChildren === void 0) { whiteListForChildren = []; }\n if (!isStrictObject(obj))\n return obj;\n var ret = {};\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n var transferredKey = whiteListForItself.includes(key)\n ? key\n : key[0].toUpperCase() + key.slice(1);\n ret[transferredKey] = whiteListForChildren.includes(key)\n ? obj[key]\n : transferKeyToUpperCase(obj[key], whiteListForItself, whiteListForChildren);\n }\n }\n return ret;\n};\n/**\n * Return true if the object is a strict object\n * which means it's not Array, Function, Number, String, Boolean or Null\n * @param obj the Object\n */\nexport var isStrictObject = function (obj) {\n return (obj instanceof Object &&\n !(obj instanceof Array) &&\n !(obj instanceof Function) &&\n !(obj instanceof Number) &&\n !(obj instanceof String) &&\n !(obj instanceof Boolean));\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { AWS_CLOUDWATCH_CATEGORY } from '../Util/Constants';\nvar LOG_LEVELS = {\n VERBOSE: 1,\n DEBUG: 2,\n INFO: 3,\n WARN: 4,\n ERROR: 5,\n};\nexport var LOG_TYPE;\n(function (LOG_TYPE) {\n LOG_TYPE[\"DEBUG\"] = \"DEBUG\";\n LOG_TYPE[\"ERROR\"] = \"ERROR\";\n LOG_TYPE[\"INFO\"] = \"INFO\";\n LOG_TYPE[\"WARN\"] = \"WARN\";\n LOG_TYPE[\"VERBOSE\"] = \"VERBOSE\";\n})(LOG_TYPE || (LOG_TYPE = {}));\n/**\n * Write logs\n * @class Logger\n */\nexport var ConsoleLogger = /** @class */ (function () {\n /**\n * @constructor\n * @param {string} name - Name of the logger\n */\n function ConsoleLogger(name, level) {\n if (level === void 0) { level = LOG_TYPE.WARN; }\n this.name = name;\n this.level = level;\n this._pluggables = [];\n }\n ConsoleLogger.prototype._padding = function (n) {\n return n < 10 ? '0' + n : '' + n;\n };\n ConsoleLogger.prototype._ts = function () {\n var dt = new Date();\n return ([this._padding(dt.getMinutes()), this._padding(dt.getSeconds())].join(':') +\n '.' +\n dt.getMilliseconds());\n };\n ConsoleLogger.prototype.configure = function (config) {\n if (!config)\n return this._config;\n this._config = config;\n return this._config;\n };\n /**\n * Write log\n * @method\n * @memeberof Logger\n * @param {LOG_TYPE|string} type - log type, default INFO\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype._log = function (type) {\n var e_1, _a;\n var msg = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n msg[_i - 1] = arguments[_i];\n }\n var logger_level_name = this.level;\n if (ConsoleLogger.LOG_LEVEL) {\n logger_level_name = ConsoleLogger.LOG_LEVEL;\n }\n if (typeof window !== 'undefined' && window.LOG_LEVEL) {\n logger_level_name = window.LOG_LEVEL;\n }\n var logger_level = LOG_LEVELS[logger_level_name];\n var type_level = LOG_LEVELS[type];\n if (!(type_level >= logger_level)) {\n // Do nothing if type is not greater than or equal to logger level (handle undefined)\n return;\n }\n var log = console.log.bind(console);\n if (type === LOG_TYPE.ERROR && console.error) {\n log = console.error.bind(console);\n }\n if (type === LOG_TYPE.WARN && console.warn) {\n log = console.warn.bind(console);\n }\n var prefix = \"[\".concat(type, \"] \").concat(this._ts(), \" \").concat(this.name);\n var message = '';\n if (msg.length === 1 && typeof msg[0] === 'string') {\n message = \"\".concat(prefix, \" - \").concat(msg[0]);\n log(message);\n }\n else if (msg.length === 1) {\n message = \"\".concat(prefix, \" \").concat(msg[0]);\n log(prefix, msg[0]);\n }\n else if (typeof msg[0] === 'string') {\n var obj = msg.slice(1);\n if (obj.length === 1) {\n obj = obj[0];\n }\n message = \"\".concat(prefix, \" - \").concat(msg[0], \" \").concat(obj);\n log(\"\".concat(prefix, \" - \").concat(msg[0]), obj);\n }\n else {\n message = \"\".concat(prefix, \" \").concat(msg);\n log(prefix, msg);\n }\n try {\n for (var _b = __values(this._pluggables), _c = _b.next(); !_c.done; _c = _b.next()) {\n var plugin = _c.value;\n var logEvent = { message: message, timestamp: Date.now() };\n plugin.pushLogs([logEvent]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n /**\n * Write General log. Default to INFO\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.log = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spreadArray([LOG_TYPE.INFO], __read(msg), false));\n };\n /**\n * Write INFO log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.info = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spreadArray([LOG_TYPE.INFO], __read(msg), false));\n };\n /**\n * Write WARN log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.warn = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spreadArray([LOG_TYPE.WARN], __read(msg), false));\n };\n /**\n * Write ERROR log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.error = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spreadArray([LOG_TYPE.ERROR], __read(msg), false));\n };\n /**\n * Write DEBUG log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.debug = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spreadArray([LOG_TYPE.DEBUG], __read(msg), false));\n };\n /**\n * Write VERBOSE log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.verbose = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spreadArray([LOG_TYPE.VERBOSE], __read(msg), false));\n };\n ConsoleLogger.prototype.addPluggable = function (pluggable) {\n if (pluggable && pluggable.getCategoryName() === AWS_CLOUDWATCH_CATEGORY) {\n this._pluggables.push(pluggable);\n pluggable.configure(this._config);\n }\n };\n ConsoleLogger.prototype.listPluggables = function () {\n return this._pluggables;\n };\n ConsoleLogger.LOG_LEVEL = null;\n return ConsoleLogger;\n}());\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var globalExists = function () {\n return typeof global !== 'undefined';\n};\nexport var globalThisExists = function () {\n return typeof globalThis !== 'undefined';\n};\nexport var windowExists = function () {\n return typeof window !== 'undefined';\n};\nexport var documentExists = function () {\n return typeof document !== 'undefined';\n};\nexport var processExists = function () {\n return typeof process !== 'undefined';\n};\nexport var keyPrefixMatch = function (object, prefix) {\n return !!Object.keys(object).find(function (key) { return key.startsWith(prefix); });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Framework } from '../types';\nimport { reactWebDetect, reactSSRDetect } from './React';\nimport { vueWebDetect, vueSSRDetect } from './Vue';\nimport { svelteWebDetect, svelteSSRDetect } from './Svelte';\nimport { nextWebDetect, nextSSRDetect } from './Next';\nimport { nuxtWebDetect, nuxtSSRDetect } from './Nuxt';\nimport { angularWebDetect, angularSSRDetect } from './Angular';\nimport { reactNativeDetect } from './ReactNative';\nimport { expoDetect } from './Expo';\nimport { webDetect } from './Web';\n// These are in the order of detection where when both are detectable, the early Framework will be reported\nvar detectionMap = [\n // First, detect mobile\n { platform: Framework.Expo, detectionMethod: expoDetect },\n { platform: Framework.ReactNative, detectionMethod: reactNativeDetect },\n // Next, detect web frameworks\n { platform: Framework.NextJs, detectionMethod: nextWebDetect },\n { platform: Framework.Nuxt, detectionMethod: nuxtWebDetect },\n { platform: Framework.Angular, detectionMethod: angularWebDetect },\n { platform: Framework.React, detectionMethod: reactWebDetect },\n { platform: Framework.VueJs, detectionMethod: vueWebDetect },\n { platform: Framework.Svelte, detectionMethod: svelteWebDetect },\n { platform: Framework.WebUnknown, detectionMethod: webDetect },\n // Last, detect ssr frameworks\n { platform: Framework.NextJsSSR, detectionMethod: nextSSRDetect },\n { platform: Framework.NuxtSSR, detectionMethod: nuxtSSRDetect },\n { platform: Framework.ReactSSR, detectionMethod: reactSSRDetect },\n { platform: Framework.VueJsSSR, detectionMethod: vueSSRDetect },\n { platform: Framework.AngularSSR, detectionMethod: angularSSRDetect },\n { platform: Framework.SvelteSSR, detectionMethod: svelteSSRDetect },\n];\nexport function detect() {\n var _a;\n return (((_a = detectionMap.find(function (detectionEntry) { return detectionEntry.detectionMethod(); })) === null || _a === void 0 ? void 0 : _a.platform) || Framework.ServerSideUnknown);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Framework } from './types';\nimport { detect } from './detection';\n// We want to cache detection since the framework won't change\nvar frameworkCache;\nexport var frameworkChangeObservers = [];\n// Setup the detection reset tracking / timeout delays\nvar resetTriggered = false;\nvar SSR_RESET_TIMEOUT = 10; // ms\nvar WEB_RESET_TIMEOUT = 10; // ms\nvar PRIME_FRAMEWORK_DELAY = 1000; // ms\nexport var detectFramework = function () {\n if (!frameworkCache) {\n frameworkCache = detect();\n if (resetTriggered) {\n // The final run of detectFramework:\n // Starting from this point, the `frameworkCache` becomes \"final\".\n // So we don't need to notify the observers again so the observer\n // can be removed after the final notice.\n while (frameworkChangeObservers.length) {\n frameworkChangeObservers.pop()();\n }\n }\n else {\n // The first run of detectFramework:\n // Every time we update the cache, call each observer function\n frameworkChangeObservers.forEach(function (fcn) { return fcn(); });\n }\n // Retry once for either Unknown type after a delay (explained below)\n resetTimeout(Framework.ServerSideUnknown, SSR_RESET_TIMEOUT);\n resetTimeout(Framework.WebUnknown, WEB_RESET_TIMEOUT);\n }\n return frameworkCache;\n};\n/**\n * @internal Setup observer callback that will be called everytime the framework changes\n */\nexport var observeFrameworkChanges = function (fcn) {\n // When the `frameworkCache` won't be updated again, we ignore all incoming\n // observers.\n if (resetTriggered) {\n return;\n }\n frameworkChangeObservers.push(fcn);\n};\nexport function clearCache() {\n frameworkCache = undefined;\n}\n// For a framework type and a delay amount, setup the event to re-detect\n// During the runtime boot, it is possible that framework detection will\n// be triggered before the framework has made modifications to the\n// global/window/etc needed for detection. When no framework is detected\n// we will reset and try again to ensure we don't use a cached\n// non-framework detection result for all requests.\nfunction resetTimeout(framework, delay) {\n if (frameworkCache === framework && !resetTriggered) {\n setTimeout(function () {\n clearCache();\n resetTriggered = true;\n setTimeout(detectFramework, PRIME_FRAMEWORK_DELAY);\n }, delay);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists } from './helpers';\n// Tested with expo 48 / react-native 0.71.3\nexport function expoDetect() {\n // @ts-ignore\n return globalExists() && typeof global['expo'] !== 'undefined';\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Tested with react-native 0.17.7\nexport function reactNativeDetect() {\n return (typeof navigator !== 'undefined' &&\n typeof navigator.product !== 'undefined' &&\n navigator.product === 'ReactNative');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists, keyPrefixMatch, windowExists } from './helpers';\n// Tested with next 13.4 / react 18.2\nexport function nextWebDetect() {\n // @ts-ignore\n return windowExists() && window['next'] && typeof window['next'] === 'object';\n}\nexport function nextSSRDetect() {\n return (globalExists() &&\n (keyPrefixMatch(global, '__next') || keyPrefixMatch(global, '__NEXT')));\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists, windowExists } from './helpers';\n// Tested with nuxt 2.15 / vue 2.7\nexport function nuxtWebDetect() {\n return (windowExists() &&\n // @ts-ignore\n (window['__NUXT__'] !== undefined || window['$nuxt'] !== undefined));\n}\nexport function nuxtSSRDetect() {\n // @ts-ignore\n return globalExists() && typeof global['__NUXT_PATHS__'] !== 'undefined';\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { documentExists, processExists, windowExists } from './helpers';\n// Tested with @angular/core 16.0.0\nexport function angularWebDetect() {\n var angularVersionSetInDocument = Boolean(documentExists() && document.querySelector('[ng-version]'));\n var angularContentSetInWindow = Boolean(\n // @ts-ignore\n windowExists() && typeof window['ng'] !== 'undefined');\n return angularVersionSetInDocument || angularContentSetInWindow;\n}\nexport function angularSSRDetect() {\n var _a;\n return ((processExists() &&\n typeof process.env === 'object' &&\n ((_a = process.env['npm_lifecycle_script']) === null || _a === void 0 ? void 0 : _a.startsWith('ng '))) ||\n false);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { documentExists, processExists } from './helpers';\n// Tested with react 18.2 - built using Vite\nexport function reactWebDetect() {\n var elementKeyPrefixedWithReact = function (key) {\n return key.startsWith('_react') || key.startsWith('__react');\n };\n var elementIsReactEnabled = function (element) {\n return Object.keys(element).find(elementKeyPrefixedWithReact);\n };\n var allElementsWithId = function () { return Array.from(document.querySelectorAll('[id]')); };\n return documentExists() && allElementsWithId().some(elementIsReactEnabled);\n}\nexport function reactSSRDetect() {\n return (processExists() &&\n typeof process.env !== 'undefined' &&\n !!Object.keys(process.env).find(function (key) { return key.includes('react'); }));\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists, keyPrefixMatch, windowExists } from './helpers';\n// Tested with vue 3.3.2\nexport function vueWebDetect() {\n return windowExists() && keyPrefixMatch(window, '__VUE');\n}\nexport function vueSSRDetect() {\n return globalExists() && keyPrefixMatch(global, '__VUE');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { keyPrefixMatch, processExists, windowExists } from './helpers';\n// Tested with svelte 3.59\nexport function svelteWebDetect() {\n return windowExists() && keyPrefixMatch(window, '__SVELTE');\n}\nexport function svelteSSRDetect() {\n return (processExists() &&\n typeof process.env !== 'undefined' &&\n !!Object.keys(process.env).find(function (key) { return key.includes('svelte'); }));\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { windowExists } from './helpers';\nexport function webDetect() {\n return windowExists();\n}\n","// generated by genversion\nexport var version = '5.3.21';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { Framework } from './types';\nimport { version } from './version';\nimport { detectFramework, observeFrameworkChanges } from './detectFramework';\nvar BASE_USER_AGENT = \"aws-amplify\";\nvar PlatformBuilder = /** @class */ (function () {\n function PlatformBuilder() {\n this.userAgent = \"\".concat(BASE_USER_AGENT, \"/\").concat(version);\n }\n Object.defineProperty(PlatformBuilder.prototype, \"framework\", {\n get: function () {\n return detectFramework();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PlatformBuilder.prototype, \"isReactNative\", {\n get: function () {\n return (this.framework === Framework.ReactNative ||\n this.framework === Framework.Expo);\n },\n enumerable: false,\n configurable: true\n });\n PlatformBuilder.prototype.observeFrameworkChanges = function (fcn) {\n observeFrameworkChanges(fcn);\n };\n return PlatformBuilder;\n}());\nexport var Platform = new PlatformBuilder();\nexport var getAmplifyUserAgentObject = function (_a) {\n var _b = _a === void 0 ? {} : _a, category = _b.category, action = _b.action, framework = _b.framework;\n var userAgent = [[BASE_USER_AGENT, version]];\n if (category) {\n userAgent.push([category, action]);\n }\n userAgent.push(['framework', detectFramework()]);\n return userAgent;\n};\nexport var getAmplifyUserAgent = function (customUserAgentDetails) {\n var userAgent = getAmplifyUserAgentObject(customUserAgentDetails);\n var userAgentString = userAgent\n .map(function (_a) {\n var _b = __read(_a, 2), agentKey = _b[0], agentValue = _b[1];\n return \"\".concat(agentKey, \"/\").concat(agentValue);\n })\n .join(' ');\n return userAgentString;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var Framework;\n(function (Framework) {\n // < 100 - Web frameworks\n Framework[\"WebUnknown\"] = \"0\";\n Framework[\"React\"] = \"1\";\n Framework[\"NextJs\"] = \"2\";\n Framework[\"Angular\"] = \"3\";\n Framework[\"VueJs\"] = \"4\";\n Framework[\"Nuxt\"] = \"5\";\n Framework[\"Svelte\"] = \"6\";\n // 100s - Server side frameworks\n Framework[\"ServerSideUnknown\"] = \"100\";\n Framework[\"ReactSSR\"] = \"101\";\n Framework[\"NextJsSSR\"] = \"102\";\n Framework[\"AngularSSR\"] = \"103\";\n Framework[\"VueJsSSR\"] = \"104\";\n Framework[\"NuxtSSR\"] = \"105\";\n Framework[\"SvelteSSR\"] = \"106\";\n // 200s - Mobile framework\n Framework[\"ReactNative\"] = \"201\";\n Framework[\"Expo\"] = \"202\";\n})(Framework || (Framework = {}));\nexport var Category;\n(function (Category) {\n Category[\"API\"] = \"api\";\n Category[\"Auth\"] = \"auth\";\n Category[\"Analytics\"] = \"analytics\";\n Category[\"DataStore\"] = \"datastore\";\n Category[\"Geo\"] = \"geo\";\n Category[\"InAppMessaging\"] = \"inappmessaging\";\n Category[\"Interactions\"] = \"interactions\";\n Category[\"Predictions\"] = \"predictions\";\n Category[\"PubSub\"] = \"pubsub\";\n Category[\"PushNotification\"] = \"pushnotification\";\n Category[\"Storage\"] = \"storage\";\n})(Category || (Category = {}));\nexport var AnalyticsAction;\n(function (AnalyticsAction) {\n AnalyticsAction[\"Record\"] = \"1\";\n AnalyticsAction[\"UpdateEndpoint\"] = \"2\";\n})(AnalyticsAction || (AnalyticsAction = {}));\nexport var ApiAction;\n(function (ApiAction) {\n ApiAction[\"GraphQl\"] = \"1\";\n ApiAction[\"Get\"] = \"2\";\n ApiAction[\"Post\"] = \"3\";\n ApiAction[\"Put\"] = \"4\";\n ApiAction[\"Patch\"] = \"5\";\n ApiAction[\"Del\"] = \"6\";\n ApiAction[\"Head\"] = \"7\";\n})(ApiAction || (ApiAction = {}));\nexport var AuthAction;\n(function (AuthAction) {\n // SignUp = '1',\n // ConfirmSignUp = '2',\n // ResendSignUp = '3',\n // SignIn = '4',\n // GetMFAOptions = '5',\n // GetPreferredMFA = '6',\n // SetPreferredMFA = '7',\n // DisableSMS = '8',\n // EnableSMS = '9',\n // SetupTOTP = '10',\n // VerifyTotpToken = '11',\n // ConfirmSignIn = '12',\n // CompleteNewPassword = '13',\n // SendCustomChallengeAnswer = '14',\n // DeleteUserAttributes = '15',\n // DeleteUser = '16',\n // UpdateUserAttributes = '17',\n // UserAttributes = '18',\n // CurrentUserPoolUser = '19',\n // CurrentAuthenticatedUser = '20',\n // CurrentSession = '21',\n // VerifyUserAttribute = '22',\n // VerifyUserAttributeSubmit = '23',\n // VerifyCurrentUserAttribute = '24',\n // VerifyCurrentUserAttributeSubmit = '25',\n // SignOut = '26',\n // ChangePassword = '27',\n // ForgotPassword = '28',\n // ForgotPasswordSubmit = '29',\n AuthAction[\"FederatedSignIn\"] = \"30\";\n // CurrentUserInfo = '31',\n // RememberDevice = '32',\n // ForgetDevice = '33',\n // FetchDevices = '34',\n})(AuthAction || (AuthAction = {}));\nexport var DataStoreAction;\n(function (DataStoreAction) {\n DataStoreAction[\"Subscribe\"] = \"1\";\n DataStoreAction[\"GraphQl\"] = \"2\";\n})(DataStoreAction || (DataStoreAction = {}));\nexport var GeoAction;\n(function (GeoAction) {\n GeoAction[\"None\"] = \"0\";\n})(GeoAction || (GeoAction = {}));\nexport var InAppMessagingAction;\n(function (InAppMessagingAction) {\n InAppMessagingAction[\"None\"] = \"0\";\n})(InAppMessagingAction || (InAppMessagingAction = {}));\nexport var InteractionsAction;\n(function (InteractionsAction) {\n InteractionsAction[\"None\"] = \"0\";\n})(InteractionsAction || (InteractionsAction = {}));\nexport var PredictionsAction;\n(function (PredictionsAction) {\n PredictionsAction[\"Convert\"] = \"1\";\n PredictionsAction[\"Identify\"] = \"2\";\n PredictionsAction[\"Interpret\"] = \"3\";\n})(PredictionsAction || (PredictionsAction = {}));\nexport var PubSubAction;\n(function (PubSubAction) {\n PubSubAction[\"Subscribe\"] = \"1\";\n})(PubSubAction || (PubSubAction = {}));\nexport var PushNotificationAction;\n(function (PushNotificationAction) {\n PushNotificationAction[\"None\"] = \"0\";\n})(PushNotificationAction || (PushNotificationAction = {}));\nexport var StorageAction;\n(function (StorageAction) {\n StorageAction[\"Put\"] = \"1\";\n StorageAction[\"Get\"] = \"2\";\n StorageAction[\"List\"] = \"3\";\n StorageAction[\"Copy\"] = \"4\";\n StorageAction[\"Remove\"] = \"5\";\n StorageAction[\"GetProperties\"] = \"6\";\n})(StorageAction || (StorageAction = {}));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar dataMemory = {};\n/** @class */\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n }\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n MemoryStorage.setItem = function (key, value) {\n dataMemory[key] = value;\n return dataMemory[key];\n };\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n MemoryStorage.getItem = function (key) {\n return Object.prototype.hasOwnProperty.call(dataMemory, key)\n ? dataMemory[key]\n : undefined;\n };\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */\n MemoryStorage.removeItem = function (key) {\n return delete dataMemory[key];\n };\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n MemoryStorage.clear = function () {\n dataMemory = {};\n return dataMemory;\n };\n return MemoryStorage;\n}());\nexport { MemoryStorage };\nvar StorageHelper = /** @class */ (function () {\n /**\n * This is used to get a storage object\n * @returns {object} the storage\n */\n function StorageHelper() {\n try {\n this.storageWindow = window.localStorage;\n this.storageWindow.setItem('aws.amplify.test-ls', 1);\n this.storageWindow.removeItem('aws.amplify.test-ls');\n }\n catch (exception) {\n this.storageWindow = MemoryStorage;\n }\n }\n /**\n * This is used to return the storage\n * @returns {object} the storage\n */\n StorageHelper.prototype.getStorage = function () {\n return this.storageWindow;\n };\n return StorageHelper;\n}());\nexport { StorageHelper };\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import Cookies from './Cookies';\r\nexport default Cookies;\r\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport Cookies from 'universal-cookie';\nimport { browserOrNode } from '../JS';\nvar isBrowser = browserOrNode().isBrowser;\nvar ONE_YEAR_IN_MS = 365 * 24 * 60 * 60 * 1000;\nvar UniversalStorage = /** @class */ (function () {\n function UniversalStorage(context) {\n if (context === void 0) { context = {}; }\n this.cookies = new Cookies();\n this.store = isBrowser ? window.localStorage : Object.create(null);\n this.cookies = context.req\n ? new Cookies(decodeURIComponent(context.req.headers.cookie))\n : new Cookies();\n Object.assign(this.store, this.cookies.getAll());\n }\n Object.defineProperty(UniversalStorage.prototype, \"length\", {\n get: function () {\n return Object.entries(this.store).length;\n },\n enumerable: false,\n configurable: true\n });\n UniversalStorage.prototype.clear = function () {\n var _this = this;\n Array.from(new Array(this.length))\n .map(function (_, i) { return _this.key(i); })\n .forEach(function (key) { return _this.removeItem(key); });\n };\n UniversalStorage.prototype.getItem = function (key) {\n return this.getLocalItem(key);\n };\n UniversalStorage.prototype.getLocalItem = function (key) {\n return Object.prototype.hasOwnProperty.call(this.store, key)\n ? this.store[key]\n : null;\n };\n UniversalStorage.prototype.getUniversalItem = function (key) {\n return this.cookies.get(key);\n };\n UniversalStorage.prototype.key = function (index) {\n return Object.keys(this.store)[index];\n };\n UniversalStorage.prototype.removeItem = function (key) {\n this.removeLocalItem(key);\n this.removeUniversalItem(key);\n };\n UniversalStorage.prototype.removeLocalItem = function (key) {\n delete this.store[key];\n };\n UniversalStorage.prototype.removeUniversalItem = function (key) {\n this.cookies.remove(key, {\n path: '/',\n });\n };\n UniversalStorage.prototype.setItem = function (key, value) {\n this.setLocalItem(key, value);\n // keys take the shape:\n // 1. `${ProviderPrefix}.${userPoolClientId}.${username}.${tokenType}\n // 2. `${ProviderPrefix}.${userPoolClientId}.LastAuthUser\n var tokenType = key.split('.').pop();\n var sessionTokenTypes = [\n 'LastAuthUser',\n 'accessToken',\n // refreshToken originates on the client, but SSR pages won't fail when this expires\n // Note: the new `accessToken` will also be refreshed on the client (since Amplify doesn't set server-side cookies)\n 'refreshToken',\n // Required for CognitoUserSession\n 'idToken',\n // userData is used when `Auth.currentAuthenticatedUser({ bypassCache: false })`.\n // Can be persisted to speed up calls to `Auth.currentAuthenticatedUser()`\n // 'userData',\n // Ignoring clockDrift on the server for now, but needs testing\n // 'clockDrift',\n ];\n if (sessionTokenTypes.includes(tokenType !== null && tokenType !== void 0 ? tokenType : '')) {\n this.setUniversalItem(key, value, {\n expires: new Date(Date.now() + ONE_YEAR_IN_MS),\n });\n }\n };\n UniversalStorage.prototype.setLocalItem = function (key, value) {\n this.store[key] = value;\n };\n UniversalStorage.prototype.setUniversalItem = function (key, value, options) {\n if (options === void 0) { options = {}; }\n this.cookies.set(key, value, __assign(__assign({}, options), { path: '/', \n // `httpOnly` cannot be set via JavaScript: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#JavaScript_access_using_Document.cookie\n sameSite: true, \n // Allow unsecure requests to http://localhost:3000/ when in development.\n secure: isBrowser && window.location.hostname === 'localhost' ? false : true }));\n };\n return UniversalStorage;\n}());\nexport { UniversalStorage };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Logging constants\nvar AWS_CLOUDWATCH_BASE_BUFFER_SIZE = 26;\nvar AWS_CLOUDWATCH_MAX_BATCH_EVENT_SIZE = 1048576;\nvar AWS_CLOUDWATCH_MAX_EVENT_SIZE = 256000;\nvar AWS_CLOUDWATCH_CATEGORY = 'Logging';\nvar AWS_CLOUDWATCH_PROVIDER_NAME = 'AWSCloudWatch';\nvar NO_CREDS_ERROR_STRING = 'No credentials';\nvar RETRY_ERROR_CODES = [\n 'ResourceNotFoundException',\n 'InvalidSequenceTokenException',\n];\nexport { AWS_CLOUDWATCH_BASE_BUFFER_SIZE, AWS_CLOUDWATCH_CATEGORY, AWS_CLOUDWATCH_MAX_BATCH_EVENT_SIZE, AWS_CLOUDWATCH_MAX_EVENT_SIZE, AWS_CLOUDWATCH_PROVIDER_NAME, NO_CREDS_ERROR_STRING, RETRY_ERROR_CODES, };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ConsoleLogger as Logger } from '../Logger/ConsoleLogger';\nvar logger = new Logger('Util');\nvar NonRetryableError = /** @class */ (function (_super) {\n __extends(NonRetryableError, _super);\n function NonRetryableError(message) {\n var _this = _super.call(this, message) || this;\n _this.nonRetryable = true;\n return _this;\n }\n return NonRetryableError;\n}(Error));\nexport { NonRetryableError };\nexport var isNonRetryableError = function (obj) {\n var key = 'nonRetryable';\n return obj && obj[key];\n};\n/**\n * @private\n * Internal use of Amplify only\n */\nexport function retry(functionToRetry, args, delayFn, onTerminate) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n if (typeof functionToRetry !== 'function') {\n throw Error('functionToRetry must be a function');\n }\n return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {\n var attempt, terminated, timeout, wakeUp, lastError, _loop_1, state_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n attempt = 0;\n terminated = false;\n wakeUp = function () { };\n onTerminate &&\n onTerminate.then(function () {\n // signal not to try anymore.\n terminated = true;\n // stop sleeping if we're sleeping.\n clearTimeout(timeout);\n wakeUp();\n });\n _loop_1 = function () {\n var _b, _c, err_1, retryIn_1;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n attempt++;\n logger.debug(\"\".concat(functionToRetry.name, \" attempt #\").concat(attempt, \" with this vars: \").concat(JSON.stringify(args)));\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 7]);\n _b = {};\n _c = resolve;\n return [4 /*yield*/, functionToRetry.apply(void 0, __spreadArray([], __read(args), false))];\n case 2: return [2 /*return*/, (_b.value = _c.apply(void 0, [_d.sent()]), _b)];\n case 3:\n err_1 = _d.sent();\n lastError = err_1;\n logger.debug(\"error on \".concat(functionToRetry.name), err_1);\n if (isNonRetryableError(err_1)) {\n logger.debug(\"\".concat(functionToRetry.name, \" non retryable error\"), err_1);\n return [2 /*return*/, { value: reject(err_1) }];\n }\n retryIn_1 = delayFn(attempt, args, err_1);\n logger.debug(\"\".concat(functionToRetry.name, \" retrying in \").concat(retryIn_1, \" ms\"));\n if (!(retryIn_1 === false || terminated)) return [3 /*break*/, 4];\n return [2 /*return*/, { value: reject(err_1) }];\n case 4: return [4 /*yield*/, new Promise(function (r) {\n wakeUp = r; // export wakeUp for onTerminate handling\n timeout = setTimeout(wakeUp, retryIn_1);\n })];\n case 5:\n _d.sent();\n _d.label = 6;\n case 6: return [3 /*break*/, 7];\n case 7: return [2 /*return*/];\n }\n });\n };\n _a.label = 1;\n case 1:\n if (!!terminated) return [3 /*break*/, 3];\n return [5 /*yield**/, _loop_1()];\n case 2:\n state_1 = _a.sent();\n if (typeof state_1 === \"object\")\n return [2 /*return*/, state_1.value];\n return [3 /*break*/, 1];\n case 3:\n // reached if terminated while waiting for a timer.\n reject(lastError);\n return [2 /*return*/];\n }\n });\n }); })];\n });\n });\n}\nvar MAX_DELAY_MS = 5 * 60 * 1000;\n/**\n * @private\n * Internal use of Amplify only\n */\nexport function jitteredBackoff(maxDelayMs) {\n if (maxDelayMs === void 0) { maxDelayMs = MAX_DELAY_MS; }\n var BASE_TIME_MS = 100;\n var JITTER_FACTOR = 100;\n return function (attempt) {\n var delay = Math.pow(2, attempt) * BASE_TIME_MS + JITTER_FACTOR * Math.random();\n return delay > maxDelayMs ? false : delay;\n };\n}\n/**\n * @private\n * Internal use of Amplify only\n */\nexport var jitteredExponentialRetry = function (functionToRetry, args, maxDelayMs, onTerminate) {\n if (maxDelayMs === void 0) { maxDelayMs = MAX_DELAY_MS; }\n return retry(functionToRetry, args, jitteredBackoff(maxDelayMs), onTerminate);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Default partition for AWS services. This is used when the region is not provided or the region is not recognized.\n *\n * @internal\n */\nexport var defaultPartition = {\n id: 'aws',\n outputs: {\n dnsSuffix: 'amazonaws.com',\n },\n regionRegex: '^(us|eu|ap|sa|ca|me|af)\\\\-\\\\w+\\\\-\\\\d+$',\n regions: ['aws-global'],\n};\n/**\n * This data is adapted from the partition file from AWS SDK shared utilities but remove some contents for bundle size\n * concern. Information removed are `dualStackDnsSuffix`, `supportDualStack`, `supportFIPS`, restricted partitions, and\n * list of regions for each partition other than global regions.\n *\n * * Ref: https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints\n * * Ref: https://github.com/aws/aws-sdk-js-v3/blob/0201baef03c2379f1f6f7150b9d401d4b230d488/packages/util-endpoints/src/lib/aws/partitions.json#L1\n *\n * @internal\n */\nexport var partitionsInfo = {\n partitions: [\n defaultPartition,\n {\n id: 'aws-cn',\n outputs: {\n dnsSuffix: 'amazonaws.com.cn',\n },\n regionRegex: '^cn\\\\-\\\\w+\\\\-\\\\d+$',\n regions: ['aws-cn-global'],\n },\n ],\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { defaultPartition, partitionsInfo } from './partitions';\n/**\n * Get the AWS Services endpoint URL's DNS suffix for a given region. A typical AWS regional service endpoint URL will\n * follow this pattern: {endpointPrefix}.{region}.{dnsSuffix}. For example, the endpoint URL for Cognito Identity in\n * us-east-1 will be cognito-identity.us-east-1.amazonaws.com. Here the DnsSuffix is `amazonaws.com`.\n *\n * @param region\n * @returns The DNS suffix\n *\n * @internal\n */\nexport var getDnsSuffix = function (region) {\n var e_1, _a;\n var partitions = partitionsInfo.partitions;\n try {\n for (var partitions_1 = __values(partitions), partitions_1_1 = partitions_1.next(); !partitions_1_1.done; partitions_1_1 = partitions_1.next()) {\n var _b = partitions_1_1.value, regions = _b.regions, outputs = _b.outputs, regionRegex = _b.regionRegex;\n var regex = new RegExp(regionRegex);\n if (regions.includes(region) || regex.test(region)) {\n return outputs.dnsSuffix;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (partitions_1_1 && !partitions_1_1.done && (_a = partitions_1.return)) _a.call(partitions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return defaultPartition.outputs.dnsSuffix;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport 'isomorphic-unfetch'; // TODO: remove this dependency in v6\nimport { withMemoization } from '../utils/memoization';\nvar shouldSendBody = function (method) {\n return !['HEAD', 'GET', 'DELETE'].includes(method.toUpperCase());\n};\nexport var fetchTransferHandler = function (_a, _b) {\n var url = _a.url, method = _a.method, headers = _a.headers, body = _a.body;\n var abortSignal = _b.abortSignal;\n return __awaiter(void 0, void 0, void 0, function () {\n var resp, e_1, responseHeaders, httpResponse, bodyWithMixin;\n var _c, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _e.trys.push([0, 2, , 3]);\n return [4 /*yield*/, fetch(url, {\n method: method,\n headers: headers,\n body: shouldSendBody(method) ? body : undefined,\n signal: abortSignal,\n })];\n case 1:\n resp = _e.sent();\n return [3 /*break*/, 3];\n case 2:\n e_1 = _e.sent();\n // TODO: needs to revise error handling in v6\n // For now this is a thin wrapper over original fetch error similar to cognito-identity-js package.\n // Ref: https://github.com/aws-amplify/amplify-js/blob/4fbc8c0a2be7526aab723579b4c95b552195a80b/packages/amazon-cognito-identity-js/src/Client.js#L103-L108\n if (e_1 instanceof TypeError) {\n throw new Error('Network error');\n }\n throw e_1;\n case 3:\n responseHeaders = {};\n (_c = resp.headers) === null || _c === void 0 ? void 0 : _c.forEach(function (value, key) {\n responseHeaders[key.toLowerCase()] = value;\n });\n httpResponse = {\n statusCode: resp.status,\n headers: responseHeaders,\n body: null,\n };\n bodyWithMixin = Object.assign((_d = resp.body) !== null && _d !== void 0 ? _d : {}, {\n text: withMemoization(function () { return resp.text(); }),\n blob: withMemoization(function () { return resp.blob(); }),\n json: withMemoization(function () { return resp.json(); }),\n });\n return [2 /*return*/, __assign(__assign({}, httpResponse), { body: bodyWithMixin })];\n }\n });\n });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nexport var composeServiceApi = function (transferHandler, serializer, deserializer, defaultConfig) {\n return function (config, input) { return __awaiter(void 0, void 0, void 0, function () {\n var resolvedConfig, endpoint, request, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n resolvedConfig = __assign(__assign({}, defaultConfig), config);\n return [4 /*yield*/, resolvedConfig.endpointResolver(resolvedConfig, input)];\n case 1:\n endpoint = _a.sent();\n return [4 /*yield*/, serializer(input, endpoint)];\n case 2:\n request = _a.sent();\n return [4 /*yield*/, transferHandler(request, __assign({}, resolvedConfig))];\n case 3:\n response = _a.sent();\n return [4 /*yield*/, deserializer(response)];\n case 4: return [2 /*return*/, _a.sent()];\n }\n });\n }); };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Compose a transfer handler with a core transfer handler and a list of middleware.\n * @param coreHandler Core transfer handler\n * @param middleware\tList of middleware\n * @returns A transfer handler whose option type is the union of the core\n * \ttransfer handler's option type and the middleware's option type.\n * @internal\n */\nexport var composeTransferHandler = function (coreHandler, middleware) {\n return function (request, options) {\n var context = {};\n var composedHandler = function (request) { return coreHandler(request, options); };\n for (var i = middleware.length - 1; i >= 0; i--) {\n var m = middleware[i];\n var resolvedMiddleware = m(options);\n composedHandler = resolvedMiddleware(composedHandler, context);\n }\n return composedHandler(request);\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// via https://github.com/aws/aws-sdk-js-v3/blob/ab0e7be36e7e7f8a0c04834357aaad643c7912c3/packages/service-error-classification/src/constants.ts#L8\nvar CLOCK_SKEW_ERROR_CODES = [\n 'AuthFailure',\n 'InvalidSignatureException',\n 'RequestExpired',\n 'RequestInTheFuture',\n 'RequestTimeTooSkewed',\n 'SignatureDoesNotMatch',\n 'BadRequestException', // API Gateway\n];\n/**\n * Given an error code, returns true if it is related to a clock skew error.\n *\n * @param errorCode String representation of some error.\n * @returns True if given error is present in `CLOCK_SKEW_ERROR_CODES`, false otherwise.\n *\n * @internal\n */\nexport var isClockSkewError = function (errorCode) {\n return CLOCK_SKEW_ERROR_CODES.includes(errorCode);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { isClockSkewError } from './isClockSkewError';\n/**\n * Get retry decider function\n * @param errorParser Function to load JavaScript error from HTTP response\n */\nexport var getRetryDecider = function (errorParser) {\n return function (response, error) { return __awaiter(void 0, void 0, void 0, function () {\n var errorCode, _a, statusCode;\n var _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!(error !== null && error !== void 0)) return [3 /*break*/, 1];\n _a = error;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, errorParser(response)];\n case 2:\n _a = (_c.sent());\n _c.label = 3;\n case 3:\n errorCode = ((_b = _a) !== null && _b !== void 0 ? _b : {}).name;\n statusCode = response === null || response === void 0 ? void 0 : response.statusCode;\n return [2 /*return*/, (isConnectionError(error) ||\n isThrottlingError(statusCode, errorCode) ||\n isClockSkewError(errorCode) ||\n isServerSideError(statusCode, errorCode))];\n }\n });\n }); };\n};\n// reference: https://github.com/aws/aws-sdk-js-v3/blob/ab0e7be36e7e7f8a0c04834357aaad643c7912c3/packages/service-error-classification/src/constants.ts#L22-L37\nvar THROTTLING_ERROR_CODES = [\n 'BandwidthLimitExceeded',\n 'EC2ThrottledException',\n 'LimitExceededException',\n 'PriorRequestNotComplete',\n 'ProvisionedThroughputExceededException',\n 'RequestLimitExceeded',\n 'RequestThrottled',\n 'RequestThrottledException',\n 'SlowDown',\n 'ThrottledException',\n 'Throttling',\n 'ThrottlingException',\n 'TooManyRequestsException',\n];\nvar TIMEOUT_ERROR_CODES = [\n 'TimeoutError',\n 'RequestTimeout',\n 'RequestTimeoutException',\n];\nvar isThrottlingError = function (statusCode, errorCode) {\n return statusCode === 429 || THROTTLING_ERROR_CODES.includes(errorCode);\n};\nvar isConnectionError = function (error) { return (error === null || error === void 0 ? void 0 : error.name) === 'Network error'; };\nvar isServerSideError = function (statusCode, errorCode) {\n return [500, 502, 503, 504].includes(statusCode) ||\n TIMEOUT_ERROR_CODES.includes(errorCode);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// TODO: [v6] The separate retry utility is used by Data packages now and will replaced by retry middleware.\nimport { jitteredBackoff as jitteredBackoffUtil } from '../../../Util/Retry';\nvar DEFAULT_MAX_DELAY_MS = 5 * 60 * 1000;\nexport var jitteredBackoff = function (attempt) {\n var delayFunction = jitteredBackoffUtil(DEFAULT_MAX_DELAY_MS);\n var delay = delayFunction(attempt);\n // The delayFunction returns false when the delay is greater than the max delay(5 mins).\n // In this case, the retry middleware will delay 5 mins instead, as a ceiling of the delay.\n return delay === false ? DEFAULT_MAX_DELAY_MS : delay;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar DEFAULT_RETRY_ATTEMPTS = 3;\n/**\n * Retry middleware\n */\nexport var retryMiddleware = function (_a) {\n var _b = _a.maxAttempts, maxAttempts = _b === void 0 ? DEFAULT_RETRY_ATTEMPTS : _b, retryDecider = _a.retryDecider, computeDelay = _a.computeDelay, abortSignal = _a.abortSignal;\n if (maxAttempts < 1) {\n throw new Error('maxAttempts must be greater than 0');\n }\n return function (next, context) {\n return function retryMiddleware(request) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var error, attemptsCount, response, handleTerminalErrorOrResponse, e_1, delay;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n attemptsCount = (_a = context.attemptsCount) !== null && _a !== void 0 ? _a : 0;\n handleTerminalErrorOrResponse = function () {\n if (response) {\n addOrIncrementMetadataAttempts(response, attemptsCount);\n return response;\n }\n else {\n addOrIncrementMetadataAttempts(error, attemptsCount);\n throw error;\n }\n };\n _b.label = 1;\n case 1:\n if (!(!(abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) && attemptsCount < maxAttempts)) return [3 /*break*/, 11];\n _b.label = 2;\n case 2:\n _b.trys.push([2, 4, , 5]);\n return [4 /*yield*/, next(request)];\n case 3:\n response = _b.sent();\n error = undefined;\n return [3 /*break*/, 5];\n case 4:\n e_1 = _b.sent();\n error = e_1;\n response = undefined;\n return [3 /*break*/, 5];\n case 5:\n // context.attemptsCount may be updated after calling next handler which may retry the request by itself.\n attemptsCount =\n context.attemptsCount > attemptsCount\n ? context.attemptsCount\n : attemptsCount + 1;\n context.attemptsCount = attemptsCount;\n return [4 /*yield*/, retryDecider(response, error)];\n case 6:\n if (!_b.sent()) return [3 /*break*/, 9];\n if (!(!(abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) && attemptsCount < maxAttempts)) return [3 /*break*/, 8];\n delay = computeDelay(attemptsCount);\n return [4 /*yield*/, cancellableSleep(delay, abortSignal)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3 /*break*/, 1];\n case 9: return [2 /*return*/, handleTerminalErrorOrResponse()];\n case 10: return [3 /*break*/, 1];\n case 11:\n if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {\n throw new Error('Request aborted.');\n }\n else {\n return [2 /*return*/, handleTerminalErrorOrResponse()];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n };\n};\nvar cancellableSleep = function (timeoutMs, abortSignal) {\n if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {\n return Promise.resolve();\n }\n var timeoutId;\n var sleepPromiseResolveFn;\n var sleepPromise = new Promise(function (resolve) {\n sleepPromiseResolveFn = resolve;\n timeoutId = setTimeout(resolve, timeoutMs);\n });\n abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener('abort', function cancelSleep(event) {\n clearTimeout(timeoutId);\n abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener('abort', cancelSleep);\n sleepPromiseResolveFn();\n });\n return sleepPromise;\n};\nvar addOrIncrementMetadataAttempts = function (nextHandlerOutput, attempts) {\n var _a;\n if (Object.prototype.toString.call(nextHandlerOutput) !== '[object Object]') {\n return;\n }\n nextHandlerOutput['$metadata'] = __assign(__assign({}, ((_a = nextHandlerOutput['$metadata']) !== null && _a !== void 0 ? _a : {})), { attempts: attempts });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/**\n * Middleware injects user agent string to specified header(default to 'x-amz-user-agent'),\n * if the header is not set already.\n *\n * TODO: incorporate new user agent design\n */\nexport var userAgentMiddleware = function (_a) {\n var _b = _a.userAgentHeader, userAgentHeader = _b === void 0 ? 'x-amz-user-agent' : _b, _c = _a.userAgentValue, userAgentValue = _c === void 0 ? '' : _c;\n return function (next) {\n return function userAgentMiddleware(request) {\n return __awaiter(this, void 0, void 0, function () {\n var result, headerName, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(userAgentValue.trim().length === 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, next(request)];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result];\n case 2:\n headerName = userAgentHeader.toLowerCase();\n request.headers[headerName] = request.headers[headerName]\n ? \"\".concat(request.headers[headerName], \" \").concat(userAgentValue)\n : userAgentValue;\n return [4 /*yield*/, next(request)];\n case 3:\n response = _a.sent();\n return [2 /*return*/, response];\n }\n });\n });\n };\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { parseMetadata } from './responseInfo';\n/**\n * Utility functions for serializing and deserializing of JSON protocol in general(including: REST-JSON, JSON-RPC, etc.)\n */\n/**\n * Error parser for AWS JSON protocol.\n */\nexport var parseJsonError = function (response) { return __awaiter(void 0, void 0, void 0, function () {\n var body, sanitizeErrorCode, code, message, error;\n var _a, _b, _c, _d, _e;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n if (!response || response.statusCode < 300) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, parseJsonBody(response)];\n case 1:\n body = _f.sent();\n sanitizeErrorCode = function (rawValue) {\n var _a = __read(rawValue.toString().split(/[\\,\\:]+/), 1), cleanValue = _a[0];\n if (cleanValue.includes('#')) {\n return cleanValue.split('#')[1];\n }\n return cleanValue;\n };\n code = sanitizeErrorCode((_c = (_b = (_a = response.headers['x-amzn-errortype']) !== null && _a !== void 0 ? _a : body.code) !== null && _b !== void 0 ? _b : body.__type) !== null && _c !== void 0 ? _c : 'UnknownError');\n message = (_e = (_d = body.message) !== null && _d !== void 0 ? _d : body.Message) !== null && _e !== void 0 ? _e : 'Unknown error';\n error = new Error(message);\n return [2 /*return*/, Object.assign(error, {\n name: code,\n $metadata: parseMetadata(response),\n })];\n }\n });\n}); };\n/**\n * Parse JSON response body to JavaScript object.\n */\nexport var parseJsonBody = function (response) { return __awaiter(void 0, void 0, void 0, function () {\n var output;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!response.body) {\n throw new Error('Missing response payload');\n }\n return [4 /*yield*/, response.body.json()];\n case 1:\n output = _a.sent();\n return [2 /*return*/, Object.assign(output, {\n $metadata: parseMetadata(response),\n })];\n }\n });\n}); };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexport var parseMetadata = function (response) {\n var _a, _b;\n var headers = response.headers, statusCode = response.statusCode;\n return __assign(__assign({}, (isMetadataBearer(response) ? response.$metadata : {})), { httpStatusCode: statusCode, requestId: (_b = (_a = headers['x-amzn-requestid']) !== null && _a !== void 0 ? _a : headers['x-amzn-request-id']) !== null && _b !== void 0 ? _b : headers['x-amz-request-id'], extendedRequestId: headers['x-amz-id-2'], cfId: headers['x-amz-cf-id'] });\n};\nvar isMetadataBearer = function (response) {\n return typeof (response === null || response === void 0 ? void 0 : response['$metadata']) === 'object';\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Cache the payload of a response body. It allows multiple calls to the body,\n * for example, when reading the body in both retry decider and error deserializer.\n * Caching body is allowed here because we call the body accessor(blob(), json(),\n * etc.) when body is small or streaming implementation is not available(RN).\n *\n * @internal\n */\nexport var withMemoization = function (payloadAccessor) {\n var cached;\n return function () {\n if (!cached) {\n // Explicitly not awaiting. Intermediate await would add overhead and\n // introduce a possible race in the event that this wrapper is called\n // again before the first `payloadAccessor` call resolves.\n cached = payloadAccessor();\n }\n return cached;\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * This Symbol is used to reference an internal-only PubSub provider that\n * is used for AppSync/GraphQL subscriptions in the API category.\n */\nvar hasSymbol = typeof Symbol !== 'undefined' && typeof Symbol.for === 'function';\nexport var INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER = hasSymbol\n ? Symbol.for('INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER')\n : '@@INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER';\nexport var USER_AGENT_HEADER = 'x-amz-user-agent';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ConsoleLogger as Logger } from './Logger';\nvar logger = new Logger('Parser');\nexport var parseAWSExports = function (config) {\n var amplifyConfig = {};\n // Analytics\n if (config['aws_mobile_analytics_app_id']) {\n var Analytics = {\n AWSPinpoint: {\n appId: config['aws_mobile_analytics_app_id'],\n region: config['aws_mobile_analytics_app_region'],\n },\n };\n amplifyConfig.Analytics = Analytics;\n }\n // Auth\n if (config['aws_cognito_identity_pool_id'] || config['aws_user_pools_id']) {\n amplifyConfig.Auth = {\n userPoolId: config['aws_user_pools_id'],\n userPoolWebClientId: config['aws_user_pools_web_client_id'],\n region: config['aws_cognito_region'],\n identityPoolId: config['aws_cognito_identity_pool_id'],\n identityPoolRegion: config['aws_cognito_region'],\n mandatorySignIn: config['aws_mandatory_sign_in'] === 'enable',\n signUpVerificationMethod: config['aws_cognito_sign_up_verification_method'] || 'code',\n };\n }\n // Storage\n var storageConfig;\n if (config['aws_user_files_s3_bucket']) {\n storageConfig = {\n AWSS3: {\n bucket: config['aws_user_files_s3_bucket'],\n region: config['aws_user_files_s3_bucket_region'],\n dangerouslyConnectToHttpEndpointForTesting: config['aws_user_files_s3_dangerously_connect_to_http_endpoint_for_testing'],\n },\n };\n }\n else {\n storageConfig = config ? config.Storage || config : {};\n }\n // Logging\n if (config['Logging']) {\n amplifyConfig.Logging = __assign(__assign({}, config['Logging']), { region: config['aws_project_region'] });\n }\n // Geo\n if (config['geo']) {\n amplifyConfig.Geo = Object.assign({}, config.geo);\n if (config.geo['amazon_location_service']) {\n amplifyConfig.Geo = {\n AmazonLocationService: config.geo['amazon_location_service'],\n };\n }\n }\n amplifyConfig.Analytics = Object.assign({}, amplifyConfig.Analytics, config.Analytics);\n amplifyConfig.Auth = Object.assign({}, amplifyConfig.Auth, config.Auth);\n amplifyConfig.Storage = Object.assign({}, storageConfig);\n amplifyConfig.Logging = Object.assign({}, amplifyConfig.Logging, config.Logging);\n logger.debug('parse config', config, 'to amplifyconfig', amplifyConfig);\n return amplifyConfig;\n};\n","import {\n BLOCK_SIZE,\n DIGEST_LENGTH,\n INIT,\n KEY,\n MAX_HASHABLE_LENGTH\n} from \"./constants\";\n\n/**\n * @internal\n */\nexport class RawSha256 {\n private state: Int32Array = Int32Array.from(INIT);\n private temp: Int32Array = new Int32Array(64);\n private buffer: Uint8Array = new Uint8Array(64);\n private bufferLength: number = 0;\n private bytesHashed: number = 0;\n\n /**\n * @internal\n */\n finished: boolean = false;\n\n update(data: Uint8Array): void {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n\n let position = 0;\n let { byteLength } = data;\n this.bytesHashed += byteLength;\n\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n }\n\n digest(): Uint8Array {\n if (!this.finished) {\n const bitsHashed = this.bytesHashed * 8;\n const bufferView = new DataView(\n this.buffer.buffer,\n this.buffer.byteOffset,\n this.buffer.byteLength\n );\n\n const undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n\n for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(\n BLOCK_SIZE - 8,\n Math.floor(bitsHashed / 0x100000000),\n true\n );\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n\n this.hashBuffer();\n\n this.finished = true;\n }\n\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n const out = new Uint8Array(DIGEST_LENGTH);\n for (let i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n\n return out;\n }\n\n private hashBuffer(): void {\n const { buffer, state } = this;\n\n let state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] =\n ((buffer[i * 4] & 0xff) << 24) |\n ((buffer[i * 4 + 1] & 0xff) << 16) |\n ((buffer[i * 4 + 2] & 0xff) << 8) |\n (buffer[i * 4 + 3] & 0xff);\n } else {\n let u = this.temp[i - 2];\n const t1 =\n ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n\n u = this.temp[i - 15];\n const t2 =\n ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n\n this.temp[i] =\n ((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0);\n }\n\n const t1 =\n ((((((state4 >>> 6) | (state4 << 26)) ^\n ((state4 >>> 11) | (state4 << 21)) ^\n ((state4 >>> 25) | (state4 << 7))) +\n ((state4 & state5) ^ (~state4 & state6))) |\n 0) +\n ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) |\n 0;\n\n const t2 =\n ((((state0 >>> 2) | (state0 << 30)) ^\n ((state0 >>> 13) | (state0 << 19)) ^\n ((state0 >>> 22) | (state0 << 10))) +\n ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n 0;\n\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n }\n}\n","/**\n * @internal\n */\nexport const BLOCK_SIZE: number = 64;\n\n/**\n * @internal\n */\nexport const DIGEST_LENGTH: number = 32;\n\n/**\n * @internal\n */\nexport const KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\n/**\n * @internal\n */\nexport const INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n];\n\n/**\n * @internal\n */\nexport const MAX_HASHABLE_LENGTH = 2 ** 53 - 1;\n","export * from \"./jsSha256\";\n","import { BLOCK_SIZE } from \"./constants\";\nimport { RawSha256 } from \"./RawSha256\";\nimport { Hash, SourceData } from \"@aws-sdk/types\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\n\nexport class Sha256 implements Hash {\n private readonly hash = new RawSha256();\n private readonly outer?: RawSha256;\n private error: any;\n\n constructor(secret?: SourceData) {\n if (secret) {\n this.outer = new RawSha256();\n const inner = bufferFromSecret(secret);\n const outer = new Uint8Array(BLOCK_SIZE);\n outer.set(inner);\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // overwrite the copied key in memory\n for (let i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n\n update(toHash: SourceData): void {\n if (isEmptyData(toHash) || this.error) {\n return;\n }\n\n try {\n this.hash.update(convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n }\n\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n digestSync(): Uint8Array {\n if (this.error) {\n throw this.error;\n }\n\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest();\n }\n\n return this.hash.digest();\n }\n\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n async digest(): Promise {\n return this.digestSync();\n }\n}\n\nfunction bufferFromSecret(secret: SourceData): Uint8Array {\n let input = convertToBuffer(secret);\n\n if (input.byteLength > BLOCK_SIZE) {\n const bufferHash = new RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n\n const buffer = new Uint8Array(BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 as fromUtf8Browser } from \"@aws-sdk/util-utf8-browser\";\n\n// Quick polyfill\nconst fromUtf8 =\n typeof Buffer !== \"undefined\" && Buffer.from\n ? (input: string) => Buffer.from(input, \"utf8\")\n : fromUtf8Browser;\n\nexport function convertToBuffer(data: SourceData): Uint8Array {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array) return data;\n\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(\n data.buffer,\n data.byteOffset,\n data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n );\n }\n\n return new Uint8Array(data);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport { convertToBuffer } from \"./convertToBuffer\";\nexport { isEmptyData } from \"./isEmptyData\";\nexport { numToUint8 } from \"./numToUint8\";\nexport {uint32ArrayFrom} from './uint32ArrayFrom';\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\n\nexport function isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function numToUint8(num: number) {\n return new Uint8Array([\n (num & 0xff000000) >> 24,\n (num & 0x00ff0000) >> 16,\n (num & 0x0000ff00) >> 8,\n num & 0x000000ff,\n ]);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// IE 11 does not support Array.from, so we do it manually\nexport function uint32ArrayFrom(a_lookUpTable: Array): Uint32Array {\n if (!Array.from) {\n const return_array = new Uint32Array(a_lookUpTable.length)\n let a_index = 0\n while (a_index < a_lookUpTable.length) {\n return_array[a_index] = a_lookUpTable[a_index]\n }\n return return_array\n }\n return Uint32Array.from(a_lookUpTable)\n}\n","import { fromUtf8 as jsFromUtf8, toUtf8 as jsToUtf8 } from \"./pureJs\";\nimport { fromUtf8 as textEncoderFromUtf8, toUtf8 as textEncoderToUtf8 } from \"./whatwgEncodingApi\";\n\ndeclare const TextDecoder: Function | undefined;\ndeclare const TextEncoder: Function | undefined;\n\nexport const fromUtf8 = (input: string): Uint8Array =>\n typeof TextEncoder === \"function\" ? textEncoderFromUtf8(input) : jsFromUtf8(input);\n\nexport const toUtf8 = (input: Uint8Array): string =>\n typeof TextDecoder === \"function\" ? textEncoderToUtf8(input) : jsToUtf8(input);\n","/**\n * A declaration of the global TextEncoder and TextDecoder constructors.\n *\n * @see https://encoding.spec.whatwg.org/\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Encoding {\n interface TextDecoderOptions {\n fatal?: boolean;\n ignoreBOM?: boolean;\n }\n\n interface TextDecodeOptions {\n stream?: boolean;\n }\n\n interface TextDecoder {\n readonly encoding: string;\n readonly fatal: boolean;\n readonly ignoreBOM: boolean;\n decode(input?: ArrayBuffer | ArrayBufferView, options?: TextDecodeOptions): string;\n }\n\n export interface TextDecoderConstructor {\n new (label?: string, options?: TextDecoderOptions): TextDecoder;\n }\n\n interface TextEncoder {\n readonly encoding: \"utf-8\";\n encode(input?: string): Uint8Array;\n }\n\n export interface TextEncoderConstructor {\n new (): TextEncoder;\n }\n}\n\ndeclare const TextDecoder: Encoding.TextDecoderConstructor;\n\ndeclare const TextEncoder: Encoding.TextEncoderConstructor;\n\nexport function fromUtf8(input: string): Uint8Array {\n return new TextEncoder().encode(input);\n}\n\nexport function toUtf8(input: Uint8Array): string {\n return new TextDecoder(\"utf-8\").decode(input);\n}\n","/**\n * Converts a JS string from its native UCS-2/UTF-16 representation into a\n * Uint8Array of the bytes used to represent the equivalent characters in UTF-8.\n *\n * Cribbed from the `goog.crypt.stringToUtf8ByteArray` function in the Google\n * Closure library, though updated to use typed arrays.\n */\nexport const fromUtf8 = (input: string): Uint8Array => {\n const bytes: Array = [];\n for (let i = 0, len = input.length; i < len; i++) {\n const value = input.charCodeAt(i);\n if (value < 0x80) {\n bytes.push(value);\n } else if (value < 0x800) {\n bytes.push((value >> 6) | 0b11000000, (value & 0b111111) | 0b10000000);\n } else if (i + 1 < input.length && (value & 0xfc00) === 0xd800 && (input.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n const surrogatePair = 0x10000 + ((value & 0b1111111111) << 10) + (input.charCodeAt(++i) & 0b1111111111);\n bytes.push(\n (surrogatePair >> 18) | 0b11110000,\n ((surrogatePair >> 12) & 0b111111) | 0b10000000,\n ((surrogatePair >> 6) & 0b111111) | 0b10000000,\n (surrogatePair & 0b111111) | 0b10000000\n );\n } else {\n bytes.push((value >> 12) | 0b11100000, ((value >> 6) & 0b111111) | 0b10000000, (value & 0b111111) | 0b10000000);\n }\n }\n\n return Uint8Array.from(bytes);\n};\n\n/**\n * Converts a typed array of bytes containing UTF-8 data into a native JS\n * string.\n *\n * Partly cribbed from the `goog.crypt.utf8ByteArrayToString` function in the\n * Google Closure library, though updated to use typed arrays and to better\n * handle astral plane code points.\n */\nexport const toUtf8 = (input: Uint8Array): string => {\n let decoded = \"\";\n for (let i = 0, len = input.length; i < len; i++) {\n const byte = input[i];\n if (byte < 0x80) {\n decoded += String.fromCharCode(byte);\n } else if (0b11000000 <= byte && byte < 0b11100000) {\n const nextByte = input[++i];\n decoded += String.fromCharCode(((byte & 0b11111) << 6) | (nextByte & 0b111111));\n } else if (0b11110000 <= byte && byte < 0b101101101) {\n const surrogatePair = [byte, input[++i], input[++i], input[++i]];\n const encoded = \"%\" + surrogatePair.map((byteValue) => byteValue.toString(16)).join(\"%\");\n decoded += decodeURIComponent(encoded);\n } else {\n decoded += String.fromCharCode(\n ((byte & 0b1111) << 12) | ((input[++i] & 0b111111) << 6) | (input[++i] & 0b111111)\n );\n }\n }\n\n return decoded;\n};\n","const createCapacitorPlatforms = (win) => {\n const defaultPlatformMap = new Map();\n defaultPlatformMap.set('web', { name: 'web' });\n const capPlatforms = win.CapacitorPlatforms || {\n currentPlatform: { name: 'web' },\n platforms: defaultPlatformMap,\n };\n const addPlatform = (name, platform) => {\n capPlatforms.platforms.set(name, platform);\n };\n const setPlatform = (name) => {\n if (capPlatforms.platforms.has(name)) {\n capPlatforms.currentPlatform = capPlatforms.platforms.get(name);\n }\n };\n capPlatforms.addPlatform = addPlatform;\n capPlatforms.setPlatform = setPlatform;\n return capPlatforms;\n};\nconst initPlatforms = (win) => (win.CapacitorPlatforms = createCapacitorPlatforms(win));\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nexport const CapacitorPlatforms = /*#__PURE__*/ initPlatforms((typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {}));\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nexport const addPlatform = CapacitorPlatforms.addPlatform;\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nexport const setPlatform = CapacitorPlatforms.setPlatform;\n//# sourceMappingURL=platforms.js.map","export var ExceptionCode;\n(function (ExceptionCode) {\n /**\n * API is not implemented.\n *\n * This usually means the API can't be used because it is not implemented for\n * the current platform.\n */\n ExceptionCode[\"Unimplemented\"] = \"UNIMPLEMENTED\";\n /**\n * API is not available.\n *\n * This means the API can't be used right now because:\n * - it is currently missing a prerequisite, such as network connectivity\n * - it requires a particular platform or browser version\n */\n ExceptionCode[\"Unavailable\"] = \"UNAVAILABLE\";\n})(ExceptionCode || (ExceptionCode = {}));\nexport class CapacitorException extends Error {\n constructor(message, code, data) {\n super(message);\n this.message = message;\n this.code = code;\n this.data = data;\n }\n}\nexport const getPlatformId = (win) => {\n var _a, _b;\n if (win === null || win === void 0 ? void 0 : win.androidBridge) {\n return 'android';\n }\n else if ((_b = (_a = win === null || win === void 0 ? void 0 : win.webkit) === null || _a === void 0 ? void 0 : _a.messageHandlers) === null || _b === void 0 ? void 0 : _b.bridge) {\n return 'ios';\n }\n else {\n return 'web';\n }\n};\n//# sourceMappingURL=util.js.map","import { CapacitorException, getPlatformId, ExceptionCode } from './util';\nexport const createCapacitor = (win) => {\n var _a, _b, _c, _d, _e;\n const capCustomPlatform = win.CapacitorCustomPlatform || null;\n const cap = win.Capacitor || {};\n const Plugins = (cap.Plugins = cap.Plugins || {});\n /**\n * @deprecated Use `capCustomPlatform` instead, default functions like registerPlugin will function with the new object.\n */\n const capPlatforms = win.CapacitorPlatforms;\n const defaultGetPlatform = () => {\n return capCustomPlatform !== null\n ? capCustomPlatform.name\n : getPlatformId(win);\n };\n const getPlatform = ((_a = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _a === void 0 ? void 0 : _a.getPlatform) || defaultGetPlatform;\n const defaultIsNativePlatform = () => getPlatform() !== 'web';\n const isNativePlatform = ((_b = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _b === void 0 ? void 0 : _b.isNativePlatform) || defaultIsNativePlatform;\n const defaultIsPluginAvailable = (pluginName) => {\n const plugin = registeredPlugins.get(pluginName);\n if (plugin === null || plugin === void 0 ? void 0 : plugin.platforms.has(getPlatform())) {\n // JS implementation available for the current platform.\n return true;\n }\n if (getPluginHeader(pluginName)) {\n // Native implementation available.\n return true;\n }\n return false;\n };\n const isPluginAvailable = ((_c = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _c === void 0 ? void 0 : _c.isPluginAvailable) ||\n defaultIsPluginAvailable;\n const defaultGetPluginHeader = (pluginName) => { var _a; return (_a = cap.PluginHeaders) === null || _a === void 0 ? void 0 : _a.find(h => h.name === pluginName); };\n const getPluginHeader = ((_d = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _d === void 0 ? void 0 : _d.getPluginHeader) || defaultGetPluginHeader;\n const handleError = (err) => win.console.error(err);\n const pluginMethodNoop = (_target, prop, pluginName) => {\n return Promise.reject(`${pluginName} does not have an implementation of \"${prop}\".`);\n };\n const registeredPlugins = new Map();\n const defaultRegisterPlugin = (pluginName, jsImplementations = {}) => {\n const registeredPlugin = registeredPlugins.get(pluginName);\n if (registeredPlugin) {\n console.warn(`Capacitor plugin \"${pluginName}\" already registered. Cannot register plugins twice.`);\n return registeredPlugin.proxy;\n }\n const platform = getPlatform();\n const pluginHeader = getPluginHeader(pluginName);\n let jsImplementation;\n const loadPluginImplementation = async () => {\n if (!jsImplementation && platform in jsImplementations) {\n jsImplementation =\n typeof jsImplementations[platform] === 'function'\n ? (jsImplementation = await jsImplementations[platform]())\n : (jsImplementation = jsImplementations[platform]);\n }\n else if (capCustomPlatform !== null &&\n !jsImplementation &&\n 'web' in jsImplementations) {\n jsImplementation =\n typeof jsImplementations['web'] === 'function'\n ? (jsImplementation = await jsImplementations['web']())\n : (jsImplementation = jsImplementations['web']);\n }\n return jsImplementation;\n };\n const createPluginMethod = (impl, prop) => {\n var _a, _b;\n if (pluginHeader) {\n const methodHeader = pluginHeader === null || pluginHeader === void 0 ? void 0 : pluginHeader.methods.find(m => prop === m.name);\n if (methodHeader) {\n if (methodHeader.rtype === 'promise') {\n return (options) => cap.nativePromise(pluginName, prop.toString(), options);\n }\n else {\n return (options, callback) => cap.nativeCallback(pluginName, prop.toString(), options, callback);\n }\n }\n else if (impl) {\n return (_a = impl[prop]) === null || _a === void 0 ? void 0 : _a.bind(impl);\n }\n }\n else if (impl) {\n return (_b = impl[prop]) === null || _b === void 0 ? void 0 : _b.bind(impl);\n }\n else {\n throw new CapacitorException(`\"${pluginName}\" plugin is not implemented on ${platform}`, ExceptionCode.Unimplemented);\n }\n };\n const createPluginMethodWrapper = (prop) => {\n let remove;\n const wrapper = (...args) => {\n const p = loadPluginImplementation().then(impl => {\n const fn = createPluginMethod(impl, prop);\n if (fn) {\n const p = fn(...args);\n remove = p === null || p === void 0 ? void 0 : p.remove;\n return p;\n }\n else {\n throw new CapacitorException(`\"${pluginName}.${prop}()\" is not implemented on ${platform}`, ExceptionCode.Unimplemented);\n }\n });\n if (prop === 'addListener') {\n p.remove = async () => remove();\n }\n return p;\n };\n // Some flair ✨\n wrapper.toString = () => `${prop.toString()}() { [capacitor code] }`;\n Object.defineProperty(wrapper, 'name', {\n value: prop,\n writable: false,\n configurable: false,\n });\n return wrapper;\n };\n const addListener = createPluginMethodWrapper('addListener');\n const removeListener = createPluginMethodWrapper('removeListener');\n const addListenerNative = (eventName, callback) => {\n const call = addListener({ eventName }, callback);\n const remove = async () => {\n const callbackId = await call;\n removeListener({\n eventName,\n callbackId,\n }, callback);\n };\n const p = new Promise(resolve => call.then(() => resolve({ remove })));\n p.remove = async () => {\n console.warn(`Using addListener() without 'await' is deprecated.`);\n await remove();\n };\n return p;\n };\n const proxy = new Proxy({}, {\n get(_, prop) {\n switch (prop) {\n // https://github.com/facebook/react/issues/20030\n case '$$typeof':\n return undefined;\n case 'toJSON':\n return () => ({});\n case 'addListener':\n return pluginHeader ? addListenerNative : addListener;\n case 'removeListener':\n return removeListener;\n default:\n return createPluginMethodWrapper(prop);\n }\n },\n });\n Plugins[pluginName] = proxy;\n registeredPlugins.set(pluginName, {\n name: pluginName,\n proxy,\n platforms: new Set([\n ...Object.keys(jsImplementations),\n ...(pluginHeader ? [platform] : []),\n ]),\n });\n return proxy;\n };\n const registerPlugin = ((_e = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _e === void 0 ? void 0 : _e.registerPlugin) || defaultRegisterPlugin;\n // Add in convertFileSrc for web, it will already be available in native context\n if (!cap.convertFileSrc) {\n cap.convertFileSrc = filePath => filePath;\n }\n cap.getPlatform = getPlatform;\n cap.handleError = handleError;\n cap.isNativePlatform = isNativePlatform;\n cap.isPluginAvailable = isPluginAvailable;\n cap.pluginMethodNoop = pluginMethodNoop;\n cap.registerPlugin = registerPlugin;\n cap.Exception = CapacitorException;\n cap.DEBUG = !!cap.DEBUG;\n cap.isLoggingEnabled = !!cap.isLoggingEnabled;\n // Deprecated props\n cap.platform = cap.getPlatform();\n cap.isNative = cap.isNativePlatform();\n return cap;\n};\nexport const initCapacitorGlobal = (win) => (win.Capacitor = createCapacitor(win));\n//# sourceMappingURL=runtime.js.map","import { legacyRegisterWebPlugin } from './legacy/legacy-web-plugin-merge';\nimport { initCapacitorGlobal } from './runtime';\nexport const Capacitor = /*#__PURE__*/ initCapacitorGlobal(typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {});\nexport const registerPlugin = Capacitor.registerPlugin;\n/**\n * @deprecated Provided for backwards compatibility for Capacitor v2 plugins.\n * Capacitor v3 plugins should import the plugin directly. This \"Plugins\"\n * export is deprecated in v3, and will be removed in v4.\n */\nexport const Plugins = Capacitor.Plugins;\n/**\n * Provided for backwards compatibility. Use the registerPlugin() API\n * instead, and provide the web plugin as the \"web\" implmenetation.\n * For example\n *\n * export const Example = registerPlugin('Example', {\n * web: () => import('./web').then(m => new m.Example())\n * })\n *\n * @deprecated Deprecated in v3, will be removed from v4.\n */\nexport const registerWebPlugin = (plugin) => legacyRegisterWebPlugin(Capacitor, plugin);\n//# sourceMappingURL=global.js.map","import { Capacitor } from './global';\nimport { ExceptionCode } from './util';\n/**\n * Base class web plugins should extend.\n */\nexport class WebPlugin {\n constructor(config) {\n this.listeners = {};\n this.windowListeners = {};\n if (config) {\n // TODO: add link to upgrade guide\n console.warn(`Capacitor WebPlugin \"${config.name}\" config object was deprecated in v3 and will be removed in v4.`);\n this.config = config;\n }\n }\n addListener(eventName, listenerFunc) {\n const listeners = this.listeners[eventName];\n if (!listeners) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push(listenerFunc);\n // If we haven't added a window listener for this event and it requires one,\n // go ahead and add it\n const windowListener = this.windowListeners[eventName];\n if (windowListener && !windowListener.registered) {\n this.addWindowListener(windowListener);\n }\n const remove = async () => this.removeListener(eventName, listenerFunc);\n const p = Promise.resolve({ remove });\n Object.defineProperty(p, 'remove', {\n value: async () => {\n console.warn(`Using addListener() without 'await' is deprecated.`);\n await remove();\n },\n });\n return p;\n }\n async removeAllListeners() {\n this.listeners = {};\n for (const listener in this.windowListeners) {\n this.removeWindowListener(this.windowListeners[listener]);\n }\n this.windowListeners = {};\n }\n notifyListeners(eventName, data) {\n const listeners = this.listeners[eventName];\n if (listeners) {\n listeners.forEach(listener => listener(data));\n }\n }\n hasListeners(eventName) {\n return !!this.listeners[eventName].length;\n }\n registerWindowListener(windowEventName, pluginEventName) {\n this.windowListeners[pluginEventName] = {\n registered: false,\n windowEventName,\n pluginEventName,\n handler: event => {\n this.notifyListeners(pluginEventName, event);\n },\n };\n }\n unimplemented(msg = 'not implemented') {\n return new Capacitor.Exception(msg, ExceptionCode.Unimplemented);\n }\n unavailable(msg = 'not available') {\n return new Capacitor.Exception(msg, ExceptionCode.Unavailable);\n }\n async removeListener(eventName, listenerFunc) {\n const listeners = this.listeners[eventName];\n if (!listeners) {\n return;\n }\n const index = listeners.indexOf(listenerFunc);\n this.listeners[eventName].splice(index, 1);\n // If there are no more listeners for this type of event,\n // remove the window listener\n if (!this.listeners[eventName].length) {\n this.removeWindowListener(this.windowListeners[eventName]);\n }\n }\n addWindowListener(handle) {\n window.addEventListener(handle.windowEventName, handle.handler);\n handle.registered = true;\n }\n removeWindowListener(handle) {\n if (!handle) {\n return;\n }\n window.removeEventListener(handle.windowEventName, handle.handler);\n handle.registered = false;\n }\n}\n//# sourceMappingURL=web-plugin.js.map","import { registerPlugin } from './global';\nimport { WebPlugin } from './web-plugin';\nexport const WebView = /*#__PURE__*/ registerPlugin('WebView');\n/******** END WEB VIEW PLUGIN ********/\n/******** COOKIES PLUGIN ********/\n/**\n * Safely web encode a string value (inspired by js-cookie)\n * @param str The string value to encode\n */\nconst encode = (str) => encodeURIComponent(str)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n/**\n * Safely web decode a string value (inspired by js-cookie)\n * @param str The string value to decode\n */\nconst decode = (str) => str.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent);\nexport class CapacitorCookiesPluginWeb extends WebPlugin {\n async getCookies() {\n const cookies = document.cookie;\n const cookieMap = {};\n cookies.split(';').forEach(cookie => {\n if (cookie.length <= 0)\n return;\n // Replace first \"=\" with CAP_COOKIE to prevent splitting on additional \"=\"\n let [key, value] = cookie.replace(/=/, 'CAP_COOKIE').split('CAP_COOKIE');\n key = decode(key).trim();\n value = decode(value).trim();\n cookieMap[key] = value;\n });\n return cookieMap;\n }\n async setCookie(options) {\n try {\n // Safely Encoded Key/Value\n const encodedKey = encode(options.key);\n const encodedValue = encode(options.value);\n // Clean & sanitize options\n const expires = `; expires=${(options.expires || '').replace('expires=', '')}`; // Default is \"; expires=\"\n const path = (options.path || '/').replace('path=', ''); // Default is \"path=/\"\n const domain = options.url != null && options.url.length > 0\n ? `domain=${options.url}`\n : '';\n document.cookie = `${encodedKey}=${encodedValue || ''}${expires}; path=${path}; ${domain};`;\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n async deleteCookie(options) {\n try {\n document.cookie = `${options.key}=; Max-Age=0`;\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n async clearCookies() {\n try {\n const cookies = document.cookie.split(';') || [];\n for (const cookie of cookies) {\n document.cookie = cookie\n .replace(/^ +/, '')\n .replace(/=.*/, `=;expires=${new Date().toUTCString()};path=/`);\n }\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n async clearAllCookies() {\n try {\n await this.clearCookies();\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n}\nexport const CapacitorCookies = registerPlugin('CapacitorCookies', {\n web: () => new CapacitorCookiesPluginWeb(),\n});\n// UTILITY FUNCTIONS\n/**\n * Read in a Blob value and return it as a base64 string\n * @param blob The blob value to convert to a base64 string\n */\nexport const readBlobAsBase64 = async (blob) => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64String = reader.result;\n // remove prefix \"data:application/pdf;base64,\"\n resolve(base64String.indexOf(',') >= 0\n ? base64String.split(',')[1]\n : base64String);\n };\n reader.onerror = (error) => reject(error);\n reader.readAsDataURL(blob);\n});\n/**\n * Normalize an HttpHeaders map by lowercasing all of the values\n * @param headers The HttpHeaders object to normalize\n */\nconst normalizeHttpHeaders = (headers = {}) => {\n const originalKeys = Object.keys(headers);\n const loweredKeys = Object.keys(headers).map(k => k.toLocaleLowerCase());\n const normalized = loweredKeys.reduce((acc, key, index) => {\n acc[key] = headers[originalKeys[index]];\n return acc;\n }, {});\n return normalized;\n};\n/**\n * Builds a string of url parameters that\n * @param params A map of url parameters\n * @param shouldEncode true if you should encodeURIComponent() the values (true by default)\n */\nconst buildUrlParams = (params, shouldEncode = true) => {\n if (!params)\n return null;\n const output = Object.entries(params).reduce((accumulator, entry) => {\n const [key, value] = entry;\n let encodedValue;\n let item;\n if (Array.isArray(value)) {\n item = '';\n value.forEach(str => {\n encodedValue = shouldEncode ? encodeURIComponent(str) : str;\n item += `${key}=${encodedValue}&`;\n });\n // last character will always be \"&\" so slice it off\n item.slice(0, -1);\n }\n else {\n encodedValue = shouldEncode ? encodeURIComponent(value) : value;\n item = `${key}=${encodedValue}`;\n }\n return `${accumulator}&${item}`;\n }, '');\n // Remove initial \"&\" from the reduce\n return output.substr(1);\n};\n/**\n * Build the RequestInit object based on the options passed into the initial request\n * @param options The Http plugin options\n * @param extra Any extra RequestInit values\n */\nexport const buildRequestInit = (options, extra = {}) => {\n const output = Object.assign({ method: options.method || 'GET', headers: options.headers }, extra);\n // Get the content-type\n const headers = normalizeHttpHeaders(options.headers);\n const type = headers['content-type'] || '';\n // If body is already a string, then pass it through as-is.\n if (typeof options.data === 'string') {\n output.body = options.data;\n }\n // Build request initializers based off of content-type\n else if (type.includes('application/x-www-form-urlencoded')) {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(options.data || {})) {\n params.set(key, value);\n }\n output.body = params.toString();\n }\n else if (type.includes('multipart/form-data') ||\n options.data instanceof FormData) {\n const form = new FormData();\n if (options.data instanceof FormData) {\n options.data.forEach((value, key) => {\n form.append(key, value);\n });\n }\n else {\n for (const key of Object.keys(options.data)) {\n form.append(key, options.data[key]);\n }\n }\n output.body = form;\n const headers = new Headers(output.headers);\n headers.delete('content-type'); // content-type will be set by `window.fetch` to includy boundary\n output.headers = headers;\n }\n else if (type.includes('application/json') ||\n typeof options.data === 'object') {\n output.body = JSON.stringify(options.data);\n }\n return output;\n};\n// WEB IMPLEMENTATION\nexport class CapacitorHttpPluginWeb extends WebPlugin {\n /**\n * Perform an Http request given a set of options\n * @param options Options to build the HTTP request\n */\n async request(options) {\n const requestInit = buildRequestInit(options, options.webFetchExtra);\n const urlParams = buildUrlParams(options.params, options.shouldEncodeUrlParams);\n const url = urlParams ? `${options.url}?${urlParams}` : options.url;\n const response = await fetch(url, requestInit);\n const contentType = response.headers.get('content-type') || '';\n // Default to 'text' responseType so no parsing happens\n let { responseType = 'text' } = response.ok ? options : {};\n // If the response content-type is json, force the response to be json\n if (contentType.includes('application/json')) {\n responseType = 'json';\n }\n let data;\n let blob;\n switch (responseType) {\n case 'arraybuffer':\n case 'blob':\n blob = await response.blob();\n data = await readBlobAsBase64(blob);\n break;\n case 'json':\n data = await response.json();\n break;\n case 'document':\n case 'text':\n default:\n data = await response.text();\n }\n // Convert fetch headers to Capacitor HttpHeaders\n const headers = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return {\n data,\n headers,\n status: response.status,\n url: response.url,\n };\n }\n /**\n * Perform an Http GET request given a set of options\n * @param options Options to build the HTTP request\n */\n async get(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'GET' }));\n }\n /**\n * Perform an Http POST request given a set of options\n * @param options Options to build the HTTP request\n */\n async post(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'POST' }));\n }\n /**\n * Perform an Http PUT request given a set of options\n * @param options Options to build the HTTP request\n */\n async put(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'PUT' }));\n }\n /**\n * Perform an Http PATCH request given a set of options\n * @param options Options to build the HTTP request\n */\n async patch(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'PATCH' }));\n }\n /**\n * Perform an Http DELETE request given a set of options\n * @param options Options to build the HTTP request\n */\n async delete(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'DELETE' }));\n }\n}\nexport const CapacitorHttp = registerPlugin('CapacitorHttp', {\n web: () => new CapacitorHttpPluginWeb(),\n});\n/******** END HTTP PLUGIN ********/\n//# sourceMappingURL=core-plugins.js.map","import { registerPlugin } from '@capacitor/core';\n\nimport type { GeolocationPlugin } from './definitions';\n\nconst Geolocation = registerPlugin('Geolocation', {\n web: () => import('./web').then(m => new m.GeolocationWeb()),\n});\n\nexport * from './definitions';\nexport { Geolocation };\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n","import {IMPORT, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = element.parent === children[0]; // in nested rules comments become children of the \"auto-inserted\" rule\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? children[0].children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if ( key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport default createCache;\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","import createCache from '@emotion/cache';\nimport { serializeStyles } from '@emotion/serialize';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\n\nfunction insertWithoutScoping(cache, serialized) {\n if (cache.inserted[serialized.name] === undefined) {\n return cache.insert('', serialized, cache.sheet, true);\n }\n}\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar createEmotion = function createEmotion(options) {\n var cache = createCache(options); // $FlowFixMe\n\n cache.sheet.speedy = function (value) {\n if (process.env.NODE_ENV !== 'production' && this.ctr !== 0) {\n throw new Error('speedy must be changed before any rules are inserted');\n }\n\n this.isSpeedy = value;\n };\n\n cache.compat = true;\n\n var css = function css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered, undefined);\n insertStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var keyframes = function keyframes() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n var animation = \"animation-\" + serialized.name;\n insertWithoutScoping(cache, {\n name: serialized.name,\n styles: \"@keyframes \" + animation + \"{\" + serialized.styles + \"}\"\n });\n return animation;\n };\n\n var injectGlobal = function injectGlobal() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n insertWithoutScoping(cache, serialized);\n };\n\n var cx = function cx() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n return {\n css: css,\n cx: cx,\n injectGlobal: injectGlobal,\n keyframes: keyframes,\n hydrate: function hydrate(ids) {\n ids.forEach(function (key) {\n cache.inserted[key] = true;\n });\n },\n flush: function flush() {\n cache.registered = {};\n cache.inserted = {};\n cache.sheet.flush();\n },\n // $FlowFixMe\n sheet: cache.sheet,\n cache: cache,\n getRegisteredStyles: getRegisteredStyles.bind(null, cache.registered),\n merge: merge.bind(null, cache.registered, css)\n };\n};\n\nvar classnames = function classnames(args) {\n var cls = '';\n\n for (var i = 0; i < args.length; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nexport default createEmotion;\n","import '@emotion/cache';\nimport '@emotion/serialize';\nimport '@emotion/utils';\nimport createEmotion from '../create-instance/dist/emotion-css-create-instance.esm.js';\n\nvar _createEmotion = createEmotion({\n key: 'css'\n}),\n flush = _createEmotion.flush,\n hydrate = _createEmotion.hydrate,\n cx = _createEmotion.cx,\n merge = _createEmotion.merge,\n getRegisteredStyles = _createEmotion.getRegisteredStyles,\n injectGlobal = _createEmotion.injectGlobal,\n keyframes = _createEmotion.keyframes,\n css = _createEmotion.css,\n sheet = _createEmotion.sheet,\n cache = _createEmotion.cache;\n\nexport { cache, css, cx, flush, getRegisteredStyles, hydrate, injectGlobal, keyframes, merge, sheet };\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@googlemaps/js-api-loader'), require('react')) :\n typeof define === 'function' && define.amd ? define(['exports', '@googlemaps/js-api-loader', 'react'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Loader = {}, global.jsApiLoader, global.React));\n})(this, (function (exports, jsApiLoader, React) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var React__default = /*#__PURE__*/_interopDefaultLegacy(React);\n\n /**\n * Copyright 2021 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n exports.Status = void 0;\n (function (Status) {\n Status[\"LOADING\"] = \"LOADING\";\n Status[\"FAILURE\"] = \"FAILURE\";\n Status[\"SUCCESS\"] = \"SUCCESS\";\n })(exports.Status || (exports.Status = {}));\n /**\n * A component to wrap the loading of the Google Maps JavaScript API.\n *\n * ```\n * import { Wrapper } from '@googlemaps/react-wrapper';\n *\n * const MyApp = () => (\n * \t\n * \t\t\n * \t\n * );\n * ```\n *\n * @param props\n */\n const Wrapper = ({ children, render, callback, ...options }) => {\n const [status, setStatus] = React.useState(exports.Status.LOADING);\n React.useEffect(() => {\n const loader = new jsApiLoader.Loader(options);\n const setStatusAndExecuteCallback = (status) => {\n if (callback)\n callback(status, loader);\n setStatus(status);\n };\n setStatusAndExecuteCallback(exports.Status.LOADING);\n loader.load().then(() => setStatusAndExecuteCallback(exports.Status.SUCCESS), () => setStatusAndExecuteCallback(exports.Status.FAILURE));\n }, []);\n if (status === exports.Status.SUCCESS && children)\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n if (render)\n return render(status);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n };\n\n exports.Wrapper = Wrapper;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { w as win } from './index5.js';\nimport { r as raf } from './helpers.js';\n\nlet animationPrefix;\n/**\n * Web Animations requires hyphenated CSS properties\n * to be written in camelCase when animating\n */\nconst processKeyframes = (keyframes) => {\n keyframes.forEach((keyframe) => {\n for (const key in keyframe) {\n // eslint-disable-next-line no-prototype-builtins\n if (keyframe.hasOwnProperty(key)) {\n const value = keyframe[key];\n if (key === 'easing') {\n const newKey = 'animation-timing-function';\n keyframe[newKey] = value;\n delete keyframe[key];\n }\n else {\n const newKey = convertCamelCaseToHypen(key);\n if (newKey !== key) {\n keyframe[newKey] = value;\n delete keyframe[key];\n }\n }\n }\n }\n });\n return keyframes;\n};\nconst convertCamelCaseToHypen = (str) => {\n return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n};\nconst getAnimationPrefix = (el) => {\n if (animationPrefix === undefined) {\n const supportsUnprefixed = el.style.animationName !== undefined;\n const supportsWebkitPrefix = el.style.webkitAnimationName !== undefined;\n animationPrefix = !supportsUnprefixed && supportsWebkitPrefix ? '-webkit-' : '';\n }\n return animationPrefix;\n};\nconst setStyleProperty = (element, propertyName, value) => {\n const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';\n element.style.setProperty(prefix + propertyName, value);\n};\nconst removeStyleProperty = (element, propertyName) => {\n const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';\n element.style.removeProperty(prefix + propertyName);\n};\nconst animationEnd = (el, callback) => {\n let unRegTrans;\n const opts = { passive: true };\n const unregister = () => {\n if (unRegTrans) {\n unRegTrans();\n }\n };\n const onTransitionEnd = (ev) => {\n if (el === ev.target) {\n unregister();\n callback(ev);\n }\n };\n if (el) {\n el.addEventListener('webkitAnimationEnd', onTransitionEnd, opts);\n el.addEventListener('animationend', onTransitionEnd, opts);\n unRegTrans = () => {\n el.removeEventListener('webkitAnimationEnd', onTransitionEnd, opts);\n el.removeEventListener('animationend', onTransitionEnd, opts);\n };\n }\n return unregister;\n};\n// TODO(FW-2832): type\nconst generateKeyframeRules = (keyframes = []) => {\n return keyframes\n .map((keyframe) => {\n const offset = keyframe.offset;\n const frameString = [];\n for (const property in keyframe) {\n // eslint-disable-next-line no-prototype-builtins\n if (keyframe.hasOwnProperty(property) && property !== 'offset') {\n frameString.push(`${property}: ${keyframe[property]};`);\n }\n }\n return `${offset * 100}% { ${frameString.join(' ')} }`;\n })\n .join(' ');\n};\nconst keyframeIds = [];\nconst generateKeyframeName = (keyframeRules) => {\n let index = keyframeIds.indexOf(keyframeRules);\n if (index < 0) {\n index = keyframeIds.push(keyframeRules) - 1;\n }\n return `ion-animation-${index}`;\n};\nconst getStyleContainer = (element) => {\n // getRootNode is not always available in SSR environments.\n // TODO(FW-2832): types\n const rootNode = element.getRootNode !== undefined ? element.getRootNode() : element;\n return rootNode.head || rootNode;\n};\nconst createKeyframeStylesheet = (keyframeName, keyframeRules, element) => {\n var _a;\n const styleContainer = getStyleContainer(element);\n const keyframePrefix = getAnimationPrefix(element);\n const existingStylesheet = styleContainer.querySelector('#' + keyframeName);\n if (existingStylesheet) {\n return existingStylesheet;\n }\n const stylesheet = ((_a = element.ownerDocument) !== null && _a !== void 0 ? _a : document).createElement('style');\n stylesheet.id = keyframeName;\n stylesheet.textContent = `@${keyframePrefix}keyframes ${keyframeName} { ${keyframeRules} } @${keyframePrefix}keyframes ${keyframeName}-alt { ${keyframeRules} }`;\n styleContainer.appendChild(stylesheet);\n return stylesheet;\n};\nconst addClassToArray = (classes = [], className) => {\n if (className !== undefined) {\n const classNameToAppend = Array.isArray(className) ? className : [className];\n return [...classes, ...classNameToAppend];\n }\n return classes;\n};\n\nconst createAnimation = (animationId) => {\n let _delay;\n let _duration;\n let _easing;\n let _iterations;\n let _fill;\n let _direction;\n let _keyframes = [];\n let beforeAddClasses = [];\n let beforeRemoveClasses = [];\n let initialized = false;\n let parentAnimation;\n let beforeStylesValue = {};\n let afterAddClasses = [];\n let afterRemoveClasses = [];\n let afterStylesValue = {};\n let numAnimationsRunning = 0;\n let shouldForceLinearEasing = false;\n let shouldForceSyncPlayback = false;\n let cssAnimationsTimerFallback;\n let forceDirectionValue;\n let forceDurationValue;\n let forceDelayValue;\n let willComplete = true;\n let finished = false;\n let shouldCalculateNumAnimations = true;\n let keyframeName;\n let ani;\n let paused = false;\n const id = animationId;\n const onFinishCallbacks = [];\n const onFinishOneTimeCallbacks = [];\n const onStopOneTimeCallbacks = [];\n const elements = [];\n const childAnimations = [];\n const stylesheets = [];\n const _beforeAddReadFunctions = [];\n const _beforeAddWriteFunctions = [];\n const _afterAddReadFunctions = [];\n const _afterAddWriteFunctions = [];\n const webAnimations = [];\n const supportsAnimationEffect = typeof AnimationEffect === 'function' ||\n (win !== undefined && typeof win.AnimationEffect === 'function');\n const supportsWebAnimations = typeof Element === 'function' &&\n typeof Element.prototype.animate === 'function' &&\n supportsAnimationEffect;\n const ANIMATION_END_FALLBACK_PADDING_MS = 100;\n const getWebAnimations = () => {\n return webAnimations;\n };\n const destroy = (clearStyleSheets) => {\n childAnimations.forEach((childAnimation) => {\n childAnimation.destroy(clearStyleSheets);\n });\n cleanUp(clearStyleSheets);\n elements.length = 0;\n childAnimations.length = 0;\n _keyframes.length = 0;\n clearOnFinish();\n initialized = false;\n shouldCalculateNumAnimations = true;\n return ani;\n };\n /**\n * Cancels any Web Animations, removes\n * any animation properties from the\n * animation's elements, and removes the\n * animation's stylesheets from the DOM.\n */\n const cleanUp = (clearStyleSheets) => {\n cleanUpElements();\n if (clearStyleSheets) {\n cleanUpStyleSheets();\n }\n };\n const resetFlags = () => {\n shouldForceLinearEasing = false;\n shouldForceSyncPlayback = false;\n shouldCalculateNumAnimations = true;\n forceDirectionValue = undefined;\n forceDurationValue = undefined;\n forceDelayValue = undefined;\n numAnimationsRunning = 0;\n finished = false;\n willComplete = true;\n paused = false;\n };\n const isRunning = () => {\n return numAnimationsRunning !== 0 && !paused;\n };\n /**\n * @internal\n * Remove a callback from a chosen callback array\n * @param callbackToRemove: A reference to the callback that should be removed\n * @param callbackObjects: An array of callbacks that callbackToRemove should be removed from.\n */\n const clearCallback = (callbackToRemove, callbackObjects) => {\n const index = callbackObjects.findIndex((callbackObject) => callbackObject.c === callbackToRemove);\n if (index > -1) {\n callbackObjects.splice(index, 1);\n }\n };\n /**\n * @internal\n * Add a callback to be fired when an animation is stopped/cancelled.\n * @param callback: A reference to the callback that should be fired\n * @param opts: Any options associated with this particular callback\n */\n const onStop = (callback, opts) => {\n onStopOneTimeCallbacks.push({ c: callback, o: opts });\n return ani;\n };\n const onFinish = (callback, opts) => {\n const callbacks = (opts === null || opts === void 0 ? void 0 : opts.oneTimeCallback) ? onFinishOneTimeCallbacks : onFinishCallbacks;\n callbacks.push({ c: callback, o: opts });\n return ani;\n };\n const clearOnFinish = () => {\n onFinishCallbacks.length = 0;\n onFinishOneTimeCallbacks.length = 0;\n return ani;\n };\n /**\n * Cancels any Web Animations and removes\n * any animation properties from the\n * the animation's elements.\n */\n const cleanUpElements = () => {\n if (supportsWebAnimations) {\n webAnimations.forEach((animation) => {\n animation.cancel();\n });\n webAnimations.length = 0;\n }\n else {\n const elementsArray = elements.slice();\n raf(() => {\n elementsArray.forEach((element) => {\n removeStyleProperty(element, 'animation-name');\n removeStyleProperty(element, 'animation-duration');\n removeStyleProperty(element, 'animation-timing-function');\n removeStyleProperty(element, 'animation-iteration-count');\n removeStyleProperty(element, 'animation-delay');\n removeStyleProperty(element, 'animation-play-state');\n removeStyleProperty(element, 'animation-fill-mode');\n removeStyleProperty(element, 'animation-direction');\n });\n });\n }\n };\n /**\n * Removes the animation's stylesheets\n * from the DOM.\n */\n const cleanUpStyleSheets = () => {\n stylesheets.forEach((stylesheet) => {\n /**\n * When sharing stylesheets, it's possible\n * for another animation to have already\n * cleaned up a particular stylesheet\n */\n if (stylesheet === null || stylesheet === void 0 ? void 0 : stylesheet.parentNode) {\n stylesheet.parentNode.removeChild(stylesheet);\n }\n });\n stylesheets.length = 0;\n };\n const beforeAddRead = (readFn) => {\n _beforeAddReadFunctions.push(readFn);\n return ani;\n };\n const beforeAddWrite = (writeFn) => {\n _beforeAddWriteFunctions.push(writeFn);\n return ani;\n };\n const afterAddRead = (readFn) => {\n _afterAddReadFunctions.push(readFn);\n return ani;\n };\n const afterAddWrite = (writeFn) => {\n _afterAddWriteFunctions.push(writeFn);\n return ani;\n };\n const beforeAddClass = (className) => {\n beforeAddClasses = addClassToArray(beforeAddClasses, className);\n return ani;\n };\n const beforeRemoveClass = (className) => {\n beforeRemoveClasses = addClassToArray(beforeRemoveClasses, className);\n return ani;\n };\n /**\n * Set CSS inline styles to the animation's\n * elements before the animation begins.\n */\n const beforeStyles = (styles = {}) => {\n beforeStylesValue = styles;\n return ani;\n };\n /**\n * Clear CSS inline styles from the animation's\n * elements before the animation begins.\n */\n const beforeClearStyles = (propertyNames = []) => {\n for (const property of propertyNames) {\n beforeStylesValue[property] = '';\n }\n return ani;\n };\n const afterAddClass = (className) => {\n afterAddClasses = addClassToArray(afterAddClasses, className);\n return ani;\n };\n const afterRemoveClass = (className) => {\n afterRemoveClasses = addClassToArray(afterRemoveClasses, className);\n return ani;\n };\n const afterStyles = (styles = {}) => {\n afterStylesValue = styles;\n return ani;\n };\n const afterClearStyles = (propertyNames = []) => {\n for (const property of propertyNames) {\n afterStylesValue[property] = '';\n }\n return ani;\n };\n const getFill = () => {\n if (_fill !== undefined) {\n return _fill;\n }\n if (parentAnimation) {\n return parentAnimation.getFill();\n }\n return 'both';\n };\n const getDirection = () => {\n if (forceDirectionValue !== undefined) {\n return forceDirectionValue;\n }\n if (_direction !== undefined) {\n return _direction;\n }\n if (parentAnimation) {\n return parentAnimation.getDirection();\n }\n return 'normal';\n };\n const getEasing = () => {\n if (shouldForceLinearEasing) {\n return 'linear';\n }\n if (_easing !== undefined) {\n return _easing;\n }\n if (parentAnimation) {\n return parentAnimation.getEasing();\n }\n return 'linear';\n };\n const getDuration = () => {\n if (shouldForceSyncPlayback) {\n return 0;\n }\n if (forceDurationValue !== undefined) {\n return forceDurationValue;\n }\n if (_duration !== undefined) {\n return _duration;\n }\n if (parentAnimation) {\n return parentAnimation.getDuration();\n }\n return 0;\n };\n const getIterations = () => {\n if (_iterations !== undefined) {\n return _iterations;\n }\n if (parentAnimation) {\n return parentAnimation.getIterations();\n }\n return 1;\n };\n const getDelay = () => {\n if (forceDelayValue !== undefined) {\n return forceDelayValue;\n }\n if (_delay !== undefined) {\n return _delay;\n }\n if (parentAnimation) {\n return parentAnimation.getDelay();\n }\n return 0;\n };\n const getKeyframes = () => {\n return _keyframes;\n };\n const direction = (animationDirection) => {\n _direction = animationDirection;\n update(true);\n return ani;\n };\n const fill = (animationFill) => {\n _fill = animationFill;\n update(true);\n return ani;\n };\n const delay = (animationDelay) => {\n _delay = animationDelay;\n update(true);\n return ani;\n };\n const easing = (animationEasing) => {\n _easing = animationEasing;\n update(true);\n return ani;\n };\n const duration = (animationDuration) => {\n /**\n * CSS Animation Durations of 0ms work fine on Chrome\n * but do not run on Safari, so force it to 1ms to\n * get it to run on both platforms.\n */\n if (!supportsWebAnimations && animationDuration === 0) {\n animationDuration = 1;\n }\n _duration = animationDuration;\n update(true);\n return ani;\n };\n const iterations = (animationIterations) => {\n _iterations = animationIterations;\n update(true);\n return ani;\n };\n const parent = (animation) => {\n parentAnimation = animation;\n return ani;\n };\n const addElement = (el) => {\n if (el != null) {\n if (el.nodeType === 1) {\n elements.push(el);\n }\n else if (el.length >= 0) {\n for (let i = 0; i < el.length; i++) {\n elements.push(el[i]);\n }\n }\n else {\n console.error('Invalid addElement value');\n }\n }\n return ani;\n };\n const addAnimation = (animationToAdd) => {\n if (animationToAdd != null) {\n if (Array.isArray(animationToAdd)) {\n for (const animation of animationToAdd) {\n animation.parent(ani);\n childAnimations.push(animation);\n }\n }\n else {\n animationToAdd.parent(ani);\n childAnimations.push(animationToAdd);\n }\n }\n return ani;\n };\n const keyframes = (keyframeValues) => {\n const different = _keyframes !== keyframeValues;\n _keyframes = keyframeValues;\n if (different) {\n updateKeyframes(_keyframes);\n }\n return ani;\n };\n const updateKeyframes = (keyframeValues) => {\n if (supportsWebAnimations) {\n getWebAnimations().forEach((animation) => {\n /**\n * animation.effect's type is AnimationEffect.\n * However, in this case we have a more specific\n * type of AnimationEffect called KeyframeEffect which\n * inherits from AnimationEffect. As a result,\n * we cast animation.effect to KeyframeEffect.\n */\n const keyframeEffect = animation.effect;\n /**\n * setKeyframes is not supported in all browser\n * versions that Ionic supports, so we need to\n * check for support before using it.\n */\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (keyframeEffect.setKeyframes) {\n keyframeEffect.setKeyframes(keyframeValues);\n }\n else {\n const newEffect = new KeyframeEffect(keyframeEffect.target, keyframeValues, keyframeEffect.getTiming());\n animation.effect = newEffect;\n }\n });\n }\n else {\n initializeCSSAnimation();\n }\n };\n /**\n * Run all \"before\" animation hooks.\n */\n const beforeAnimation = () => {\n // Runs all before read callbacks\n _beforeAddReadFunctions.forEach((callback) => callback());\n // Runs all before write callbacks\n _beforeAddWriteFunctions.forEach((callback) => callback());\n // Updates styles and classes before animation runs\n const addClasses = beforeAddClasses;\n const removeClasses = beforeRemoveClasses;\n const styles = beforeStylesValue;\n elements.forEach((el) => {\n const elementClassList = el.classList;\n addClasses.forEach((c) => elementClassList.add(c));\n removeClasses.forEach((c) => elementClassList.remove(c));\n for (const property in styles) {\n // eslint-disable-next-line no-prototype-builtins\n if (styles.hasOwnProperty(property)) {\n setStyleProperty(el, property, styles[property]);\n }\n }\n });\n };\n /**\n * Run all \"after\" animation hooks.\n */\n const afterAnimation = () => {\n clearCSSAnimationsTimeout();\n // Runs all after read callbacks\n _afterAddReadFunctions.forEach((callback) => callback());\n // Runs all after write callbacks\n _afterAddWriteFunctions.forEach((callback) => callback());\n // Updates styles and classes before animation ends\n const currentStep = willComplete ? 1 : 0;\n const addClasses = afterAddClasses;\n const removeClasses = afterRemoveClasses;\n const styles = afterStylesValue;\n elements.forEach((el) => {\n const elementClassList = el.classList;\n addClasses.forEach((c) => elementClassList.add(c));\n removeClasses.forEach((c) => elementClassList.remove(c));\n for (const property in styles) {\n // eslint-disable-next-line no-prototype-builtins\n if (styles.hasOwnProperty(property)) {\n setStyleProperty(el, property, styles[property]);\n }\n }\n });\n /**\n * Clean up any value coercion before\n * the user callbacks fire otherwise\n * they may get stale values. For example,\n * if someone calls progressStart(0) the\n * animation may still be reversed.\n */\n forceDurationValue = undefined;\n forceDirectionValue = undefined;\n forceDelayValue = undefined;\n onFinishCallbacks.forEach((onFinishCallback) => {\n return onFinishCallback.c(currentStep, ani);\n });\n onFinishOneTimeCallbacks.forEach((onFinishCallback) => {\n return onFinishCallback.c(currentStep, ani);\n });\n onFinishOneTimeCallbacks.length = 0;\n shouldCalculateNumAnimations = true;\n if (willComplete) {\n finished = true;\n }\n willComplete = true;\n };\n const animationFinish = () => {\n if (numAnimationsRunning === 0) {\n return;\n }\n numAnimationsRunning--;\n if (numAnimationsRunning === 0) {\n afterAnimation();\n if (parentAnimation) {\n parentAnimation.animationFinish();\n }\n }\n };\n const initializeCSSAnimation = (toggleAnimationName = true) => {\n cleanUpStyleSheets();\n const processedKeyframes = processKeyframes(_keyframes);\n elements.forEach((element) => {\n if (processedKeyframes.length > 0) {\n const keyframeRules = generateKeyframeRules(processedKeyframes);\n keyframeName = animationId !== undefined ? animationId : generateKeyframeName(keyframeRules);\n const stylesheet = createKeyframeStylesheet(keyframeName, keyframeRules, element);\n stylesheets.push(stylesheet);\n setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);\n setStyleProperty(element, 'animation-timing-function', getEasing());\n setStyleProperty(element, 'animation-delay', `${getDelay()}ms`);\n setStyleProperty(element, 'animation-fill-mode', getFill());\n setStyleProperty(element, 'animation-direction', getDirection());\n const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();\n setStyleProperty(element, 'animation-iteration-count', iterationsCount);\n setStyleProperty(element, 'animation-play-state', 'paused');\n if (toggleAnimationName) {\n setStyleProperty(element, 'animation-name', `${stylesheet.id}-alt`);\n }\n raf(() => {\n setStyleProperty(element, 'animation-name', stylesheet.id || null);\n });\n }\n });\n };\n const initializeWebAnimation = () => {\n elements.forEach((element) => {\n const animation = element.animate(_keyframes, {\n id,\n delay: getDelay(),\n duration: getDuration(),\n easing: getEasing(),\n iterations: getIterations(),\n fill: getFill(),\n direction: getDirection(),\n });\n animation.pause();\n webAnimations.push(animation);\n });\n if (webAnimations.length > 0) {\n webAnimations[0].onfinish = () => {\n animationFinish();\n };\n }\n };\n const initializeAnimation = (toggleAnimationName = true) => {\n beforeAnimation();\n if (_keyframes.length > 0) {\n if (supportsWebAnimations) {\n initializeWebAnimation();\n }\n else {\n initializeCSSAnimation(toggleAnimationName);\n }\n }\n initialized = true;\n };\n const setAnimationStep = (step) => {\n step = Math.min(Math.max(step, 0), 0.9999);\n if (supportsWebAnimations) {\n webAnimations.forEach((animation) => {\n // When creating the animation the delay is guaranteed to be set to a number.\n animation.currentTime = animation.effect.getComputedTiming().delay + getDuration() * step;\n animation.pause();\n });\n }\n else {\n const animationDuration = `-${getDuration() * step}ms`;\n elements.forEach((element) => {\n if (_keyframes.length > 0) {\n setStyleProperty(element, 'animation-delay', animationDuration);\n setStyleProperty(element, 'animation-play-state', 'paused');\n }\n });\n }\n };\n const updateWebAnimation = (step) => {\n webAnimations.forEach((animation) => {\n animation.effect.updateTiming({\n delay: getDelay(),\n duration: getDuration(),\n easing: getEasing(),\n iterations: getIterations(),\n fill: getFill(),\n direction: getDirection(),\n });\n });\n if (step !== undefined) {\n setAnimationStep(step);\n }\n };\n const updateCSSAnimation = (toggleAnimationName = true, step) => {\n raf(() => {\n elements.forEach((element) => {\n setStyleProperty(element, 'animation-name', keyframeName || null);\n setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);\n setStyleProperty(element, 'animation-timing-function', getEasing());\n setStyleProperty(element, 'animation-delay', step !== undefined ? `-${step * getDuration()}ms` : `${getDelay()}ms`);\n setStyleProperty(element, 'animation-fill-mode', getFill() || null);\n setStyleProperty(element, 'animation-direction', getDirection() || null);\n const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();\n setStyleProperty(element, 'animation-iteration-count', iterationsCount);\n if (toggleAnimationName) {\n setStyleProperty(element, 'animation-name', `${keyframeName}-alt`);\n }\n raf(() => {\n setStyleProperty(element, 'animation-name', keyframeName || null);\n });\n });\n });\n };\n const update = (deep = false, toggleAnimationName = true, step) => {\n if (deep) {\n childAnimations.forEach((animation) => {\n animation.update(deep, toggleAnimationName, step);\n });\n }\n if (supportsWebAnimations) {\n updateWebAnimation(step);\n }\n else {\n updateCSSAnimation(toggleAnimationName, step);\n }\n return ani;\n };\n const progressStart = (forceLinearEasing = false, step) => {\n childAnimations.forEach((animation) => {\n animation.progressStart(forceLinearEasing, step);\n });\n pauseAnimation();\n shouldForceLinearEasing = forceLinearEasing;\n if (!initialized) {\n initializeAnimation();\n }\n update(false, true, step);\n return ani;\n };\n const progressStep = (step) => {\n childAnimations.forEach((animation) => {\n animation.progressStep(step);\n });\n setAnimationStep(step);\n return ani;\n };\n const progressEnd = (playTo, step, dur) => {\n shouldForceLinearEasing = false;\n childAnimations.forEach((animation) => {\n animation.progressEnd(playTo, step, dur);\n });\n if (dur !== undefined) {\n forceDurationValue = dur;\n }\n finished = false;\n willComplete = true;\n if (playTo === 0) {\n forceDirectionValue = getDirection() === 'reverse' ? 'normal' : 'reverse';\n if (forceDirectionValue === 'reverse') {\n willComplete = false;\n }\n if (supportsWebAnimations) {\n update();\n setAnimationStep(1 - step);\n }\n else {\n forceDelayValue = (1 - step) * getDuration() * -1;\n update(false, false);\n }\n }\n else if (playTo === 1) {\n if (supportsWebAnimations) {\n update();\n setAnimationStep(step);\n }\n else {\n forceDelayValue = step * getDuration() * -1;\n update(false, false);\n }\n }\n if (playTo !== undefined && !parentAnimation) {\n play();\n }\n return ani;\n };\n const pauseAnimation = () => {\n if (initialized) {\n if (supportsWebAnimations) {\n webAnimations.forEach((animation) => {\n animation.pause();\n });\n }\n else {\n elements.forEach((element) => {\n setStyleProperty(element, 'animation-play-state', 'paused');\n });\n }\n paused = true;\n }\n };\n const pause = () => {\n childAnimations.forEach((animation) => {\n animation.pause();\n });\n pauseAnimation();\n return ani;\n };\n const onAnimationEndFallback = () => {\n cssAnimationsTimerFallback = undefined;\n animationFinish();\n };\n const clearCSSAnimationsTimeout = () => {\n if (cssAnimationsTimerFallback) {\n clearTimeout(cssAnimationsTimerFallback);\n }\n };\n const playCSSAnimations = () => {\n clearCSSAnimationsTimeout();\n raf(() => {\n elements.forEach((element) => {\n if (_keyframes.length > 0) {\n setStyleProperty(element, 'animation-play-state', 'running');\n }\n });\n });\n if (_keyframes.length === 0 || elements.length === 0) {\n animationFinish();\n }\n else {\n /**\n * This is a catchall in the event that a CSS Animation did not finish.\n * The Web Animations API has mechanisms in place for preventing this.\n * CSS Animations will not fire an `animationend` event\n * for elements with `display: none`. The Web Animations API\n * accounts for this, but using raw CSS Animations requires\n * this workaround.\n */\n const animationDelay = getDelay() || 0;\n const animationDuration = getDuration() || 0;\n const animationIterations = getIterations() || 1;\n // No need to set a timeout when animation has infinite iterations\n if (isFinite(animationIterations)) {\n cssAnimationsTimerFallback = setTimeout(onAnimationEndFallback, animationDelay + animationDuration * animationIterations + ANIMATION_END_FALLBACK_PADDING_MS);\n }\n animationEnd(elements[0], () => {\n clearCSSAnimationsTimeout();\n /**\n * Ensure that clean up\n * is always done a frame\n * before the onFinish handlers\n * are fired. Otherwise, there\n * may be flickering if a new\n * animation is started on the same\n * element too quickly\n */\n raf(() => {\n clearCSSAnimationPlayState();\n raf(animationFinish);\n });\n });\n }\n };\n const clearCSSAnimationPlayState = () => {\n elements.forEach((element) => {\n removeStyleProperty(element, 'animation-duration');\n removeStyleProperty(element, 'animation-delay');\n removeStyleProperty(element, 'animation-play-state');\n });\n };\n const playWebAnimations = () => {\n webAnimations.forEach((animation) => {\n animation.play();\n });\n if (_keyframes.length === 0 || elements.length === 0) {\n animationFinish();\n }\n };\n const resetAnimation = () => {\n if (supportsWebAnimations) {\n setAnimationStep(0);\n updateWebAnimation();\n }\n else {\n updateCSSAnimation();\n }\n };\n const play = (opts) => {\n return new Promise((resolve) => {\n if (opts === null || opts === void 0 ? void 0 : opts.sync) {\n shouldForceSyncPlayback = true;\n onFinish(() => (shouldForceSyncPlayback = false), { oneTimeCallback: true });\n }\n if (!initialized) {\n initializeAnimation();\n }\n if (finished) {\n resetAnimation();\n finished = false;\n }\n if (shouldCalculateNumAnimations) {\n numAnimationsRunning = childAnimations.length + 1;\n shouldCalculateNumAnimations = false;\n }\n /**\n * When one of these callbacks fires we\n * need to clear the other's callback otherwise\n * you can potentially get these callbacks\n * firing multiple times if the play method\n * is subsequently called.\n * Example:\n * animation.play() (onStop and onFinish callbacks are registered)\n * animation.stop() (onStop callback is fired, onFinish is not)\n * animation.play() (onStop and onFinish callbacks are registered)\n * Total onStop callbacks: 1\n * Total onFinish callbacks: 2\n */\n const onStopCallback = () => {\n clearCallback(onFinishCallback, onFinishOneTimeCallbacks);\n resolve();\n };\n const onFinishCallback = () => {\n clearCallback(onStopCallback, onStopOneTimeCallbacks);\n resolve();\n };\n /**\n * The play method resolves when an animation\n * run either finishes or is cancelled.\n */\n onFinish(onFinishCallback, { oneTimeCallback: true });\n onStop(onStopCallback, { oneTimeCallback: true });\n childAnimations.forEach((animation) => {\n animation.play();\n });\n if (supportsWebAnimations) {\n playWebAnimations();\n }\n else {\n playCSSAnimations();\n }\n paused = false;\n });\n };\n /**\n * Stops an animation and resets it state to the\n * beginning. This does not fire any onFinish\n * callbacks because the animation did not finish.\n * However, since the animation was not destroyed\n * (i.e. the animation could run again) we do not\n * clear the onFinish callbacks.\n */\n const stop = () => {\n childAnimations.forEach((animation) => {\n animation.stop();\n });\n if (initialized) {\n cleanUpElements();\n initialized = false;\n }\n resetFlags();\n onStopOneTimeCallbacks.forEach((onStopCallback) => onStopCallback.c(0, ani));\n onStopOneTimeCallbacks.length = 0;\n };\n const from = (property, value) => {\n const firstFrame = _keyframes[0];\n if (firstFrame !== undefined && (firstFrame.offset === undefined || firstFrame.offset === 0)) {\n firstFrame[property] = value;\n }\n else {\n _keyframes = [{ offset: 0, [property]: value }, ..._keyframes];\n }\n return ani;\n };\n const to = (property, value) => {\n const lastFrame = _keyframes[_keyframes.length - 1];\n if (lastFrame !== undefined && (lastFrame.offset === undefined || lastFrame.offset === 1)) {\n lastFrame[property] = value;\n }\n else {\n _keyframes = [..._keyframes, { offset: 1, [property]: value }];\n }\n return ani;\n };\n const fromTo = (property, fromValue, toValue) => {\n return from(property, fromValue).to(property, toValue);\n };\n return (ani = {\n parentAnimation,\n elements,\n childAnimations,\n id,\n animationFinish,\n from,\n to,\n fromTo,\n parent,\n play,\n pause,\n stop,\n destroy,\n keyframes,\n addAnimation,\n addElement,\n update,\n fill,\n direction,\n iterations,\n duration,\n easing,\n delay,\n getWebAnimations,\n getKeyframes,\n getFill,\n getDirection,\n getDelay,\n getIterations,\n getEasing,\n getDuration,\n afterAddRead,\n afterAddWrite,\n afterClearStyles,\n afterStyles,\n afterRemoveClass,\n afterAddClass,\n beforeAddRead,\n beforeAddWrite,\n beforeClearStyles,\n beforeStyles,\n beforeRemoveClass,\n beforeAddClass,\n onFinish,\n isRunning,\n progressStart,\n progressStep,\n progressEnd,\n });\n};\n\nexport { createAnimation as c };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { w as win } from './index5.js';\n\nconst getCapacitor = () => {\n if (win !== undefined) {\n return win.Capacitor;\n }\n return undefined;\n};\n\nexport { getCapacitor as g };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * Returns `true` if the document or host element\n * has a `dir` set to `rtl`. The host value will always\n * take priority over the root document value.\n */\nconst isRTL = (hostEl) => {\n if (hostEl) {\n if (hostEl.dir !== '') {\n return hostEl.dir.toLowerCase() === 'rtl';\n }\n }\n return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';\n};\n\nexport { isRTL as i };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nclass GestureController {\n constructor() {\n this.gestureId = 0;\n this.requestedStart = new Map();\n this.disabledGestures = new Map();\n this.disabledScroll = new Set();\n }\n /**\n * Creates a gesture delegate based on the GestureConfig passed\n */\n createGesture(config) {\n var _a;\n return new GestureDelegate(this, this.newID(), config.name, (_a = config.priority) !== null && _a !== void 0 ? _a : 0, !!config.disableScroll);\n }\n /**\n * Creates a blocker that will block any other gesture events from firing. Set in the ion-gesture component.\n */\n createBlocker(opts = {}) {\n return new BlockerDelegate(this, this.newID(), opts.disable, !!opts.disableScroll);\n }\n start(gestureName, id, priority) {\n if (!this.canStart(gestureName)) {\n this.requestedStart.delete(id);\n return false;\n }\n this.requestedStart.set(id, priority);\n return true;\n }\n capture(gestureName, id, priority) {\n if (!this.start(gestureName, id, priority)) {\n return false;\n }\n const requestedStart = this.requestedStart;\n let maxPriority = -10000;\n requestedStart.forEach((value) => {\n maxPriority = Math.max(maxPriority, value);\n });\n if (maxPriority === priority) {\n this.capturedId = id;\n requestedStart.clear();\n const event = new CustomEvent('ionGestureCaptured', { detail: { gestureName } });\n document.dispatchEvent(event);\n return true;\n }\n requestedStart.delete(id);\n return false;\n }\n release(id) {\n this.requestedStart.delete(id);\n if (this.capturedId === id) {\n this.capturedId = undefined;\n }\n }\n disableGesture(gestureName, id) {\n let set = this.disabledGestures.get(gestureName);\n if (set === undefined) {\n set = new Set();\n this.disabledGestures.set(gestureName, set);\n }\n set.add(id);\n }\n enableGesture(gestureName, id) {\n const set = this.disabledGestures.get(gestureName);\n if (set !== undefined) {\n set.delete(id);\n }\n }\n disableScroll(id) {\n this.disabledScroll.add(id);\n if (this.disabledScroll.size === 1) {\n document.body.classList.add(BACKDROP_NO_SCROLL);\n }\n }\n enableScroll(id) {\n this.disabledScroll.delete(id);\n if (this.disabledScroll.size === 0) {\n document.body.classList.remove(BACKDROP_NO_SCROLL);\n }\n }\n canStart(gestureName) {\n if (this.capturedId !== undefined) {\n // a gesture already captured\n return false;\n }\n if (this.isDisabled(gestureName)) {\n return false;\n }\n return true;\n }\n isCaptured() {\n return this.capturedId !== undefined;\n }\n isScrollDisabled() {\n return this.disabledScroll.size > 0;\n }\n isDisabled(gestureName) {\n const disabled = this.disabledGestures.get(gestureName);\n if (disabled && disabled.size > 0) {\n return true;\n }\n return false;\n }\n newID() {\n this.gestureId++;\n return this.gestureId;\n }\n}\nclass GestureDelegate {\n constructor(ctrl, id, name, priority, disableScroll) {\n this.id = id;\n this.name = name;\n this.disableScroll = disableScroll;\n this.priority = priority * 1000000 + id;\n this.ctrl = ctrl;\n }\n canStart() {\n if (!this.ctrl) {\n return false;\n }\n return this.ctrl.canStart(this.name);\n }\n start() {\n if (!this.ctrl) {\n return false;\n }\n return this.ctrl.start(this.name, this.id, this.priority);\n }\n capture() {\n if (!this.ctrl) {\n return false;\n }\n const captured = this.ctrl.capture(this.name, this.id, this.priority);\n if (captured && this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n return captured;\n }\n release() {\n if (this.ctrl) {\n this.ctrl.release(this.id);\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n }\n destroy() {\n this.release();\n this.ctrl = undefined;\n }\n}\nclass BlockerDelegate {\n constructor(ctrl, id, disable, disableScroll) {\n this.id = id;\n this.disable = disable;\n this.disableScroll = disableScroll;\n this.ctrl = ctrl;\n }\n block() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.disableGesture(gesture, this.id);\n }\n }\n if (this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n }\n unblock() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.enableGesture(gesture, this.id);\n }\n }\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n destroy() {\n this.unblock();\n this.ctrl = undefined;\n }\n}\nconst BACKDROP_NO_SCROLL = 'backdrop-no-scroll';\nconst GESTURE_CONTROLLER = new GestureController();\n\nexport { GESTURE_CONTROLLER as G };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { w as win } from './index5.js';\nimport { c as config } from './ionic-global.js';\n\n/**\n * CloseWatcher is a newer API that lets\n * use detect the hardware back button event\n * in a web browser: https://caniuse.com/?search=closewatcher\n * However, not every browser supports it yet.\n *\n * This needs to be a function so that we can\n * check the config once it has been set.\n * Otherwise, this code would be evaluated the\n * moment this file is evaluated which could be\n * before the config is set.\n */\nconst shouldUseCloseWatcher = () => config.get('experimentalCloseWatcher', false) && win !== undefined && 'CloseWatcher' in win;\n/**\n * When hardwareBackButton: false in config,\n * we need to make sure we also block the default\n * webview behavior. If we don't then it will be\n * possible for users to navigate backward while\n * an overlay is still open. Additionally, it will\n * give the appearance that the hardwareBackButton\n * config is not working as the page transition\n * will still happen.\n */\nconst blockHardwareBackButton = () => {\n document.addEventListener('backbutton', () => { }); // eslint-disable-line\n};\nconst startHardwareBackButton = () => {\n const doc = document;\n let busy = false;\n const backButtonCallback = () => {\n if (busy) {\n return;\n }\n let index = 0;\n let handlers = [];\n const ev = new CustomEvent('ionBackButton', {\n bubbles: false,\n detail: {\n register(priority, handler) {\n handlers.push({ priority, handler, id: index++ });\n },\n },\n });\n doc.dispatchEvent(ev);\n const executeAction = async (handlerRegister) => {\n try {\n if (handlerRegister === null || handlerRegister === void 0 ? void 0 : handlerRegister.handler) {\n const result = handlerRegister.handler(processHandlers);\n if (result != null) {\n await result;\n }\n }\n }\n catch (e) {\n console.error(e);\n }\n };\n const processHandlers = () => {\n if (handlers.length > 0) {\n let selectedHandler = {\n priority: Number.MIN_SAFE_INTEGER,\n handler: () => undefined,\n id: -1,\n };\n handlers.forEach((handler) => {\n if (handler.priority >= selectedHandler.priority) {\n selectedHandler = handler;\n }\n });\n busy = true;\n handlers = handlers.filter((handler) => handler.id !== selectedHandler.id);\n executeAction(selectedHandler).then(() => (busy = false));\n }\n };\n processHandlers();\n };\n /**\n * If the CloseWatcher is defined then\n * we don't want to also listen for the native\n * backbutton event otherwise we may get duplicate\n * events firing.\n */\n if (shouldUseCloseWatcher()) {\n let watcher;\n const configureWatcher = () => {\n watcher === null || watcher === void 0 ? void 0 : watcher.destroy();\n watcher = new win.CloseWatcher();\n /**\n * Once a close request happens\n * the watcher gets destroyed.\n * As a result, we need to re-configure\n * the watcher so we can respond to other\n * close requests.\n */\n watcher.onclose = () => {\n backButtonCallback();\n configureWatcher();\n };\n };\n configureWatcher();\n }\n else {\n doc.addEventListener('backbutton', backButtonCallback);\n }\n};\nconst OVERLAY_BACK_BUTTON_PRIORITY = 100;\nconst MENU_BACK_BUTTON_PRIORITY = 99; // 1 less than overlay priority since menu is displayed behind overlays\n\nexport { MENU_BACK_BUTTON_PRIORITY, OVERLAY_BACK_BUTTON_PRIORITY, blockHardwareBackButton, shouldUseCloseWatcher, startHardwareBackButton };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst transitionEndAsync = (el, expectedDuration = 0) => {\n return new Promise((resolve) => {\n transitionEnd(el, expectedDuration, resolve);\n });\n};\n/**\n * Allows developer to wait for a transition\n * to finish and fallback to a timer if the\n * transition is cancelled or otherwise\n * never finishes. Also see transitionEndAsync\n * which is an await-able version of this.\n */\nconst transitionEnd = (el, expectedDuration = 0, callback) => {\n let unRegTrans;\n let animationTimeout;\n const opts = { passive: true };\n const ANIMATION_FALLBACK_TIMEOUT = 500;\n const unregister = () => {\n if (unRegTrans) {\n unRegTrans();\n }\n };\n const onTransitionEnd = (ev) => {\n if (ev === undefined || el === ev.target) {\n unregister();\n callback(ev);\n }\n };\n if (el) {\n el.addEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.addEventListener('transitionend', onTransitionEnd, opts);\n animationTimeout = setTimeout(onTransitionEnd, expectedDuration + ANIMATION_FALLBACK_TIMEOUT);\n unRegTrans = () => {\n if (animationTimeout !== undefined) {\n clearTimeout(animationTimeout);\n animationTimeout = undefined;\n }\n el.removeEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.removeEventListener('transitionend', onTransitionEnd, opts);\n };\n }\n return unregister;\n};\n/**\n * Waits for a component to be ready for\n * both custom element and non-custom element builds.\n * If non-custom element build, el.componentOnReady\n * will be used.\n * For custom element builds, we wait a frame\n * so that the inner contents of the component\n * have a chance to render.\n *\n * Use this utility rather than calling\n * el.componentOnReady yourself.\n */\nconst componentOnReady = (el, callback) => {\n if (el.componentOnReady) {\n // eslint-disable-next-line custom-rules/no-component-on-ready-method\n el.componentOnReady().then((resolvedEl) => callback(resolvedEl));\n }\n else {\n raf(() => callback(el));\n }\n};\n/**\n * This functions checks if a Stencil component is using\n * the lazy loaded build of Stencil. Returns `true` if\n * the component is lazy loaded. Returns `false` otherwise.\n */\nconst hasLazyBuild = (stencilEl) => {\n return stencilEl.componentOnReady !== undefined;\n};\n/**\n * Elements inside of web components sometimes need to inherit global attributes\n * set on the host. For example, the inner input in `ion-input` should inherit\n * the `title` attribute that developers set directly on `ion-input`. This\n * helper function should be called in componentWillLoad and assigned to a variable\n * that is later used in the render function.\n *\n * This does not need to be reactive as changing attributes on the host element\n * does not trigger a re-render.\n */\nconst inheritAttributes = (el, attributes = []) => {\n const attributeObject = {};\n attributes.forEach((attr) => {\n if (el.hasAttribute(attr)) {\n const value = el.getAttribute(attr);\n if (value !== null) {\n attributeObject[attr] = el.getAttribute(attr);\n }\n el.removeAttribute(attr);\n }\n });\n return attributeObject;\n};\n/**\n * List of available ARIA attributes + `role`.\n * Removed deprecated attributes.\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes\n */\nconst ariaAttributes = [\n 'role',\n 'aria-activedescendant',\n 'aria-atomic',\n 'aria-autocomplete',\n 'aria-braillelabel',\n 'aria-brailleroledescription',\n 'aria-busy',\n 'aria-checked',\n 'aria-colcount',\n 'aria-colindex',\n 'aria-colindextext',\n 'aria-colspan',\n 'aria-controls',\n 'aria-current',\n 'aria-describedby',\n 'aria-description',\n 'aria-details',\n 'aria-disabled',\n 'aria-errormessage',\n 'aria-expanded',\n 'aria-flowto',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-invalid',\n 'aria-keyshortcuts',\n 'aria-label',\n 'aria-labelledby',\n 'aria-level',\n 'aria-live',\n 'aria-multiline',\n 'aria-multiselectable',\n 'aria-orientation',\n 'aria-owns',\n 'aria-placeholder',\n 'aria-posinset',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-relevant',\n 'aria-required',\n 'aria-roledescription',\n 'aria-rowcount',\n 'aria-rowindex',\n 'aria-rowindextext',\n 'aria-rowspan',\n 'aria-selected',\n 'aria-setsize',\n 'aria-sort',\n 'aria-valuemax',\n 'aria-valuemin',\n 'aria-valuenow',\n 'aria-valuetext',\n];\n/**\n * Returns an array of aria attributes that should be copied from\n * the shadow host element to a target within the light DOM.\n * @param el The element that the attributes should be copied from.\n * @param ignoreList The list of aria-attributes to ignore reflecting and removing from the host.\n * Use this in instances where we manually specify aria attributes on the `` element.\n */\nconst inheritAriaAttributes = (el, ignoreList) => {\n let attributesToInherit = ariaAttributes;\n if (ignoreList && ignoreList.length > 0) {\n attributesToInherit = attributesToInherit.filter((attr) => !ignoreList.includes(attr));\n }\n return inheritAttributes(el, attributesToInherit);\n};\nconst addEventListener = (el, eventName, callback, opts) => {\n var _a;\n if (typeof window !== 'undefined') {\n const win = window;\n const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;\n if (config) {\n const ael = config.get('_ael');\n if (ael) {\n return ael(el, eventName, callback, opts);\n }\n else if (config._ael) {\n return config._ael(el, eventName, callback, opts);\n }\n }\n }\n return el.addEventListener(eventName, callback, opts);\n};\nconst removeEventListener = (el, eventName, callback, opts) => {\n var _a;\n if (typeof window !== 'undefined') {\n const win = window;\n const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;\n if (config) {\n const rel = config.get('_rel');\n if (rel) {\n return rel(el, eventName, callback, opts);\n }\n else if (config._rel) {\n return config._rel(el, eventName, callback, opts);\n }\n }\n }\n return el.removeEventListener(eventName, callback, opts);\n};\n/**\n * Gets the root context of a shadow dom element\n * On newer browsers this will be the shadowRoot,\n * but for older browser this may just be the\n * element itself.\n *\n * Useful for whenever you need to explicitly\n * do \"myElement.shadowRoot!.querySelector(...)\".\n */\nconst getElementRoot = (el, fallback = el) => {\n return el.shadowRoot || fallback;\n};\n/**\n * Patched version of requestAnimationFrame that avoids ngzone\n * Use only when you know ngzone should not run\n */\nconst raf = (h) => {\n if (typeof __zone_symbol__requestAnimationFrame === 'function') {\n return __zone_symbol__requestAnimationFrame(h);\n }\n if (typeof requestAnimationFrame === 'function') {\n return requestAnimationFrame(h);\n }\n return setTimeout(h);\n};\nconst hasShadowDom = (el) => {\n return !!el.shadowRoot && !!el.attachShadow;\n};\nconst findItemLabel = (componentEl) => {\n const itemEl = componentEl.closest('ion-item');\n if (itemEl) {\n return itemEl.querySelector('ion-label');\n }\n return null;\n};\nconst focusVisibleElement = (el) => {\n el.focus();\n /**\n * When programmatically focusing an element,\n * the focus-visible utility will not run because\n * it is expecting a keyboard event to have triggered this;\n * however, there are times when we need to manually control\n * this behavior so we call the `setFocus` method on ion-app\n * which will let us explicitly set the elements to focus.\n */\n if (el.classList.contains('ion-focusable')) {\n const app = el.closest('ion-app');\n if (app) {\n app.setFocus([el]);\n }\n }\n};\n/**\n * This method is used for Ionic's input components that use Shadow DOM. In\n * order to properly label the inputs to work with screen readers, we need\n * to get the text content of the label outside of the shadow root and pass\n * it to the input inside of the shadow root.\n *\n * Referencing label elements by id from outside of the component is\n * impossible due to the shadow boundary, read more here:\n * https://developer.salesforce.com/blogs/2020/01/accessibility-for-web-components.html\n *\n * @param componentEl The shadow element that needs the aria label\n * @param inputId The unique identifier for the input\n */\nconst getAriaLabel = (componentEl, inputId) => {\n let labelText;\n // If the user provides their own label via the aria-labelledby attr\n // we should use that instead of looking for an ion-label\n const labelledBy = componentEl.getAttribute('aria-labelledby');\n // Grab the id off of the component in case they are using\n // a custom label using the label element\n const componentId = componentEl.id;\n let labelId = labelledBy !== null && labelledBy.trim() !== '' ? labelledBy : inputId + '-lbl';\n let label = labelledBy !== null && labelledBy.trim() !== '' ? document.getElementById(labelledBy) : findItemLabel(componentEl);\n if (label) {\n if (labelledBy === null) {\n label.id = labelId;\n }\n labelText = label.textContent;\n label.setAttribute('aria-hidden', 'true');\n // if there is no label, check to see if the user has provided\n // one by setting an id on the component and using the label element\n }\n else if (componentId.trim() !== '') {\n label = document.querySelector(`label[for=\"${componentId}\"]`);\n if (label) {\n if (label.id !== '') {\n labelId = label.id;\n }\n else {\n label.id = labelId = `${componentId}-lbl`;\n }\n labelText = label.textContent;\n }\n }\n return { label, labelId, labelText };\n};\n/**\n * This method is used to add a hidden input to a host element that contains\n * a Shadow DOM. It does not add the input inside of the Shadow root which\n * allows it to be picked up inside of forms. It should contain the same\n * values as the host element.\n *\n * @param always Add a hidden input even if the container does not use Shadow\n * @param container The element where the input will be added\n * @param name The name of the input\n * @param value The value of the input\n * @param disabled If true, the input is disabled\n */\nconst renderHiddenInput = (always, container, name, value, disabled) => {\n if (always || hasShadowDom(container)) {\n let input = container.querySelector('input.aux-input');\n if (!input) {\n input = container.ownerDocument.createElement('input');\n input.type = 'hidden';\n input.classList.add('aux-input');\n container.appendChild(input);\n }\n input.disabled = disabled;\n input.name = name;\n input.value = value || '';\n }\n};\nconst clamp = (min, n, max) => {\n return Math.max(min, Math.min(n, max));\n};\nconst assert = (actual, reason) => {\n if (!actual) {\n const message = 'ASSERT: ' + reason;\n console.error(message);\n debugger; // eslint-disable-line\n throw new Error(message);\n }\n};\nconst now = (ev) => {\n return ev.timeStamp || Date.now();\n};\nconst pointerCoord = (ev) => {\n // get X coordinates for either a mouse click\n // or a touch depending on the given event\n if (ev) {\n const changedTouches = ev.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n const touch = changedTouches[0];\n return { x: touch.clientX, y: touch.clientY };\n }\n if (ev.pageX !== undefined) {\n return { x: ev.pageX, y: ev.pageY };\n }\n }\n return { x: 0, y: 0 };\n};\n/**\n * @hidden\n * Given a side, return if it should be on the end\n * based on the value of dir\n * @param side the side\n * @param isRTL whether the application dir is rtl\n */\nconst isEndSide = (side) => {\n const isRTL = document.dir === 'rtl';\n switch (side) {\n case 'start':\n return isRTL;\n case 'end':\n return !isRTL;\n default:\n throw new Error(`\"${side}\" is not a valid value for [side]. Use \"start\" or \"end\" instead.`);\n }\n};\nconst debounceEvent = (event, wait) => {\n const original = event._original || event;\n return {\n _original: event,\n emit: debounce(original.emit.bind(original), wait),\n };\n};\nconst debounce = (func, wait = 0) => {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(func, wait, ...args);\n };\n};\n/**\n * Check whether the two string maps are shallow equal.\n *\n * undefined is treated as an empty map.\n *\n * @returns whether the keys are the same and the values are shallow equal.\n */\nconst shallowEqualStringMap = (map1, map2) => {\n map1 !== null && map1 !== void 0 ? map1 : (map1 = {});\n map2 !== null && map2 !== void 0 ? map2 : (map2 = {});\n if (map1 === map2) {\n return true;\n }\n const keys1 = Object.keys(map1);\n if (keys1.length !== Object.keys(map2).length) {\n return false;\n }\n for (const k1 of keys1) {\n if (!(k1 in map2)) {\n return false;\n }\n if (map1[k1] !== map2[k1]) {\n return false;\n }\n }\n return true;\n};\n\nexport { addEventListener as a, removeEventListener as b, componentOnReady as c, inheritAttributes as d, renderHiddenInput as e, focusVisibleElement as f, getElementRoot as g, hasShadowDom as h, inheritAriaAttributes as i, getAriaLabel as j, findItemLabel as k, hasLazyBuild as l, clamp as m, debounceEvent as n, isEndSide as o, assert as p, debounce as q, raf as r, shallowEqualStringMap as s, transitionEndAsync as t, now as u, pointerCoord as v };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { writeTask, Build } from '@stencil/core/internal/client';\nimport { r as raf } from './helpers.js';\n\nconst LIFECYCLE_WILL_ENTER = 'ionViewWillEnter';\nconst LIFECYCLE_DID_ENTER = 'ionViewDidEnter';\nconst LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';\nconst LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';\nconst LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';\n\nconst iosTransitionAnimation = () => import('./ios.transition.js');\nconst mdTransitionAnimation = () => import('./md.transition.js');\n// TODO(FW-2832): types\nconst transition = (opts) => {\n return new Promise((resolve, reject) => {\n writeTask(() => {\n beforeTransition(opts);\n runTransition(opts).then((result) => {\n if (result.animation) {\n result.animation.destroy();\n }\n afterTransition(opts);\n resolve(result);\n }, (error) => {\n afterTransition(opts);\n reject(error);\n });\n });\n });\n};\nconst beforeTransition = (opts) => {\n const enteringEl = opts.enteringEl;\n const leavingEl = opts.leavingEl;\n setZIndex(enteringEl, leavingEl, opts.direction);\n if (opts.showGoBack) {\n enteringEl.classList.add('can-go-back');\n }\n else {\n enteringEl.classList.remove('can-go-back');\n }\n setPageHidden(enteringEl, false);\n /**\n * When transitioning, the page should not\n * respond to click events. This resolves small\n * issues like users double tapping the ion-back-button.\n * These pointer events are removed in `afterTransition`.\n */\n enteringEl.style.setProperty('pointer-events', 'none');\n if (leavingEl) {\n setPageHidden(leavingEl, false);\n leavingEl.style.setProperty('pointer-events', 'none');\n }\n};\nconst runTransition = async (opts) => {\n const animationBuilder = await getAnimationBuilder(opts);\n const ani = animationBuilder && Build.isBrowser ? animation(animationBuilder, opts) : noAnimation(opts); // fast path for no animation\n return ani;\n};\nconst afterTransition = (opts) => {\n const enteringEl = opts.enteringEl;\n const leavingEl = opts.leavingEl;\n enteringEl.classList.remove('ion-page-invisible');\n enteringEl.style.removeProperty('pointer-events');\n if (leavingEl !== undefined) {\n leavingEl.classList.remove('ion-page-invisible');\n leavingEl.style.removeProperty('pointer-events');\n }\n};\nconst getAnimationBuilder = async (opts) => {\n if (!opts.leavingEl || !opts.animated || opts.duration === 0) {\n return undefined;\n }\n if (opts.animationBuilder) {\n return opts.animationBuilder;\n }\n const getAnimation = opts.mode === 'ios'\n ? (await iosTransitionAnimation()).iosTransitionAnimation\n : (await mdTransitionAnimation()).mdTransitionAnimation;\n return getAnimation;\n};\nconst animation = async (animationBuilder, opts) => {\n await waitForReady(opts, true);\n const trans = animationBuilder(opts.baseEl, opts);\n fireWillEvents(opts.enteringEl, opts.leavingEl);\n const didComplete = await playTransition(trans, opts);\n if (opts.progressCallback) {\n opts.progressCallback(undefined);\n }\n if (didComplete) {\n fireDidEvents(opts.enteringEl, opts.leavingEl);\n }\n return {\n hasCompleted: didComplete,\n animation: trans,\n };\n};\nconst noAnimation = async (opts) => {\n const enteringEl = opts.enteringEl;\n const leavingEl = opts.leavingEl;\n await waitForReady(opts, false);\n fireWillEvents(enteringEl, leavingEl);\n fireDidEvents(enteringEl, leavingEl);\n return {\n hasCompleted: true,\n };\n};\nconst waitForReady = async (opts, defaultDeep) => {\n const deep = opts.deepWait !== undefined ? opts.deepWait : defaultDeep;\n if (deep) {\n await Promise.all([deepReady(opts.enteringEl), deepReady(opts.leavingEl)]);\n }\n await notifyViewReady(opts.viewIsReady, opts.enteringEl);\n};\nconst notifyViewReady = async (viewIsReady, enteringEl) => {\n if (viewIsReady) {\n await viewIsReady(enteringEl);\n }\n};\nconst playTransition = (trans, opts) => {\n const progressCallback = opts.progressCallback;\n const promise = new Promise((resolve) => {\n trans.onFinish((currentStep) => resolve(currentStep === 1));\n });\n // cool, let's do this, start the transition\n if (progressCallback) {\n // this is a swipe to go back, just get the transition progress ready\n // kick off the swipe animation start\n trans.progressStart(true);\n progressCallback(trans);\n }\n else {\n // only the top level transition should actually start \"play\"\n // kick it off and let it play through\n // ******** DOM WRITE ****************\n trans.play();\n }\n // create a callback for when the animation is done\n return promise;\n};\nconst fireWillEvents = (enteringEl, leavingEl) => {\n lifecycle(leavingEl, LIFECYCLE_WILL_LEAVE);\n lifecycle(enteringEl, LIFECYCLE_WILL_ENTER);\n};\nconst fireDidEvents = (enteringEl, leavingEl) => {\n lifecycle(enteringEl, LIFECYCLE_DID_ENTER);\n lifecycle(leavingEl, LIFECYCLE_DID_LEAVE);\n};\nconst lifecycle = (el, eventName) => {\n if (el) {\n const ev = new CustomEvent(eventName, {\n bubbles: false,\n cancelable: false,\n });\n el.dispatchEvent(ev);\n }\n};\n/**\n * Wait two request animation frame loops.\n * This allows the framework implementations enough time to mount\n * the user-defined contents. This is often needed when using inline\n * modals and popovers that accept user components. For popover,\n * the contents must be mounted for the popover to be sized correctly.\n * For modals, the contents must be mounted for iOS to run the\n * transition correctly.\n *\n * On Angular and React, a single raf is enough time, but for Vue\n * we need to wait two rafs. As a result we are using two rafs for\n * all frameworks to ensure contents are mounted.\n */\nconst waitForMount = () => {\n return new Promise((resolve) => raf(() => raf(() => resolve())));\n};\nconst deepReady = async (el) => {\n const element = el;\n if (element) {\n if (element.componentOnReady != null) {\n // eslint-disable-next-line custom-rules/no-component-on-ready-method\n const stencilEl = await element.componentOnReady();\n if (stencilEl != null) {\n return;\n }\n /**\n * Custom elements in Stencil will have __registerHost.\n */\n }\n else if (element.__registerHost != null) {\n /**\n * Non-lazy loaded custom elements need to wait\n * one frame for component to be loaded.\n */\n const waitForCustomElement = new Promise((resolve) => raf(resolve));\n await waitForCustomElement;\n return;\n }\n await Promise.all(Array.from(element.children).map(deepReady));\n }\n};\nconst setPageHidden = (el, hidden) => {\n if (hidden) {\n el.setAttribute('aria-hidden', 'true');\n el.classList.add('ion-page-hidden');\n }\n else {\n el.hidden = false;\n el.removeAttribute('aria-hidden');\n el.classList.remove('ion-page-hidden');\n }\n};\nconst setZIndex = (enteringEl, leavingEl, direction) => {\n if (enteringEl !== undefined) {\n enteringEl.style.zIndex = direction === 'back' ? '99' : '101';\n }\n if (leavingEl !== undefined) {\n leavingEl.style.zIndex = '100';\n }\n};\nconst getIonPageElement = (element) => {\n if (element.classList.contains('ion-page')) {\n return element;\n }\n const ionPage = element.querySelector(':scope > .ion-page, :scope > ion-nav, :scope > ion-tabs');\n if (ionPage) {\n return ionPage;\n }\n // idk, return the original element so at least something animates and we don't have a null pointer\n return element;\n};\n\nexport { LIFECYCLE_WILL_ENTER as L, LIFECYCLE_DID_ENTER as a, LIFECYCLE_WILL_LEAVE as b, LIFECYCLE_DID_LEAVE as c, LIFECYCLE_WILL_UNLOAD as d, deepReady as e, getIonPageElement as g, lifecycle as l, setPageHidden as s, transition as t, waitForMount as w };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { G as GESTURE_CONTROLLER } from './gesture-controller.js';\nexport { G as GESTURE_CONTROLLER } from './gesture-controller.js';\n\nconst addEventListener = (el, // TODO(FW-2832): type\neventName, callback, opts) => {\n // use event listener options when supported\n // otherwise it's just a boolean for the \"capture\" arg\n const listenerOpts = supportsPassive(el)\n ? {\n capture: !!opts.capture,\n passive: !!opts.passive,\n }\n : !!opts.capture;\n let add;\n let remove;\n if (el['__zone_symbol__addEventListener']) {\n add = '__zone_symbol__addEventListener';\n remove = '__zone_symbol__removeEventListener';\n }\n else {\n add = 'addEventListener';\n remove = 'removeEventListener';\n }\n el[add](eventName, callback, listenerOpts);\n return () => {\n el[remove](eventName, callback, listenerOpts);\n };\n};\nconst supportsPassive = (node) => {\n if (_sPassive === undefined) {\n try {\n const opts = Object.defineProperty({}, 'passive', {\n get: () => {\n _sPassive = true;\n },\n });\n node.addEventListener('optsTest', () => {\n return;\n }, opts);\n }\n catch (e) {\n _sPassive = false;\n }\n }\n return !!_sPassive;\n};\nlet _sPassive;\n\nconst MOUSE_WAIT = 2000;\n// TODO(FW-2832): types\nconst createPointerEvents = (el, pointerDown, pointerMove, pointerUp, options) => {\n let rmTouchStart;\n let rmTouchMove;\n let rmTouchEnd;\n let rmTouchCancel;\n let rmMouseStart;\n let rmMouseMove;\n let rmMouseUp;\n let lastTouchEvent = 0;\n const handleTouchStart = (ev) => {\n lastTouchEvent = Date.now() + MOUSE_WAIT;\n if (!pointerDown(ev)) {\n return;\n }\n if (!rmTouchMove && pointerMove) {\n rmTouchMove = addEventListener(el, 'touchmove', pointerMove, options);\n }\n /**\n * Events are dispatched on the element that is tapped and bubble up to\n * the reference element in the gesture. In the event that the element this\n * event was first dispatched on is removed from the DOM, the event will no\n * longer bubble up to our reference element. This leaves the gesture in an\n * unusable state. To account for this, the touchend and touchcancel listeners\n * should be added to the event target so that they still fire even if the target\n * is removed from the DOM.\n */\n if (!rmTouchEnd) {\n rmTouchEnd = addEventListener(ev.target, 'touchend', handleTouchEnd, options);\n }\n if (!rmTouchCancel) {\n rmTouchCancel = addEventListener(ev.target, 'touchcancel', handleTouchEnd, options);\n }\n };\n const handleMouseDown = (ev) => {\n if (lastTouchEvent > Date.now()) {\n return;\n }\n if (!pointerDown(ev)) {\n return;\n }\n if (!rmMouseMove && pointerMove) {\n rmMouseMove = addEventListener(getDocument(el), 'mousemove', pointerMove, options);\n }\n if (!rmMouseUp) {\n rmMouseUp = addEventListener(getDocument(el), 'mouseup', handleMouseUp, options);\n }\n };\n const handleTouchEnd = (ev) => {\n stopTouch();\n if (pointerUp) {\n pointerUp(ev);\n }\n };\n const handleMouseUp = (ev) => {\n stopMouse();\n if (pointerUp) {\n pointerUp(ev);\n }\n };\n const stopTouch = () => {\n if (rmTouchMove) {\n rmTouchMove();\n }\n if (rmTouchEnd) {\n rmTouchEnd();\n }\n if (rmTouchCancel) {\n rmTouchCancel();\n }\n rmTouchMove = rmTouchEnd = rmTouchCancel = undefined;\n };\n const stopMouse = () => {\n if (rmMouseMove) {\n rmMouseMove();\n }\n if (rmMouseUp) {\n rmMouseUp();\n }\n rmMouseMove = rmMouseUp = undefined;\n };\n const stop = () => {\n stopTouch();\n stopMouse();\n };\n const enable = (isEnabled = true) => {\n if (!isEnabled) {\n if (rmTouchStart) {\n rmTouchStart();\n }\n if (rmMouseStart) {\n rmMouseStart();\n }\n rmTouchStart = rmMouseStart = undefined;\n stop();\n }\n else {\n if (!rmTouchStart) {\n rmTouchStart = addEventListener(el, 'touchstart', handleTouchStart, options);\n }\n if (!rmMouseStart) {\n rmMouseStart = addEventListener(el, 'mousedown', handleMouseDown, options);\n }\n }\n };\n const destroy = () => {\n enable(false);\n pointerUp = pointerMove = pointerDown = undefined;\n };\n return {\n enable,\n stop,\n destroy,\n };\n};\nconst getDocument = (node) => {\n return node instanceof Document ? node : node.ownerDocument;\n};\n\nconst createPanRecognizer = (direction, thresh, maxAngle) => {\n const radians = maxAngle * (Math.PI / 180);\n const isDirX = direction === 'x';\n const maxCosine = Math.cos(radians);\n const threshold = thresh * thresh;\n let startX = 0;\n let startY = 0;\n let dirty = false;\n let isPan = 0;\n return {\n start(x, y) {\n startX = x;\n startY = y;\n isPan = 0;\n dirty = true;\n },\n detect(x, y) {\n if (!dirty) {\n return false;\n }\n const deltaX = x - startX;\n const deltaY = y - startY;\n const distance = deltaX * deltaX + deltaY * deltaY;\n if (distance < threshold) {\n return false;\n }\n const hypotenuse = Math.sqrt(distance);\n const cosine = (isDirX ? deltaX : deltaY) / hypotenuse;\n if (cosine > maxCosine) {\n isPan = 1;\n }\n else if (cosine < -maxCosine) {\n isPan = -1;\n }\n else {\n isPan = 0;\n }\n dirty = false;\n return true;\n },\n isGesture() {\n return isPan !== 0;\n },\n getDirection() {\n return isPan;\n },\n };\n};\n\n// TODO(FW-2832): types\nconst createGesture = (config) => {\n let hasCapturedPan = false;\n let hasStartedPan = false;\n let hasFiredStart = true;\n let isMoveQueued = false;\n const finalConfig = Object.assign({ disableScroll: false, direction: 'x', gesturePriority: 0, passive: true, maxAngle: 40, threshold: 10 }, config);\n const canStart = finalConfig.canStart;\n const onWillStart = finalConfig.onWillStart;\n const onStart = finalConfig.onStart;\n const onEnd = finalConfig.onEnd;\n const notCaptured = finalConfig.notCaptured;\n const onMove = finalConfig.onMove;\n const threshold = finalConfig.threshold;\n const passive = finalConfig.passive;\n const blurOnStart = finalConfig.blurOnStart;\n const detail = {\n type: 'pan',\n startX: 0,\n startY: 0,\n startTime: 0,\n currentX: 0,\n currentY: 0,\n velocityX: 0,\n velocityY: 0,\n deltaX: 0,\n deltaY: 0,\n currentTime: 0,\n event: undefined,\n data: undefined,\n };\n const pan = createPanRecognizer(finalConfig.direction, finalConfig.threshold, finalConfig.maxAngle);\n const gesture = GESTURE_CONTROLLER.createGesture({\n name: config.gestureName,\n priority: config.gesturePriority,\n disableScroll: config.disableScroll,\n });\n const pointerDown = (ev) => {\n const timeStamp = now(ev);\n if (hasStartedPan || !hasFiredStart) {\n return false;\n }\n updateDetail(ev, detail);\n detail.startX = detail.currentX;\n detail.startY = detail.currentY;\n detail.startTime = detail.currentTime = timeStamp;\n detail.velocityX = detail.velocityY = detail.deltaX = detail.deltaY = 0;\n detail.event = ev;\n // Check if gesture can start\n if (canStart && canStart(detail) === false) {\n return false;\n }\n // Release fallback\n gesture.release();\n // Start gesture\n if (!gesture.start()) {\n return false;\n }\n hasStartedPan = true;\n if (threshold === 0) {\n return tryToCapturePan();\n }\n pan.start(detail.startX, detail.startY);\n return true;\n };\n const pointerMove = (ev) => {\n // fast path, if gesture is currently captured\n // do minimum job to get user-land even dispatched\n if (hasCapturedPan) {\n if (!isMoveQueued && hasFiredStart) {\n isMoveQueued = true;\n calcGestureData(detail, ev);\n requestAnimationFrame(fireOnMove);\n }\n return;\n }\n // gesture is currently being detected\n calcGestureData(detail, ev);\n if (pan.detect(detail.currentX, detail.currentY)) {\n if (!pan.isGesture() || !tryToCapturePan()) {\n abortGesture();\n }\n }\n };\n const fireOnMove = () => {\n // Since fireOnMove is called inside a RAF, onEnd() might be called,\n // we must double check hasCapturedPan\n if (!hasCapturedPan) {\n return;\n }\n isMoveQueued = false;\n if (onMove) {\n onMove(detail);\n }\n };\n const tryToCapturePan = () => {\n if (!gesture.capture()) {\n return false;\n }\n hasCapturedPan = true;\n hasFiredStart = false;\n // reset start position since the real user-land event starts here\n // If the pan detector threshold is big, not resetting the start position\n // will cause a jump in the animation equal to the detector threshold.\n // the array of positions used to calculate the gesture velocity does not\n // need to be cleaned, more points in the positions array always results in a\n // more accurate value of the velocity.\n detail.startX = detail.currentX;\n detail.startY = detail.currentY;\n detail.startTime = detail.currentTime;\n if (onWillStart) {\n onWillStart(detail).then(fireOnStart);\n }\n else {\n fireOnStart();\n }\n return true;\n };\n const blurActiveElement = () => {\n if (typeof document !== 'undefined') {\n const activeElement = document.activeElement;\n if (activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) {\n activeElement.blur();\n }\n }\n };\n const fireOnStart = () => {\n if (blurOnStart) {\n blurActiveElement();\n }\n if (onStart) {\n onStart(detail);\n }\n hasFiredStart = true;\n };\n const reset = () => {\n hasCapturedPan = false;\n hasStartedPan = false;\n isMoveQueued = false;\n hasFiredStart = true;\n gesture.release();\n };\n // END *************************\n const pointerUp = (ev) => {\n const tmpHasCaptured = hasCapturedPan;\n const tmpHasFiredStart = hasFiredStart;\n reset();\n if (!tmpHasFiredStart) {\n return;\n }\n calcGestureData(detail, ev);\n // Try to capture press\n if (tmpHasCaptured) {\n if (onEnd) {\n onEnd(detail);\n }\n return;\n }\n // Not captured any event\n if (notCaptured) {\n notCaptured(detail);\n }\n };\n const pointerEvents = createPointerEvents(finalConfig.el, pointerDown, pointerMove, pointerUp, {\n capture: false,\n passive,\n });\n const abortGesture = () => {\n reset();\n pointerEvents.stop();\n if (notCaptured) {\n notCaptured(detail);\n }\n };\n return {\n enable(enable = true) {\n if (!enable) {\n if (hasCapturedPan) {\n pointerUp(undefined);\n }\n reset();\n }\n pointerEvents.enable(enable);\n },\n destroy() {\n gesture.destroy();\n pointerEvents.destroy();\n },\n };\n};\nconst calcGestureData = (detail, ev) => {\n if (!ev) {\n return;\n }\n const prevX = detail.currentX;\n const prevY = detail.currentY;\n const prevT = detail.currentTime;\n updateDetail(ev, detail);\n const currentX = detail.currentX;\n const currentY = detail.currentY;\n const timestamp = (detail.currentTime = now(ev));\n const timeDelta = timestamp - prevT;\n if (timeDelta > 0 && timeDelta < 100) {\n const velocityX = (currentX - prevX) / timeDelta;\n const velocityY = (currentY - prevY) / timeDelta;\n detail.velocityX = velocityX * 0.7 + detail.velocityX * 0.3;\n detail.velocityY = velocityY * 0.7 + detail.velocityY * 0.3;\n }\n detail.deltaX = currentX - detail.startX;\n detail.deltaY = currentY - detail.startY;\n detail.event = ev;\n};\nconst updateDetail = (ev, detail) => {\n // get X coordinates for either a mouse click\n // or a touch depending on the given event\n let x = 0;\n let y = 0;\n if (ev) {\n const changedTouches = ev.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n const touch = changedTouches[0];\n x = touch.clientX;\n y = touch.clientY;\n }\n else if (ev.pageX !== undefined) {\n x = ev.pageX;\n y = ev.pageY;\n }\n }\n detail.currentX = x;\n detail.currentY = y;\n};\nconst now = (ev) => {\n return ev.timeStamp || Date.now();\n};\n\nexport { createGesture };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst win = typeof window !== 'undefined' ? window : undefined;\nconst doc = typeof document !== 'undefined' ? document : undefined;\n\nexport { doc as d, win as w };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * Logs a warning to the console with an Ionic prefix\n * to indicate the library that is warning the developer.\n *\n * @param message - The string message to be logged to the console.\n */\nconst printIonWarning = (message, ...params) => {\n return console.warn(`[Ionic Warning]: ${message}`, ...params);\n};\n/*\n * Logs an error to the console with an Ionic prefix\n * to indicate the library that is warning the developer.\n *\n * @param message - The string message to be logged to the console.\n * @param params - Additional arguments to supply to the console.error.\n */\nconst printIonError = (message, ...params) => {\n return console.error(`[Ionic Error]: ${message}`, ...params);\n};\n/**\n * Prints an error informing developers that an implementation requires an element to be used\n * within a specific selector.\n *\n * @param el The web component element this is requiring the element.\n * @param targetSelectors The selector or selectors that were not found.\n */\nconst printRequiredElementError = (el, ...targetSelectors) => {\n return console.error(`<${el.tagName.toLowerCase()}> must be used inside ${targetSelectors.join(' or ')}.`);\n};\n\nexport { printIonError as a, printRequiredElementError as b, printIonWarning as p };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { c as componentOnReady } from './helpers.js';\nimport { b as printRequiredElementError } from './index6.js';\n\nconst ION_CONTENT_TAG_NAME = 'ION-CONTENT';\nconst ION_CONTENT_ELEMENT_SELECTOR = 'ion-content';\nconst ION_CONTENT_CLASS_SELECTOR = '.ion-content-scroll-host';\n/**\n * Selector used for implementations reliant on `` for scroll event changes.\n *\n * Developers should use the `.ion-content-scroll-host` selector to target the element emitting\n * scroll events. With virtual scroll implementations this will be the host element for\n * the scroll viewport.\n */\nconst ION_CONTENT_SELECTOR = `${ION_CONTENT_ELEMENT_SELECTOR}, ${ION_CONTENT_CLASS_SELECTOR}`;\nconst isIonContent = (el) => el.tagName === ION_CONTENT_TAG_NAME;\n/**\n * Waits for the element host fully initialize before\n * returning the inner scroll element.\n *\n * For `ion-content` the scroll target will be the result\n * of the `getScrollElement` function.\n *\n * For custom implementations it will be the element host\n * or a selector within the host, if supplied through `scrollTarget`.\n */\nconst getScrollElement = async (el) => {\n if (isIonContent(el)) {\n await new Promise((resolve) => componentOnReady(el, resolve));\n return el.getScrollElement();\n }\n return el;\n};\n/**\n * Queries the element matching the selector for IonContent.\n * See ION_CONTENT_SELECTOR for the selector used.\n */\nconst findIonContent = (el) => {\n /**\n * First we try to query the custom scroll host selector in cases where\n * the implementation is using an outer `ion-content` with an inner custom\n * scroll container.\n */\n const customContentHost = el.querySelector(ION_CONTENT_CLASS_SELECTOR);\n if (customContentHost) {\n return customContentHost;\n }\n return el.querySelector(ION_CONTENT_SELECTOR);\n};\n/**\n * Queries the closest element matching the selector for IonContent.\n */\nconst findClosestIonContent = (el) => {\n return el.closest(ION_CONTENT_SELECTOR);\n};\n/**\n * Scrolls to the top of the element. If an `ion-content` is found, it will scroll\n * using the public API `scrollToTop` with a duration.\n */\nconst scrollToTop = (el, durationMs) => {\n if (isIonContent(el)) {\n const content = el;\n return content.scrollToTop(durationMs);\n }\n return Promise.resolve(el.scrollTo({\n top: 0,\n left: 0,\n behavior: durationMs > 0 ? 'smooth' : 'auto',\n }));\n};\n/**\n * Scrolls by a specified X/Y distance in the component. If an `ion-content` is found, it will scroll\n * using the public API `scrollByPoint` with a duration.\n */\nconst scrollByPoint = (el, x, y, durationMs) => {\n if (isIonContent(el)) {\n const content = el;\n return content.scrollByPoint(x, y, durationMs);\n }\n return Promise.resolve(el.scrollBy({\n top: y,\n left: x,\n behavior: durationMs > 0 ? 'smooth' : 'auto',\n }));\n};\n/**\n * Prints an error informing developers that an implementation requires an element to be used\n * within either the `ion-content` selector or the `.ion-content-scroll-host` class.\n */\nconst printIonContentErrorMsg = (el) => {\n return printRequiredElementError(el, ION_CONTENT_ELEMENT_SELECTOR);\n};\n/**\n * Several components in Ionic need to prevent scrolling\n * during a gesture (card modal, range, item sliding, etc).\n * Use this utility to account for ion-content and custom content hosts.\n */\nconst disableContentScrollY = (contentEl) => {\n if (isIonContent(contentEl)) {\n const ionContent = contentEl;\n const initialScrollY = ionContent.scrollY;\n ionContent.scrollY = false;\n /**\n * This should be passed into resetContentScrollY\n * so that we can revert ion-content's scrollY to the\n * correct state. For example, if scrollY = false\n * initially, we do not want to enable scrolling\n * when we call resetContentScrollY.\n */\n return initialScrollY;\n }\n else {\n contentEl.style.setProperty('overflow', 'hidden');\n return true;\n }\n};\nconst resetContentScrollY = (contentEl, initialScrollY) => {\n if (isIonContent(contentEl)) {\n contentEl.scrollY = initialScrollY;\n }\n else {\n contentEl.style.removeProperty('overflow');\n }\n};\n\nexport { ION_CONTENT_CLASS_SELECTOR as I, findClosestIonContent as a, ION_CONTENT_ELEMENT_SELECTOR as b, scrollByPoint as c, disableContentScrollY as d, findIonContent as f, getScrollElement as g, isIonContent as i, printIonContentErrorMsg as p, resetContentScrollY as r, scrollToTop as s };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { setPlatformHelpers, setMode, getMode } from '@stencil/core/internal/client';\n\n// TODO(FW-2832): types\nclass Config {\n constructor() {\n this.m = new Map();\n }\n reset(configObj) {\n this.m = new Map(Object.entries(configObj));\n }\n get(key, fallback) {\n const value = this.m.get(key);\n return value !== undefined ? value : fallback;\n }\n getBoolean(key, fallback = false) {\n const val = this.m.get(key);\n if (val === undefined) {\n return fallback;\n }\n if (typeof val === 'string') {\n return val === 'true';\n }\n return !!val;\n }\n getNumber(key, fallback) {\n const val = parseFloat(this.m.get(key));\n return isNaN(val) ? (fallback !== undefined ? fallback : NaN) : val;\n }\n set(key, value) {\n this.m.set(key, value);\n }\n}\nconst config = /*@__PURE__*/ new Config();\nconst configFromSession = (win) => {\n try {\n const configStr = win.sessionStorage.getItem(IONIC_SESSION_KEY);\n return configStr !== null ? JSON.parse(configStr) : {};\n }\n catch (e) {\n return {};\n }\n};\nconst saveConfig = (win, c) => {\n try {\n win.sessionStorage.setItem(IONIC_SESSION_KEY, JSON.stringify(c));\n }\n catch (e) {\n return;\n }\n};\nconst configFromURL = (win) => {\n const configObj = {};\n win.location.search\n .slice(1)\n .split('&')\n .map((entry) => entry.split('='))\n .map(([key, value]) => [decodeURIComponent(key), decodeURIComponent(value)])\n .filter(([key]) => startsWith(key, IONIC_PREFIX))\n .map(([key, value]) => [key.slice(IONIC_PREFIX.length), value])\n .forEach(([key, value]) => {\n configObj[key] = value;\n });\n return configObj;\n};\nconst startsWith = (input, search) => {\n return input.substr(0, search.length) === search;\n};\nconst IONIC_PREFIX = 'ionic:';\nconst IONIC_SESSION_KEY = 'ionic-persist-config';\n\nconst getPlatforms = (win) => setupPlatforms(win);\nconst isPlatform = (winOrPlatform, platform) => {\n if (typeof winOrPlatform === 'string') {\n platform = winOrPlatform;\n winOrPlatform = undefined;\n }\n return getPlatforms(winOrPlatform).includes(platform);\n};\nconst setupPlatforms = (win = window) => {\n if (typeof win === 'undefined') {\n return [];\n }\n win.Ionic = win.Ionic || {};\n let platforms = win.Ionic.platforms;\n if (platforms == null) {\n platforms = win.Ionic.platforms = detectPlatforms(win);\n platforms.forEach((p) => win.document.documentElement.classList.add(`plt-${p}`));\n }\n return platforms;\n};\nconst detectPlatforms = (win) => {\n const customPlatformMethods = config.get('platform');\n return Object.keys(PLATFORMS_MAP).filter((p) => {\n const customMethod = customPlatformMethods === null || customPlatformMethods === void 0 ? void 0 : customPlatformMethods[p];\n return typeof customMethod === 'function' ? customMethod(win) : PLATFORMS_MAP[p](win);\n });\n};\nconst isMobileWeb = (win) => isMobile(win) && !isHybrid(win);\nconst isIpad = (win) => {\n // iOS 12 and below\n if (testUserAgent(win, /iPad/i)) {\n return true;\n }\n // iOS 13+\n if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {\n return true;\n }\n return false;\n};\nconst isIphone = (win) => testUserAgent(win, /iPhone/i);\nconst isIOS = (win) => testUserAgent(win, /iPhone|iPod/i) || isIpad(win);\nconst isAndroid = (win) => testUserAgent(win, /android|sink/i);\nconst isAndroidTablet = (win) => {\n return isAndroid(win) && !testUserAgent(win, /mobile/i);\n};\nconst isPhablet = (win) => {\n const width = win.innerWidth;\n const height = win.innerHeight;\n const smallest = Math.min(width, height);\n const largest = Math.max(width, height);\n return smallest > 390 && smallest < 520 && largest > 620 && largest < 800;\n};\nconst isTablet = (win) => {\n const width = win.innerWidth;\n const height = win.innerHeight;\n const smallest = Math.min(width, height);\n const largest = Math.max(width, height);\n return isIpad(win) || isAndroidTablet(win) || (smallest > 460 && smallest < 820 && largest > 780 && largest < 1400);\n};\nconst isMobile = (win) => matchMedia(win, '(any-pointer:coarse)');\nconst isDesktop = (win) => !isMobile(win);\nconst isHybrid = (win) => isCordova(win) || isCapacitorNative(win);\nconst isCordova = (win) => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);\nconst isCapacitorNative = (win) => {\n const capacitor = win['Capacitor'];\n return !!(capacitor === null || capacitor === void 0 ? void 0 : capacitor.isNative);\n};\nconst isElectron = (win) => testUserAgent(win, /electron/i);\nconst isPWA = (win) => { var _a; return !!(((_a = win.matchMedia) === null || _a === void 0 ? void 0 : _a.call(win, '(display-mode: standalone)').matches) || win.navigator.standalone); };\nconst testUserAgent = (win, expr) => expr.test(win.navigator.userAgent);\nconst matchMedia = (win, query) => { var _a; return (_a = win.matchMedia) === null || _a === void 0 ? void 0 : _a.call(win, query).matches; };\nconst PLATFORMS_MAP = {\n ipad: isIpad,\n iphone: isIphone,\n ios: isIOS,\n android: isAndroid,\n phablet: isPhablet,\n tablet: isTablet,\n cordova: isCordova,\n capacitor: isCapacitorNative,\n electron: isElectron,\n pwa: isPWA,\n mobile: isMobile,\n mobileweb: isMobileWeb,\n desktop: isDesktop,\n hybrid: isHybrid,\n};\n\n// TODO(FW-2832): types\nlet defaultMode;\nconst getIonMode = (ref) => {\n return (ref && getMode(ref)) || defaultMode;\n};\nconst initialize = (userConfig = {}) => {\n if (typeof window === 'undefined') {\n return;\n }\n const doc = window.document;\n const win = window;\n const Ionic = (win.Ionic = win.Ionic || {});\n const platformHelpers = {};\n if (userConfig._ael) {\n platformHelpers.ael = userConfig._ael;\n }\n if (userConfig._rel) {\n platformHelpers.rel = userConfig._rel;\n }\n if (userConfig._ce) {\n platformHelpers.ce = userConfig._ce;\n }\n setPlatformHelpers(platformHelpers);\n // create the Ionic.config from raw config object (if it exists)\n // and convert Ionic.config into a ConfigApi that has a get() fn\n const configObj = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, configFromSession(win)), { persistConfig: false }), Ionic.config), configFromURL(win)), userConfig);\n config.reset(configObj);\n if (config.getBoolean('persistConfig')) {\n saveConfig(win, configObj);\n }\n // Setup platforms\n setupPlatforms(win);\n // first see if the mode was set as an attribute on \n // which could have been set by the user, or by pre-rendering\n // otherwise get the mode via config settings, and fallback to md\n Ionic.config = config;\n Ionic.mode = defaultMode = config.get('mode', doc.documentElement.getAttribute('mode') || (isPlatform(win, 'ios') ? 'ios' : 'md'));\n config.set('mode', defaultMode);\n doc.documentElement.setAttribute('mode', defaultMode);\n doc.documentElement.classList.add(defaultMode);\n if (config.getBoolean('_testing')) {\n config.set('animated', false);\n }\n const isIonicElement = (elm) => { var _a; return (_a = elm.tagName) === null || _a === void 0 ? void 0 : _a.startsWith('ION-'); };\n const isAllowedIonicModeValue = (elmMode) => ['ios', 'md'].includes(elmMode);\n setMode((elm) => {\n while (elm) {\n const elmMode = elm.mode || elm.getAttribute('mode');\n if (elmMode) {\n if (isAllowedIonicModeValue(elmMode)) {\n return elmMode;\n }\n else if (isIonicElement(elm)) {\n console.warn('Invalid ionic mode: \"' + elmMode + '\", expected: \"ios\" or \"md\"');\n }\n }\n elm = elm.parentElement;\n }\n return defaultMode;\n });\n};\n\nexport { isPlatform as a, getIonMode as b, config as c, getPlatforms as g, initialize as i };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { g as getCapacitor } from './capacitor.js';\n\nvar ExceptionCode;\n(function (ExceptionCode) {\n /**\n * API is not implemented.\n *\n * This usually means the API can't be used because it is not implemented for\n * the current platform.\n */\n ExceptionCode[\"Unimplemented\"] = \"UNIMPLEMENTED\";\n /**\n * API is not available.\n *\n * This means the API can't be used right now because:\n * - it is currently missing a prerequisite, such as network connectivity\n * - it requires a particular platform or browser version\n */\n ExceptionCode[\"Unavailable\"] = \"UNAVAILABLE\";\n})(ExceptionCode || (ExceptionCode = {}));\n\nvar KeyboardResize;\n(function (KeyboardResize) {\n /**\n * Only the `body` HTML element will be resized.\n * Relative units are not affected, because the viewport does not change.\n *\n * @since 1.0.0\n */\n KeyboardResize[\"Body\"] = \"body\";\n /**\n * Only the `ion-app` HTML element will be resized.\n * Use it only for Ionic Framework apps.\n *\n * @since 1.0.0\n */\n KeyboardResize[\"Ionic\"] = \"ionic\";\n /**\n * The whole native Web View will be resized when the keyboard shows/hides.\n * This affects the `vh` relative unit.\n *\n * @since 1.0.0\n */\n KeyboardResize[\"Native\"] = \"native\";\n /**\n * Neither the app nor the Web View are resized.\n *\n * @since 1.0.0\n */\n KeyboardResize[\"None\"] = \"none\";\n})(KeyboardResize || (KeyboardResize = {}));\nconst Keyboard = {\n getEngine() {\n const capacitor = getCapacitor();\n if (capacitor === null || capacitor === void 0 ? void 0 : capacitor.isPluginAvailable('Keyboard')) {\n return capacitor.Plugins.Keyboard;\n }\n return undefined;\n },\n getResizeMode() {\n const engine = this.getEngine();\n if (!(engine === null || engine === void 0 ? void 0 : engine.getResizeMode)) {\n return Promise.resolve(undefined);\n }\n return engine.getResizeMode().catch((e) => {\n if (e.code === ExceptionCode.Unimplemented) {\n // If the native implementation is not available\n // we treat it the same as if the plugin is not available.\n return undefined;\n }\n throw e;\n });\n },\n};\n\nexport { Keyboard as K, KeyboardResize as a };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { K as Keyboard } from './keyboard.js';\n\nconst KEYBOARD_DID_OPEN = 'ionKeyboardDidShow';\nconst KEYBOARD_DID_CLOSE = 'ionKeyboardDidHide';\nconst KEYBOARD_THRESHOLD = 150;\n// TODO(FW-2832): types\nlet previousVisualViewport = {};\nlet currentVisualViewport = {};\nlet keyboardOpen = false;\n/**\n * This is only used for tests\n */\nconst resetKeyboardAssist = () => {\n previousVisualViewport = {};\n currentVisualViewport = {};\n keyboardOpen = false;\n};\nconst startKeyboardAssist = (win) => {\n const nativeEngine = Keyboard.getEngine();\n /**\n * If the native keyboard plugin is available\n * then we are running in a native environment. As a result\n * we should only listen on the native events instead of\n * using the Visual Viewport as the Ionic webview manipulates\n * how it resizes such that the Visual Viewport API is not\n * reliable here.\n */\n if (nativeEngine) {\n startNativeListeners(win);\n }\n else {\n if (!win.visualViewport) {\n return;\n }\n currentVisualViewport = copyVisualViewport(win.visualViewport);\n win.visualViewport.onresize = () => {\n trackViewportChanges(win);\n if (keyboardDidOpen() || keyboardDidResize(win)) {\n setKeyboardOpen(win);\n }\n else if (keyboardDidClose(win)) {\n setKeyboardClose(win);\n }\n };\n }\n};\n/**\n * Listen for events fired by native keyboard plugin\n * in Capacitor/Cordova so devs only need to listen\n * in one place.\n */\nconst startNativeListeners = (win) => {\n win.addEventListener('keyboardDidShow', (ev) => setKeyboardOpen(win, ev));\n win.addEventListener('keyboardDidHide', () => setKeyboardClose(win));\n};\nconst setKeyboardOpen = (win, ev) => {\n fireKeyboardOpenEvent(win, ev);\n keyboardOpen = true;\n};\nconst setKeyboardClose = (win) => {\n fireKeyboardCloseEvent(win);\n keyboardOpen = false;\n};\n/**\n * Returns `true` if the `keyboardOpen` flag is not\n * set, the previous visual viewport width equal the current\n * visual viewport width, and if the scaled difference\n * of the previous visual viewport height minus the current\n * visual viewport height is greater than KEYBOARD_THRESHOLD\n *\n * We need to be able to accommodate users who have zooming\n * enabled in their browser (or have zoomed in manually) which\n * is why we take into account the current visual viewport's\n * scale value.\n */\nconst keyboardDidOpen = () => {\n const scaledHeightDifference = (previousVisualViewport.height - currentVisualViewport.height) * currentVisualViewport.scale;\n return (!keyboardOpen &&\n previousVisualViewport.width === currentVisualViewport.width &&\n scaledHeightDifference > KEYBOARD_THRESHOLD);\n};\n/**\n * Returns `true` if the keyboard is open,\n * but the keyboard did not close\n */\nconst keyboardDidResize = (win) => {\n return keyboardOpen && !keyboardDidClose(win);\n};\n/**\n * Determine if the keyboard was closed\n * Returns `true` if the `keyboardOpen` flag is set and\n * the current visual viewport height equals the\n * layout viewport height.\n */\nconst keyboardDidClose = (win) => {\n return keyboardOpen && currentVisualViewport.height === win.innerHeight;\n};\n/**\n * Dispatch a keyboard open event\n */\nconst fireKeyboardOpenEvent = (win, nativeEv) => {\n const keyboardHeight = nativeEv ? nativeEv.keyboardHeight : win.innerHeight - currentVisualViewport.height;\n const ev = new CustomEvent(KEYBOARD_DID_OPEN, {\n detail: { keyboardHeight },\n });\n win.dispatchEvent(ev);\n};\n/**\n * Dispatch a keyboard close event\n */\nconst fireKeyboardCloseEvent = (win) => {\n const ev = new CustomEvent(KEYBOARD_DID_CLOSE);\n win.dispatchEvent(ev);\n};\n/**\n * Given a window object, create a copy of\n * the current visual and layout viewport states\n * while also preserving the previous visual and\n * layout viewport states\n */\nconst trackViewportChanges = (win) => {\n previousVisualViewport = Object.assign({}, currentVisualViewport);\n currentVisualViewport = copyVisualViewport(win.visualViewport);\n};\n/**\n * Creates a deep copy of the visual viewport\n * at a given state\n */\nconst copyVisualViewport = (visualViewport) => {\n return {\n width: Math.round(visualViewport.width),\n height: Math.round(visualViewport.height),\n offsetTop: visualViewport.offsetTop,\n offsetLeft: visualViewport.offsetLeft,\n pageTop: visualViewport.pageTop,\n pageLeft: visualViewport.pageLeft,\n scale: visualViewport.scale,\n };\n};\n\nexport { KEYBOARD_DID_CLOSE, KEYBOARD_DID_OPEN, copyVisualViewport, keyboardDidClose, keyboardDidOpen, keyboardDidResize, resetKeyboardAssist, setKeyboardClose, setKeyboardOpen, startKeyboardAssist, trackViewportChanges };\n","import{__spreadArray}from\"tslib\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */import{w as win}from\"./index-a5d50daf.js\";import{r as raf}from\"./helpers-be245865.js\";var animationPrefix;var processKeyframes=function(n){n.forEach((function(n){for(var r in n){if(n.hasOwnProperty(r)){var e=n[r];if(r===\"easing\"){var t=\"animation-timing-function\";n[t]=e;delete n[r]}else{var t=convertCamelCaseToHypen(r);if(t!==r){n[t]=e;delete n[r]}}}}}));return n};var convertCamelCaseToHypen=function(n){return n.replace(/([a-z0-9])([A-Z])/g,\"$1-$2\").toLowerCase()};var getAnimationPrefix=function(n){if(animationPrefix===undefined){var r=n.style.animationName!==undefined;var e=n.style.webkitAnimationName!==undefined;animationPrefix=!r&&e?\"-webkit-\":\"\"}return animationPrefix};var setStyleProperty=function(n,r,e){var t=r.startsWith(\"animation\")?getAnimationPrefix(n):\"\";n.style.setProperty(t+r,e)};var removeStyleProperty=function(n,r){var e=r.startsWith(\"animation\")?getAnimationPrefix(n):\"\";n.style.removeProperty(e+r)};var animationEnd=function(n,r){var e;var t={passive:true};var i=function(){if(e){e()}};var a=function(e){if(n===e.target){i();r(e)}};if(n){n.addEventListener(\"webkitAnimationEnd\",a,t);n.addEventListener(\"animationend\",a,t);e=function(){n.removeEventListener(\"webkitAnimationEnd\",a,t);n.removeEventListener(\"animationend\",a,t)}}return i};var generateKeyframeRules=function(n){if(n===void 0){n=[]}return n.map((function(n){var r=n.offset;var e=[];for(var t in n){if(n.hasOwnProperty(t)&&t!==\"offset\"){e.push(\"\".concat(t,\": \").concat(n[t],\";\"))}}return\"\".concat(r*100,\"% { \").concat(e.join(\" \"),\" }\")})).join(\" \")};var keyframeIds=[];var generateKeyframeName=function(n){var r=keyframeIds.indexOf(n);if(r<0){r=keyframeIds.push(n)-1}return\"ion-animation-\".concat(r)};var getStyleContainer=function(n){var r=n.getRootNode!==undefined?n.getRootNode():n;return r.head||r};var createKeyframeStylesheet=function(n,r,e){var t;var i=getStyleContainer(e);var a=getAnimationPrefix(e);var f=i.querySelector(\"#\"+n);if(f){return f}var o=((t=e.ownerDocument)!==null&&t!==void 0?t:document).createElement(\"style\");o.id=n;o.textContent=\"@\".concat(a,\"keyframes \").concat(n,\" { \").concat(r,\" } @\").concat(a,\"keyframes \").concat(n,\"-alt { \").concat(r,\" }\");i.appendChild(o);return o};var addClassToArray=function(n,r){if(n===void 0){n=[]}if(r!==undefined){var e=Array.isArray(r)?r:[r];return __spreadArray(__spreadArray([],n,true),e,true)}return n};var createAnimation=function(n){var r;var e;var t;var i;var a;var f;var o=[];var u=[];var v=[];var l=false;var s;var c={};var d=[];var y=[];var m={};var p=0;var S=false;var P=false;var g;var A;var C;var b;var T=true;var k=false;var E=true;var _;var x;var K=false;var h=n;var w=[];var I=[];var R=[];var F=[];var D=[];var W=[];var j=[];var H=[];var M=[];var N=[];var $=[];var z=typeof AnimationEffect===\"function\"||win!==undefined&&typeof win.AnimationEffect===\"function\";var Z=typeof Element===\"function\"&&typeof Element.prototype.animate===\"function\"&&z;var q=100;var B=function(){return $};var G=function(n){D.forEach((function(r){r.destroy(n)}));J(n);F.length=0;D.length=0;o.length=0;X();l=false;E=true;return x};var J=function(n){Y();if(n){nn()}};var L=function(){S=false;P=false;E=true;A=undefined;C=undefined;b=undefined;p=0;k=false;T=true;K=false};var O=function(){return p!==0&&!K};var Q=function(n,r){var e=r.findIndex((function(r){return r.c===n}));if(e>-1){r.splice(e,1)}};var U=function(n,r){R.push({c:n,o:r});return x};var V=function(n,r){var e=(r===null||r===void 0?void 0:r.oneTimeCallback)?I:w;e.push({c:n,o:r});return x};var X=function(){w.length=0;I.length=0;return x};var Y=function(){if(Z){$.forEach((function(n){n.cancel()}));$.length=0}else{var n=F.slice();raf((function(){n.forEach((function(n){removeStyleProperty(n,\"animation-name\");removeStyleProperty(n,\"animation-duration\");removeStyleProperty(n,\"animation-timing-function\");removeStyleProperty(n,\"animation-iteration-count\");removeStyleProperty(n,\"animation-delay\");removeStyleProperty(n,\"animation-play-state\");removeStyleProperty(n,\"animation-fill-mode\");removeStyleProperty(n,\"animation-direction\")}))}))}};var nn=function(){W.forEach((function(n){if(n===null||n===void 0?void 0:n.parentNode){n.parentNode.removeChild(n)}}));W.length=0};var rn=function(n){j.push(n);return x};var en=function(n){H.push(n);return x};var tn=function(n){M.push(n);return x};var an=function(n){N.push(n);return x};var fn=function(n){u=addClassToArray(u,n);return x};var on=function(n){v=addClassToArray(v,n);return x};var un=function(n){if(n===void 0){n={}}c=n;return x};var vn=function(n){if(n===void 0){n=[]}for(var r=0,e=n;r=0){for(var r=0;r0){var i=generateKeyframeRules(e);_=n!==undefined?n:generateKeyframeName(i);var a=createKeyframeStylesheet(_,i,t);W.push(a);setStyleProperty(t,\"animation-duration\",\"\".concat(Sn(),\"ms\"));setStyleProperty(t,\"animation-timing-function\",pn());setStyleProperty(t,\"animation-delay\",\"\".concat(gn(),\"ms\"));setStyleProperty(t,\"animation-fill-mode\",yn());setStyleProperty(t,\"animation-direction\",mn());var f=Pn()===Infinity?\"infinite\":Pn().toString();setStyleProperty(t,\"animation-iteration-count\",f);setStyleProperty(t,\"animation-play-state\",\"paused\");if(r){setStyleProperty(t,\"animation-name\",\"\".concat(a.id,\"-alt\"))}raf((function(){setStyleProperty(t,\"animation-name\",a.id||null)}))}}))};var jn=function(){F.forEach((function(n){var r=n.animate(o,{id:h,delay:gn(),duration:Sn(),easing:pn(),iterations:Pn(),fill:yn(),direction:mn()});r.pause();$.push(r)}));if($.length>0){$[0].onfinish=function(){Dn()}}};var Hn=function(n){if(n===void 0){n=true}Rn();if(o.length>0){if(Z){jn()}else{Wn(n)}}l=true};var Mn=function(n){n=Math.min(Math.max(n,0),.9999);if(Z){$.forEach((function(r){r.currentTime=r.effect.getComputedTiming().delay+Sn()*n;r.pause()}))}else{var r=\"-\".concat(Sn()*n,\"ms\");F.forEach((function(n){if(o.length>0){setStyleProperty(n,\"animation-delay\",r);setStyleProperty(n,\"animation-play-state\",\"paused\")}}))}};var Nn=function(n){$.forEach((function(n){n.effect.updateTiming({delay:gn(),duration:Sn(),easing:pn(),iterations:Pn(),fill:yn(),direction:mn()})}));if(n!==undefined){Mn(n)}};var $n=function(n,r){if(n===void 0){n=true}raf((function(){F.forEach((function(e){setStyleProperty(e,\"animation-name\",_||null);setStyleProperty(e,\"animation-duration\",\"\".concat(Sn(),\"ms\"));setStyleProperty(e,\"animation-timing-function\",pn());setStyleProperty(e,\"animation-delay\",r!==undefined?\"-\".concat(r*Sn(),\"ms\"):\"\".concat(gn(),\"ms\"));setStyleProperty(e,\"animation-fill-mode\",yn()||null);setStyleProperty(e,\"animation-direction\",mn()||null);var t=Pn()===Infinity?\"infinite\":Pn().toString();setStyleProperty(e,\"animation-iteration-count\",t);if(n){setStyleProperty(e,\"animation-name\",\"\".concat(_,\"-alt\"))}raf((function(){setStyleProperty(e,\"animation-name\",_||null)}))}))}))};var zn=function(n,r,e){if(n===void 0){n=false}if(r===void 0){r=true}if(n){D.forEach((function(t){t.update(n,r,e)}))}if(Z){Nn(e)}else{$n(r,e)}return x};var Zn=function(n,r){if(n===void 0){n=false}D.forEach((function(e){e.progressStart(n,r)}));Gn();S=n;if(!l){Hn()}zn(false,true,r);return x};var qn=function(n){D.forEach((function(r){r.progressStep(n)}));Mn(n);return x};var Bn=function(n,r,e){S=false;D.forEach((function(t){t.progressEnd(n,r,e)}));if(e!==undefined){C=e}k=false;T=true;if(n===0){A=mn()===\"reverse\"?\"normal\":\"reverse\";if(A===\"reverse\"){T=false}if(Z){zn();Mn(1-r)}else{b=(1-r)*Sn()*-1;zn(false,false)}}else if(n===1){if(Z){zn();Mn(r)}else{b=r*Sn()*-1;zn(false,false)}}if(n!==undefined&&!s){Yn()}return x};var Gn=function(){if(l){if(Z){$.forEach((function(n){n.pause()}))}else{F.forEach((function(n){setStyleProperty(n,\"animation-play-state\",\"paused\")}))}K=true}};var Jn=function(){D.forEach((function(n){n.pause()}));Gn();return x};var Ln=function(){g=undefined;Dn()};var On=function(){if(g){clearTimeout(g)}};var Qn=function(){On();raf((function(){F.forEach((function(n){if(o.length>0){setStyleProperty(n,\"animation-play-state\",\"running\")}}))}));if(o.length===0||F.length===0){Dn()}else{var n=gn()||0;var r=Sn()||0;var e=Pn()||1;if(isFinite(e)){g=setTimeout(Ln,n+r*e+q)}animationEnd(F[0],(function(){On();raf((function(){Un();raf(Dn)}))}))}};var Un=function(){F.forEach((function(n){removeStyleProperty(n,\"animation-duration\");removeStyleProperty(n,\"animation-delay\");removeStyleProperty(n,\"animation-play-state\")}))};var Vn=function(){$.forEach((function(n){n.play()}));if(o.length===0||F.length===0){Dn()}};var Xn=function(){if(Z){Mn(0);Nn()}else{$n()}};var Yn=function(n){return new Promise((function(r){if(n===null||n===void 0?void 0:n.sync){P=true;V((function(){return P=false}),{oneTimeCallback:true})}if(!l){Hn()}if(k){Xn();k=false}if(E){p=D.length+1;E=false}var e=function(){Q(t,I);r()};var t=function(){Q(e,R);r()};V(t,{oneTimeCallback:true});U(e,{oneTimeCallback:true});D.forEach((function(n){n.play()}));if(Z){Vn()}else{Qn()}K=false}))};var nr=function(){D.forEach((function(n){n.stop()}));if(l){Y();l=false}L();R.forEach((function(n){return n.c(0,x)}));R.length=0};var rr=function(n,r){var e;var t=o[0];if(t!==undefined&&(t.offset===undefined||t.offset===0)){t[n]=r}else{o=__spreadArray([(e={offset:0},e[n]=r,e)],o,true)}return x};var er=function(n,r){var e;var t=o[o.length-1];if(t!==undefined&&(t.offset===undefined||t.offset===1)){t[n]=r}else{o=__spreadArray(__spreadArray([],o,true),[(e={offset:1},e[n]=r,e)],false)}return x};var tr=function(n,r,e){return rr(n,r).to(n,e)};return x={parentAnimation:s,elements:F,childAnimations:D,id:h,animationFinish:Dn,from:rr,to:er,fromTo:tr,parent:xn,play:Yn,pause:Jn,stop:nr,destroy:G,keyframes:wn,addAnimation:hn,addElement:Kn,update:zn,fill:bn,direction:Cn,iterations:_n,duration:En,easing:kn,delay:Tn,getWebAnimations:B,getKeyframes:An,getFill:yn,getDirection:mn,getDelay:gn,getIterations:Pn,getEasing:pn,getDuration:Sn,afterAddRead:tn,afterAddWrite:an,afterClearStyles:dn,afterStyles:cn,afterRemoveClass:sn,afterAddClass:ln,beforeAddRead:rn,beforeAddWrite:en,beforeClearStyles:vn,beforeStyles:un,beforeRemoveClass:on,beforeAddClass:fn,onFinish:V,isRunning:O,progressStart:Zn,progressStep:qn,progressEnd:Bn}};export{createAnimation as c};","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nvar sanitizeDOMString=function(e){try{if(e instanceof IonicSafeString){return e.value}if(!isSanitizerEnabled()||typeof e!==\"string\"||e===\"\"){return e}if(e.includes(\"onload=\")){return\"\"}var r=document.createDocumentFragment();var n=document.createElement(\"div\");r.appendChild(n);n.innerHTML=e;blockedTags.forEach((function(e){var n=r.querySelectorAll(e);for(var t=n.length-1;t>=0;t--){var i=n[t];if(i.parentNode){i.parentNode.removeChild(i)}else{r.removeChild(i)}var a=getElementChildren(i);for(var o=0;o=0;r--){var n=e.attributes.item(r);var t=n.name;if(!allowedAttributes.includes(t.toLowerCase())){e.removeAttribute(t);continue}var i=n.value;var a=e[t];if(i!=null&&i.toLowerCase().includes(\"javascript:\")||a!=null&&a.toLowerCase().includes(\"javascript:\")){e.removeAttribute(t)}}var o=getElementChildren(e);for(var r=0;r=0&&t<=1}))};var solveQuadraticEquation=function(t,a,r){var e=a*a-4*t*r;if(e<0){return[]}else{return[(-a+Math.sqrt(e))/(2*t),(-a-Math.sqrt(e))/(2*t)]}};var solveCubicEquation=function(t,a,r,e){if(t===0){return solveQuadraticEquation(a,r,e)}a/=t;r/=t;e/=t;var i=(3*r-a*a)/3;var n=(2*a*a*a-9*a*r+27*e)/27;if(i===0){return[Math.pow(-n,1/3)]}else if(n===0){return[Math.sqrt(-i),-Math.sqrt(-i)]}var u=Math.pow(n/2,2)+Math.pow(i/3,3);if(u===0){return[Math.pow(n/2,1/2)-a/3]}else if(u>0){return[Math.pow(-(n/2)+Math.sqrt(u),1/3)-Math.pow(n/2+Math.sqrt(u),1/3)-a/3]}var o=Math.sqrt(Math.pow(-(i/3),3));var v=Math.acos(-(n/(2*Math.sqrt(Math.pow(-(i/3),3)))));var h=2*Math.pow(o,1/3);return[h*Math.cos(v/3)-a/3,h*Math.cos((v+2*Math.PI)/3)-a/3,h*Math.cos((v+4*Math.PI)/3)-a/3]};export{getTimeGivenProgression as g};","import{__awaiter,__generator,__spreadArray}from\"tslib\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */import{c as componentOnReady}from\"./helpers-be245865.js\";var attachComponent=function(e,r,n,t,o,i){return __awaiter(void 0,void 0,void 0,(function(){var a,u;return __generator(this,(function(c){switch(c.label){case 0:if(e){return[2,e.attachViewToDom(r,n,o,t)]}if(!i&&typeof n!==\"string\"&&!(n instanceof HTMLElement)){throw new Error(\"framework delegate is missing\")}u=typeof n===\"string\"?(a=r.ownerDocument)===null||a===void 0?void 0:a.createElement(n):n;if(t){t.forEach((function(e){return u.classList.add(e)}))}if(o){Object.assign(u,o)}r.appendChild(u);return[4,new Promise((function(e){return componentOnReady(u,e)}))];case 1:c.sent();return[2,u]}}))}))};var detachComponent=function(e,r){if(r){if(e){var n=r.parentElement;return e.removeViewFromDom(n,r)}r.remove()}return Promise.resolve()};var CoreDelegate=function(){var e;var r;var n=function(n,t){var o=[];for(var i=2;i0&&(e.tagName===\"ION-MODAL\"||e.tagName===\"ION-POPOVER\")){s=c=e.children[0];if(!s.classList.contains(\"ion-delegate-host\")){d=(u=e.ownerDocument)===null||u===void 0?void 0:u.createElement(\"div\");d.classList.add(\"ion-delegate-host\");i.forEach((function(e){return d.classList.add(e)}));d.append.apply(d,e.children);e.appendChild(d);c=d}}m.label=3;case 3:v=document.querySelector(\"ion-app\")||document.body;r=document.createComment(\"ionic teleport\");e.parentNode.insertBefore(r,e);v.appendChild(e);return[2,c!==null&&c!==void 0?c:e]}}))}))};var t=function(){if(e&&r){r.parentNode.insertBefore(e,r);r.remove()}return Promise.resolve()};return{attachViewToDom:n,removeViewFromDom:t}};export{CoreDelegate as C,attachComponent as a,detachComponent as d};","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nvar GestureController=function(){function t(){this.gestureId=0;this.requestedStart=new Map;this.disabledGestures=new Map;this.disabledScroll=new Set}t.prototype.createGesture=function(t){var i;return new GestureDelegate(this,this.newID(),t.name,(i=t.priority)!==null&&i!==void 0?i:0,!!t.disableScroll)};t.prototype.createBlocker=function(t){if(t===void 0){t={}}return new BlockerDelegate(this,this.newID(),t.disable,!!t.disableScroll)};t.prototype.start=function(t,i,n){if(!this.canStart(t)){this.requestedStart.delete(i);return false}this.requestedStart.set(i,n);return true};t.prototype.capture=function(t,i,n){if(!this.start(t,i,n)){return false}var e=this.requestedStart;var s=-1e4;e.forEach((function(t){s=Math.max(s,t)}));if(s===n){this.capturedId=i;e.clear();var r=new CustomEvent(\"ionGestureCaptured\",{detail:{gestureName:t}});document.dispatchEvent(r);return true}e.delete(i);return false};t.prototype.release=function(t){this.requestedStart.delete(t);if(this.capturedId===t){this.capturedId=undefined}};t.prototype.disableGesture=function(t,i){var n=this.disabledGestures.get(t);if(n===undefined){n=new Set;this.disabledGestures.set(t,n)}n.add(i)};t.prototype.enableGesture=function(t,i){var n=this.disabledGestures.get(t);if(n!==undefined){n.delete(i)}};t.prototype.disableScroll=function(t){this.disabledScroll.add(t);if(this.disabledScroll.size===1){document.body.classList.add(BACKDROP_NO_SCROLL)}};t.prototype.enableScroll=function(t){this.disabledScroll.delete(t);if(this.disabledScroll.size===0){document.body.classList.remove(BACKDROP_NO_SCROLL)}};t.prototype.canStart=function(t){if(this.capturedId!==undefined){return false}if(this.isDisabled(t)){return false}return true};t.prototype.isCaptured=function(){return this.capturedId!==undefined};t.prototype.isScrollDisabled=function(){return this.disabledScroll.size>0};t.prototype.isDisabled=function(t){var i=this.disabledGestures.get(t);if(i&&i.size>0){return true}return false};t.prototype.newID=function(){this.gestureId++;return this.gestureId};return t}();var GestureDelegate=function(){function t(t,i,n,e,s){this.id=i;this.name=n;this.disableScroll=s;this.priority=e*1e6+i;this.ctrl=t}t.prototype.canStart=function(){if(!this.ctrl){return false}return this.ctrl.canStart(this.name)};t.prototype.start=function(){if(!this.ctrl){return false}return this.ctrl.start(this.name,this.id,this.priority)};t.prototype.capture=function(){if(!this.ctrl){return false}var t=this.ctrl.capture(this.name,this.id,this.priority);if(t&&this.disableScroll){this.ctrl.disableScroll(this.id)}return t};t.prototype.release=function(){if(this.ctrl){this.ctrl.release(this.id);if(this.disableScroll){this.ctrl.enableScroll(this.id)}}};t.prototype.destroy=function(){this.release();this.ctrl=undefined};return t}();var BlockerDelegate=function(){function t(t,i,n,e){this.id=i;this.disable=n;this.disableScroll=e;this.ctrl=t}t.prototype.block=function(){if(!this.ctrl){return}if(this.disable){for(var t=0,i=this.disable;t0){var r={priority:Number.MIN_SAFE_INTEGER,handler:function(){return undefined},id:-1};e.forEach((function(n){if(n.priority>=r.priority){r=n}}));n=true;e=e.filter((function(n){return n.id!==r.id}));o(r).then((function(){return n=false}))}};i()};if(shouldUseCloseWatcher()){var e;var a=function(){e===null||e===void 0?void 0:e.destroy();e=new win.CloseWatcher;e.onclose=function(){t();a()}};a()}else{r.addEventListener(\"backbutton\",t)}};var OVERLAY_BACK_BUTTON_PRIORITY=100;var MENU_BACK_BUTTON_PRIORITY=99;export{MENU_BACK_BUTTON_PRIORITY,OVERLAY_BACK_BUTTON_PRIORITY,blockHardwareBackButton,shouldUseCloseWatcher,startHardwareBackButton};","import{__spreadArray}from\"tslib\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */var transitionEndAsync=function(a,r){if(r===void 0){r=0}return new Promise((function(i){transitionEnd(a,r,i)}))};var transitionEnd=function(a,r,i){if(r===void 0){r=0}var e;var n;var t={passive:true};var o=500;var u=function(){if(e){e()}};var l=function(r){if(r===undefined||a===r.target){u();i(r)}};if(a){a.addEventListener(\"webkitTransitionEnd\",l,t);a.addEventListener(\"transitionend\",l,t);n=setTimeout(l,r+o);e=function(){if(n!==undefined){clearTimeout(n);n=undefined}a.removeEventListener(\"webkitTransitionEnd\",l,t);a.removeEventListener(\"transitionend\",l,t)}}return u};var componentOnReady=function(a,r){if(a.componentOnReady){a.componentOnReady().then((function(a){return r(a)}))}else{raf((function(){return r(a)}))}};var hasLazyBuild=function(a){return a.componentOnReady!==undefined};var inheritAttributes=function(a,r){if(r===void 0){r=[]}var i={};r.forEach((function(r){if(a.hasAttribute(r)){var e=a.getAttribute(r);if(e!==null){i[r]=a.getAttribute(r)}a.removeAttribute(r)}}));return i};var ariaAttributes=[\"role\",\"aria-activedescendant\",\"aria-atomic\",\"aria-autocomplete\",\"aria-braillelabel\",\"aria-brailleroledescription\",\"aria-busy\",\"aria-checked\",\"aria-colcount\",\"aria-colindex\",\"aria-colindextext\",\"aria-colspan\",\"aria-controls\",\"aria-current\",\"aria-describedby\",\"aria-description\",\"aria-details\",\"aria-disabled\",\"aria-errormessage\",\"aria-expanded\",\"aria-flowto\",\"aria-haspopup\",\"aria-hidden\",\"aria-invalid\",\"aria-keyshortcuts\",\"aria-label\",\"aria-labelledby\",\"aria-level\",\"aria-live\",\"aria-multiline\",\"aria-multiselectable\",\"aria-orientation\",\"aria-owns\",\"aria-placeholder\",\"aria-posinset\",\"aria-pressed\",\"aria-readonly\",\"aria-relevant\",\"aria-required\",\"aria-roledescription\",\"aria-rowcount\",\"aria-rowindex\",\"aria-rowindextext\",\"aria-rowspan\",\"aria-selected\",\"aria-setsize\",\"aria-sort\",\"aria-valuemax\",\"aria-valuemin\",\"aria-valuenow\",\"aria-valuetext\"];var inheritAriaAttributes=function(a,r){var i=ariaAttributes;if(r&&r.length>0){i=i.filter((function(a){return!r.includes(a)}))}return inheritAttributes(a,i)};var addEventListener=function(a,r,i,e){var n;if(typeof window!==\"undefined\"){var t=window;var o=(n=t===null||t===void 0?void 0:t.Ionic)===null||n===void 0?void 0:n.config;if(o){var u=o.get(\"_ael\");if(u){return u(a,r,i,e)}else if(o._ael){return o._ael(a,r,i,e)}}}return a.addEventListener(r,i,e)};var removeEventListener=function(a,r,i,e){var n;if(typeof window!==\"undefined\"){var t=window;var o=(n=t===null||t===void 0?void 0:t.Ionic)===null||n===void 0?void 0:n.config;if(o){var u=o.get(\"_rel\");if(u){return u(a,r,i,e)}else if(o._rel){return o._rel(a,r,i,e)}}}return a.removeEventListener(r,i,e)};var getElementRoot=function(a,r){if(r===void 0){r=a}return a.shadowRoot||r};var raf=function(a){if(typeof __zone_symbol__requestAnimationFrame===\"function\"){return __zone_symbol__requestAnimationFrame(a)}if(typeof requestAnimationFrame===\"function\"){return requestAnimationFrame(a)}return setTimeout(a)};var hasShadowDom=function(a){return!!a.shadowRoot&&!!a.attachShadow};var findItemLabel=function(a){var r=a.closest(\"ion-item\");if(r){return r.querySelector(\"ion-label\")}return null};var focusVisibleElement=function(a){a.focus();if(a.classList.contains(\"ion-focusable\")){var r=a.closest(\"ion-app\");if(r){r.setFocus([a])}}};var getAriaLabel=function(a,r){var i;var e=a.getAttribute(\"aria-labelledby\");var n=a.id;var t=e!==null&&e.trim()!==\"\"?e:r+\"-lbl\";var o=e!==null&&e.trim()!==\"\"?document.getElementById(e):findItemLabel(a);if(o){if(e===null){o.id=t}i=o.textContent;o.setAttribute(\"aria-hidden\",\"true\")}else if(n.trim()!==\"\"){o=document.querySelector('label[for=\"'.concat(n,'\"]'));if(o){if(o.id!==\"\"){t=o.id}else{o.id=t=\"\".concat(n,\"-lbl\")}i=o.textContent}}return{label:o,labelId:t,labelText:i}};var renderHiddenInput=function(a,r,i,e,n){if(a||hasShadowDom(r)){var t=r.querySelector(\"input.aux-input\");if(!t){t=r.ownerDocument.createElement(\"input\");t.type=\"hidden\";t.classList.add(\"aux-input\");r.appendChild(t)}t.disabled=n;t.name=i;t.value=e||\"\"}};var clamp=function(a,r,i){return Math.max(a,Math.min(r,i))};var assert=function(a,r){if(!a){var i=\"ASSERT: \"+r;console.error(i);debugger;throw new Error(i)}};var now=function(a){return a.timeStamp||Date.now()};var pointerCoord=function(a){if(a){var r=a.changedTouches;if(r&&r.length>0){var i=r[0];return{x:i.clientX,y:i.clientY}}if(a.pageX!==undefined){return{x:a.pageX,y:a.pageY}}}return{x:0,y:0}};var isEndSide=function(a){var r=document.dir===\"rtl\";switch(a){case\"start\":return r;case\"end\":return!r;default:throw new Error('\"'.concat(a,'\" is not a valid value for [side]. Use \"start\" or \"end\" instead.'))}};var debounceEvent=function(a,r){var i=a._original||a;return{_original:a,emit:debounce(i.emit.bind(i),r)}};var debounce=function(a,r){if(r===void 0){r=0}var i;return function(){var e=[];for(var n=0;nDate.now()){return}if(!r(a)){return}if(!o&&t){o=addEventListener(getDocument(e),\"mousemove\",t,n)}if(!c){c=addEventListener(getDocument(e),\"mouseup\",p,n)}};var m=function(e){_();if(a){a(e)}};var p=function(e){L();if(a){a(e)}};var _=function(){if(f){f()}if(v){v()}if(u){u()}f=v=u=undefined};var L=function(){if(o){o()}if(c){c()}o=c=undefined};var D=function(){_();L()};var G=function(r){if(r===void 0){r=true}if(!r){if(i){i()}if(s){s()}i=s=undefined;D()}else{if(!i){i=addEventListener(e,\"touchstart\",l,n)}if(!s){s=addEventListener(e,\"mousedown\",E,n)}}};var P=function(){G(false);a=t=r=undefined};return{enable:G,stop:D,destroy:P}};var getDocument=function(e){return e instanceof Document?e:e.ownerDocument};var createPanRecognizer=function(e,r,t){var a=t*(Math.PI/180);var n=e===\"x\";var i=Math.cos(a);var f=r*r;var v=0;var u=0;var s=false;var o=0;return{start:function(e,r){v=e;u=r;o=0;s=true},detect:function(e,r){if(!s){return false}var t=e-v;var a=r-u;var c=t*t+a*a;if(ci){o=1}else if(l<-i){o=-1}else{o=0}s=false;return true},isGesture:function(){return o!==0},getDirection:function(){return o}}};var createGesture=function(e){var r=false;var t=false;var a=true;var n=false;var i=Object.assign({disableScroll:false,direction:\"x\",gesturePriority:0,passive:true,maxAngle:40,threshold:10},e);var f=i.canStart;var v=i.onWillStart;var u=i.onStart;var s=i.onEnd;var o=i.notCaptured;var c=i.onMove;var d=i.threshold;var l=i.passive;var E=i.blurOnStart;var m={type:\"pan\",startX:0,startY:0,startTime:0,currentX:0,currentY:0,velocityX:0,velocityY:0,deltaX:0,deltaY:0,currentTime:0,event:undefined,data:undefined};var p=createPanRecognizer(i.direction,i.threshold,i.maxAngle);var _=GESTURE_CONTROLLER.createGesture({name:e.gestureName,priority:e.gesturePriority,disableScroll:e.disableScroll});var L=function(e){var r=now(e);if(t||!a){return false}updateDetail(e,m);m.startX=m.currentX;m.startY=m.currentY;m.startTime=m.currentTime=r;m.velocityX=m.velocityY=m.deltaX=m.deltaY=0;m.event=e;if(f&&f(m)===false){return false}_.release();if(!_.start()){return false}t=true;if(d===0){return P()}p.start(m.startX,m.startY);return true};var D=function(e){if(r){if(!n&&a){n=true;calcGestureData(m,e);requestAnimationFrame(G)}return}calcGestureData(m,e);if(p.detect(m.currentX,m.currentY)){if(!p.isGesture()||!P()){h()}}};var G=function(){if(!r){return}n=false;if(c){c(m)}};var P=function(){if(!_.capture()){return false}r=true;a=false;m.startX=m.currentX;m.startY=m.currentY;m.startTime=m.currentTime;if(v){v(m).then(y)}else{y()}return true};var g=function(){if(typeof document!==\"undefined\"){var e=document.activeElement;if(e===null||e===void 0?void 0:e.blur){e.blur()}}};var y=function(){if(E){g()}if(u){u(m)}a=true};var R=function(){r=false;t=false;n=false;a=true;_.release()};var T=function(e){var t=r;var n=a;R();if(!n){return}calcGestureData(m,e);if(t){if(s){s(m)}return}if(o){o(m)}};var b=createPointerEvents(i.el,L,D,T,{capture:false,passive:l});var h=function(){R();b.stop();if(o){o(m)}};return{enable:function(e){if(e===void 0){e=true}if(!e){if(r){T(undefined)}R()}b.enable(e)},destroy:function(){_.destroy();b.destroy()}}};var calcGestureData=function(e,r){if(!r){return}var t=e.currentX;var a=e.currentY;var n=e.currentTime;updateDetail(r,e);var i=e.currentX;var f=e.currentY;var v=e.currentTime=now(r);var u=v-n;if(u>0&&u<100){var s=(i-t)/u;var o=(f-a)/u;e.velocityX=s*.7+e.velocityX*.3;e.velocityY=o*.7+e.velocityY*.3}e.deltaX=i-e.startX;e.deltaY=f-e.startY;e.event=r};var updateDetail=function(e,r){var t=0;var a=0;if(e){var n=e.changedTouches;if(n&&n.length>0){var i=n[0];t=i.clientX;a=i.clientY}else if(e.pageX!==undefined){t=e.pageX;a=e.pageY}}r.currentX=t;r.currentY=a};var now=function(e){return e.timeStamp||Date.now()};export{createGesture};","import{__awaiter,__generator,__spreadArray}from\"tslib\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */import{d as doc}from\"./index-a5d50daf.js\";import{MENU_BACK_BUTTON_PRIORITY}from\"./hardware-back-button-6107a37c.js\";import{p as printIonWarning}from\"./index-9b0d46f4.js\";import{c as componentOnReady}from\"./helpers-be245865.js\";import{b as getIonMode}from\"./ionic-global-94f25d1b.js\";import{c as createAnimation}from\"./animation-6a0c5338.js\";var baseAnimation=function(n){return createAnimation().duration(n?400:300)};var menuOverlayAnimation=function(n){var r;var e;var t=n.width+8;var i=createAnimation();var a=createAnimation();if(n.isEndSide){r=t+\"px\";e=\"0px\"}else{r=-t+\"px\";e=\"0px\"}i.addElement(n.menuInnerEl).fromTo(\"transform\",\"translateX(\".concat(r,\")\"),\"translateX(\".concat(e,\")\"));var o=getIonMode(n);var u=o===\"ios\";var s=u?.2:.25;a.addElement(n.backdropEl).fromTo(\"opacity\",.01,s);return baseAnimation(u).addAnimation([i,a])};var menuPushAnimation=function(n){var r;var e;var t=getIonMode(n);var i=n.width;if(n.isEndSide){r=-i+\"px\";e=i+\"px\"}else{r=i+\"px\";e=-i+\"px\"}var a=createAnimation().addElement(n.menuInnerEl).fromTo(\"transform\",\"translateX(\".concat(e,\")\"),\"translateX(0px)\");var o=createAnimation().addElement(n.contentEl).fromTo(\"transform\",\"translateX(0px)\",\"translateX(\".concat(r,\")\"));var u=createAnimation().addElement(n.backdropEl).fromTo(\"opacity\",.01,.32);return baseAnimation(t===\"ios\").addAnimation([a,o,u])};var menuRevealAnimation=function(n){var r=getIonMode(n);var e=n.width*(n.isEndSide?-1:1)+\"px\";var t=createAnimation().addElement(n.contentEl).fromTo(\"transform\",\"translateX(0px)\",\"translateX(\".concat(e,\")\"));return baseAnimation(r===\"ios\").addAnimation(t)};var createMenuController=function(){var n=new Map;var r=[];var e=function(n){return __awaiter(void 0,void 0,void 0,(function(){var r;return __generator(this,(function(e){switch(e.label){case 0:return[4,c(n,true)];case 1:r=e.sent();if(r){return[2,r.open()]}return[2,false]}}))}))};var t=function(n){return __awaiter(void 0,void 0,void 0,(function(){var r;return __generator(this,(function(e){switch(e.label){case 0:return[4,n!==undefined?c(n,true):f()];case 1:r=e.sent();if(r!==undefined){return[2,r.close()]}return[2,false]}}))}))};var i=function(n){return __awaiter(void 0,void 0,void 0,(function(){var r;return __generator(this,(function(e){switch(e.label){case 0:return[4,c(n,true)];case 1:r=e.sent();if(r){return[2,r.toggle()]}return[2,false]}}))}))};var a=function(n,r){return __awaiter(void 0,void 0,void 0,(function(){var e;return __generator(this,(function(t){switch(t.label){case 0:return[4,c(r)];case 1:e=t.sent();if(e){e.disabled=!n}return[2,e]}}))}))};var o=function(n,r){return __awaiter(void 0,void 0,void 0,(function(){var e;return __generator(this,(function(t){switch(t.label){case 0:return[4,c(r)];case 1:e=t.sent();if(e){e.swipeGesture=n}return[2,e]}}))}))};var u=function(n){return __awaiter(void 0,void 0,void 0,(function(){var r,r;return __generator(this,(function(e){switch(e.label){case 0:if(!(n!=null))return[3,2];return[4,c(n)];case 1:r=e.sent();return[2,r!==undefined&&r.isOpen()];case 2:return[4,f()];case 3:r=e.sent();return[2,r!==undefined]}}))}))};var s=function(n){return __awaiter(void 0,void 0,void 0,(function(){var r;return __generator(this,(function(e){switch(e.label){case 0:return[4,c(n)];case 1:r=e.sent();if(r){return[2,!r.disabled]}return[2,false]}}))}))};var c=function(n){var e=[];for(var t=1;t=1){if(t.length>1&&e){printIonWarning('menuController queried for a menu on the \"'.concat(n,'\" side, but ').concat(t.length,\" menus were found. The first menu reference will be used. If this is not the behavior you want then pass the ID of the menu instead of its side.\"),t.map((function(n){return n.el})))}return[2,t[0].el]}i=r.filter((function(r){return r.side===n}));if(i.length>=1){if(i.length>1&&e){printIonWarning('menuController queried for a menu on the \"'.concat(n,'\" side, but ').concat(i.length,\" menus were found. The first menu reference will be used. If this is not the behavior you want then pass the ID of the menu instead of its side.\"),i.map((function(n){return n.el})))}return[2,i[0].el]}}else if(n!=null){return[2,b((function(r){return r.menuId===n}))]}a=b((function(n){return!n.disabled}));if(a){return[2,a]}return[2,r.length>0?r[0].el:undefined]}}))}))};var f=function(){return __awaiter(void 0,void 0,void 0,(function(){return __generator(this,(function(n){switch(n.label){case 0:return[4,x()];case 1:n.sent();return[2,w()]}}))}))};var v=function(){return __awaiter(void 0,void 0,void 0,(function(){return __generator(this,(function(n){switch(n.label){case 0:return[4,x()];case 1:n.sent();return[2,g()]}}))}))};var d=function(){return __awaiter(void 0,void 0,void 0,(function(){return __generator(this,(function(n){switch(n.label){case 0:return[4,x()];case 1:n.sent();return[2,A()]}}))}))};var _=function(r,e){n.set(r,e)};var m=function(n){if(r.indexOf(n)<0){r.push(n)}};var l=function(n){var e=r.indexOf(n);if(e>-1){r.splice(e,1)}};var h=function(n,r,e){return __awaiter(void 0,void 0,void 0,(function(){var t;return __generator(this,(function(i){switch(i.label){case 0:if(A()){return[2,false]}if(!r)return[3,3];return[4,f()];case 1:t=i.sent();if(!(t&&n.el!==t))return[3,3];return[4,t.setOpen(false,false)];case 2:i.sent();i.label=3;case 3:return[2,n._setOpen(r,e)]}}))}))};var p=function(r,e){var t=n.get(r);if(!t){throw new Error(\"animation not registered\")}var i=t(e);return i};var w=function(){return b((function(n){return n._isOpen}))};var g=function(){return r.map((function(n){return n.el}))};var A=function(){return r.some((function(n){return n.isAnimating}))};var b=function(n){var e=r.find(n);if(e!==undefined){return e.el}return undefined};var x=function(){return Promise.all(Array.from(document.querySelectorAll(\"ion-menu\")).map((function(n){return new Promise((function(r){return componentOnReady(n,r)}))})))};_(\"reveal\",menuRevealAnimation);_(\"push\",menuPushAnimation);_(\"overlay\",menuOverlayAnimation);doc===null||doc===void 0?void 0:doc.addEventListener(\"ionBackButton\",(function(n){var r=w();if(r){n.detail.register(MENU_BACK_BUTTON_PRIORITY,(function(){return r.close()}))}}));return{registerAnimation:_,get:c,getMenus:v,getOpen:f,isEnabled:s,swipeGesture:o,isAnimating:d,isOpen:u,enable:a,toggle:i,close:t,open:e,_getOpenSync:w,_createAnimation:p,_register:m,_unregister:l,_setOpen:h}};var menuController=createMenuController();export{menuController as m};","import{__spreadArray}from\"tslib\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */var printIonWarning=function(r){var n=[];for(var o=1;o must be used inside \").concat(n.join(\" or \"),\".\"))};export{printIonError as a,printRequiredElementError as b,printIonWarning as p};","import{__awaiter,__extends,__generator,__spreadArray}from\"tslib\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */var NAMESPACE=\"ionic\";var BUILD={allRenderFn:false,appendChildSlotFix:false,asyncLoading:true,asyncQueue:false,attachStyles:true,cloneNodeFix:false,cmpDidLoad:true,cmpDidRender:true,cmpDidUnload:false,cmpDidUpdate:true,cmpShouldUpdate:false,cmpWillLoad:true,cmpWillRender:true,cmpWillUpdate:false,connectedCallback:true,constructableCSS:true,cssAnnotations:true,devTools:false,disconnectedCallback:true,element:false,event:true,experimentalScopedSlotChanges:false,experimentalSlotFixes:false,formAssociated:false,hasRenderFn:true,hostListener:true,hostListenerTarget:true,hostListenerTargetBody:true,hostListenerTargetDocument:true,hostListenerTargetParent:false,hostListenerTargetWindow:true,hotModuleReplacement:false,hydrateClientSide:true,hydrateServerSide:false,hydratedAttribute:false,hydratedClass:true,initializeNextTick:false,invisiblePrehydration:true,isDebug:false,isDev:false,isTesting:false,lazyLoad:true,lifecycle:true,lifecycleDOMEvents:false,member:true,method:true,mode:true,observeAttribute:true,profile:false,prop:true,propBoolean:true,propMutable:true,propNumber:true,propString:true,reflect:true,scoped:true,scopedSlotTextContentFix:false,scriptDataOpts:false,shadowDelegatesFocus:true,shadowDom:true,slot:true,slotChildNodesFix:false,slotRelocation:true,state:true,style:true,svg:true,taskQueue:true,transformTagName:false,updatable:true,vdomAttribute:true,vdomClass:true,vdomFunctional:true,vdomKey:true,vdomListener:true,vdomPropOrAttr:true,vdomRef:true,vdomRender:true,vdomStyle:true,vdomText:true,vdomXlink:true,watchCallback:true};var scopeId;var contentRef;var hostTagName;var useNativeShadowDom=false;var checkSlotFallbackVisibility=false;var checkSlotRelocate=false;var isSvgMode=false;var queuePending=false;var Build={isDev:false,isBrowser:true,isServer:false,isTesting:false};var getAssetPath=function(e){var t=new URL(e,plt.t);return t.origin!==win.location.origin?t.href:t.pathname};var createTime=function(e,t){if(t===void 0){t=\"\"}{return function(){return}}};var uniqueTime=function(e,t){{return function(){return}}};var CONTENT_REF_ID=\"r\";var ORG_LOCATION_ID=\"o\";var SLOT_NODE_ID=\"s\";var TEXT_NODE_ID=\"t\";var HYDRATE_ID=\"s-id\";var HYDRATED_STYLE_ID=\"sty-id\";var HYDRATE_CHILD_ID=\"c-id\";var HYDRATED_CSS=\"{visibility:hidden}.hydrated{visibility:inherit}\";var SLOT_FB_CSS=\"slot-fb{display:contents}slot-fb[hidden]{display:none}\";var XLINK_NS=\"http://www.w3.org/1999/xlink\";var EMPTY_OBJ={};var SVG_NS=\"http://www.w3.org/2000/svg\";var HTML_NS=\"http://www.w3.org/1999/xhtml\";var isDef=function(e){return e!=null};var isComplexType=function(e){e=typeof e;return e===\"object\"||e===\"function\"};function queryNonceMetaTagContent(e){var t,r,n;return(n=(r=(t=e.head)===null||t===void 0?void 0:t.querySelector('meta[name=\"csp-nonce\"]'))===null||r===void 0?void 0:r.getAttribute(\"content\"))!==null&&n!==void 0?n:undefined}var h=function(e,t){var r=[];for(var n=2;n0){v.l=u}{v.u=i}{v.v=o}return v};var newVNode=function(e,t){var r={p:0,m:e,i:t,h:null,l:null};{r.o=null}{r.u=null}{r.v=null}return r};var Host={};var isHost=function(e){return e&&e.m===Host};var vdomFnUtils={forEach:function(e,t){return e.map(convertToPublic).forEach(t)},map:function(e,t){return e.map(convertToPublic).map(t).map(convertToPrivate)}};var convertToPublic=function(e){return{vattrs:e.o,vchildren:e.l,vkey:e.u,vname:e.v,vtag:e.m,vtext:e.i}};var convertToPrivate=function(e){if(typeof e.vtag===\"function\"){var t=Object.assign({},e.vattrs);if(e.vkey){t.key=e.vkey}if(e.vname){t.name=e.vname}return h.apply(void 0,__spreadArray([e.vtag,t],e.vchildren||[],false))}var r=newVNode(e.vtag,e.vtext);r.o=e.vattrs;r.l=e.vchildren;r.u=e.vkey;r.v=e.vname;return r};var initializeClientHydrate=function(e,t,r,n){var a=createTime(\"hydrateClient\",t);var i=e.shadowRoot;var o=[];var l=[];var s=i?[]:null;var u=n.S=newVNode(t,null);if(!plt.T){initializeDocumentHydrate(doc.body,plt.T=new Map)}e[HYDRATE_ID]=r;e.removeAttribute(HYDRATE_ID);clientHydrate(u,o,l,s,e,e,r);o.map((function(e){var r=e._+\".\"+e.C;var n=plt.T.get(r);var a=e.h;if(n&&supportsShadow&&n[\"s-en\"]===\"\"){n.parentNode.insertBefore(a,n.nextSibling)}if(!i){a[\"s-hn\"]=t;if(n){a[\"s-ol\"]=n;a[\"s-ol\"][\"s-nr\"]=a}}plt.T.delete(r)}));if(i){s.map((function(e){if(e){i.appendChild(e)}}))}a()};var clientHydrate=function(e,t,r,n,a,i,o){var l;var s;var u;var f;if(i.nodeType===1){l=i.getAttribute(HYDRATE_CHILD_ID);if(l){s=l.split(\".\");if(s[0]===o||s[0]===\"0\"){u={p:0,_:s[0],C:s[1],R:s[2],$:s[3],m:i.tagName.toLowerCase(),h:i,o:null,l:null,u:null,v:null,i:null};t.push(u);i.removeAttribute(HYDRATE_CHILD_ID);if(!e.l){e.l=[]}e.l[u.$]=u;e=u;if(n&&u.R===\"0\"){n[u.$]=u.h}}}for(f=i.childNodes.length-1;f>=0;f--){clientHydrate(e,t,r,n,a,i.childNodes[f],o)}if(i.shadowRoot){for(f=i.shadowRoot.childNodes.length-1;f>=0;f--){clientHydrate(e,t,r,n,a,i.shadowRoot.childNodes[f],o)}}}else if(i.nodeType===8){s=i.nodeValue.split(\".\");if(s[1]===o||s[1]===\"0\"){l=s[0];u={p:0,_:s[1],C:s[2],R:s[3],$:s[4],h:i,o:null,l:null,u:null,v:null,m:null,i:null};if(l===TEXT_NODE_ID){u.h=i.nextSibling;if(u.h&&u.h.nodeType===3){u.i=u.h.textContent;t.push(u);i.remove();if(!e.l){e.l=[]}e.l[u.$]=u;if(n&&u.R===\"0\"){n[u.$]=u.h}}}else if(u._===o){if(l===SLOT_NODE_ID){u.m=\"slot\";if(s[5]){i[\"s-sn\"]=u.v=s[5]}else{i[\"s-sn\"]=\"\"}i[\"s-sr\"]=true;if(n){u.h=doc.createElement(u.m);if(u.v){u.h.setAttribute(\"name\",u.v)}i.parentNode.insertBefore(u.h,i);i.remove();if(u.R===\"0\"){n[u.$]=u.h}}r.push(u);if(!e.l){e.l=[]}e.l[u.$]=u}else if(l===CONTENT_REF_ID){if(n){i.remove()}else{a[\"s-cr\"]=i;i[\"s-cn\"]=true}}}}}else if(e&&e.m===\"style\"){var c=newVNode(null,i.textContent);c.h=i;c.$=\"0\";e.l=[c]}};var initializeDocumentHydrate=function(e,t){if(e.nodeType===1){var r=0;for(;r=0;a--){var i=r[a];if(i[\"s-hn\"]!==hostTagName&&i[\"s-ol\"]){parentReferenceNode(i).insertBefore(i,referenceNode(i));i[\"s-ol\"].remove();i[\"s-ol\"]=undefined;i[\"s-sh\"]=undefined;checkSlotRelocate=true}if(t){putBackInOriginalLocation(i,t)}}plt.p&=~1};var addVnodes=function(e,t,r,n,a,i){var o=e[\"s-cr\"]&&e[\"s-cr\"].parentNode||e;var l;if(o.shadowRoot&&o.tagName===hostTagName){o=o.shadowRoot}for(;a<=i;++a){if(n[a]){l=createElm(null,r,a,e);if(l){n[a].h=l;o.insertBefore(l,referenceNode(t))}}}};var removeVnodes=function(e,t,r){for(var n=t;n<=r;++n){var a=e[n];if(a){var i=a.h;nullifyVNodeRefs(a);if(i){{checkSlotFallbackVisibility=true;if(i[\"s-ol\"]){i[\"s-ol\"].remove()}else{putBackInOriginalLocation(i,true)}}i.remove()}}}};var updateChildren=function(e,t,r,n,a){if(a===void 0){a=false}var i=0;var o=0;var l=0;var s=0;var u=t.length-1;var f=t[0];var c=t[u];var v=n.length-1;var d=n[0];var p=n[v];var m;var h;while(i<=u&&o<=v){if(f==null){f=t[++i]}else if(c==null){c=t[--u]}else if(d==null){d=n[++o]}else if(p==null){p=n[--v]}else if(isSameVnode(f,d,a)){patch(f,d,a);f=t[++i];d=n[++o]}else if(isSameVnode(c,p,a)){patch(c,p,a);c=t[--u];p=n[--v]}else if(isSameVnode(f,p,a)){if(f.m===\"slot\"||p.m===\"slot\"){putBackInOriginalLocation(f.h.parentNode,false)}patch(f,p,a);e.insertBefore(f.h,c.h.nextSibling);f=t[++i];p=n[--v]}else if(isSameVnode(c,d,a)){if(f.m===\"slot\"||p.m===\"slot\"){putBackInOriginalLocation(c.h.parentNode,false)}patch(c,d,a);e.insertBefore(c.h,f.h);c=t[--u];d=n[++o]}else{l=-1;{for(s=i;s<=u;++s){if(t[s]&&t[s].u!==null&&t[s].u===d.u){l=s;break}}}if(l>=0){h=t[l];if(h.m!==d.m){m=createElm(t&&t[o],r,l,e)}else{patch(h,d,a);t[l]=undefined;m=h.h}d=n[++o]}else{m=createElm(t&&t[o],r,o,e);d=n[++o]}if(m){{parentReferenceNode(f.h).insertBefore(m,referenceNode(f.h))}}}}if(i>u){addVnodes(e,n[v+1]==null?null:n[v+1].h,r,n,o,v)}else if(o>v){removeVnodes(t,i,u)}};var isSameVnode=function(e,t,r){if(r===void 0){r=false}if(e.m===t.m){if(e.m===\"slot\"){return e.v===t.v}if(!r){return e.u===t.u}return true}return false};var referenceNode=function(e){return e&&e[\"s-ol\"]||e};var parentReferenceNode=function(e){return(e[\"s-ol\"]?e[\"s-ol\"]:e).parentNode};var patch=function(e,t,r){if(r===void 0){r=false}var n=t.h=e.h;var a=e.l;var i=t.l;var o=t.m;var l=t.i;var s;if(l===null){{isSvgMode=o===\"svg\"?true:o===\"foreignObject\"?false:isSvgMode}{if(o===\"slot\"&&!useNativeShadowDom);else{updateElement(e,t,isSvgMode)}}if(a!==null&&i!==null){updateChildren(n,a,t,i,r)}else if(i!==null){if(e.i!==null){n.textContent=\"\"}addVnodes(n,null,t,i,0,i.length-1)}else if(a!==null){removeVnodes(a,0,a.length-1)}if(isSvgMode&&o===\"svg\"){isSvgMode=false}}else if(s=n[\"s-cr\"]){s.parentNode.textContent=l}else if(e.i!==l){n.data=l}};var updateFallbackSlotVisibility=function(e){var t=e.childNodes;for(var r=0,n=t;r=0;n--){s()}}if(o.nodeType===1){markSlotContentForRelocation(o)}}};var isNodeLocatedInSlot=function(e,t){if(e.nodeType===1){if(e.getAttribute(\"slot\")===null&&t===\"\"){return true}if(e.getAttribute(\"slot\")===t){return true}return false}if(e[\"s-sn\"]===t){return true}return t===\"\"};var nullifyVNodeRefs=function(e){{e.o&&e.o.ref&&e.o.ref(null);e.l&&e.l.map(nullifyVNodeRefs)}};var renderVdom=function(e,t,r){if(r===void 0){r=false}var n,a,i,o;var l=e.$hostElement$;var s=e.k;var u=e.S||newVNode(null,null);var f=isHost(t)?t:h(null,null,t);hostTagName=l.tagName;if(s.A){f.o=f.o||{};s.A.map((function(e){var t=e[0],r=e[1];return f.o[r]=l[t]}))}if(r&&f.o){for(var c=0,v=Object.keys(f.o);c0){if(m){u.textContent+=SLOT_FB_CSS}{u.textContent+=a+HYDRATED_CSS}if(u.innerHTML.length){u.setAttribute(\"data-styles\",\"\");var h=(r=plt.D)!==null&&r!==void 0?r:queryNonceMetaTagContent(doc);if(h!=null){u.setAttribute(\"nonce\",h)}l.insertBefore(u,s?s.nextSibling:l.firstChild)}}d=false;if(f.length){f.map((function(e){return e.connectedCallback()}))}else{{plt.jmp((function(){return v=setTimeout(appDidLoad,30)}))}}n()};var addHostEventListeners=function(e,t,r,n){if(r){r.map((function(r){var n=r[0],a=r[1],i=r[2];var o=getHostListenerTarget(e,n);var l=hostListenerProxy(t,i);var s=hostListenerOpts(n);plt.ael(o,a,l,s);(t.K=t.K||[]).push((function(){return plt.rel(o,a,l,s)}))}))}};var hostListenerProxy=function(e,t){return function(r){try{{if(e.p&256){e.V[t](r)}else{(e.F=e.F||[]).push([t,r])}}}catch(e){consoleError(e)}}};var getHostListenerTarget=function(e,t){if(t&4)return doc;if(t&8)return win;if(t&16)return doc.body;return e};var hostListenerOpts=function(e){return supportsListenerOptions?{passive:(e&1)!==0,capture:(e&2)!==0}:(e&2)!==0};var setNonce=function(e){return plt.D=e};var hostRefs=new WeakMap;var getHostRef=function(e){return hostRefs.get(e)};var registerInstance=function(e,t){return hostRefs.set(t.V=e,t)};var registerHost=function(e,t){var r={p:0,$hostElement$:e,k:t,q:new Map};{r.Y=new Promise((function(e){return r.U=e}))}{r.G=new Promise((function(e){return r.P=e}));e[\"s-p\"]=[];e[\"s-rc\"]=[]}addHostEventListeners(e,r,t.X);return hostRefs.set(e,r)};var isMemberInElement=function(e,t){return t in e};var consoleError=function(e,t){return(0,console.error)(e,t)};var cmpModules=new Map;var loadModule=function(e,t,r){var n=e.L.replace(/-/g,\"_\");var a=e.W;var i=cmpModules.get(a);if(i){return i[n]}\n/*!__STENCIL_STATIC_IMPORT_SWITCH__*/return import(\"./\".concat(a,\".entry.js\").concat(\"\")).then((function(e){{cmpModules.set(a,e)}return e[n]}),consoleError)};var styles=new Map;var modeResolutionChain=[];var win=typeof window!==\"undefined\"?window:{};var doc=win.document||{head:{}};var plt={p:0,t:\"\",jmp:function(e){return e()},raf:function(e){return requestAnimationFrame(e)},ael:function(e,t,r,n){return e.addEventListener(t,r,n)},rel:function(e,t,r,n){return e.removeEventListener(t,r,n)},ce:function(e,t){return new CustomEvent(e,t)}};var setPlatformHelpers=function(e){Object.assign(plt,e)};var supportsShadow=true;var supportsListenerOptions=function(){var e=false;try{doc.addEventListener(\"e\",null,Object.defineProperty({},\"passive\",{get:function(){e=true}}))}catch(e){}return e}();var promiseResolve=function(e){return Promise.resolve(e)};var supportsConstructableStylesheets=function(){try{new CSSStyleSheet;return typeof(new CSSStyleSheet).replaceSync===\"function\"}catch(e){}return false}();var queueDomReads=[];var queueDomWrites=[];var queueTask=function(e,t){return function(r){e.push(r);if(!queuePending){queuePending=true;if(t&&plt.p&4){nextTick(flush)}else{plt.raf(flush)}}}};var consume=function(e){for(var t=0;t0){plt.raf(flush)}}};var nextTick=function(e){return promiseResolve().then(e)};var readTask=queueTask(queueDomReads,false);var writeTask=queueTask(queueDomWrites,true);export{Build as B,Host as H,setPlatformHelpers as a,bootstrapLazy as b,setMode as c,createEvent as d,readTask as e,getElement as f,getMode as g,h,forceUpdate as i,getAssetPath as j,promiseResolve as p,registerInstance as r,setNonce as s,writeTask as w};","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nvar win=typeof window!==\"undefined\"?window:undefined;var doc=typeof document!==\"undefined\"?document:undefined;export{doc as d,win as w};","import{__awaiter,__generator}from\"tslib\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */import{w as writeTask,B as Build}from\"./index-a1a47f01.js\";import{r as raf}from\"./helpers-be245865.js\";var LIFECYCLE_WILL_ENTER=\"ionViewWillEnter\";var LIFECYCLE_DID_ENTER=\"ionViewDidEnter\";var LIFECYCLE_WILL_LEAVE=\"ionViewWillLeave\";var LIFECYCLE_DID_LEAVE=\"ionViewDidLeave\";var LIFECYCLE_WILL_UNLOAD=\"ionViewWillUnload\";var iosTransitionAnimation=function(){return import(\"./ios.transition-a50a9a55.js\")};var mdTransitionAnimation=function(){return import(\"./md.transition-0da92976.js\")};var transition=function(n){return new Promise((function(e,i){writeTask((function(){beforeTransition(n);runTransition(n).then((function(i){if(i.animation){i.animation.destroy()}afterTransition(n);e(i)}),(function(e){afterTransition(n);i(e)}))}))}))};var beforeTransition=function(n){var e=n.enteringEl;var i=n.leavingEl;setZIndex(e,i,n.direction);if(n.showGoBack){e.classList.add(\"can-go-back\")}else{e.classList.remove(\"can-go-back\")}setPageHidden(e,false);e.style.setProperty(\"pointer-events\",\"none\");if(i){setPageHidden(i,false);i.style.setProperty(\"pointer-events\",\"none\")}};var runTransition=function(n){return __awaiter(void 0,void 0,void 0,(function(){var e,i;return __generator(this,(function(r){switch(r.label){case 0:return[4,getAnimationBuilder(n)];case 1:e=r.sent();i=e&&Build.isBrowser?animation(e,n):noAnimation(n);return[2,i]}}))}))};var afterTransition=function(n){var e=n.enteringEl;var i=n.leavingEl;e.classList.remove(\"ion-page-invisible\");e.style.removeProperty(\"pointer-events\");if(i!==undefined){i.classList.remove(\"ion-page-invisible\");i.style.removeProperty(\"pointer-events\")}};var getAnimationBuilder=function(n){return __awaiter(void 0,void 0,void 0,(function(){var e,i;return __generator(this,(function(r){switch(r.label){case 0:if(!n.leavingEl||!n.animated||n.duration===0){return[2,undefined]}if(n.animationBuilder){return[2,n.animationBuilder]}if(!(n.mode===\"ios\"))return[3,2];return[4,iosTransitionAnimation()];case 1:i=r.sent().iosTransitionAnimation;return[3,4];case 2:return[4,mdTransitionAnimation()];case 3:i=r.sent().mdTransitionAnimation;r.label=4;case 4:e=i;return[2,e]}}))}))};var animation=function(n,e){return __awaiter(void 0,void 0,void 0,(function(){var i,r;return __generator(this,(function(t){switch(t.label){case 0:return[4,waitForReady(e,true)];case 1:t.sent();i=n(e.baseEl,e);fireWillEvents(e.enteringEl,e.leavingEl);return[4,playTransition(i,e)];case 2:r=t.sent();if(e.progressCallback){e.progressCallback(undefined)}if(r){fireDidEvents(e.enteringEl,e.leavingEl)}return[2,{hasCompleted:r,animation:i}]}}))}))};var noAnimation=function(n){return __awaiter(void 0,void 0,void 0,(function(){var e,i;return __generator(this,(function(r){switch(r.label){case 0:e=n.enteringEl;i=n.leavingEl;return[4,waitForReady(n,false)];case 1:r.sent();fireWillEvents(e,i);fireDidEvents(e,i);return[2,{hasCompleted:true}]}}))}))};var waitForReady=function(n,e){return __awaiter(void 0,void 0,void 0,(function(){var i;return __generator(this,(function(r){switch(r.label){case 0:i=n.deepWait!==undefined?n.deepWait:e;if(!i)return[3,2];return[4,Promise.all([deepReady(n.enteringEl),deepReady(n.leavingEl)])];case 1:r.sent();r.label=2;case 2:return[4,notifyViewReady(n.viewIsReady,n.enteringEl)];case 3:r.sent();return[2]}}))}))};var notifyViewReady=function(n,e){return __awaiter(void 0,void 0,void 0,(function(){return __generator(this,(function(i){switch(i.label){case 0:if(!n)return[3,2];return[4,n(e)];case 1:i.sent();i.label=2;case 2:return[2]}}))}))};var playTransition=function(n,e){var i=e.progressCallback;var r=new Promise((function(e){n.onFinish((function(n){return e(n===1)}))}));if(i){n.progressStart(true);i(n)}else{n.play()}return r};var fireWillEvents=function(n,e){lifecycle(e,LIFECYCLE_WILL_LEAVE);lifecycle(n,LIFECYCLE_WILL_ENTER)};var fireDidEvents=function(n,e){lifecycle(n,LIFECYCLE_DID_ENTER);lifecycle(e,LIFECYCLE_DID_LEAVE)};var lifecycle=function(n,e){if(n){var i=new CustomEvent(e,{bubbles:false,cancelable:false});n.dispatchEvent(i)}};var waitForMount=function(){return new Promise((function(n){return raf((function(){return raf((function(){return n()}))}))}))};var deepReady=function(n){return __awaiter(void 0,void 0,void 0,(function(){var e,i,r;return __generator(this,(function(t){switch(t.label){case 0:e=n;if(!e)return[3,6];if(!(e.componentOnReady!=null))return[3,2];return[4,e.componentOnReady()];case 1:i=t.sent();if(i!=null){return[2]}return[3,4];case 2:if(!(e.__registerHost!=null))return[3,4];r=new Promise((function(n){return raf(n)}));return[4,r];case 3:t.sent();return[2];case 4:return[4,Promise.all(Array.from(e.children).map(deepReady))];case 5:t.sent();t.label=6;case 6:return[2]}}))}))};var setPageHidden=function(n,e){if(e){n.setAttribute(\"aria-hidden\",\"true\");n.classList.add(\"ion-page-hidden\")}else{n.hidden=false;n.removeAttribute(\"aria-hidden\");n.classList.remove(\"ion-page-hidden\")}};var setZIndex=function(n,e,i){if(n!==undefined){n.style.zIndex=i===\"back\"?\"99\":\"101\"}if(e!==undefined){e.style.zIndex=\"100\"}};var getIonPageElement=function(n){if(n.classList.contains(\"ion-page\")){return n}var e=n.querySelector(\":scope > .ion-page, :scope > ion-nav, :scope > ion-tabs\");if(e){return e}return n};export{LIFECYCLE_WILL_ENTER as L,LIFECYCLE_DID_ENTER as a,LIFECYCLE_WILL_LEAVE as b,LIFECYCLE_DID_LEAVE as c,LIFECYCLE_WILL_UNLOAD as d,deepReady as e,getIonPageElement as g,lifecycle as l,setPageHidden as s,transition as t,waitForMount as w};","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nexport{c as createAnimation}from\"./animation-6a0c5338.js\";export{a as LIFECYCLE_DID_ENTER,c as LIFECYCLE_DID_LEAVE,L as LIFECYCLE_WILL_ENTER,b as LIFECYCLE_WILL_LEAVE,d as LIFECYCLE_WILL_UNLOAD,g as getIonPageElement}from\"./index-fae1515c.js\";export{iosTransitionAnimation}from\"./ios.transition-a50a9a55.js\";export{mdTransitionAnimation}from\"./md.transition-0da92976.js\";export{g as getTimeGivenProgression}from\"./cubic-bezier-fe2083dc.js\";export{createGesture}from\"./index-2cf77112.js\";export{g as getPlatforms,i as initialize,a as isPlatform}from\"./ionic-global-94f25d1b.js\";export{c as componentOnReady}from\"./helpers-be245865.js\";export{I as IonicSafeString,g as getMode,s as setupConfig}from\"./config-49c88215.js\";export{o as openURL}from\"./theme-01f3f29c.js\";export{m as menuController}from\"./index-6e05b96e.js\";export{b as actionSheetController,a as alertController,l as loadingController,m as modalController,p as pickerController,c as popoverController,t as toastController}from\"./overlays-b874c3c3.js\";import\"./index-a5d50daf.js\";import\"./index-a1a47f01.js\";import\"./gesture-controller-1bf57181.js\";import\"./hardware-back-button-6107a37c.js\";import\"./index-9b0d46f4.js\";import\"./framework-delegate-ed4ba327.js\";var IonicSlides=function(e){var o=e.swiper,t=e.extendParams;var s={effect:undefined,direction:\"horizontal\",initialSlide:0,loop:false,parallax:false,slidesPerView:1,spaceBetween:0,speed:300,slidesPerColumn:1,slidesPerColumnFill:\"column\",slidesPerGroup:1,centeredSlides:false,slidesOffsetBefore:0,slidesOffsetAfter:0,touchEventsTarget:\"container\",freeMode:false,freeModeMomentum:true,freeModeMomentumRatio:1,freeModeMomentumBounce:true,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:false,freeModeMinimumVelocity:.02,autoHeight:false,setWrapperSize:false,zoom:{maxRatio:3,minRatio:1,toggle:false},touchRatio:1,touchAngle:45,simulateTouch:true,touchStartPreventDefault:false,shortSwipes:true,longSwipes:true,longSwipesRatio:.5,longSwipesMs:300,followFinger:true,threshold:0,touchMoveStopPropagation:true,touchReleaseOnEdges:false,iOSEdgeSwipeDetection:false,iOSEdgeSwipeThreshold:20,resistance:true,resistanceRatio:.85,watchSlidesProgress:false,watchSlidesVisibility:false,preventClicks:true,preventClicksPropagation:true,slideToClickedSlide:false,loopAdditionalSlides:0,noSwiping:true,runCallbacksOnInit:true,coverflowEffect:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:true},flipEffect:{slideShadows:true,limitRotation:true},cubeEffect:{slideShadows:true,shadow:true,shadowOffset:20,shadowScale:.94},fadeEffect:{crossFade:false},a11y:{prevSlideMessage:\"Previous slide\",nextSlideMessage:\"Next slide\",firstSlideMessage:\"This is the first slide\",lastSlideMessage:\"This is the last slide\"}};if(o.pagination){s.pagination={type:\"bullets\",clickable:false,hideOnClick:false}}if(o.scrollbar){s.scrollbar={hide:true}}t(s)};export{IonicSlides};","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport{a as setPlatformHelpers,g as getMode,c as setMode}from\"./index-a1a47f01.js\";var Config=function(){function i(){this.m=new Map}i.prototype.reset=function(i){this.m=new Map(Object.entries(i))};i.prototype.get=function(i,t){var n=this.m.get(i);return n!==undefined?n:t};i.prototype.getBoolean=function(i,t){if(t===void 0){t=false}var n=this.m.get(i);if(n===undefined){return t}if(typeof n===\"string\"){return n===\"true\"}return!!n};i.prototype.getNumber=function(i,t){var n=parseFloat(this.m.get(i));return isNaN(n)?t!==undefined?t:NaN:n};i.prototype.set=function(i,t){this.m.set(i,t)};return i}();var config=new Config;var configFromSession=function(i){try{var t=i.sessionStorage.getItem(IONIC_SESSION_KEY);return t!==null?JSON.parse(t):{}}catch(i){return{}}};var saveConfig=function(i,t){try{i.sessionStorage.setItem(IONIC_SESSION_KEY,JSON.stringify(t))}catch(i){return}};var configFromURL=function(i){var t={};i.location.search.slice(1).split(\"&\").map((function(i){return i.split(\"=\")})).map((function(i){var t=i[0],n=i[1];return[decodeURIComponent(t),decodeURIComponent(n)]})).filter((function(i){var t=i[0];return startsWith(t,IONIC_PREFIX)})).map((function(i){var t=i[0],n=i[1];return[t.slice(IONIC_PREFIX.length),n]})).forEach((function(i){var n=i[0],r=i[1];t[n]=r}));return t};var startsWith=function(i,t){return i.substr(0,t.length)===t};var IONIC_PREFIX=\"ionic:\";var IONIC_SESSION_KEY=\"ionic-persist-config\";var getPlatforms=function(i){return setupPlatforms(i)};var isPlatform=function(i,t){if(typeof i===\"string\"){t=i;i=undefined}return getPlatforms(i).includes(t)};var setupPlatforms=function(i){if(i===void 0){i=window}if(typeof i===\"undefined\"){return[]}i.Ionic=i.Ionic||{};var t=i.Ionic.platforms;if(t==null){t=i.Ionic.platforms=detectPlatforms(i);t.forEach((function(t){return i.document.documentElement.classList.add(\"plt-\".concat(t))}))}return t};var detectPlatforms=function(i){var t=config.get(\"platform\");return Object.keys(PLATFORMS_MAP).filter((function(n){var r=t===null||t===void 0?void 0:t[n];return typeof r===\"function\"?r(i):PLATFORMS_MAP[n](i)}))};var isMobileWeb=function(i){return isMobile(i)&&!isHybrid(i)};var isIpad=function(i){if(testUserAgent(i,/iPad/i)){return true}if(testUserAgent(i,/Macintosh/i)&&isMobile(i)){return true}return false};var isIphone=function(i){return testUserAgent(i,/iPhone/i)};var isIOS=function(i){return testUserAgent(i,/iPhone|iPod/i)||isIpad(i)};var isAndroid=function(i){return testUserAgent(i,/android|sink/i)};var isAndroidTablet=function(i){return isAndroid(i)&&!testUserAgent(i,/mobile/i)};var isPhablet=function(i){var t=i.innerWidth;var n=i.innerHeight;var r=Math.min(t,n);var e=Math.max(t,n);return r>390&&r<520&&e>620&&e<800};var isTablet=function(i){var t=i.innerWidth;var n=i.innerHeight;var r=Math.min(t,n);var e=Math.max(t,n);return isIpad(i)||isAndroidTablet(i)||r>460&&r<820&&e>780&&e<1400};var isMobile=function(i){return matchMedia(i,\"(any-pointer:coarse)\")};var isDesktop=function(i){return!isMobile(i)};var isHybrid=function(i){return isCordova(i)||isCapacitorNative(i)};var isCordova=function(i){return!!(i[\"cordova\"]||i[\"phonegap\"]||i[\"PhoneGap\"])};var isCapacitorNative=function(i){var t=i[\"Capacitor\"];return!!(t===null||t===void 0?void 0:t.isNative)};var isElectron=function(i){return testUserAgent(i,/electron/i)};var isPWA=function(i){var t;return!!(((t=i.matchMedia)===null||t===void 0?void 0:t.call(i,\"(display-mode: standalone)\").matches)||i.navigator.standalone)};var testUserAgent=function(i,t){return t.test(i.navigator.userAgent)};var matchMedia=function(i,t){var n;return(n=i.matchMedia)===null||n===void 0?void 0:n.call(i,t).matches};var PLATFORMS_MAP={ipad:isIpad,iphone:isIphone,ios:isIOS,android:isAndroid,phablet:isPhablet,tablet:isTablet,cordova:isCordova,capacitor:isCapacitorNative,electron:isElectron,pwa:isPWA,mobile:isMobile,mobileweb:isMobileWeb,desktop:isDesktop,hybrid:isHybrid};var defaultMode;var getIonMode=function(i){return i&&getMode(i)||defaultMode};var initialize=function(i){if(i===void 0){i={}}if(typeof window===\"undefined\"){return}var t=window.document;var n=window;var r=n.Ionic=n.Ionic||{};var e={};if(i._ael){e.ael=i._ael}if(i._rel){e.rel=i._rel}if(i._ce){e.ce=i._ce}setPlatformHelpers(e);var o=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},configFromSession(n)),{persistConfig:false}),r.config),configFromURL(n)),i);config.reset(o);if(config.getBoolean(\"persistConfig\")){saveConfig(n,o)}setupPlatforms(n);r.config=config;r.mode=defaultMode=config.get(\"mode\",t.documentElement.getAttribute(\"mode\")||(isPlatform(n,\"ios\")?\"ios\":\"md\"));config.set(\"mode\",defaultMode);t.documentElement.setAttribute(\"mode\",defaultMode);t.documentElement.classList.add(defaultMode);if(config.getBoolean(\"_testing\")){config.set(\"animated\",false)}var a=function(i){var t;return(t=i.tagName)===null||t===void 0?void 0:t.startsWith(\"ION-\")};var s=function(i){return[\"ios\",\"md\"].includes(i)};setMode((function(i){while(i){var t=i.mode||i.getAttribute(\"mode\");if(t){if(s(t)){return t}else if(a(i)){console.warn('Invalid ionic mode: \"'+t+'\", expected: \"ios\" or \"md\"')}}i=i.parentElement}return defaultMode}))};export{isPlatform as a,getIonMode as b,config as c,getPlatforms as g,initialize as i};","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport{c as createAnimation}from\"./animation-6a0c5338.js\";import{g as getIonPageElement}from\"./index-fae1515c.js\";import\"./index-a5d50daf.js\";import\"./helpers-be245865.js\";import\"./index-a1a47f01.js\";var DURATION=540;var getClonedElement=function(a){return document.querySelector(\"\".concat(a,\".ion-cloned-element\"))};var shadow=function(a){return a.shadowRoot||a};var getLargeTitle=function(a){var t=a.tagName===\"ION-TABS\"?a:a.querySelector(\"ion-tabs\");var r=\"ion-content ion-header:not(.header-collapse-condense-inactive) ion-title.title-large\";if(t!=null){var n=t.querySelector(\"ion-tab:not(.tab-hidden), .ion-page:not(.ion-page-hidden)\");return n!=null?n.querySelector(r):null}return a.querySelector(r)};var getBackButton=function(a,t){var r=a.tagName===\"ION-TABS\"?a:a.querySelector(\"ion-tabs\");var n=[];if(r!=null){var o=r.querySelector(\"ion-tab:not(.tab-hidden), .ion-page:not(.ion-page-hidden)\");if(o!=null){n=o.querySelectorAll(\"ion-buttons\")}}else{n=a.querySelectorAll(\"ion-buttons\")}for(var e=0,i=n;e ion-content\");var u=f.querySelectorAll(\":scope > ion-header > *:not(ion-toolbar), :scope > ion-footer > *\");var b=f.querySelectorAll(\":scope > ion-header > ion-toolbar\");var g=createAnimation();var h=createAnimation();g.addElement(f).duration(((r=t.duration)!==null&&r!==void 0?r:0)||DURATION).easing(t.easing||n).fill(\"both\").beforeRemoveClass(\"ion-page-invisible\");if(p&&a!==null&&a!==undefined){var A=createAnimation();A.addElement(a);g.addAnimation(A)}if(!m&&b.length===0&&u.length===0){h.addElement(f.querySelector(\":scope > .ion-page, :scope > ion-nav, :scope > ion-tabs\"))}else{h.addElement(m);h.addElement(u)}g.addAnimation(h);if(d){h.beforeClearStyles([o]).fromTo(\"transform\",\"translateX(\".concat(c,\")\"),\"translateX(\".concat(i,\")\")).fromTo(o,s,1)}else{h.beforeClearStyles([o]).fromTo(\"transform\",\"translateX(\".concat(v,\")\"),\"translateX(\".concat(i,\")\"))}if(m){var y=shadow(m).querySelector(\".transition-effect\");if(y){var X=y.querySelector(\".transition-cover\");var x=y.querySelector(\".transition-shadow\");var T=createAnimation();var w=createAnimation();var k=createAnimation();T.addElement(y).beforeStyles({opacity:\"1\",display:\"block\"}).afterStyles({opacity:\"\",display:\"\"});w.addElement(X).beforeClearStyles([o]).fromTo(o,0,.1);k.addElement(x).beforeClearStyles([o]).fromTo(o,.03,.7);T.addAnimation([w,k]);h.addAnimation([T])}}var E=f.querySelector(\"ion-header.header-collapse-condense\");var B=createLargeTitleTransition(g,l,d,f,p),L=B.forward,I=B.backward;b.forEach((function(a){var t=createAnimation();t.addElement(a);g.addAnimation(t);var r=createAnimation();r.addElement(a.querySelector(\"ion-title\"));var n=createAnimation();var e=Array.from(a.querySelectorAll(\"ion-buttons,[menuToggle]\"));var s=a.closest(\"ion-header\");var f=s===null||s===void 0?void 0:s.classList.contains(\"header-collapse-condense-inactive\");var p;if(d){p=e.filter((function(a){var t=a.classList.contains(\"buttons-collapse\");return t&&!f||!t}))}else{p=e.filter((function(a){return!a.classList.contains(\"buttons-collapse\")}))}n.addElement(p);var m=createAnimation();m.addElement(a.querySelectorAll(\":scope > *:not(ion-title):not(ion-buttons):not([menuToggle])\"));var u=createAnimation();u.addElement(shadow(a).querySelector(\".toolbar-background\"));var b=createAnimation();var h=a.querySelector(\"ion-back-button\");if(h){b.addElement(h)}t.addAnimation([r,n,m,u,b]);n.fromTo(o,.01,1);m.fromTo(o,.01,1);if(d){if(!f){r.fromTo(\"transform\",\"translateX(\".concat(c,\")\"),\"translateX(\".concat(i,\")\")).fromTo(o,.01,1)}m.fromTo(\"transform\",\"translateX(\".concat(c,\")\"),\"translateX(\".concat(i,\")\"));b.fromTo(o,.01,1)}else{if(!E){r.fromTo(\"transform\",\"translateX(\".concat(v,\")\"),\"translateX(\".concat(i,\")\")).fromTo(o,.01,1)}m.fromTo(\"transform\",\"translateX(\".concat(v,\")\"),\"translateX(\".concat(i,\")\"));u.beforeClearStyles([o,\"transform\"]);var A=s===null||s===void 0?void 0:s.translucent;if(!A){u.fromTo(o,.01,\"var(--opacity)\")}else{u.fromTo(\"transform\",l?\"translateX(-100%)\":\"translateX(100%)\",\"translateX(0px)\")}if(!L){b.fromTo(o,.01,1)}if(h&&!L){var y=createAnimation();y.addElement(shadow(h).querySelector(\".button-text\")).fromTo(\"transform\",l?\"translateX(-100px)\":\"translateX(100px)\",\"translateX(0px)\");t.addAnimation(y)}}}));if(p){var _=createAnimation();var S=p.querySelector(\":scope > ion-content\");var O=p.querySelectorAll(\":scope > ion-header > ion-toolbar\");var F=p.querySelectorAll(\":scope > ion-header > *:not(ion-toolbar), :scope > ion-footer > *\");if(!S&&O.length===0&&F.length===0){_.addElement(p.querySelector(\":scope > .ion-page, :scope > ion-nav, :scope > ion-tabs\"))}else{_.addElement(S);_.addElement(F)}g.addAnimation(_);if(d){_.beforeClearStyles([o]).fromTo(\"transform\",\"translateX(\".concat(i,\")\"),l?\"translateX(-100%)\":\"translateX(100%)\");var j=getIonPageElement(p);g.afterAddWrite((function(){if(g.getDirection()===\"normal\"){j.style.setProperty(\"display\",\"none\")}}))}else{_.fromTo(\"transform\",\"translateX(\".concat(i,\")\"),\"translateX(\".concat(c,\")\")).fromTo(o,1,s)}if(S){var R=shadow(S).querySelector(\".transition-effect\");if(R){var N=R.querySelector(\".transition-cover\");var C=R.querySelector(\".transition-shadow\");var G=createAnimation();var Z=createAnimation();var D=createAnimation();G.addElement(R).beforeStyles({opacity:\"1\",display:\"block\"}).afterStyles({opacity:\"\",display:\"\"});Z.addElement(N).beforeClearStyles([o]).fromTo(o,.1,0);D.addElement(C).beforeClearStyles([o]).fromTo(o,.7,.03);G.addAnimation([Z,D]);_.addAnimation([G])}}O.forEach((function(a){var t=createAnimation();t.addElement(a);var r=createAnimation();r.addElement(a.querySelector(\"ion-title\"));var n=createAnimation();var s=a.querySelectorAll(\"ion-buttons,[menuToggle]\");var v=a.closest(\"ion-header\");var f=v===null||v===void 0?void 0:v.classList.contains(\"header-collapse-condense-inactive\");var p=Array.from(s).filter((function(a){var t=a.classList.contains(\"buttons-collapse\");return t&&!f||!t}));n.addElement(p);var m=createAnimation();var u=a.querySelectorAll(\":scope > *:not(ion-title):not(ion-buttons):not([menuToggle])\");if(u.length>0){m.addElement(u)}var b=createAnimation();b.addElement(shadow(a).querySelector(\".toolbar-background\"));var h=createAnimation();var A=a.querySelector(\"ion-back-button\");if(A){h.addElement(A)}t.addAnimation([r,n,m,h,b]);g.addAnimation(t);h.fromTo(o,.99,0);n.fromTo(o,.99,0);m.fromTo(o,.99,0);if(d){if(!f){r.fromTo(\"transform\",\"translateX(\".concat(i,\")\"),l?\"translateX(-100%)\":\"translateX(100%)\").fromTo(o,.99,0)}m.fromTo(\"transform\",\"translateX(\".concat(i,\")\"),l?\"translateX(-100%)\":\"translateX(100%)\");b.beforeClearStyles([o,\"transform\"]);var y=v===null||v===void 0?void 0:v.translucent;if(!y){b.fromTo(o,\"var(--opacity)\",0)}else{b.fromTo(\"transform\",\"translateX(0px)\",l?\"translateX(-100%)\":\"translateX(100%)\")}if(A&&!I){var X=createAnimation();X.addElement(shadow(A).querySelector(\".button-text\")).fromTo(\"transform\",\"translateX(\".concat(i,\")\"),\"translateX(\".concat((l?-124:124)+\"px\",\")\"));t.addAnimation(X)}}else{if(!f){r.fromTo(\"transform\",\"translateX(\".concat(i,\")\"),\"translateX(\".concat(c,\")\")).fromTo(o,.99,0).afterClearStyles([e,o])}m.fromTo(\"transform\",\"translateX(\".concat(i,\")\"),\"translateX(\".concat(c,\")\")).afterClearStyles([e,o]);h.afterClearStyles([o]);r.afterClearStyles([o]);n.afterClearStyles([o])}}))}return g}catch(a){throw a}};var LARGE_TITLE_SIZE_OFFSET=10;export{iosTransitionAnimation,shadow};","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport{c as createAnimation}from\"./animation-6a0c5338.js\";import{g as getIonPageElement}from\"./index-fae1515c.js\";import\"./index-a5d50daf.js\";import\"./helpers-be245865.js\";import\"./index-a1a47f01.js\";var mdTransitionAnimation=function(a,i){var n,e,t;var r=\"40px\";var o=\"0px\";var m=i.direction===\"back\";var s=i.enteringEl;var c=i.leavingEl;var l=getIonPageElement(s);var v=l.querySelector(\"ion-toolbar\");var f=createAnimation();f.addElement(l).fill(\"both\").beforeRemoveClass(\"ion-page-invisible\");if(m){f.duration(((n=i.duration)!==null&&n!==void 0?n:0)||200).easing(\"cubic-bezier(0.47,0,0.745,0.715)\")}else{f.duration(((e=i.duration)!==null&&e!==void 0?e:0)||280).easing(\"cubic-bezier(0.36,0.66,0.04,1)\").fromTo(\"transform\",\"translateY(\".concat(r,\")\"),\"translateY(\".concat(o,\")\")).fromTo(\"opacity\",.01,1)}if(v){var p=createAnimation();p.addElement(v);f.addAnimation(p)}if(c&&m){f.duration(((t=i.duration)!==null&&t!==void 0?t:0)||200).easing(\"cubic-bezier(0.47,0,0.745,0.715)\");var b=createAnimation();b.addElement(getIonPageElement(c)).onFinish((function(a){if(a===1&&b.elements.length>0){b.elements[0].style.setProperty(\"display\",\"none\")}})).fromTo(\"transform\",\"translateY(\".concat(o,\")\"),\"translateY(\".concat(r,\")\")).fromTo(\"opacity\",1,0);f.addAnimation(b)}return f};export{mdTransitionAnimation};","import{__awaiter,__generator,__spreadArray}from\"tslib\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */import{d as doc}from\"./index-a5d50daf.js\";import{OVERLAY_BACK_BUTTON_PRIORITY,shouldUseCloseWatcher}from\"./hardware-back-button-6107a37c.js\";import{b as getIonMode,c as config}from\"./ionic-global-94f25d1b.js\";import{C as CoreDelegate}from\"./framework-delegate-ed4ba327.js\";import{c as componentOnReady,f as focusVisibleElement,a as addEventListener,b as removeEventListener,g as getElementRoot}from\"./helpers-be245865.js\";import{p as printIonWarning}from\"./index-9b0d46f4.js\";var lastOverlayIndex=0;var lastId=0;var activeAnimations=new WeakMap;var createController=function(e){return{create:function(n){return createOverlay(e,n)},dismiss:function(n,r,t){return dismissOverlay(document,n,r,e,t)},getTop:function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){return[2,getPresentedOverlay(document,e)]}))}))}}};var alertController=createController(\"ion-alert\");var actionSheetController=createController(\"ion-action-sheet\");var loadingController=createController(\"ion-loading\");var modalController=createController(\"ion-modal\");var pickerController=createController(\"ion-picker\");var popoverController=createController(\"ion-popover\");var toastController=createController(\"ion-toast\");var prepareOverlay=function(e){if(typeof document!==\"undefined\"){connectListeners(document)}var n=lastOverlayIndex++;e.overlayIndex=n};var setOverlayId=function(e){if(!e.hasAttribute(\"id\")){e.id=\"ion-overlay-\".concat(++lastId)}return e.id};var createOverlay=function(e,n){if(typeof window!==\"undefined\"&&typeof window.customElements!==\"undefined\"){return window.customElements.whenDefined(e).then((function(){var r=document.createElement(e);r.classList.add(\"overlay-hidden\");Object.assign(r,Object.assign(Object.assign({},n),{hasController:true}));getAppRoot(document).appendChild(r);return new Promise((function(e){return componentOnReady(r,e)}))}))}return Promise.resolve()};var focusableQueryString='[tabindex]:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), input:not([type=hidden]):not([tabindex^=\"-\"]):not([hidden]):not([disabled]), textarea:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), button:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), select:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), .ion-focusable:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), .ion-focusable[disabled=\"false\"]:not([tabindex^=\"-\"]):not([hidden])';var isOverlayHidden=function(e){return e.classList.contains(\"overlay-hidden\")};var focusFirstDescendant=function(e,n){var r=e.querySelector(focusableQueryString);focusElementInOverlay(r,n)};var focusLastDescendant=function(e,n){var r=Array.from(e.querySelectorAll(focusableQueryString));var t=r.length>0?r[r.length-1]:null;focusElementInOverlay(t,n)};var focusElementInOverlay=function(e,n){var r=e;var t=e===null||e===void 0?void 0:e.shadowRoot;if(t){r=t.querySelector(focusableQueryString)||e}if(r){focusVisibleElement(r)}else{n.focus()}};var trapKeyboardFocus=function(e,n){var r=getPresentedOverlay(n,\"ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover\");var t=e.target;if(!r||!t){return}if(r.classList.contains(\"ion-disable-focus-trap\")){return}var o=function(){if(r===t){r.lastFocus=undefined}else if(t.tagName===\"ION-TOAST\"){focusElementInOverlay(r.lastFocus,r)}else{var e=getElementRoot(r);if(!e.contains(t)){return}var o=e.querySelector(\".ion-overlay-wrapper\");if(!o){return}if(o.contains(t)||t===e.querySelector(\"ion-backdrop\")){r.lastFocus=t}else{var a=r.lastFocus;focusFirstDescendant(o,r);if(a===n.activeElement){focusLastDescendant(o,r)}r.lastFocus=n.activeElement}}};var a=function(){if(r.contains(t)){r.lastFocus=t}else if(t.tagName===\"ION-TOAST\"){focusElementInOverlay(r.lastFocus,r)}else{var e=r.lastFocus;focusFirstDescendant(r,r);if(e===n.activeElement){focusLastDescendant(r,r)}r.lastFocus=n.activeElement}};if(r.shadowRoot){a()}else{o()}};var connectListeners=function(e){if(lastOverlayIndex===0){lastOverlayIndex=1;e.addEventListener(\"focus\",(function(n){trapKeyboardFocus(n,e)}),true);e.addEventListener(\"ionBackButton\",(function(n){var r=getPresentedOverlay(e);if(r===null||r===void 0?void 0:r.backdropDismiss){n.detail.register(OVERLAY_BACK_BUTTON_PRIORITY,(function(){r.dismiss(undefined,BACKDROP)}))}}));if(!shouldUseCloseWatcher()){e.addEventListener(\"keydown\",(function(n){if(n.key===\"Escape\"){var r=getPresentedOverlay(e);if(r===null||r===void 0?void 0:r.backdropDismiss){r.dismiss(undefined,BACKDROP)}}}))}}};var dismissOverlay=function(e,n,r,t,o){var a=getPresentedOverlay(e,t,o);if(!a){return Promise.reject(\"overlay does not exist\")}return a.dismiss(n,r)};var getOverlays=function(e,n){if(n===undefined){n=\"ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast\"}return Array.from(e.querySelectorAll(n)).filter((function(e){return e.overlayIndex>0}))};var getPresentedOverlays=function(e,n){return getOverlays(e,n).filter((function(e){return!isOverlayHidden(e)}))};var getPresentedOverlay=function(e,n,r){var t=getPresentedOverlays(e,n);return r===undefined?t[t.length-1]:t.find((function(e){return e.id===r}))};var setRootAriaHidden=function(e){if(e===void 0){e=false}var n=getAppRoot(document);var r=n.querySelector(\"ion-router-outlet, ion-nav, #ion-view-container-root\");if(!r){return}if(e){r.setAttribute(\"aria-hidden\",\"true\")}else{r.removeAttribute(\"aria-hidden\")}};var present=function(e,n,r,t,o){return __awaiter(void 0,void 0,void 0,(function(){var a,i,d,s,u;return __generator(this,(function(l){switch(l.label){case 0:if(e.presented){return[2]}setRootAriaHidden(true);hideOverlaysFromScreenReaders(e.el);e.presented=true;e.willPresent.emit();(a=e.willPresentShorthand)===null||a===void 0?void 0:a.emit();d=getIonMode(e);s=e.enterAnimation?e.enterAnimation:config.get(n,d===\"ios\"?r:t);return[4,overlayAnimation(e,s,e.el,o)];case 1:u=l.sent();if(u){e.didPresent.emit();(i=e.didPresentShorthand)===null||i===void 0?void 0:i.emit()}if(e.el.tagName!==\"ION-TOAST\"){restoreElementFocus(e.el)}if(e.keyboardClose&&(document.activeElement===null||!e.el.contains(document.activeElement))){e.el.focus()}e.el.removeAttribute(\"aria-hidden\");return[2]}}))}))};var restoreElementFocus=function(e){return __awaiter(void 0,void 0,void 0,(function(){var n,r;return __generator(this,(function(t){switch(t.label){case 0:n=document.activeElement;if(!n){return[2]}r=n===null||n===void 0?void 0:n.shadowRoot;if(r){n=r.querySelector(focusableQueryString)||n}return[4,e.onDidDismiss()];case 1:t.sent();if(document.activeElement===null||document.activeElement===document.body){n.focus()}return[2]}}))}))};var dismiss=function(e,n,r,t,o,a,i){return __awaiter(void 0,void 0,void 0,(function(){var d,s,u,l,c,v;return __generator(this,(function(f){switch(f.label){case 0:if(!e.presented){return[2,false]}if(doc!==undefined&&getPresentedOverlays(doc).length===1){setRootAriaHidden(false)}e.presented=false;f.label=1;case 1:f.trys.push([1,4,,5]);e.el.style.setProperty(\"pointer-events\",\"none\");e.willDismiss.emit({data:n,role:r});(d=e.willDismissShorthand)===null||d===void 0?void 0:d.emit({data:n,role:r});u=getIonMode(e);l=e.leaveAnimation?e.leaveAnimation:config.get(t,u===\"ios\"?o:a);if(!(r!==GESTURE))return[3,3];return[4,overlayAnimation(e,l,e.el,i)];case 2:f.sent();f.label=3;case 3:e.didDismiss.emit({data:n,role:r});(s=e.didDismissShorthand)===null||s===void 0?void 0:s.emit({data:n,role:r});c=activeAnimations.get(e)||[];c.forEach((function(e){return e.destroy()}));activeAnimations.delete(e);e.el.classList.add(\"overlay-hidden\");e.el.style.removeProperty(\"pointer-events\");if(e.el.lastFocus!==undefined){e.el.lastFocus=undefined}return[3,5];case 4:v=f.sent();console.error(v);return[3,5];case 5:e.el.remove();revealOverlaysToScreenReaders();return[2,true]}}))}))};var getAppRoot=function(e){return e.querySelector(\"ion-app\")||e.body};var overlayAnimation=function(e,n,r,t){return __awaiter(void 0,void 0,void 0,(function(){var o,a,i;return __generator(this,(function(d){switch(d.label){case 0:r.classList.remove(\"overlay-hidden\");o=e.el;a=n(o,t);if(!e.animated||!config.getBoolean(\"animated\",true)){a.duration(0)}if(e.keyboardClose){a.beforeAddWrite((function(){var e=r.ownerDocument.activeElement;if(e===null||e===void 0?void 0:e.matches(\"input,ion-input, ion-textarea\")){e.blur()}}))}i=activeAnimations.get(e)||[];activeAnimations.set(e,__spreadArray(__spreadArray([],i,true),[a],false));return[4,a.play()];case 1:d.sent();return[2,true]}}))}))};var eventMethod=function(e,n){var r;var t=new Promise((function(e){return r=e}));onceEvent(e,n,(function(e){r(e.detail)}));return t};var onceEvent=function(e,n,r){var t=function(o){removeEventListener(e,n,t);r(o)};addEventListener(e,n,t)};var isCancel=function(e){return e===\"cancel\"||e===BACKDROP};var defaultGate=function(e){return e()};var safeCall=function(e,n){if(typeof e===\"function\"){var r=config.get(\"_zoneGate\",defaultGate);return r((function(){try{return e(n)}catch(e){throw e}}))}return undefined};var BACKDROP=\"backdrop\";var GESTURE=\"gesture\";var OVERLAY_GESTURE_PRIORITY=39;var createDelegateController=function(e){var n=false;var r;var t=CoreDelegate();var o=function(o){if(o===void 0){o=false}if(r&&!o){return{delegate:r,inline:n}}var a=e.el,i=e.hasController,d=e.delegate;var s=a.parentNode;n=s!==null&&!i;r=n?d||t:d;return{inline:n,delegate:r}};var a=function(n){return __awaiter(void 0,void 0,void 0,(function(){var r,t;return __generator(this,(function(a){switch(a.label){case 0:r=o(true).delegate;if(!r)return[3,2];return[4,r.attachViewToDom(e.el,n)];case 1:return[2,a.sent()];case 2:t=e.hasController;if(t&&n!==undefined){throw new Error(\"framework delegate is missing\")}return[2,null]}}))}))};var i=function(){var n=o().delegate;if(n&&e.el!==undefined){n.removeViewFromDom(e.el.parentElement,e.el)}};return{attachViewToDom:a,removeViewFromDom:i}};var createTriggerController=function(){var e;var n=function(){if(e){e();e=undefined}};var r=function(r,t){n();var o=t!==undefined?document.getElementById(t):null;if(!o){printIonWarning('A trigger element with the ID \"'.concat(t,'\" was not found in the DOM. The trigger element must be in the DOM when the \"trigger\" property is set on an overlay component.'),r);return}var a=function(e,n){var r=function(){n.present()};e.addEventListener(\"click\",r);return function(){e.removeEventListener(\"click\",r)}};e=a(o,r)};return{addClickListener:r,removeClickListener:n}};var hideOverlaysFromScreenReaders=function(e){var n;if(doc===undefined)return;var r=getPresentedOverlays(doc);for(var t=r.length-1;t>=0;t--){var o=r[t];var a=(n=r[t+1])!==null&&n!==void 0?n:e;if(a.hasAttribute(\"aria-hidden\")||a.tagName!==\"ION-TOAST\"){o.setAttribute(\"aria-hidden\",\"true\")}}};var revealOverlaysToScreenReaders=function(){if(doc===undefined)return;var e=getPresentedOverlays(doc);for(var n=e.length-1;n>=0;n--){var r=e[n];r.removeAttribute(\"aria-hidden\");if(r.tagName!==\"ION-TOAST\"){break}}};export{BACKDROP as B,GESTURE as G,OVERLAY_GESTURE_PRIORITY as O,alertController as a,actionSheetController as b,popoverController as c,createDelegateController as d,createTriggerController as e,present as f,dismiss as g,eventMethod as h,isCancel as i,prepareOverlay as j,setOverlayId as k,loadingController as l,modalController as m,focusFirstDescendant as n,getPresentedOverlay as o,pickerController as p,safeCall as s,toastController as t};","import{__awaiter,__generator}from\"tslib\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */var hostContext=function(r,t){return t.closest(r)!==null};var createColorClasses=function(r,t){var n;return typeof r===\"string\"&&r.length>0?Object.assign((n={\"ion-color\":true},n[\"ion-color-\".concat(r)]=true,n),t):t};var getClassList=function(r){if(r!==undefined){var t=Array.isArray(r)?r:r.split(\" \");return t.filter((function(r){return r!=null})).map((function(r){return r.trim()})).filter((function(r){return r!==\"\"}))}return[]};var getClassMap=function(r){var t={};getClassList(r).forEach((function(r){return t[r]=true}));return t};var SCHEME=/^[a-z][a-z0-9+\\-.]*:/;var openURL=function(r,t,n,e){return __awaiter(void 0,void 0,void 0,(function(){var o;return __generator(this,(function(a){if(r!=null&&r[0]!==\"#\"&&!SCHEME.test(r)){o=document.querySelector(\"ion-router\");if(o){if(t!=null){t.preventDefault()}return[2,o.push(r,n,e)]}}return[2,false]}))}))};export{createColorClasses as c,getClassMap as g,hostContext as h,openURL as o};","// src/app-data/index.ts\nvar BUILD = {\n allRenderFn: false,\n cmpDidLoad: true,\n cmpDidUnload: false,\n cmpDidUpdate: true,\n cmpDidRender: true,\n cmpWillLoad: true,\n cmpWillUpdate: true,\n cmpWillRender: true,\n connectedCallback: true,\n disconnectedCallback: true,\n element: true,\n event: true,\n hasRenderFn: true,\n lifecycle: true,\n hostListener: true,\n hostListenerTargetWindow: true,\n hostListenerTargetDocument: true,\n hostListenerTargetBody: true,\n hostListenerTargetParent: false,\n hostListenerTarget: true,\n member: true,\n method: true,\n mode: true,\n observeAttribute: true,\n prop: true,\n propMutable: true,\n reflect: true,\n scoped: true,\n shadowDom: true,\n slot: true,\n cssAnnotations: true,\n state: true,\n style: true,\n formAssociated: false,\n svg: true,\n updatable: true,\n vdomAttribute: true,\n vdomXlink: true,\n vdomClass: true,\n vdomFunctional: true,\n vdomKey: true,\n vdomListener: true,\n vdomRef: true,\n vdomPropOrAttr: true,\n vdomRender: true,\n vdomStyle: true,\n vdomText: true,\n watchCallback: true,\n taskQueue: true,\n hotModuleReplacement: false,\n isDebug: false,\n isDev: false,\n isTesting: false,\n hydrateServerSide: false,\n hydrateClientSide: false,\n lifecycleDOMEvents: false,\n lazyLoad: false,\n profile: false,\n slotRelocation: true,\n // TODO(STENCIL-914): remove this option when `experimentalSlotFixes` is the default behavior\n appendChildSlotFix: false,\n // TODO(STENCIL-914): remove this option when `experimentalSlotFixes` is the default behavior\n cloneNodeFix: false,\n hydratedAttribute: false,\n hydratedClass: true,\n // TODO(STENCIL-1305): remove this option\n scriptDataOpts: false,\n // TODO(STENCIL-914): remove this option when `experimentalSlotFixes` is the default behavior\n scopedSlotTextContentFix: false,\n // TODO(STENCIL-854): Remove code related to legacy shadowDomShim field\n shadowDomShim: false,\n // TODO(STENCIL-914): remove this option when `experimentalSlotFixes` is the default behavior\n slotChildNodesFix: false,\n invisiblePrehydration: true,\n propBoolean: true,\n propNumber: true,\n propString: true,\n constructableCSS: true,\n cmpShouldUpdate: true,\n devTools: false,\n shadowDelegatesFocus: true,\n initializeNextTick: false,\n asyncLoading: false,\n asyncQueue: false,\n transformTagName: false,\n attachStyles: true,\n // TODO(STENCIL-914): remove this option when `experimentalSlotFixes` is the default behavior\n experimentalSlotFixes: false\n};\nvar Env = {};\nvar NAMESPACE = (\n /* default */\n \"app\"\n);\nexport {\n BUILD,\n Env,\n NAMESPACE\n};\n","/*\n Stencil Client Platform v4.18.1 | MIT Licensed | https://stenciljs.com\n */\nvar __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/client/client-build.ts\nimport { BUILD } from \"@stencil/core/internal/app-data\";\nvar Build = {\n isDev: BUILD.isDev ? true : false,\n isBrowser: true,\n isServer: false,\n isTesting: BUILD.isTesting ? true : false\n};\n\n// src/client/client-host-ref.ts\nimport { BUILD as BUILD22 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/asset-path.ts\nvar getAssetPath = (path) => {\n const assetUrl = new URL(path, plt.$resourcesUrl$);\n return assetUrl.origin !== win.location.origin ? assetUrl.href : assetUrl.pathname;\n};\nvar setAssetPath = (path) => plt.$resourcesUrl$ = path;\n\n// src/runtime/bootstrap-custom-element.ts\nimport { BUILD as BUILD19 } from \"@stencil/core/internal/app-data\";\n\n// src/utils/constants.ts\nvar EMPTY_OBJ = {};\nvar SVG_NS = \"http://www.w3.org/2000/svg\";\nvar HTML_NS = \"http://www.w3.org/1999/xhtml\";\n\n// src/utils/helpers.ts\nvar isDef = (v) => v != null;\nvar isComplexType = (o) => {\n o = typeof o;\n return o === \"object\" || o === \"function\";\n};\n\n// src/utils/query-nonce-meta-tag-content.ts\nfunction queryNonceMetaTagContent(doc2) {\n var _a, _b, _c;\n return (_c = (_b = (_a = doc2.head) == null ? void 0 : _a.querySelector('meta[name=\"csp-nonce\"]')) == null ? void 0 : _b.getAttribute(\"content\")) != null ? _c : void 0;\n}\n\n// src/utils/result.ts\nvar result_exports = {};\n__export(result_exports, {\n err: () => err,\n map: () => map,\n ok: () => ok,\n unwrap: () => unwrap,\n unwrapErr: () => unwrapErr\n});\nvar ok = (value) => ({\n isOk: true,\n isErr: false,\n value\n});\nvar err = (value) => ({\n isOk: false,\n isErr: true,\n value\n});\nfunction map(result, fn) {\n if (result.isOk) {\n const val = fn(result.value);\n if (val instanceof Promise) {\n return val.then((newVal) => ok(newVal));\n } else {\n return ok(val);\n }\n }\n if (result.isErr) {\n const value = result.value;\n return err(value);\n }\n throw \"should never get here\";\n}\nvar unwrap = (result) => {\n if (result.isOk) {\n return result.value;\n } else {\n throw result.value;\n }\n};\nvar unwrapErr = (result) => {\n if (result.isErr) {\n return result.value;\n } else {\n throw result.value;\n }\n};\n\n// src/runtime/connected-callback.ts\nimport { BUILD as BUILD16 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/client-hydrate.ts\nimport { BUILD as BUILD4 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/profile.ts\nimport { BUILD as BUILD2 } from \"@stencil/core/internal/app-data\";\nvar i = 0;\nvar createTime = (fnName, tagName = \"\") => {\n if (BUILD2.profile && performance.mark) {\n const key = `st:${fnName}:${tagName}:${i++}`;\n performance.mark(key);\n return () => performance.measure(`[Stencil] ${fnName}() <${tagName}>`, key);\n } else {\n return () => {\n return;\n };\n }\n};\nvar uniqueTime = (key, measureText) => {\n if (BUILD2.profile && performance.mark) {\n if (performance.getEntriesByName(key, \"mark\").length === 0) {\n performance.mark(key);\n }\n return () => {\n if (performance.getEntriesByName(measureText, \"measure\").length === 0) {\n performance.measure(measureText, key);\n }\n };\n } else {\n return () => {\n return;\n };\n }\n};\nvar inspect = (ref) => {\n const hostRef = getHostRef(ref);\n if (!hostRef) {\n return void 0;\n }\n const flags = hostRef.$flags$;\n const hostElement = hostRef.$hostElement$;\n return {\n renderCount: hostRef.$renderCount$,\n flags: {\n hasRendered: !!(flags & 2 /* hasRendered */),\n hasConnected: !!(flags & 1 /* hasConnected */),\n isWaitingForChildren: !!(flags & 4 /* isWaitingForChildren */),\n isConstructingInstance: !!(flags & 8 /* isConstructingInstance */),\n isQueuedForUpdate: !!(flags & 16 /* isQueuedForUpdate */),\n hasInitializedComponent: !!(flags & 32 /* hasInitializedComponent */),\n hasLoadedComponent: !!(flags & 64 /* hasLoadedComponent */),\n isWatchReady: !!(flags & 128 /* isWatchReady */),\n isListenReady: !!(flags & 256 /* isListenReady */),\n needsRerender: !!(flags & 512 /* needsRerender */)\n },\n instanceValues: hostRef.$instanceValues$,\n ancestorComponent: hostRef.$ancestorComponent$,\n hostElement,\n lazyInstance: hostRef.$lazyInstance$,\n vnode: hostRef.$vnode$,\n modeName: hostRef.$modeName$,\n onReadyPromise: hostRef.$onReadyPromise$,\n onReadyResolve: hostRef.$onReadyResolve$,\n onInstancePromise: hostRef.$onInstancePromise$,\n onInstanceResolve: hostRef.$onInstanceResolve$,\n onRenderResolve: hostRef.$onRenderResolve$,\n queuedListeners: hostRef.$queuedListeners$,\n rmListeners: hostRef.$rmListeners$,\n [\"s-id\"]: hostElement[\"s-id\"],\n [\"s-cr\"]: hostElement[\"s-cr\"],\n [\"s-lr\"]: hostElement[\"s-lr\"],\n [\"s-p\"]: hostElement[\"s-p\"],\n [\"s-rc\"]: hostElement[\"s-rc\"],\n [\"s-sc\"]: hostElement[\"s-sc\"]\n };\n};\nvar installDevTools = () => {\n if (BUILD2.devTools) {\n const stencil = win.stencil = win.stencil || {};\n const originalInspect = stencil.inspect;\n stencil.inspect = (ref) => {\n let result = inspect(ref);\n if (!result && typeof originalInspect === \"function\") {\n result = originalInspect(ref);\n }\n return result;\n };\n }\n};\n\n// src/runtime/runtime-constants.ts\nvar CONTENT_REF_ID = \"r\";\nvar ORG_LOCATION_ID = \"o\";\nvar SLOT_NODE_ID = \"s\";\nvar TEXT_NODE_ID = \"t\";\nvar HYDRATE_ID = \"s-id\";\nvar HYDRATED_STYLE_ID = \"sty-id\";\nvar HYDRATE_CHILD_ID = \"c-id\";\nvar HYDRATED_CSS = \"{visibility:hidden}.hydrated{visibility:inherit}\";\nvar SLOT_FB_CSS = \"slot-fb{display:contents}slot-fb[hidden]{display:none}\";\nvar XLINK_NS = \"http://www.w3.org/1999/xlink\";\nvar FORM_ASSOCIATED_CUSTOM_ELEMENT_CALLBACKS = [\n \"formAssociatedCallback\",\n \"formResetCallback\",\n \"formDisabledCallback\",\n \"formStateRestoreCallback\"\n];\n\n// src/runtime/vdom/h.ts\nimport { BUILD as BUILD3 } from \"@stencil/core/internal/app-data\";\nvar h = (nodeName, vnodeData, ...children) => {\n let child = null;\n let key = null;\n let slotName = null;\n let simple = false;\n let lastSimple = false;\n const vNodeChildren = [];\n const walk = (c) => {\n for (let i2 = 0; i2 < c.length; i2++) {\n child = c[i2];\n if (Array.isArray(child)) {\n walk(child);\n } else if (child != null && typeof child !== \"boolean\") {\n if (simple = typeof nodeName !== \"function\" && !isComplexType(child)) {\n child = String(child);\n } else if (BUILD3.isDev && typeof nodeName !== \"function\" && child.$flags$ === void 0) {\n consoleDevError(`vNode passed as children has unexpected type.\nMake sure it's using the correct h() function.\nEmpty objects can also be the cause, look for JSX comments that became objects.`);\n }\n if (simple && lastSimple) {\n vNodeChildren[vNodeChildren.length - 1].$text$ += child;\n } else {\n vNodeChildren.push(simple ? newVNode(null, child) : child);\n }\n lastSimple = simple;\n }\n }\n };\n walk(children);\n if (vnodeData) {\n if (BUILD3.isDev && nodeName === \"input\") {\n validateInputProperties(vnodeData);\n }\n if (BUILD3.vdomKey && vnodeData.key) {\n key = vnodeData.key;\n }\n if (BUILD3.slotRelocation && vnodeData.name) {\n slotName = vnodeData.name;\n }\n if (BUILD3.vdomClass) {\n const classData = vnodeData.className || vnodeData.class;\n if (classData) {\n vnodeData.class = typeof classData !== \"object\" ? classData : Object.keys(classData).filter((k) => classData[k]).join(\" \");\n }\n }\n }\n if (BUILD3.isDev && vNodeChildren.some(isHost)) {\n consoleDevError(`The must be the single root component. Make sure:\n- You are NOT using hostData() and in the same component.\n- is used once, and it's the single root component of the render() function.`);\n }\n if (BUILD3.vdomFunctional && typeof nodeName === \"function\") {\n return nodeName(\n vnodeData === null ? {} : vnodeData,\n vNodeChildren,\n vdomFnUtils\n );\n }\n const vnode = newVNode(nodeName, null);\n vnode.$attrs$ = vnodeData;\n if (vNodeChildren.length > 0) {\n vnode.$children$ = vNodeChildren;\n }\n if (BUILD3.vdomKey) {\n vnode.$key$ = key;\n }\n if (BUILD3.slotRelocation) {\n vnode.$name$ = slotName;\n }\n return vnode;\n};\nvar newVNode = (tag, text) => {\n const vnode = {\n $flags$: 0,\n $tag$: tag,\n $text$: text,\n $elm$: null,\n $children$: null\n };\n if (BUILD3.vdomAttribute) {\n vnode.$attrs$ = null;\n }\n if (BUILD3.vdomKey) {\n vnode.$key$ = null;\n }\n if (BUILD3.slotRelocation) {\n vnode.$name$ = null;\n }\n return vnode;\n};\nvar Host = {};\nvar isHost = (node) => node && node.$tag$ === Host;\nvar vdomFnUtils = {\n forEach: (children, cb) => children.map(convertToPublic).forEach(cb),\n map: (children, cb) => children.map(convertToPublic).map(cb).map(convertToPrivate)\n};\nvar convertToPublic = (node) => ({\n vattrs: node.$attrs$,\n vchildren: node.$children$,\n vkey: node.$key$,\n vname: node.$name$,\n vtag: node.$tag$,\n vtext: node.$text$\n});\nvar convertToPrivate = (node) => {\n if (typeof node.vtag === \"function\") {\n const vnodeData = { ...node.vattrs };\n if (node.vkey) {\n vnodeData.key = node.vkey;\n }\n if (node.vname) {\n vnodeData.name = node.vname;\n }\n return h(node.vtag, vnodeData, ...node.vchildren || []);\n }\n const vnode = newVNode(node.vtag, node.vtext);\n vnode.$attrs$ = node.vattrs;\n vnode.$children$ = node.vchildren;\n vnode.$key$ = node.vkey;\n vnode.$name$ = node.vname;\n return vnode;\n};\nvar validateInputProperties = (inputElm) => {\n const props = Object.keys(inputElm);\n const value = props.indexOf(\"value\");\n if (value === -1) {\n return;\n }\n const typeIndex = props.indexOf(\"type\");\n const minIndex = props.indexOf(\"min\");\n const maxIndex = props.indexOf(\"max\");\n const stepIndex = props.indexOf(\"step\");\n if (value < typeIndex || value < minIndex || value < maxIndex || value < stepIndex) {\n consoleDevWarn(`The \"value\" prop of should be set after \"min\", \"max\", \"type\" and \"step\"`);\n }\n};\n\n// src/runtime/client-hydrate.ts\nvar initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {\n const endHydrate = createTime(\"hydrateClient\", tagName);\n const shadowRoot = hostElm.shadowRoot;\n const childRenderNodes = [];\n const slotNodes = [];\n const shadowRootNodes = BUILD4.shadowDom && shadowRoot ? [] : null;\n const vnode = hostRef.$vnode$ = newVNode(tagName, null);\n if (!plt.$orgLocNodes$) {\n initializeDocumentHydrate(doc.body, plt.$orgLocNodes$ = /* @__PURE__ */ new Map());\n }\n hostElm[HYDRATE_ID] = hostId;\n hostElm.removeAttribute(HYDRATE_ID);\n clientHydrate(vnode, childRenderNodes, slotNodes, shadowRootNodes, hostElm, hostElm, hostId);\n childRenderNodes.map((c) => {\n const orgLocationId = c.$hostId$ + \".\" + c.$nodeId$;\n const orgLocationNode = plt.$orgLocNodes$.get(orgLocationId);\n const node = c.$elm$;\n if (orgLocationNode && supportsShadow && orgLocationNode[\"s-en\"] === \"\") {\n orgLocationNode.parentNode.insertBefore(node, orgLocationNode.nextSibling);\n }\n if (!shadowRoot) {\n node[\"s-hn\"] = tagName;\n if (orgLocationNode) {\n node[\"s-ol\"] = orgLocationNode;\n node[\"s-ol\"][\"s-nr\"] = node;\n }\n }\n plt.$orgLocNodes$.delete(orgLocationId);\n });\n if (BUILD4.shadowDom && shadowRoot) {\n shadowRootNodes.map((shadowRootNode) => {\n if (shadowRootNode) {\n shadowRoot.appendChild(shadowRootNode);\n }\n });\n }\n endHydrate();\n};\nvar clientHydrate = (parentVNode, childRenderNodes, slotNodes, shadowRootNodes, hostElm, node, hostId) => {\n let childNodeType;\n let childIdSplt;\n let childVNode;\n let i2;\n if (node.nodeType === 1 /* ElementNode */) {\n childNodeType = node.getAttribute(HYDRATE_CHILD_ID);\n if (childNodeType) {\n childIdSplt = childNodeType.split(\".\");\n if (childIdSplt[0] === hostId || childIdSplt[0] === \"0\") {\n childVNode = {\n $flags$: 0,\n $hostId$: childIdSplt[0],\n $nodeId$: childIdSplt[1],\n $depth$: childIdSplt[2],\n $index$: childIdSplt[3],\n $tag$: node.tagName.toLowerCase(),\n $elm$: node,\n $attrs$: null,\n $children$: null,\n $key$: null,\n $name$: null,\n $text$: null\n };\n childRenderNodes.push(childVNode);\n node.removeAttribute(HYDRATE_CHILD_ID);\n if (!parentVNode.$children$) {\n parentVNode.$children$ = [];\n }\n parentVNode.$children$[childVNode.$index$] = childVNode;\n parentVNode = childVNode;\n if (shadowRootNodes && childVNode.$depth$ === \"0\") {\n shadowRootNodes[childVNode.$index$] = childVNode.$elm$;\n }\n }\n }\n for (i2 = node.childNodes.length - 1; i2 >= 0; i2--) {\n clientHydrate(\n parentVNode,\n childRenderNodes,\n slotNodes,\n shadowRootNodes,\n hostElm,\n node.childNodes[i2],\n hostId\n );\n }\n if (node.shadowRoot) {\n for (i2 = node.shadowRoot.childNodes.length - 1; i2 >= 0; i2--) {\n clientHydrate(\n parentVNode,\n childRenderNodes,\n slotNodes,\n shadowRootNodes,\n hostElm,\n node.shadowRoot.childNodes[i2],\n hostId\n );\n }\n }\n } else if (node.nodeType === 8 /* CommentNode */) {\n childIdSplt = node.nodeValue.split(\".\");\n if (childIdSplt[1] === hostId || childIdSplt[1] === \"0\") {\n childNodeType = childIdSplt[0];\n childVNode = {\n $flags$: 0,\n $hostId$: childIdSplt[1],\n $nodeId$: childIdSplt[2],\n $depth$: childIdSplt[3],\n $index$: childIdSplt[4],\n $elm$: node,\n $attrs$: null,\n $children$: null,\n $key$: null,\n $name$: null,\n $tag$: null,\n $text$: null\n };\n if (childNodeType === TEXT_NODE_ID) {\n childVNode.$elm$ = node.nextSibling;\n if (childVNode.$elm$ && childVNode.$elm$.nodeType === 3 /* TextNode */) {\n childVNode.$text$ = childVNode.$elm$.textContent;\n childRenderNodes.push(childVNode);\n node.remove();\n if (!parentVNode.$children$) {\n parentVNode.$children$ = [];\n }\n parentVNode.$children$[childVNode.$index$] = childVNode;\n if (shadowRootNodes && childVNode.$depth$ === \"0\") {\n shadowRootNodes[childVNode.$index$] = childVNode.$elm$;\n }\n }\n } else if (childVNode.$hostId$ === hostId) {\n if (childNodeType === SLOT_NODE_ID) {\n childVNode.$tag$ = \"slot\";\n if (childIdSplt[5]) {\n node[\"s-sn\"] = childVNode.$name$ = childIdSplt[5];\n } else {\n node[\"s-sn\"] = \"\";\n }\n node[\"s-sr\"] = true;\n if (BUILD4.shadowDom && shadowRootNodes) {\n childVNode.$elm$ = doc.createElement(childVNode.$tag$);\n if (childVNode.$name$) {\n childVNode.$elm$.setAttribute(\"name\", childVNode.$name$);\n }\n node.parentNode.insertBefore(childVNode.$elm$, node);\n node.remove();\n if (childVNode.$depth$ === \"0\") {\n shadowRootNodes[childVNode.$index$] = childVNode.$elm$;\n }\n }\n slotNodes.push(childVNode);\n if (!parentVNode.$children$) {\n parentVNode.$children$ = [];\n }\n parentVNode.$children$[childVNode.$index$] = childVNode;\n } else if (childNodeType === CONTENT_REF_ID) {\n if (BUILD4.shadowDom && shadowRootNodes) {\n node.remove();\n } else if (BUILD4.slotRelocation) {\n hostElm[\"s-cr\"] = node;\n node[\"s-cn\"] = true;\n }\n }\n }\n }\n } else if (parentVNode && parentVNode.$tag$ === \"style\") {\n const vnode = newVNode(null, node.textContent);\n vnode.$elm$ = node;\n vnode.$index$ = \"0\";\n parentVNode.$children$ = [vnode];\n }\n};\nvar initializeDocumentHydrate = (node, orgLocNodes) => {\n if (node.nodeType === 1 /* ElementNode */) {\n let i2 = 0;\n for (; i2 < node.childNodes.length; i2++) {\n initializeDocumentHydrate(node.childNodes[i2], orgLocNodes);\n }\n if (node.shadowRoot) {\n for (i2 = 0; i2 < node.shadowRoot.childNodes.length; i2++) {\n initializeDocumentHydrate(node.shadowRoot.childNodes[i2], orgLocNodes);\n }\n }\n } else if (node.nodeType === 8 /* CommentNode */) {\n const childIdSplt = node.nodeValue.split(\".\");\n if (childIdSplt[0] === ORG_LOCATION_ID) {\n orgLocNodes.set(childIdSplt[1] + \".\" + childIdSplt[2], node);\n node.nodeValue = \"\";\n node[\"s-en\"] = childIdSplt[3];\n }\n }\n};\n\n// src/runtime/initialize-component.ts\nimport { BUILD as BUILD15 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/mode.ts\nvar computeMode = (elm) => modeResolutionChain.map((h2) => h2(elm)).find((m) => !!m);\nvar setMode = (handler) => modeResolutionChain.push(handler);\nvar getMode = (ref) => getHostRef(ref).$modeName$;\n\n// src/runtime/proxy-component.ts\nimport { BUILD as BUILD14 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/set-value.ts\nimport { BUILD as BUILD13 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/parse-property-value.ts\nimport { BUILD as BUILD5 } from \"@stencil/core/internal/app-data\";\nvar parsePropertyValue = (propValue, propType) => {\n if (propValue != null && !isComplexType(propValue)) {\n if (BUILD5.propBoolean && propType & 4 /* Boolean */) {\n return propValue === \"false\" ? false : propValue === \"\" || !!propValue;\n }\n if (BUILD5.propNumber && propType & 2 /* Number */) {\n return parseFloat(propValue);\n }\n if (BUILD5.propString && propType & 1 /* String */) {\n return String(propValue);\n }\n return propValue;\n }\n return propValue;\n};\n\n// src/runtime/update-component.ts\nimport { BUILD as BUILD12, NAMESPACE } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/event-emitter.ts\nimport { BUILD as BUILD7 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/element.ts\nimport { BUILD as BUILD6 } from \"@stencil/core/internal/app-data\";\nvar getElement = (ref) => BUILD6.lazyLoad ? getHostRef(ref).$hostElement$ : ref;\n\n// src/runtime/event-emitter.ts\nvar createEvent = (ref, name, flags) => {\n const elm = getElement(ref);\n return {\n emit: (detail) => {\n if (BUILD7.isDev && !elm.isConnected) {\n consoleDevWarn(`The \"${name}\" event was emitted, but the dispatcher node is no longer connected to the dom.`);\n }\n return emitEvent(elm, name, {\n bubbles: !!(flags & 4 /* Bubbles */),\n composed: !!(flags & 2 /* Composed */),\n cancelable: !!(flags & 1 /* Cancellable */),\n detail\n });\n }\n };\n};\nvar emitEvent = (elm, name, opts) => {\n const ev = plt.ce(name, opts);\n elm.dispatchEvent(ev);\n return ev;\n};\n\n// src/runtime/styles.ts\nimport { BUILD as BUILD8 } from \"@stencil/core/internal/app-data\";\nvar rootAppliedStyles = /* @__PURE__ */ new WeakMap();\nvar registerStyle = (scopeId2, cssText, allowCS) => {\n let style = styles.get(scopeId2);\n if (supportsConstructableStylesheets && allowCS) {\n style = style || new CSSStyleSheet();\n if (typeof style === \"string\") {\n style = cssText;\n } else {\n style.replaceSync(cssText);\n }\n } else {\n style = cssText;\n }\n styles.set(scopeId2, style);\n};\nvar addStyle = (styleContainerNode, cmpMeta, mode) => {\n var _a;\n const scopeId2 = getScopeId(cmpMeta, mode);\n const style = styles.get(scopeId2);\n if (!BUILD8.attachStyles) {\n return scopeId2;\n }\n styleContainerNode = styleContainerNode.nodeType === 11 /* DocumentFragment */ ? styleContainerNode : doc;\n if (style) {\n if (typeof style === \"string\") {\n styleContainerNode = styleContainerNode.head || styleContainerNode;\n let appliedStyles = rootAppliedStyles.get(styleContainerNode);\n let styleElm;\n if (!appliedStyles) {\n rootAppliedStyles.set(styleContainerNode, appliedStyles = /* @__PURE__ */ new Set());\n }\n if (!appliedStyles.has(scopeId2)) {\n if (BUILD8.hydrateClientSide && styleContainerNode.host && (styleElm = styleContainerNode.querySelector(`[${HYDRATED_STYLE_ID}=\"${scopeId2}\"]`))) {\n styleElm.innerHTML = style;\n } else {\n styleElm = doc.createElement(\"style\");\n styleElm.innerHTML = style;\n const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(doc);\n if (nonce != null) {\n styleElm.setAttribute(\"nonce\", nonce);\n }\n if (BUILD8.hydrateServerSide || BUILD8.hotModuleReplacement) {\n styleElm.setAttribute(HYDRATED_STYLE_ID, scopeId2);\n }\n styleContainerNode.insertBefore(styleElm, styleContainerNode.querySelector(\"link\"));\n }\n if (cmpMeta.$flags$ & 4 /* hasSlotRelocation */) {\n styleElm.innerHTML += SLOT_FB_CSS;\n }\n if (appliedStyles) {\n appliedStyles.add(scopeId2);\n }\n }\n } else if (BUILD8.constructableCSS && !styleContainerNode.adoptedStyleSheets.includes(style)) {\n styleContainerNode.adoptedStyleSheets = [...styleContainerNode.adoptedStyleSheets, style];\n }\n }\n return scopeId2;\n};\nvar attachStyles = (hostRef) => {\n const cmpMeta = hostRef.$cmpMeta$;\n const elm = hostRef.$hostElement$;\n const flags = cmpMeta.$flags$;\n const endAttachStyles = createTime(\"attachStyles\", cmpMeta.$tagName$);\n const scopeId2 = addStyle(\n BUILD8.shadowDom && supportsShadow && elm.shadowRoot ? elm.shadowRoot : elm.getRootNode(),\n cmpMeta,\n hostRef.$modeName$\n );\n if ((BUILD8.shadowDom || BUILD8.scoped) && BUILD8.cssAnnotations && flags & 10 /* needsScopedEncapsulation */) {\n elm[\"s-sc\"] = scopeId2;\n elm.classList.add(scopeId2 + \"-h\");\n if (BUILD8.scoped && flags & 2 /* scopedCssEncapsulation */) {\n elm.classList.add(scopeId2 + \"-s\");\n }\n }\n endAttachStyles();\n};\nvar getScopeId = (cmp, mode) => \"sc-\" + (BUILD8.mode && mode && cmp.$flags$ & 32 /* hasMode */ ? cmp.$tagName$ + \"-\" + mode : cmp.$tagName$);\nvar convertScopedToShadow = (css) => css.replace(/\\/\\*!@([^\\/]+)\\*\\/[^\\{]+\\{/g, \"$1{\");\n\n// src/runtime/vdom/vdom-render.ts\nimport { BUILD as BUILD11 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/vdom/update-element.ts\nimport { BUILD as BUILD10 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/vdom/set-accessor.ts\nimport { BUILD as BUILD9 } from \"@stencil/core/internal/app-data\";\nvar setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {\n if (oldValue !== newValue) {\n let isProp = isMemberInElement(elm, memberName);\n let ln = memberName.toLowerCase();\n if (BUILD9.vdomClass && memberName === \"class\") {\n const classList = elm.classList;\n const oldClasses = parseClassList(oldValue);\n const newClasses = parseClassList(newValue);\n classList.remove(...oldClasses.filter((c) => c && !newClasses.includes(c)));\n classList.add(...newClasses.filter((c) => c && !oldClasses.includes(c)));\n } else if (BUILD9.vdomStyle && memberName === \"style\") {\n if (BUILD9.updatable) {\n for (const prop in oldValue) {\n if (!newValue || newValue[prop] == null) {\n if (!BUILD9.hydrateServerSide && prop.includes(\"-\")) {\n elm.style.removeProperty(prop);\n } else {\n elm.style[prop] = \"\";\n }\n }\n }\n }\n for (const prop in newValue) {\n if (!oldValue || newValue[prop] !== oldValue[prop]) {\n if (!BUILD9.hydrateServerSide && prop.includes(\"-\")) {\n elm.style.setProperty(prop, newValue[prop]);\n } else {\n elm.style[prop] = newValue[prop];\n }\n }\n }\n } else if (BUILD9.vdomKey && memberName === \"key\") {\n } else if (BUILD9.vdomRef && memberName === \"ref\") {\n if (newValue) {\n newValue(elm);\n }\n } else if (BUILD9.vdomListener && (BUILD9.lazyLoad ? !isProp : !elm.__lookupSetter__(memberName)) && memberName[0] === \"o\" && memberName[1] === \"n\") {\n if (memberName[2] === \"-\") {\n memberName = memberName.slice(3);\n } else if (isMemberInElement(win, ln)) {\n memberName = ln.slice(2);\n } else {\n memberName = ln[2] + memberName.slice(3);\n }\n if (oldValue || newValue) {\n const capture = memberName.endsWith(CAPTURE_EVENT_SUFFIX);\n memberName = memberName.replace(CAPTURE_EVENT_REGEX, \"\");\n if (oldValue) {\n plt.rel(elm, memberName, oldValue, capture);\n }\n if (newValue) {\n plt.ael(elm, memberName, newValue, capture);\n }\n }\n } else if (BUILD9.vdomPropOrAttr) {\n const isComplex = isComplexType(newValue);\n if ((isProp || isComplex && newValue !== null) && !isSvg) {\n try {\n if (!elm.tagName.includes(\"-\")) {\n const n = newValue == null ? \"\" : newValue;\n if (memberName === \"list\") {\n isProp = false;\n } else if (oldValue == null || elm[memberName] != n) {\n elm[memberName] = n;\n }\n } else {\n elm[memberName] = newValue;\n }\n } catch (e) {\n }\n }\n let xlink = false;\n if (BUILD9.vdomXlink) {\n if (ln !== (ln = ln.replace(/^xlink\\:?/, \"\"))) {\n memberName = ln;\n xlink = true;\n }\n }\n if (newValue == null || newValue === false) {\n if (newValue !== false || elm.getAttribute(memberName) === \"\") {\n if (BUILD9.vdomXlink && xlink) {\n elm.removeAttributeNS(XLINK_NS, memberName);\n } else {\n elm.removeAttribute(memberName);\n }\n }\n } else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex) {\n newValue = newValue === true ? \"\" : newValue;\n if (BUILD9.vdomXlink && xlink) {\n elm.setAttributeNS(XLINK_NS, memberName, newValue);\n } else {\n elm.setAttribute(memberName, newValue);\n }\n }\n }\n }\n};\nvar parseClassListRegex = /\\s/;\nvar parseClassList = (value) => !value ? [] : value.split(parseClassListRegex);\nvar CAPTURE_EVENT_SUFFIX = \"Capture\";\nvar CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + \"$\");\n\n// src/runtime/vdom/update-element.ts\nvar updateElement = (oldVnode, newVnode, isSvgMode2) => {\n const elm = newVnode.$elm$.nodeType === 11 /* DocumentFragment */ && newVnode.$elm$.host ? newVnode.$elm$.host : newVnode.$elm$;\n const oldVnodeAttrs = oldVnode && oldVnode.$attrs$ || EMPTY_OBJ;\n const newVnodeAttrs = newVnode.$attrs$ || EMPTY_OBJ;\n if (BUILD10.updatable) {\n for (const memberName of sortedAttrNames(Object.keys(oldVnodeAttrs))) {\n if (!(memberName in newVnodeAttrs)) {\n setAccessor(elm, memberName, oldVnodeAttrs[memberName], void 0, isSvgMode2, newVnode.$flags$);\n }\n }\n }\n for (const memberName of sortedAttrNames(Object.keys(newVnodeAttrs))) {\n setAccessor(elm, memberName, oldVnodeAttrs[memberName], newVnodeAttrs[memberName], isSvgMode2, newVnode.$flags$);\n }\n};\nfunction sortedAttrNames(attrNames) {\n return attrNames.includes(\"ref\") ? (\n // we need to sort these to ensure that `'ref'` is the last attr\n [...attrNames.filter((attr) => attr !== \"ref\"), \"ref\"]\n ) : (\n // no need to sort, return the original array\n attrNames\n );\n}\n\n// src/runtime/vdom/vdom-render.ts\nvar scopeId;\nvar contentRef;\nvar hostTagName;\nvar useNativeShadowDom = false;\nvar checkSlotFallbackVisibility = false;\nvar checkSlotRelocate = false;\nvar isSvgMode = false;\nvar createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {\n var _a;\n const newVNode2 = newParentVNode.$children$[childIndex];\n let i2 = 0;\n let elm;\n let childNode;\n let oldVNode;\n if (BUILD11.slotRelocation && !useNativeShadowDom) {\n checkSlotRelocate = true;\n if (newVNode2.$tag$ === \"slot\") {\n if (scopeId) {\n parentElm.classList.add(scopeId + \"-s\");\n }\n newVNode2.$flags$ |= newVNode2.$children$ ? (\n // slot element has fallback content\n // still create an element that \"mocks\" the slot element\n 2 /* isSlotFallback */\n ) : (\n // slot element does not have fallback content\n // create an html comment we'll use to always reference\n // where actual slot content should sit next to\n 1 /* isSlotReference */\n );\n }\n }\n if (BUILD11.isDev && newVNode2.$elm$) {\n consoleDevError(\n `The JSX ${newVNode2.$text$ !== null ? `\"${newVNode2.$text$}\" text` : `\"${newVNode2.$tag$}\" element`} node should not be shared within the same renderer. The renderer caches element lookups in order to improve performance. However, a side effect from this is that the exact same JSX node should not be reused. For more information please see https://stenciljs.com/docs/templating-jsx#avoid-shared-jsx-nodes`\n );\n }\n if (BUILD11.vdomText && newVNode2.$text$ !== null) {\n elm = newVNode2.$elm$ = doc.createTextNode(newVNode2.$text$);\n } else if (BUILD11.slotRelocation && newVNode2.$flags$ & 1 /* isSlotReference */) {\n elm = newVNode2.$elm$ = BUILD11.isDebug || BUILD11.hydrateServerSide ? slotReferenceDebugNode(newVNode2) : doc.createTextNode(\"\");\n } else {\n if (BUILD11.svg && !isSvgMode) {\n isSvgMode = newVNode2.$tag$ === \"svg\";\n }\n elm = newVNode2.$elm$ = BUILD11.svg ? doc.createElementNS(\n isSvgMode ? SVG_NS : HTML_NS,\n BUILD11.slotRelocation && newVNode2.$flags$ & 2 /* isSlotFallback */ ? \"slot-fb\" : newVNode2.$tag$\n ) : doc.createElement(\n BUILD11.slotRelocation && newVNode2.$flags$ & 2 /* isSlotFallback */ ? \"slot-fb\" : newVNode2.$tag$\n );\n if (BUILD11.svg && isSvgMode && newVNode2.$tag$ === \"foreignObject\") {\n isSvgMode = false;\n }\n if (BUILD11.vdomAttribute) {\n updateElement(null, newVNode2, isSvgMode);\n }\n if ((BUILD11.shadowDom || BUILD11.scoped) && isDef(scopeId) && elm[\"s-si\"] !== scopeId) {\n elm.classList.add(elm[\"s-si\"] = scopeId);\n }\n if (newVNode2.$children$) {\n for (i2 = 0; i2 < newVNode2.$children$.length; ++i2) {\n childNode = createElm(oldParentVNode, newVNode2, i2, elm);\n if (childNode) {\n elm.appendChild(childNode);\n }\n }\n }\n if (BUILD11.svg) {\n if (newVNode2.$tag$ === \"svg\") {\n isSvgMode = false;\n } else if (elm.tagName === \"foreignObject\") {\n isSvgMode = true;\n }\n }\n }\n elm[\"s-hn\"] = hostTagName;\n if (BUILD11.slotRelocation) {\n if (newVNode2.$flags$ & (2 /* isSlotFallback */ | 1 /* isSlotReference */)) {\n elm[\"s-sr\"] = true;\n elm[\"s-cr\"] = contentRef;\n elm[\"s-sn\"] = newVNode2.$name$ || \"\";\n elm[\"s-rf\"] = (_a = newVNode2.$attrs$) == null ? void 0 : _a.ref;\n oldVNode = oldParentVNode && oldParentVNode.$children$ && oldParentVNode.$children$[childIndex];\n if (oldVNode && oldVNode.$tag$ === newVNode2.$tag$ && oldParentVNode.$elm$) {\n if (BUILD11.experimentalSlotFixes) {\n relocateToHostRoot(oldParentVNode.$elm$);\n } else {\n putBackInOriginalLocation(oldParentVNode.$elm$, false);\n }\n }\n }\n }\n return elm;\n};\nvar relocateToHostRoot = (parentElm) => {\n plt.$flags$ |= 1 /* isTmpDisconnected */;\n const host = parentElm.closest(hostTagName.toLowerCase());\n if (host != null) {\n const contentRefNode = Array.from(host.childNodes).find((ref) => ref[\"s-cr\"]);\n const childNodeArray = Array.from(parentElm.childNodes);\n for (const childNode of contentRefNode ? childNodeArray.reverse() : childNodeArray) {\n if (childNode[\"s-sh\"] != null) {\n insertBefore(host, childNode, contentRefNode != null ? contentRefNode : null);\n childNode[\"s-sh\"] = void 0;\n checkSlotRelocate = true;\n }\n }\n }\n plt.$flags$ &= ~1 /* isTmpDisconnected */;\n};\nvar putBackInOriginalLocation = (parentElm, recursive) => {\n plt.$flags$ |= 1 /* isTmpDisconnected */;\n const oldSlotChildNodes = Array.from(parentElm.childNodes);\n if (parentElm[\"s-sr\"] && BUILD11.experimentalSlotFixes) {\n let node = parentElm;\n while (node = node.nextSibling) {\n if (node && node[\"s-sn\"] === parentElm[\"s-sn\"] && node[\"s-sh\"] === hostTagName) {\n oldSlotChildNodes.push(node);\n }\n }\n }\n for (let i2 = oldSlotChildNodes.length - 1; i2 >= 0; i2--) {\n const childNode = oldSlotChildNodes[i2];\n if (childNode[\"s-hn\"] !== hostTagName && childNode[\"s-ol\"]) {\n insertBefore(parentReferenceNode(childNode), childNode, referenceNode(childNode));\n childNode[\"s-ol\"].remove();\n childNode[\"s-ol\"] = void 0;\n childNode[\"s-sh\"] = void 0;\n checkSlotRelocate = true;\n }\n if (recursive) {\n putBackInOriginalLocation(childNode, recursive);\n }\n }\n plt.$flags$ &= ~1 /* isTmpDisconnected */;\n};\nvar addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) => {\n let containerElm = BUILD11.slotRelocation && parentElm[\"s-cr\"] && parentElm[\"s-cr\"].parentNode || parentElm;\n let childNode;\n if (BUILD11.shadowDom && containerElm.shadowRoot && containerElm.tagName === hostTagName) {\n containerElm = containerElm.shadowRoot;\n }\n for (; startIdx <= endIdx; ++startIdx) {\n if (vnodes[startIdx]) {\n childNode = createElm(null, parentVNode, startIdx, parentElm);\n if (childNode) {\n vnodes[startIdx].$elm$ = childNode;\n insertBefore(containerElm, childNode, BUILD11.slotRelocation ? referenceNode(before) : before);\n }\n }\n }\n};\nvar removeVnodes = (vnodes, startIdx, endIdx) => {\n for (let index = startIdx; index <= endIdx; ++index) {\n const vnode = vnodes[index];\n if (vnode) {\n const elm = vnode.$elm$;\n nullifyVNodeRefs(vnode);\n if (elm) {\n if (BUILD11.slotRelocation) {\n checkSlotFallbackVisibility = true;\n if (elm[\"s-ol\"]) {\n elm[\"s-ol\"].remove();\n } else {\n putBackInOriginalLocation(elm, true);\n }\n }\n elm.remove();\n }\n }\n }\n};\nvar updateChildren = (parentElm, oldCh, newVNode2, newCh, isInitialRender = false) => {\n let oldStartIdx = 0;\n let newStartIdx = 0;\n let idxInOld = 0;\n let i2 = 0;\n let oldEndIdx = oldCh.length - 1;\n let oldStartVnode = oldCh[0];\n let oldEndVnode = oldCh[oldEndIdx];\n let newEndIdx = newCh.length - 1;\n let newStartVnode = newCh[0];\n let newEndVnode = newCh[newEndIdx];\n let node;\n let elmToMove;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx];\n } else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n } else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n } else if (isSameVnode(oldStartVnode, newStartVnode, isInitialRender)) {\n patch(oldStartVnode, newStartVnode, isInitialRender);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (isSameVnode(oldEndVnode, newEndVnode, isInitialRender)) {\n patch(oldEndVnode, newEndVnode, isInitialRender);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (isSameVnode(oldStartVnode, newEndVnode, isInitialRender)) {\n if (BUILD11.slotRelocation && (oldStartVnode.$tag$ === \"slot\" || newEndVnode.$tag$ === \"slot\")) {\n putBackInOriginalLocation(oldStartVnode.$elm$.parentNode, false);\n }\n patch(oldStartVnode, newEndVnode, isInitialRender);\n insertBefore(parentElm, oldStartVnode.$elm$, oldEndVnode.$elm$.nextSibling);\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (isSameVnode(oldEndVnode, newStartVnode, isInitialRender)) {\n if (BUILD11.slotRelocation && (oldStartVnode.$tag$ === \"slot\" || newEndVnode.$tag$ === \"slot\")) {\n putBackInOriginalLocation(oldEndVnode.$elm$.parentNode, false);\n }\n patch(oldEndVnode, newStartVnode, isInitialRender);\n insertBefore(parentElm, oldEndVnode.$elm$, oldStartVnode.$elm$);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n idxInOld = -1;\n if (BUILD11.vdomKey) {\n for (i2 = oldStartIdx; i2 <= oldEndIdx; ++i2) {\n if (oldCh[i2] && oldCh[i2].$key$ !== null && oldCh[i2].$key$ === newStartVnode.$key$) {\n idxInOld = i2;\n break;\n }\n }\n }\n if (BUILD11.vdomKey && idxInOld >= 0) {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.$tag$ !== newStartVnode.$tag$) {\n node = createElm(oldCh && oldCh[newStartIdx], newVNode2, idxInOld, parentElm);\n } else {\n patch(elmToMove, newStartVnode, isInitialRender);\n oldCh[idxInOld] = void 0;\n node = elmToMove.$elm$;\n }\n newStartVnode = newCh[++newStartIdx];\n } else {\n node = createElm(oldCh && oldCh[newStartIdx], newVNode2, newStartIdx, parentElm);\n newStartVnode = newCh[++newStartIdx];\n }\n if (node) {\n if (BUILD11.slotRelocation) {\n insertBefore(parentReferenceNode(oldStartVnode.$elm$), node, referenceNode(oldStartVnode.$elm$));\n } else {\n insertBefore(oldStartVnode.$elm$.parentNode, node, oldStartVnode.$elm$);\n }\n }\n }\n }\n if (oldStartIdx > oldEndIdx) {\n addVnodes(\n parentElm,\n newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].$elm$,\n newVNode2,\n newCh,\n newStartIdx,\n newEndIdx\n );\n } else if (BUILD11.updatable && newStartIdx > newEndIdx) {\n removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n }\n};\nvar isSameVnode = (leftVNode, rightVNode, isInitialRender = false) => {\n if (leftVNode.$tag$ === rightVNode.$tag$) {\n if (BUILD11.slotRelocation && leftVNode.$tag$ === \"slot\") {\n return leftVNode.$name$ === rightVNode.$name$;\n }\n if (BUILD11.vdomKey && !isInitialRender) {\n return leftVNode.$key$ === rightVNode.$key$;\n }\n return true;\n }\n return false;\n};\nvar referenceNode = (node) => {\n return node && node[\"s-ol\"] || node;\n};\nvar parentReferenceNode = (node) => (node[\"s-ol\"] ? node[\"s-ol\"] : node).parentNode;\nvar patch = (oldVNode, newVNode2, isInitialRender = false) => {\n const elm = newVNode2.$elm$ = oldVNode.$elm$;\n const oldChildren = oldVNode.$children$;\n const newChildren = newVNode2.$children$;\n const tag = newVNode2.$tag$;\n const text = newVNode2.$text$;\n let defaultHolder;\n if (!BUILD11.vdomText || text === null) {\n if (BUILD11.svg) {\n isSvgMode = tag === \"svg\" ? true : tag === \"foreignObject\" ? false : isSvgMode;\n }\n if (BUILD11.vdomAttribute || BUILD11.reflect) {\n if (BUILD11.slot && tag === \"slot\" && !useNativeShadowDom) {\n if (BUILD11.experimentalSlotFixes && oldVNode.$name$ !== newVNode2.$name$) {\n newVNode2.$elm$[\"s-sn\"] = newVNode2.$name$ || \"\";\n relocateToHostRoot(newVNode2.$elm$.parentElement);\n }\n } else {\n updateElement(oldVNode, newVNode2, isSvgMode);\n }\n }\n if (BUILD11.updatable && oldChildren !== null && newChildren !== null) {\n updateChildren(elm, oldChildren, newVNode2, newChildren, isInitialRender);\n } else if (newChildren !== null) {\n if (BUILD11.updatable && BUILD11.vdomText && oldVNode.$text$ !== null) {\n elm.textContent = \"\";\n }\n addVnodes(elm, null, newVNode2, newChildren, 0, newChildren.length - 1);\n } else if (BUILD11.updatable && oldChildren !== null) {\n removeVnodes(oldChildren, 0, oldChildren.length - 1);\n }\n if (BUILD11.svg && isSvgMode && tag === \"svg\") {\n isSvgMode = false;\n }\n } else if (BUILD11.vdomText && BUILD11.slotRelocation && (defaultHolder = elm[\"s-cr\"])) {\n defaultHolder.parentNode.textContent = text;\n } else if (BUILD11.vdomText && oldVNode.$text$ !== text) {\n elm.data = text;\n }\n};\nvar updateFallbackSlotVisibility = (elm) => {\n const childNodes = elm.childNodes;\n for (const childNode of childNodes) {\n if (childNode.nodeType === 1 /* ElementNode */) {\n if (childNode[\"s-sr\"]) {\n const slotName = childNode[\"s-sn\"];\n childNode.hidden = false;\n for (const siblingNode of childNodes) {\n if (siblingNode !== childNode) {\n if (siblingNode[\"s-hn\"] !== childNode[\"s-hn\"] || slotName !== \"\") {\n if (siblingNode.nodeType === 1 /* ElementNode */ && (slotName === siblingNode.getAttribute(\"slot\") || slotName === siblingNode[\"s-sn\"]) || siblingNode.nodeType === 3 /* TextNode */ && slotName === siblingNode[\"s-sn\"]) {\n childNode.hidden = true;\n break;\n }\n } else {\n if (siblingNode.nodeType === 1 /* ElementNode */ || siblingNode.nodeType === 3 /* TextNode */ && siblingNode.textContent.trim() !== \"\") {\n childNode.hidden = true;\n break;\n }\n }\n }\n }\n }\n updateFallbackSlotVisibility(childNode);\n }\n }\n};\nvar relocateNodes = [];\nvar markSlotContentForRelocation = (elm) => {\n let node;\n let hostContentNodes;\n let j;\n for (const childNode of elm.childNodes) {\n if (childNode[\"s-sr\"] && (node = childNode[\"s-cr\"]) && node.parentNode) {\n hostContentNodes = node.parentNode.childNodes;\n const slotName = childNode[\"s-sn\"];\n for (j = hostContentNodes.length - 1; j >= 0; j--) {\n node = hostContentNodes[j];\n if (!node[\"s-cn\"] && !node[\"s-nr\"] && node[\"s-hn\"] !== childNode[\"s-hn\"] && (!BUILD11.experimentalSlotFixes || !node[\"s-sh\"] || node[\"s-sh\"] !== childNode[\"s-hn\"])) {\n if (isNodeLocatedInSlot(node, slotName)) {\n let relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);\n checkSlotFallbackVisibility = true;\n node[\"s-sn\"] = node[\"s-sn\"] || slotName;\n if (relocateNodeData) {\n relocateNodeData.$nodeToRelocate$[\"s-sh\"] = childNode[\"s-hn\"];\n relocateNodeData.$slotRefNode$ = childNode;\n } else {\n node[\"s-sh\"] = childNode[\"s-hn\"];\n relocateNodes.push({\n $slotRefNode$: childNode,\n $nodeToRelocate$: node\n });\n }\n if (node[\"s-sr\"]) {\n relocateNodes.map((relocateNode) => {\n if (isNodeLocatedInSlot(relocateNode.$nodeToRelocate$, node[\"s-sn\"])) {\n relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);\n if (relocateNodeData && !relocateNode.$slotRefNode$) {\n relocateNode.$slotRefNode$ = relocateNodeData.$slotRefNode$;\n }\n }\n });\n }\n } else if (!relocateNodes.some((r) => r.$nodeToRelocate$ === node)) {\n relocateNodes.push({\n $nodeToRelocate$: node\n });\n }\n }\n }\n }\n if (childNode.nodeType === 1 /* ElementNode */) {\n markSlotContentForRelocation(childNode);\n }\n }\n};\nvar isNodeLocatedInSlot = (nodeToRelocate, slotName) => {\n if (nodeToRelocate.nodeType === 1 /* ElementNode */) {\n if (nodeToRelocate.getAttribute(\"slot\") === null && slotName === \"\") {\n return true;\n }\n if (nodeToRelocate.getAttribute(\"slot\") === slotName) {\n return true;\n }\n return false;\n }\n if (nodeToRelocate[\"s-sn\"] === slotName) {\n return true;\n }\n return slotName === \"\";\n};\nvar nullifyVNodeRefs = (vNode) => {\n if (BUILD11.vdomRef) {\n vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);\n vNode.$children$ && vNode.$children$.map(nullifyVNodeRefs);\n }\n};\nvar insertBefore = (parent, newNode, reference) => {\n const inserted = parent == null ? void 0 : parent.insertBefore(newNode, reference);\n if (BUILD11.scoped) {\n setParentScopeIdAsClassName(newNode, parent);\n }\n return inserted;\n};\nvar findParentScopeId = (element) => {\n return element ? element[\"s-rsc\"] || element[\"s-si\"] || element[\"s-sc\"] || findParentScopeId(element.parentElement) : void 0;\n};\nvar setParentScopeIdAsClassName = (element, parent) => {\n var _a, _b, _c;\n if (element && parent) {\n const oldRootScopeId = element[\"s-rsc\"];\n const newRootScopeId = findParentScopeId(parent);\n oldRootScopeId && ((_a = element.classList) == null ? void 0 : _a.contains(oldRootScopeId)) && element.classList.remove(oldRootScopeId);\n if (newRootScopeId) {\n element[\"s-rsc\"] = newRootScopeId;\n !((_b = element.classList) == null ? void 0 : _b.contains(newRootScopeId)) && ((_c = element.classList) == null ? void 0 : _c.add(newRootScopeId));\n }\n }\n};\nvar renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {\n var _a, _b, _c, _d, _e;\n const hostElm = hostRef.$hostElement$;\n const cmpMeta = hostRef.$cmpMeta$;\n const oldVNode = hostRef.$vnode$ || newVNode(null, null);\n const rootVnode = isHost(renderFnResults) ? renderFnResults : h(null, null, renderFnResults);\n hostTagName = hostElm.tagName;\n if (BUILD11.isDev && Array.isArray(renderFnResults) && renderFnResults.some(isHost)) {\n throw new Error(`The must be the single root component.\nLooks like the render() function of \"${hostTagName.toLowerCase()}\" is returning an array that contains the .\n\nThe render() function should look like this instead:\n\nrender() {\n // Do not return an array\n return (\n {content}\n );\n}\n `);\n }\n if (BUILD11.reflect && cmpMeta.$attrsToReflect$) {\n rootVnode.$attrs$ = rootVnode.$attrs$ || {};\n cmpMeta.$attrsToReflect$.map(\n ([propName, attribute]) => rootVnode.$attrs$[attribute] = hostElm[propName]\n );\n }\n if (isInitialLoad && rootVnode.$attrs$) {\n for (const key of Object.keys(rootVnode.$attrs$)) {\n if (hostElm.hasAttribute(key) && ![\"key\", \"ref\", \"style\", \"class\"].includes(key)) {\n rootVnode.$attrs$[key] = hostElm[key];\n }\n }\n }\n rootVnode.$tag$ = null;\n rootVnode.$flags$ |= 4 /* isHost */;\n hostRef.$vnode$ = rootVnode;\n rootVnode.$elm$ = oldVNode.$elm$ = BUILD11.shadowDom ? hostElm.shadowRoot || hostElm : hostElm;\n if (BUILD11.scoped || BUILD11.shadowDom) {\n scopeId = hostElm[\"s-sc\"];\n }\n useNativeShadowDom = supportsShadow && (cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) !== 0;\n if (BUILD11.slotRelocation) {\n contentRef = hostElm[\"s-cr\"];\n checkSlotFallbackVisibility = false;\n }\n patch(oldVNode, rootVnode, isInitialLoad);\n if (BUILD11.slotRelocation) {\n plt.$flags$ |= 1 /* isTmpDisconnected */;\n if (checkSlotRelocate) {\n markSlotContentForRelocation(rootVnode.$elm$);\n for (const relocateData of relocateNodes) {\n const nodeToRelocate = relocateData.$nodeToRelocate$;\n if (!nodeToRelocate[\"s-ol\"]) {\n const orgLocationNode = BUILD11.isDebug || BUILD11.hydrateServerSide ? originalLocationDebugNode(nodeToRelocate) : doc.createTextNode(\"\");\n orgLocationNode[\"s-nr\"] = nodeToRelocate;\n insertBefore(nodeToRelocate.parentNode, nodeToRelocate[\"s-ol\"] = orgLocationNode, nodeToRelocate);\n }\n }\n for (const relocateData of relocateNodes) {\n const nodeToRelocate = relocateData.$nodeToRelocate$;\n const slotRefNode = relocateData.$slotRefNode$;\n if (slotRefNode) {\n const parentNodeRef = slotRefNode.parentNode;\n let insertBeforeNode = slotRefNode.nextSibling;\n if (!BUILD11.experimentalSlotFixes || insertBeforeNode && insertBeforeNode.nodeType === 1 /* ElementNode */) {\n let orgLocationNode = (_a = nodeToRelocate[\"s-ol\"]) == null ? void 0 : _a.previousSibling;\n while (orgLocationNode) {\n let refNode = (_b = orgLocationNode[\"s-nr\"]) != null ? _b : null;\n if (refNode && refNode[\"s-sn\"] === nodeToRelocate[\"s-sn\"] && parentNodeRef === refNode.parentNode) {\n refNode = refNode.nextSibling;\n while (refNode === nodeToRelocate || (refNode == null ? void 0 : refNode[\"s-sr\"])) {\n refNode = refNode == null ? void 0 : refNode.nextSibling;\n }\n if (!refNode || !refNode[\"s-nr\"]) {\n insertBeforeNode = refNode;\n break;\n }\n }\n orgLocationNode = orgLocationNode.previousSibling;\n }\n }\n if (!insertBeforeNode && parentNodeRef !== nodeToRelocate.parentNode || nodeToRelocate.nextSibling !== insertBeforeNode) {\n if (nodeToRelocate !== insertBeforeNode) {\n if (!BUILD11.experimentalSlotFixes && !nodeToRelocate[\"s-hn\"] && nodeToRelocate[\"s-ol\"]) {\n nodeToRelocate[\"s-hn\"] = nodeToRelocate[\"s-ol\"].parentNode.nodeName;\n }\n insertBefore(parentNodeRef, nodeToRelocate, insertBeforeNode);\n if (nodeToRelocate.nodeType === 1 /* ElementNode */) {\n nodeToRelocate.hidden = (_c = nodeToRelocate[\"s-ih\"]) != null ? _c : false;\n }\n }\n }\n nodeToRelocate && typeof slotRefNode[\"s-rf\"] === \"function\" && slotRefNode[\"s-rf\"](nodeToRelocate);\n } else {\n if (nodeToRelocate.nodeType === 1 /* ElementNode */) {\n if (isInitialLoad) {\n nodeToRelocate[\"s-ih\"] = (_d = nodeToRelocate.hidden) != null ? _d : false;\n }\n nodeToRelocate.hidden = true;\n }\n }\n }\n }\n if (checkSlotFallbackVisibility) {\n updateFallbackSlotVisibility(rootVnode.$elm$);\n }\n plt.$flags$ &= ~1 /* isTmpDisconnected */;\n relocateNodes.length = 0;\n }\n if (BUILD11.experimentalScopedSlotChanges && cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {\n for (const childNode of rootVnode.$elm$.childNodes) {\n if (childNode[\"s-hn\"] !== hostTagName && !childNode[\"s-sh\"]) {\n if (isInitialLoad && childNode[\"s-ih\"] == null) {\n childNode[\"s-ih\"] = (_e = childNode.hidden) != null ? _e : false;\n }\n childNode.hidden = true;\n }\n }\n }\n contentRef = void 0;\n};\nvar slotReferenceDebugNode = (slotVNode) => doc.createComment(\n ` (host=${hostTagName.toLowerCase()})`\n);\nvar originalLocationDebugNode = (nodeToRelocate) => doc.createComment(\n `org-location for ` + (nodeToRelocate.localName ? `<${nodeToRelocate.localName}> (host=${nodeToRelocate[\"s-hn\"]})` : `[${nodeToRelocate.textContent}]`)\n);\n\n// src/runtime/update-component.ts\nvar attachToAncestor = (hostRef, ancestorComponent) => {\n if (BUILD12.asyncLoading && ancestorComponent && !hostRef.$onRenderResolve$ && ancestorComponent[\"s-p\"]) {\n ancestorComponent[\"s-p\"].push(new Promise((r) => hostRef.$onRenderResolve$ = r));\n }\n};\nvar scheduleUpdate = (hostRef, isInitialLoad) => {\n if (BUILD12.taskQueue && BUILD12.updatable) {\n hostRef.$flags$ |= 16 /* isQueuedForUpdate */;\n }\n if (BUILD12.asyncLoading && hostRef.$flags$ & 4 /* isWaitingForChildren */) {\n hostRef.$flags$ |= 512 /* needsRerender */;\n return;\n }\n attachToAncestor(hostRef, hostRef.$ancestorComponent$);\n const dispatch = () => dispatchHooks(hostRef, isInitialLoad);\n return BUILD12.taskQueue ? writeTask(dispatch) : dispatch();\n};\nvar dispatchHooks = (hostRef, isInitialLoad) => {\n const elm = hostRef.$hostElement$;\n const endSchedule = createTime(\"scheduleUpdate\", hostRef.$cmpMeta$.$tagName$);\n const instance = BUILD12.lazyLoad ? hostRef.$lazyInstance$ : elm;\n let maybePromise;\n if (isInitialLoad) {\n if (BUILD12.lazyLoad && BUILD12.hostListener) {\n hostRef.$flags$ |= 256 /* isListenReady */;\n if (hostRef.$queuedListeners$) {\n hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event));\n hostRef.$queuedListeners$ = void 0;\n }\n }\n emitLifecycleEvent(elm, \"componentWillLoad\");\n if (BUILD12.cmpWillLoad) {\n maybePromise = safeCall(instance, \"componentWillLoad\");\n }\n } else {\n emitLifecycleEvent(elm, \"componentWillUpdate\");\n if (BUILD12.cmpWillUpdate) {\n maybePromise = safeCall(instance, \"componentWillUpdate\");\n }\n }\n emitLifecycleEvent(elm, \"componentWillRender\");\n if (BUILD12.cmpWillRender) {\n maybePromise = enqueue(maybePromise, () => safeCall(instance, \"componentWillRender\"));\n }\n endSchedule();\n return enqueue(maybePromise, () => updateComponent(hostRef, instance, isInitialLoad));\n};\nvar enqueue = (maybePromise, fn) => isPromisey(maybePromise) ? maybePromise.then(fn) : fn();\nvar isPromisey = (maybePromise) => maybePromise instanceof Promise || maybePromise && maybePromise.then && typeof maybePromise.then === \"function\";\nvar updateComponent = async (hostRef, instance, isInitialLoad) => {\n var _a;\n const elm = hostRef.$hostElement$;\n const endUpdate = createTime(\"update\", hostRef.$cmpMeta$.$tagName$);\n const rc = elm[\"s-rc\"];\n if (BUILD12.style && isInitialLoad) {\n attachStyles(hostRef);\n }\n const endRender = createTime(\"render\", hostRef.$cmpMeta$.$tagName$);\n if (BUILD12.isDev) {\n hostRef.$flags$ |= 1024 /* devOnRender */;\n }\n if (BUILD12.hydrateServerSide) {\n await callRender(hostRef, instance, elm, isInitialLoad);\n } else {\n callRender(hostRef, instance, elm, isInitialLoad);\n }\n if (BUILD12.isDev) {\n hostRef.$renderCount$ = hostRef.$renderCount$ === void 0 ? 1 : hostRef.$renderCount$ + 1;\n hostRef.$flags$ &= ~1024 /* devOnRender */;\n }\n if (BUILD12.hydrateServerSide) {\n try {\n serverSideConnected(elm);\n if (isInitialLoad) {\n if (hostRef.$cmpMeta$.$flags$ & 1 /* shadowDomEncapsulation */) {\n elm[\"s-en\"] = \"\";\n } else if (hostRef.$cmpMeta$.$flags$ & 2 /* scopedCssEncapsulation */) {\n elm[\"s-en\"] = \"c\";\n }\n }\n } catch (e) {\n consoleError(e, elm);\n }\n }\n if (BUILD12.asyncLoading && rc) {\n rc.map((cb) => cb());\n elm[\"s-rc\"] = void 0;\n }\n endRender();\n endUpdate();\n if (BUILD12.asyncLoading) {\n const childrenPromises = (_a = elm[\"s-p\"]) != null ? _a : [];\n const postUpdate = () => postUpdateComponent(hostRef);\n if (childrenPromises.length === 0) {\n postUpdate();\n } else {\n Promise.all(childrenPromises).then(postUpdate);\n hostRef.$flags$ |= 4 /* isWaitingForChildren */;\n childrenPromises.length = 0;\n }\n } else {\n postUpdateComponent(hostRef);\n }\n};\nvar renderingRef = null;\nvar callRender = (hostRef, instance, elm, isInitialLoad) => {\n const allRenderFn = BUILD12.allRenderFn ? true : false;\n const lazyLoad = BUILD12.lazyLoad ? true : false;\n const taskQueue = BUILD12.taskQueue ? true : false;\n const updatable = BUILD12.updatable ? true : false;\n try {\n renderingRef = instance;\n instance = allRenderFn ? instance.render() : instance.render && instance.render();\n if (updatable && taskQueue) {\n hostRef.$flags$ &= ~16 /* isQueuedForUpdate */;\n }\n if (updatable || lazyLoad) {\n hostRef.$flags$ |= 2 /* hasRendered */;\n }\n if (BUILD12.hasRenderFn || BUILD12.reflect) {\n if (BUILD12.vdomRender || BUILD12.reflect) {\n if (BUILD12.hydrateServerSide) {\n return Promise.resolve(instance).then((value) => renderVdom(hostRef, value, isInitialLoad));\n } else {\n renderVdom(hostRef, instance, isInitialLoad);\n }\n } else {\n const shadowRoot = elm.shadowRoot;\n if (hostRef.$cmpMeta$.$flags$ & 1 /* shadowDomEncapsulation */) {\n shadowRoot.textContent = instance;\n } else {\n elm.textContent = instance;\n }\n }\n }\n } catch (e) {\n consoleError(e, hostRef.$hostElement$);\n }\n renderingRef = null;\n return null;\n};\nvar getRenderingRef = () => renderingRef;\nvar postUpdateComponent = (hostRef) => {\n const tagName = hostRef.$cmpMeta$.$tagName$;\n const elm = hostRef.$hostElement$;\n const endPostUpdate = createTime(\"postUpdate\", tagName);\n const instance = BUILD12.lazyLoad ? hostRef.$lazyInstance$ : elm;\n const ancestorComponent = hostRef.$ancestorComponent$;\n if (BUILD12.cmpDidRender) {\n if (BUILD12.isDev) {\n hostRef.$flags$ |= 1024 /* devOnRender */;\n }\n safeCall(instance, \"componentDidRender\");\n if (BUILD12.isDev) {\n hostRef.$flags$ &= ~1024 /* devOnRender */;\n }\n }\n emitLifecycleEvent(elm, \"componentDidRender\");\n if (!(hostRef.$flags$ & 64 /* hasLoadedComponent */)) {\n hostRef.$flags$ |= 64 /* hasLoadedComponent */;\n if (BUILD12.asyncLoading && BUILD12.cssAnnotations) {\n addHydratedFlag(elm);\n }\n if (BUILD12.cmpDidLoad) {\n if (BUILD12.isDev) {\n hostRef.$flags$ |= 2048 /* devOnDidLoad */;\n }\n safeCall(instance, \"componentDidLoad\");\n if (BUILD12.isDev) {\n hostRef.$flags$ &= ~2048 /* devOnDidLoad */;\n }\n }\n emitLifecycleEvent(elm, \"componentDidLoad\");\n endPostUpdate();\n if (BUILD12.asyncLoading) {\n hostRef.$onReadyResolve$(elm);\n if (!ancestorComponent) {\n appDidLoad(tagName);\n }\n }\n } else {\n if (BUILD12.cmpDidUpdate) {\n if (BUILD12.isDev) {\n hostRef.$flags$ |= 1024 /* devOnRender */;\n }\n safeCall(instance, \"componentDidUpdate\");\n if (BUILD12.isDev) {\n hostRef.$flags$ &= ~1024 /* devOnRender */;\n }\n }\n emitLifecycleEvent(elm, \"componentDidUpdate\");\n endPostUpdate();\n }\n if (BUILD12.method && BUILD12.lazyLoad) {\n hostRef.$onInstanceResolve$(elm);\n }\n if (BUILD12.asyncLoading) {\n if (hostRef.$onRenderResolve$) {\n hostRef.$onRenderResolve$();\n hostRef.$onRenderResolve$ = void 0;\n }\n if (hostRef.$flags$ & 512 /* needsRerender */) {\n nextTick(() => scheduleUpdate(hostRef, false));\n }\n hostRef.$flags$ &= ~(4 /* isWaitingForChildren */ | 512 /* needsRerender */);\n }\n};\nvar forceUpdate = (ref) => {\n if (BUILD12.updatable && (Build.isBrowser || Build.isTesting)) {\n const hostRef = getHostRef(ref);\n const isConnected = hostRef.$hostElement$.isConnected;\n if (isConnected && (hostRef.$flags$ & (2 /* hasRendered */ | 16 /* isQueuedForUpdate */)) === 2 /* hasRendered */) {\n scheduleUpdate(hostRef, false);\n }\n return isConnected;\n }\n return false;\n};\nvar appDidLoad = (who) => {\n if (BUILD12.cssAnnotations) {\n addHydratedFlag(doc.documentElement);\n }\n if (BUILD12.asyncQueue) {\n plt.$flags$ |= 2 /* appLoaded */;\n }\n nextTick(() => emitEvent(win, \"appload\", { detail: { namespace: NAMESPACE } }));\n if (BUILD12.profile && performance.measure) {\n performance.measure(`[Stencil] ${NAMESPACE} initial load (by ${who})`, \"st:app:start\");\n }\n};\nvar safeCall = (instance, method, arg) => {\n if (instance && instance[method]) {\n try {\n return instance[method](arg);\n } catch (e) {\n consoleError(e);\n }\n }\n return void 0;\n};\nvar emitLifecycleEvent = (elm, lifecycleName) => {\n if (BUILD12.lifecycleDOMEvents) {\n emitEvent(elm, \"stencil_\" + lifecycleName, {\n bubbles: true,\n composed: true,\n detail: {\n namespace: NAMESPACE\n }\n });\n }\n};\nvar addHydratedFlag = (elm) => BUILD12.hydratedClass ? elm.classList.add(\"hydrated\") : BUILD12.hydratedAttribute ? elm.setAttribute(\"hydrated\", \"\") : void 0;\nvar serverSideConnected = (elm) => {\n const children = elm.children;\n if (children != null) {\n for (let i2 = 0, ii = children.length; i2 < ii; i2++) {\n const childElm = children[i2];\n if (typeof childElm.connectedCallback === \"function\") {\n childElm.connectedCallback();\n }\n serverSideConnected(childElm);\n }\n }\n};\n\n// src/runtime/set-value.ts\nvar getValue = (ref, propName) => getHostRef(ref).$instanceValues$.get(propName);\nvar setValue = (ref, propName, newVal, cmpMeta) => {\n const hostRef = getHostRef(ref);\n if (BUILD13.lazyLoad && !hostRef) {\n throw new Error(\n `Couldn't find host element for \"${cmpMeta.$tagName$}\" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/ionic-team/stencil/issues/5457).`\n );\n }\n const elm = BUILD13.lazyLoad ? hostRef.$hostElement$ : ref;\n const oldVal = hostRef.$instanceValues$.get(propName);\n const flags = hostRef.$flags$;\n const instance = BUILD13.lazyLoad ? hostRef.$lazyInstance$ : elm;\n newVal = parsePropertyValue(newVal, cmpMeta.$members$[propName][0]);\n const areBothNaN = Number.isNaN(oldVal) && Number.isNaN(newVal);\n const didValueChange = newVal !== oldVal && !areBothNaN;\n if ((!BUILD13.lazyLoad || !(flags & 8 /* isConstructingInstance */) || oldVal === void 0) && didValueChange) {\n hostRef.$instanceValues$.set(propName, newVal);\n if (BUILD13.isDev) {\n if (hostRef.$flags$ & 1024 /* devOnRender */) {\n consoleDevWarn(\n `The state/prop \"${propName}\" changed during rendering. This can potentially lead to infinite-loops and other bugs.`,\n \"\\nElement\",\n elm,\n \"\\nNew value\",\n newVal,\n \"\\nOld value\",\n oldVal\n );\n } else if (hostRef.$flags$ & 2048 /* devOnDidLoad */) {\n consoleDevWarn(\n `The state/prop \"${propName}\" changed during \"componentDidLoad()\", this triggers extra re-renders, try to setup on \"componentWillLoad()\"`,\n \"\\nElement\",\n elm,\n \"\\nNew value\",\n newVal,\n \"\\nOld value\",\n oldVal\n );\n }\n }\n if (!BUILD13.lazyLoad || instance) {\n if (BUILD13.watchCallback && cmpMeta.$watchers$ && flags & 128 /* isWatchReady */) {\n const watchMethods = cmpMeta.$watchers$[propName];\n if (watchMethods) {\n watchMethods.map((watchMethodName) => {\n try {\n instance[watchMethodName](newVal, oldVal, propName);\n } catch (e) {\n consoleError(e, elm);\n }\n });\n }\n }\n if (BUILD13.updatable && (flags & (2 /* hasRendered */ | 16 /* isQueuedForUpdate */)) === 2 /* hasRendered */) {\n if (BUILD13.cmpShouldUpdate && instance.componentShouldUpdate) {\n if (instance.componentShouldUpdate(newVal, oldVal, propName) === false) {\n return;\n }\n }\n scheduleUpdate(hostRef, false);\n }\n }\n }\n};\n\n// src/runtime/proxy-component.ts\nvar proxyComponent = (Cstr, cmpMeta, flags) => {\n var _a;\n const prototype = Cstr.prototype;\n if (BUILD14.formAssociated && cmpMeta.$flags$ & 64 /* formAssociated */ && flags & 1 /* isElementConstructor */) {\n FORM_ASSOCIATED_CUSTOM_ELEMENT_CALLBACKS.forEach(\n (cbName) => Object.defineProperty(prototype, cbName, {\n value(...args) {\n const hostRef = getHostRef(this);\n const elm = BUILD14.lazyLoad ? hostRef.$hostElement$ : this;\n const instance = BUILD14.lazyLoad ? hostRef.$lazyInstance$ : elm;\n if (!instance) {\n hostRef.$onReadyPromise$.then((instance2) => {\n const cb = instance2[cbName];\n typeof cb === \"function\" && cb.call(instance2, ...args);\n });\n } else {\n const cb = instance[cbName];\n typeof cb === \"function\" && cb.call(instance, ...args);\n }\n }\n })\n );\n }\n if (BUILD14.member && cmpMeta.$members$) {\n if (BUILD14.watchCallback && Cstr.watchers) {\n cmpMeta.$watchers$ = Cstr.watchers;\n }\n const members = Object.entries(cmpMeta.$members$);\n members.map(([memberName, [memberFlags]]) => {\n if ((BUILD14.prop || BUILD14.state) && (memberFlags & 31 /* Prop */ || (!BUILD14.lazyLoad || flags & 2 /* proxyState */) && memberFlags & 32 /* State */)) {\n Object.defineProperty(prototype, memberName, {\n get() {\n return getValue(this, memberName);\n },\n set(newValue) {\n if (BUILD14.isDev) {\n const ref = getHostRef(this);\n if (\n // we are proxying the instance (not element)\n (flags & 1 /* isElementConstructor */) === 0 && // the element is not constructing\n (ref && ref.$flags$ & 8 /* isConstructingInstance */) === 0 && // the member is a prop\n (memberFlags & 31 /* Prop */) !== 0 && // the member is not mutable\n (memberFlags & 1024 /* Mutable */) === 0\n ) {\n consoleDevWarn(\n `@Prop() \"${memberName}\" on <${cmpMeta.$tagName$}> is immutable but was modified from within the component.\nMore information: https://stenciljs.com/docs/properties#prop-mutability`\n );\n }\n }\n setValue(this, memberName, newValue, cmpMeta);\n },\n configurable: true,\n enumerable: true\n });\n } else if (BUILD14.lazyLoad && BUILD14.method && flags & 1 /* isElementConstructor */ && memberFlags & 64 /* Method */) {\n Object.defineProperty(prototype, memberName, {\n value(...args) {\n var _a2;\n const ref = getHostRef(this);\n return (_a2 = ref == null ? void 0 : ref.$onInstancePromise$) == null ? void 0 : _a2.then(() => {\n var _a3;\n return (_a3 = ref.$lazyInstance$) == null ? void 0 : _a3[memberName](...args);\n });\n }\n });\n }\n });\n if (BUILD14.observeAttribute && (!BUILD14.lazyLoad || flags & 1 /* isElementConstructor */)) {\n const attrNameToPropName = /* @__PURE__ */ new Map();\n prototype.attributeChangedCallback = function(attrName, oldValue, newValue) {\n plt.jmp(() => {\n var _a2;\n const propName = attrNameToPropName.get(attrName);\n if (this.hasOwnProperty(propName)) {\n newValue = this[propName];\n delete this[propName];\n } else if (prototype.hasOwnProperty(propName) && typeof this[propName] === \"number\" && this[propName] == newValue) {\n return;\n } else if (propName == null) {\n const hostRef = getHostRef(this);\n const flags2 = hostRef == null ? void 0 : hostRef.$flags$;\n if (flags2 && !(flags2 & 8 /* isConstructingInstance */) && flags2 & 128 /* isWatchReady */ && newValue !== oldValue) {\n const elm = BUILD14.lazyLoad ? hostRef.$hostElement$ : this;\n const instance = BUILD14.lazyLoad ? hostRef.$lazyInstance$ : elm;\n const entry = (_a2 = cmpMeta.$watchers$) == null ? void 0 : _a2[attrName];\n entry == null ? void 0 : entry.forEach((callbackName) => {\n if (instance[callbackName] != null) {\n instance[callbackName].call(instance, newValue, oldValue, attrName);\n }\n });\n }\n return;\n }\n this[propName] = newValue === null && typeof this[propName] === \"boolean\" ? false : newValue;\n });\n };\n Cstr.observedAttributes = Array.from(\n /* @__PURE__ */ new Set([\n ...Object.keys((_a = cmpMeta.$watchers$) != null ? _a : {}),\n ...members.filter(([_, m]) => m[0] & 15 /* HasAttribute */).map(([propName, m]) => {\n var _a2;\n const attrName = m[1] || propName;\n attrNameToPropName.set(attrName, propName);\n if (BUILD14.reflect && m[0] & 512 /* ReflectAttr */) {\n (_a2 = cmpMeta.$attrsToReflect$) == null ? void 0 : _a2.push([propName, attrName]);\n }\n return attrName;\n })\n ])\n );\n }\n }\n return Cstr;\n};\n\n// src/runtime/initialize-component.ts\nvar initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {\n let Cstr;\n if ((hostRef.$flags$ & 32 /* hasInitializedComponent */) === 0) {\n hostRef.$flags$ |= 32 /* hasInitializedComponent */;\n const bundleId = cmpMeta.$lazyBundleId$;\n if ((BUILD15.lazyLoad || BUILD15.hydrateClientSide) && bundleId) {\n Cstr = loadModule(cmpMeta, hostRef, hmrVersionId);\n if (Cstr.then) {\n const endLoad = uniqueTime(\n `st:load:${cmpMeta.$tagName$}:${hostRef.$modeName$}`,\n `[Stencil] Load module for <${cmpMeta.$tagName$}>`\n );\n Cstr = await Cstr;\n endLoad();\n }\n if ((BUILD15.isDev || BUILD15.isDebug) && !Cstr) {\n throw new Error(`Constructor for \"${cmpMeta.$tagName$}#${hostRef.$modeName$}\" was not found`);\n }\n if (BUILD15.member && !Cstr.isProxied) {\n if (BUILD15.watchCallback) {\n cmpMeta.$watchers$ = Cstr.watchers;\n }\n proxyComponent(Cstr, cmpMeta, 2 /* proxyState */);\n Cstr.isProxied = true;\n }\n const endNewInstance = createTime(\"createInstance\", cmpMeta.$tagName$);\n if (BUILD15.member) {\n hostRef.$flags$ |= 8 /* isConstructingInstance */;\n }\n try {\n new Cstr(hostRef);\n } catch (e) {\n consoleError(e);\n }\n if (BUILD15.member) {\n hostRef.$flags$ &= ~8 /* isConstructingInstance */;\n }\n if (BUILD15.watchCallback) {\n hostRef.$flags$ |= 128 /* isWatchReady */;\n }\n endNewInstance();\n fireConnectedCallback(hostRef.$lazyInstance$);\n } else {\n Cstr = elm.constructor;\n customElements.whenDefined(cmpMeta.$tagName$).then(() => hostRef.$flags$ |= 128 /* isWatchReady */);\n }\n if (BUILD15.style && Cstr.style) {\n let style = Cstr.style;\n if (BUILD15.mode && typeof style !== \"string\") {\n style = style[hostRef.$modeName$ = computeMode(elm)];\n if (BUILD15.hydrateServerSide && hostRef.$modeName$) {\n elm.setAttribute(\"s-mode\", hostRef.$modeName$);\n }\n }\n const scopeId2 = getScopeId(cmpMeta, hostRef.$modeName$);\n if (!styles.has(scopeId2)) {\n const endRegisterStyles = createTime(\"registerStyles\", cmpMeta.$tagName$);\n if (!BUILD15.hydrateServerSide && BUILD15.shadowDom && // TODO(STENCIL-854): Remove code related to legacy shadowDomShim field\n BUILD15.shadowDomShim && cmpMeta.$flags$ & 8 /* needsShadowDomShim */) {\n style = await import(\"./shadow-css.js\").then((m) => m.scopeCss(style, scopeId2, false));\n }\n registerStyle(scopeId2, style, !!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */));\n endRegisterStyles();\n }\n }\n }\n const ancestorComponent = hostRef.$ancestorComponent$;\n const schedule = () => scheduleUpdate(hostRef, true);\n if (BUILD15.asyncLoading && ancestorComponent && ancestorComponent[\"s-rc\"]) {\n ancestorComponent[\"s-rc\"].push(schedule);\n } else {\n schedule();\n }\n};\nvar fireConnectedCallback = (instance) => {\n if (BUILD15.lazyLoad && BUILD15.connectedCallback) {\n safeCall(instance, \"connectedCallback\");\n }\n};\n\n// src/runtime/connected-callback.ts\nvar connectedCallback = (elm) => {\n if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {\n const hostRef = getHostRef(elm);\n const cmpMeta = hostRef.$cmpMeta$;\n const endConnected = createTime(\"connectedCallback\", cmpMeta.$tagName$);\n if (BUILD16.hostListenerTargetParent) {\n addHostEventListeners(elm, hostRef, cmpMeta.$listeners$, true);\n }\n if (!(hostRef.$flags$ & 1 /* hasConnected */)) {\n hostRef.$flags$ |= 1 /* hasConnected */;\n let hostId;\n if (BUILD16.hydrateClientSide) {\n hostId = elm.getAttribute(HYDRATE_ID);\n if (hostId) {\n if (BUILD16.shadowDom && supportsShadow && cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n const scopeId2 = BUILD16.mode ? addStyle(elm.shadowRoot, cmpMeta, elm.getAttribute(\"s-mode\")) : addStyle(elm.shadowRoot, cmpMeta);\n elm.classList.remove(scopeId2 + \"-h\", scopeId2 + \"-s\");\n }\n initializeClientHydrate(elm, cmpMeta.$tagName$, hostId, hostRef);\n }\n }\n if (BUILD16.slotRelocation && !hostId) {\n if (BUILD16.hydrateServerSide || (BUILD16.slot || BUILD16.shadowDom) && // TODO(STENCIL-854): Remove code related to legacy shadowDomShim field\n cmpMeta.$flags$ & (4 /* hasSlotRelocation */ | 8 /* needsShadowDomShim */)) {\n setContentReference(elm);\n }\n }\n if (BUILD16.asyncLoading) {\n let ancestorComponent = elm;\n while (ancestorComponent = ancestorComponent.parentNode || ancestorComponent.host) {\n if (BUILD16.hydrateClientSide && ancestorComponent.nodeType === 1 /* ElementNode */ && ancestorComponent.hasAttribute(\"s-id\") && ancestorComponent[\"s-p\"] || ancestorComponent[\"s-p\"]) {\n attachToAncestor(hostRef, hostRef.$ancestorComponent$ = ancestorComponent);\n break;\n }\n }\n }\n if (BUILD16.prop && !BUILD16.hydrateServerSide && cmpMeta.$members$) {\n Object.entries(cmpMeta.$members$).map(([memberName, [memberFlags]]) => {\n if (memberFlags & 31 /* Prop */ && elm.hasOwnProperty(memberName)) {\n const value = elm[memberName];\n delete elm[memberName];\n elm[memberName] = value;\n }\n });\n }\n if (BUILD16.initializeNextTick) {\n nextTick(() => initializeComponent(elm, hostRef, cmpMeta));\n } else {\n initializeComponent(elm, hostRef, cmpMeta);\n }\n } else {\n addHostEventListeners(elm, hostRef, cmpMeta.$listeners$, false);\n if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {\n fireConnectedCallback(hostRef.$lazyInstance$);\n } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {\n hostRef.$onReadyPromise$.then(() => fireConnectedCallback(hostRef.$lazyInstance$));\n }\n }\n endConnected();\n }\n};\nvar setContentReference = (elm) => {\n const contentRefElm = elm[\"s-cr\"] = doc.createComment(\n BUILD16.isDebug ? `content-ref (host=${elm.localName})` : \"\"\n );\n contentRefElm[\"s-cn\"] = true;\n insertBefore(elm, contentRefElm, elm.firstChild);\n};\n\n// src/runtime/disconnected-callback.ts\nimport { BUILD as BUILD17 } from \"@stencil/core/internal/app-data\";\nvar disconnectInstance = (instance) => {\n if (BUILD17.lazyLoad && BUILD17.disconnectedCallback) {\n safeCall(instance, \"disconnectedCallback\");\n }\n if (BUILD17.cmpDidUnload) {\n safeCall(instance, \"componentDidUnload\");\n }\n};\nvar disconnectedCallback = async (elm) => {\n if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {\n const hostRef = getHostRef(elm);\n if (BUILD17.hostListener) {\n if (hostRef.$rmListeners$) {\n hostRef.$rmListeners$.map((rmListener) => rmListener());\n hostRef.$rmListeners$ = void 0;\n }\n }\n if (!BUILD17.lazyLoad) {\n disconnectInstance(elm);\n } else if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {\n disconnectInstance(hostRef.$lazyInstance$);\n } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {\n hostRef.$onReadyPromise$.then(() => disconnectInstance(hostRef.$lazyInstance$));\n }\n }\n};\n\n// src/runtime/dom-extras.ts\nimport { BUILD as BUILD18 } from \"@stencil/core/internal/app-data\";\nvar patchPseudoShadowDom = (hostElementPrototype, descriptorPrototype) => {\n patchCloneNode(hostElementPrototype);\n patchSlotAppendChild(hostElementPrototype);\n patchSlotAppend(hostElementPrototype);\n patchSlotPrepend(hostElementPrototype);\n patchSlotInsertAdjacentElement(hostElementPrototype);\n patchSlotInsertAdjacentHTML(hostElementPrototype);\n patchSlotInsertAdjacentText(hostElementPrototype);\n patchTextContent(hostElementPrototype);\n patchChildSlotNodes(hostElementPrototype, descriptorPrototype);\n patchSlotRemoveChild(hostElementPrototype);\n};\nvar patchCloneNode = (HostElementPrototype) => {\n const orgCloneNode = HostElementPrototype.cloneNode;\n HostElementPrototype.cloneNode = function(deep) {\n const srcNode = this;\n const isShadowDom = BUILD18.shadowDom ? srcNode.shadowRoot && supportsShadow : false;\n const clonedNode = orgCloneNode.call(srcNode, isShadowDom ? deep : false);\n if (BUILD18.slot && !isShadowDom && deep) {\n let i2 = 0;\n let slotted, nonStencilNode;\n const stencilPrivates = [\n \"s-id\",\n \"s-cr\",\n \"s-lr\",\n \"s-rc\",\n \"s-sc\",\n \"s-p\",\n \"s-cn\",\n \"s-sr\",\n \"s-sn\",\n \"s-hn\",\n \"s-ol\",\n \"s-nr\",\n \"s-si\",\n \"s-rf\",\n \"s-rsc\"\n ];\n for (; i2 < srcNode.childNodes.length; i2++) {\n slotted = srcNode.childNodes[i2][\"s-nr\"];\n nonStencilNode = stencilPrivates.every((privateField) => !srcNode.childNodes[i2][privateField]);\n if (slotted) {\n if (BUILD18.appendChildSlotFix && clonedNode.__appendChild) {\n clonedNode.__appendChild(slotted.cloneNode(true));\n } else {\n clonedNode.appendChild(slotted.cloneNode(true));\n }\n }\n if (nonStencilNode) {\n clonedNode.appendChild(srcNode.childNodes[i2].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nvar patchSlotAppendChild = (HostElementPrototype) => {\n HostElementPrototype.__appendChild = HostElementPrototype.appendChild;\n HostElementPrototype.appendChild = function(newChild) {\n const slotName = newChild[\"s-sn\"] = getSlotName(newChild);\n const slotNode = getHostSlotNode(this.childNodes, slotName, this.tagName);\n if (slotNode) {\n const slotChildNodes = getHostSlotChildNodes(slotNode, slotName);\n const appendAfter = slotChildNodes[slotChildNodes.length - 1];\n const insertedNode = insertBefore(appendAfter.parentNode, newChild, appendAfter.nextSibling);\n updateFallbackSlotVisibility(this);\n return insertedNode;\n }\n return this.__appendChild(newChild);\n };\n};\nvar patchSlotRemoveChild = (ElementPrototype) => {\n ElementPrototype.__removeChild = ElementPrototype.removeChild;\n ElementPrototype.removeChild = function(toRemove) {\n if (toRemove && typeof toRemove[\"s-sn\"] !== \"undefined\") {\n const slotNode = getHostSlotNode(this.childNodes, toRemove[\"s-sn\"], this.tagName);\n if (slotNode) {\n const slotChildNodes = getHostSlotChildNodes(slotNode, toRemove[\"s-sn\"]);\n const existingNode = slotChildNodes.find((n) => n === toRemove);\n if (existingNode) {\n existingNode.remove();\n updateFallbackSlotVisibility(this);\n return;\n }\n }\n }\n return this.__removeChild(toRemove);\n };\n};\nvar patchSlotPrepend = (HostElementPrototype) => {\n const originalPrepend = HostElementPrototype.prepend;\n HostElementPrototype.prepend = function(...newChildren) {\n newChildren.forEach((newChild) => {\n if (typeof newChild === \"string\") {\n newChild = this.ownerDocument.createTextNode(newChild);\n }\n const slotName = newChild[\"s-sn\"] = getSlotName(newChild);\n const slotNode = getHostSlotNode(this.childNodes, slotName, this.tagName);\n if (slotNode) {\n const slotPlaceholder = document.createTextNode(\"\");\n slotPlaceholder[\"s-nr\"] = newChild;\n slotNode[\"s-cr\"].parentNode.__appendChild(slotPlaceholder);\n newChild[\"s-ol\"] = slotPlaceholder;\n const slotChildNodes = getHostSlotChildNodes(slotNode, slotName);\n const appendAfter = slotChildNodes[0];\n return insertBefore(appendAfter.parentNode, newChild, appendAfter.nextSibling);\n }\n if (newChild.nodeType === 1 && !!newChild.getAttribute(\"slot\")) {\n newChild.hidden = true;\n }\n return originalPrepend.call(this, newChild);\n });\n };\n};\nvar patchSlotAppend = (HostElementPrototype) => {\n HostElementPrototype.append = function(...newChildren) {\n newChildren.forEach((newChild) => {\n if (typeof newChild === \"string\") {\n newChild = this.ownerDocument.createTextNode(newChild);\n }\n this.appendChild(newChild);\n });\n };\n};\nvar patchSlotInsertAdjacentHTML = (HostElementPrototype) => {\n const originalInsertAdjacentHtml = HostElementPrototype.insertAdjacentHTML;\n HostElementPrototype.insertAdjacentHTML = function(position, text) {\n if (position !== \"afterbegin\" && position !== \"beforeend\") {\n return originalInsertAdjacentHtml.call(this, position, text);\n }\n const container = this.ownerDocument.createElement(\"_\");\n let node;\n container.innerHTML = text;\n if (position === \"afterbegin\") {\n while (node = container.firstChild) {\n this.prepend(node);\n }\n } else if (position === \"beforeend\") {\n while (node = container.firstChild) {\n this.append(node);\n }\n }\n };\n};\nvar patchSlotInsertAdjacentText = (HostElementPrototype) => {\n HostElementPrototype.insertAdjacentText = function(position, text) {\n this.insertAdjacentHTML(position, text);\n };\n};\nvar patchSlotInsertAdjacentElement = (HostElementPrototype) => {\n const originalInsertAdjacentElement = HostElementPrototype.insertAdjacentElement;\n HostElementPrototype.insertAdjacentElement = function(position, element) {\n if (position !== \"afterbegin\" && position !== \"beforeend\") {\n return originalInsertAdjacentElement.call(this, position, element);\n }\n if (position === \"afterbegin\") {\n this.prepend(element);\n return element;\n } else if (position === \"beforeend\") {\n this.append(element);\n return element;\n }\n return element;\n };\n};\nvar patchTextContent = (hostElementPrototype) => {\n const descriptor = Object.getOwnPropertyDescriptor(Node.prototype, \"textContent\");\n Object.defineProperty(hostElementPrototype, \"__textContent\", descriptor);\n if (BUILD18.experimentalScopedSlotChanges) {\n Object.defineProperty(hostElementPrototype, \"textContent\", {\n // To mimic shadow root behavior, we need to return the text content of all\n // nodes in a slot reference node\n get() {\n const slotRefNodes = getAllChildSlotNodes(this.childNodes);\n const textContent = slotRefNodes.map((node) => {\n var _a, _b;\n const text = [];\n let slotContent = node.nextSibling;\n while (slotContent && slotContent[\"s-sn\"] === node[\"s-sn\"]) {\n if (slotContent.nodeType === 3 /* TEXT_NODE */ || slotContent.nodeType === 1 /* ELEMENT_NODE */) {\n text.push((_b = (_a = slotContent.textContent) == null ? void 0 : _a.trim()) != null ? _b : \"\");\n }\n slotContent = slotContent.nextSibling;\n }\n return text.filter((ref) => ref !== \"\").join(\" \");\n }).filter((text) => text !== \"\").join(\" \");\n return \" \" + textContent + \" \";\n },\n // To mimic shadow root behavior, we need to overwrite all nodes in a slot\n // reference node. If a default slot reference node exists, the text content will be\n // placed there. Otherwise, the new text node will be hidden\n set(value) {\n const slotRefNodes = getAllChildSlotNodes(this.childNodes);\n slotRefNodes.forEach((node) => {\n let slotContent = node.nextSibling;\n while (slotContent && slotContent[\"s-sn\"] === node[\"s-sn\"]) {\n const tmp = slotContent;\n slotContent = slotContent.nextSibling;\n tmp.remove();\n }\n if (node[\"s-sn\"] === \"\") {\n const textNode = this.ownerDocument.createTextNode(value);\n textNode[\"s-sn\"] = \"\";\n insertBefore(node.parentElement, textNode, node.nextSibling);\n } else {\n node.remove();\n }\n });\n }\n });\n } else {\n Object.defineProperty(hostElementPrototype, \"textContent\", {\n get() {\n var _a;\n const slotNode = getHostSlotNode(this.childNodes, \"\", this.tagName);\n if (((_a = slotNode == null ? void 0 : slotNode.nextSibling) == null ? void 0 : _a.nodeType) === 3 /* TEXT_NODE */) {\n return slotNode.nextSibling.textContent;\n } else if (slotNode) {\n return slotNode.textContent;\n } else {\n return this.__textContent;\n }\n },\n set(value) {\n var _a;\n const slotNode = getHostSlotNode(this.childNodes, \"\", this.tagName);\n if (((_a = slotNode == null ? void 0 : slotNode.nextSibling) == null ? void 0 : _a.nodeType) === 3 /* TEXT_NODE */) {\n slotNode.nextSibling.textContent = value;\n } else if (slotNode) {\n slotNode.textContent = value;\n } else {\n this.__textContent = value;\n const contentRefElm = this[\"s-cr\"];\n if (contentRefElm) {\n insertBefore(this, contentRefElm, this.firstChild);\n }\n }\n }\n });\n }\n};\nvar patchChildSlotNodes = (elm, cmpMeta) => {\n class FakeNodeList extends Array {\n item(n) {\n return this[n];\n }\n }\n if (cmpMeta.$flags$ & 8 /* needsShadowDomShim */) {\n const childNodesFn = elm.__lookupGetter__(\"childNodes\");\n Object.defineProperty(elm, \"children\", {\n get() {\n return this.childNodes.map((n) => n.nodeType === 1);\n }\n });\n Object.defineProperty(elm, \"childElementCount\", {\n get() {\n return elm.children.length;\n }\n });\n Object.defineProperty(elm, \"childNodes\", {\n get() {\n const childNodes = childNodesFn.call(this);\n if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0 && getHostRef(this).$flags$ & 2 /* hasRendered */) {\n const result = new FakeNodeList();\n for (let i2 = 0; i2 < childNodes.length; i2++) {\n const slot = childNodes[i2][\"s-nr\"];\n if (slot) {\n result.push(slot);\n }\n }\n return result;\n }\n return FakeNodeList.from(childNodes);\n }\n });\n }\n};\nvar getAllChildSlotNodes = (childNodes) => {\n const slotRefNodes = [];\n for (const childNode of Array.from(childNodes)) {\n if (childNode[\"s-sr\"]) {\n slotRefNodes.push(childNode);\n }\n slotRefNodes.push(...getAllChildSlotNodes(childNode.childNodes));\n }\n return slotRefNodes;\n};\nvar getSlotName = (node) => node[\"s-sn\"] || node.nodeType === 1 && node.getAttribute(\"slot\") || \"\";\nvar getHostSlotNode = (childNodes, slotName, hostName) => {\n let i2 = 0;\n let childNode;\n for (; i2 < childNodes.length; i2++) {\n childNode = childNodes[i2];\n if (childNode[\"s-sr\"] && childNode[\"s-sn\"] === slotName && childNode[\"s-hn\"] === hostName) {\n return childNode;\n }\n childNode = getHostSlotNode(childNode.childNodes, slotName, hostName);\n if (childNode) {\n return childNode;\n }\n }\n return null;\n};\nvar getHostSlotChildNodes = (n, slotName) => {\n const childNodes = [n];\n while ((n = n.nextSibling) && n[\"s-sn\"] === slotName) {\n childNodes.push(n);\n }\n return childNodes;\n};\n\n// src/runtime/bootstrap-custom-element.ts\nvar defineCustomElement = (Cstr, compactMeta) => {\n customElements.define(compactMeta[1], proxyCustomElement(Cstr, compactMeta));\n};\nvar proxyCustomElement = (Cstr, compactMeta) => {\n const cmpMeta = {\n $flags$: compactMeta[0],\n $tagName$: compactMeta[1]\n };\n if (BUILD19.member) {\n cmpMeta.$members$ = compactMeta[2];\n }\n if (BUILD19.hostListener) {\n cmpMeta.$listeners$ = compactMeta[3];\n }\n if (BUILD19.watchCallback) {\n cmpMeta.$watchers$ = Cstr.$watchers$;\n }\n if (BUILD19.reflect) {\n cmpMeta.$attrsToReflect$ = [];\n }\n if (BUILD19.shadowDom && !supportsShadow && cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n cmpMeta.$flags$ |= 8 /* needsShadowDomShim */;\n }\n if (BUILD19.experimentalSlotFixes) {\n if (BUILD19.scoped && cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {\n patchPseudoShadowDom(Cstr.prototype, cmpMeta);\n }\n } else {\n if (BUILD19.slotChildNodesFix) {\n patchChildSlotNodes(Cstr.prototype, cmpMeta);\n }\n if (BUILD19.cloneNodeFix) {\n patchCloneNode(Cstr.prototype);\n }\n if (BUILD19.appendChildSlotFix) {\n patchSlotAppendChild(Cstr.prototype);\n }\n if (BUILD19.scopedSlotTextContentFix && cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {\n patchTextContent(Cstr.prototype);\n }\n }\n const originalConnectedCallback = Cstr.prototype.connectedCallback;\n const originalDisconnectedCallback = Cstr.prototype.disconnectedCallback;\n Object.assign(Cstr.prototype, {\n __registerHost() {\n registerHost(this, cmpMeta);\n },\n connectedCallback() {\n connectedCallback(this);\n if (BUILD19.connectedCallback && originalConnectedCallback) {\n originalConnectedCallback.call(this);\n }\n },\n disconnectedCallback() {\n disconnectedCallback(this);\n if (BUILD19.disconnectedCallback && originalDisconnectedCallback) {\n originalDisconnectedCallback.call(this);\n }\n },\n __attachShadow() {\n if (supportsShadow) {\n if (BUILD19.shadowDelegatesFocus) {\n this.attachShadow({\n mode: \"open\",\n delegatesFocus: !!(cmpMeta.$flags$ & 16 /* shadowDelegatesFocus */)\n });\n } else {\n this.attachShadow({ mode: \"open\" });\n }\n } else {\n this.shadowRoot = this;\n }\n }\n });\n Cstr.is = cmpMeta.$tagName$;\n return proxyComponent(Cstr, cmpMeta, 1 /* isElementConstructor */ | 2 /* proxyState */);\n};\nvar forceModeUpdate = (elm) => {\n if (BUILD19.style && BUILD19.mode && !BUILD19.lazyLoad) {\n const mode = computeMode(elm);\n const hostRef = getHostRef(elm);\n if (hostRef.$modeName$ !== mode) {\n const cmpMeta = hostRef.$cmpMeta$;\n const oldScopeId = elm[\"s-sc\"];\n const scopeId2 = getScopeId(cmpMeta, mode);\n const style = elm.constructor.style[mode];\n const flags = cmpMeta.$flags$;\n if (style) {\n if (!styles.has(scopeId2)) {\n registerStyle(scopeId2, style, !!(flags & 1 /* shadowDomEncapsulation */));\n }\n hostRef.$modeName$ = mode;\n elm.classList.remove(oldScopeId + \"-h\", oldScopeId + \"-s\");\n attachStyles(hostRef);\n forceUpdate(elm);\n }\n }\n }\n};\n\n// src/runtime/bootstrap-lazy.ts\nimport { BUILD as BUILD20 } from \"@stencil/core/internal/app-data\";\n\n// src/runtime/hmr-component.ts\nvar hmrStart = (hostElement, cmpMeta, hmrVersionId) => {\n const hostRef = getHostRef(hostElement);\n hostRef.$flags$ = 1 /* hasConnected */;\n initializeComponent(hostElement, hostRef, cmpMeta, hmrVersionId);\n};\n\n// src/runtime/bootstrap-lazy.ts\nvar bootstrapLazy = (lazyBundles, options = {}) => {\n var _a;\n if (BUILD20.profile && performance.mark) {\n performance.mark(\"st:app:start\");\n }\n installDevTools();\n const endBootstrap = createTime(\"bootstrapLazy\");\n const cmpTags = [];\n const exclude = options.exclude || [];\n const customElements2 = win.customElements;\n const head = doc.head;\n const metaCharset = /* @__PURE__ */ head.querySelector(\"meta[charset]\");\n const dataStyles = /* @__PURE__ */ doc.createElement(\"style\");\n const deferredConnectedCallbacks = [];\n const styles2 = /* @__PURE__ */ doc.querySelectorAll(`[${HYDRATED_STYLE_ID}]`);\n let appLoadFallback;\n let isBootstrapping = true;\n let i2 = 0;\n Object.assign(plt, options);\n plt.$resourcesUrl$ = new URL(options.resourcesUrl || \"./\", doc.baseURI).href;\n if (BUILD20.asyncQueue) {\n if (options.syncQueue) {\n plt.$flags$ |= 4 /* queueSync */;\n }\n }\n if (BUILD20.hydrateClientSide) {\n plt.$flags$ |= 2 /* appLoaded */;\n }\n if (BUILD20.hydrateClientSide && BUILD20.shadowDom) {\n for (; i2 < styles2.length; i2++) {\n registerStyle(styles2[i2].getAttribute(HYDRATED_STYLE_ID), convertScopedToShadow(styles2[i2].innerHTML), true);\n }\n }\n let hasSlotRelocation = false;\n lazyBundles.map((lazyBundle) => {\n lazyBundle[1].map((compactMeta) => {\n var _a2;\n const cmpMeta = {\n $flags$: compactMeta[0],\n $tagName$: compactMeta[1],\n $members$: compactMeta[2],\n $listeners$: compactMeta[3]\n };\n if (cmpMeta.$flags$ & 4 /* hasSlotRelocation */) {\n hasSlotRelocation = true;\n }\n if (BUILD20.member) {\n cmpMeta.$members$ = compactMeta[2];\n }\n if (BUILD20.hostListener) {\n cmpMeta.$listeners$ = compactMeta[3];\n }\n if (BUILD20.reflect) {\n cmpMeta.$attrsToReflect$ = [];\n }\n if (BUILD20.watchCallback) {\n cmpMeta.$watchers$ = (_a2 = compactMeta[4]) != null ? _a2 : {};\n }\n if (BUILD20.shadowDom && !supportsShadow && cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n cmpMeta.$flags$ |= 8 /* needsShadowDomShim */;\n }\n const tagName = BUILD20.transformTagName && options.transformTagName ? options.transformTagName(cmpMeta.$tagName$) : cmpMeta.$tagName$;\n const HostElement = class extends HTMLElement {\n // StencilLazyHost\n constructor(self) {\n super(self);\n self = this;\n registerHost(self, cmpMeta);\n if (BUILD20.shadowDom && cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n if (supportsShadow) {\n if (BUILD20.shadowDelegatesFocus) {\n self.attachShadow({\n mode: \"open\",\n delegatesFocus: !!(cmpMeta.$flags$ & 16 /* shadowDelegatesFocus */)\n });\n } else {\n self.attachShadow({ mode: \"open\" });\n }\n } else if (!BUILD20.hydrateServerSide && !(\"shadowRoot\" in self)) {\n self.shadowRoot = self;\n }\n }\n }\n connectedCallback() {\n if (appLoadFallback) {\n clearTimeout(appLoadFallback);\n appLoadFallback = null;\n }\n if (isBootstrapping) {\n deferredConnectedCallbacks.push(this);\n } else {\n plt.jmp(() => connectedCallback(this));\n }\n }\n disconnectedCallback() {\n plt.jmp(() => disconnectedCallback(this));\n }\n componentOnReady() {\n return getHostRef(this).$onReadyPromise$;\n }\n };\n if (BUILD20.experimentalSlotFixes) {\n if (BUILD20.scoped && cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {\n patchPseudoShadowDom(HostElement.prototype, cmpMeta);\n }\n } else {\n if (BUILD20.slotChildNodesFix) {\n patchChildSlotNodes(HostElement.prototype, cmpMeta);\n }\n if (BUILD20.cloneNodeFix) {\n patchCloneNode(HostElement.prototype);\n }\n if (BUILD20.appendChildSlotFix) {\n patchSlotAppendChild(HostElement.prototype);\n }\n if (BUILD20.scopedSlotTextContentFix && cmpMeta.$flags$ & 2 /* scopedCssEncapsulation */) {\n patchTextContent(HostElement.prototype);\n }\n }\n if (BUILD20.formAssociated && cmpMeta.$flags$ & 64 /* formAssociated */) {\n HostElement.formAssociated = true;\n }\n if (BUILD20.hotModuleReplacement) {\n HostElement.prototype[\"s-hmr\"] = function(hmrVersionId) {\n hmrStart(this, cmpMeta, hmrVersionId);\n };\n }\n cmpMeta.$lazyBundleId$ = lazyBundle[0];\n if (!exclude.includes(tagName) && !customElements2.get(tagName)) {\n cmpTags.push(tagName);\n customElements2.define(\n tagName,\n proxyComponent(HostElement, cmpMeta, 1 /* isElementConstructor */)\n );\n }\n });\n });\n if (cmpTags.length > 0) {\n if (hasSlotRelocation) {\n dataStyles.textContent += SLOT_FB_CSS;\n }\n if (BUILD20.invisiblePrehydration && (BUILD20.hydratedClass || BUILD20.hydratedAttribute)) {\n dataStyles.textContent += cmpTags + HYDRATED_CSS;\n }\n if (dataStyles.innerHTML.length) {\n dataStyles.setAttribute(\"data-styles\", \"\");\n const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(doc);\n if (nonce != null) {\n dataStyles.setAttribute(\"nonce\", nonce);\n }\n head.insertBefore(dataStyles, metaCharset ? metaCharset.nextSibling : head.firstChild);\n }\n }\n isBootstrapping = false;\n if (deferredConnectedCallbacks.length) {\n deferredConnectedCallbacks.map((host) => host.connectedCallback());\n } else {\n if (BUILD20.profile) {\n plt.jmp(() => appLoadFallback = setTimeout(appDidLoad, 30, \"timeout\"));\n } else {\n plt.jmp(() => appLoadFallback = setTimeout(appDidLoad, 30));\n }\n }\n endBootstrap();\n};\n\n// src/runtime/fragment.ts\nvar Fragment = (_, children) => children;\n\n// src/runtime/host-listener.ts\nimport { BUILD as BUILD21 } from \"@stencil/core/internal/app-data\";\nvar addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {\n if (BUILD21.hostListener && listeners) {\n if (BUILD21.hostListenerTargetParent) {\n if (attachParentListeners) {\n listeners = listeners.filter(([flags]) => flags & 32 /* TargetParent */);\n } else {\n listeners = listeners.filter(([flags]) => !(flags & 32 /* TargetParent */));\n }\n }\n listeners.map(([flags, name, method]) => {\n const target = BUILD21.hostListenerTarget ? getHostListenerTarget(elm, flags) : elm;\n const handler = hostListenerProxy(hostRef, method);\n const opts = hostListenerOpts(flags);\n plt.ael(target, name, handler, opts);\n (hostRef.$rmListeners$ = hostRef.$rmListeners$ || []).push(() => plt.rel(target, name, handler, opts));\n });\n }\n};\nvar hostListenerProxy = (hostRef, methodName) => (ev) => {\n try {\n if (BUILD21.lazyLoad) {\n if (hostRef.$flags$ & 256 /* isListenReady */) {\n hostRef.$lazyInstance$[methodName](ev);\n } else {\n (hostRef.$queuedListeners$ = hostRef.$queuedListeners$ || []).push([methodName, ev]);\n }\n } else {\n hostRef.$hostElement$[methodName](ev);\n }\n } catch (e) {\n consoleError(e);\n }\n};\nvar getHostListenerTarget = (elm, flags) => {\n if (BUILD21.hostListenerTargetDocument && flags & 4 /* TargetDocument */) return doc;\n if (BUILD21.hostListenerTargetWindow && flags & 8 /* TargetWindow */) return win;\n if (BUILD21.hostListenerTargetBody && flags & 16 /* TargetBody */) return doc.body;\n if (BUILD21.hostListenerTargetParent && flags & 32 /* TargetParent */) return elm.parentElement;\n return elm;\n};\nvar hostListenerOpts = (flags) => supportsListenerOptions ? {\n passive: (flags & 1 /* Passive */) !== 0,\n capture: (flags & 2 /* Capture */) !== 0\n} : (flags & 2 /* Capture */) !== 0;\n\n// src/runtime/nonce.ts\nvar setNonce = (nonce) => plt.$nonce$ = nonce;\n\n// src/runtime/platform-options.ts\nvar setPlatformOptions = (opts) => Object.assign(plt, opts);\n\n// src/runtime/vdom/vdom-annotations.ts\nvar insertVdomAnnotations = (doc2, staticComponents) => {\n if (doc2 != null) {\n const docData = {\n hostIds: 0,\n rootLevelIds: 0,\n staticComponents: new Set(staticComponents)\n };\n const orgLocationNodes = [];\n parseVNodeAnnotations(doc2, doc2.body, docData, orgLocationNodes);\n orgLocationNodes.forEach((orgLocationNode) => {\n var _a;\n if (orgLocationNode != null && orgLocationNode[\"s-nr\"]) {\n const nodeRef = orgLocationNode[\"s-nr\"];\n let hostId = nodeRef[\"s-host-id\"];\n let nodeId = nodeRef[\"s-node-id\"];\n let childId = `${hostId}.${nodeId}`;\n if (hostId == null) {\n hostId = 0;\n docData.rootLevelIds++;\n nodeId = docData.rootLevelIds;\n childId = `${hostId}.${nodeId}`;\n if (nodeRef.nodeType === 1 /* ElementNode */) {\n nodeRef.setAttribute(HYDRATE_CHILD_ID, childId);\n } else if (nodeRef.nodeType === 3 /* TextNode */) {\n if (hostId === 0) {\n const textContent = (_a = nodeRef.nodeValue) == null ? void 0 : _a.trim();\n if (textContent === \"\") {\n orgLocationNode.remove();\n return;\n }\n }\n const commentBeforeTextNode = doc2.createComment(childId);\n commentBeforeTextNode.nodeValue = `${TEXT_NODE_ID}.${childId}`;\n insertBefore(nodeRef.parentNode, commentBeforeTextNode, nodeRef);\n }\n }\n let orgLocationNodeId = `${ORG_LOCATION_ID}.${childId}`;\n const orgLocationParentNode = orgLocationNode.parentElement;\n if (orgLocationParentNode) {\n if (orgLocationParentNode[\"s-en\"] === \"\") {\n orgLocationNodeId += `.`;\n } else if (orgLocationParentNode[\"s-en\"] === \"c\") {\n orgLocationNodeId += `.c`;\n }\n }\n orgLocationNode.nodeValue = orgLocationNodeId;\n }\n });\n }\n};\nvar parseVNodeAnnotations = (doc2, node, docData, orgLocationNodes) => {\n if (node == null) {\n return;\n }\n if (node[\"s-nr\"] != null) {\n orgLocationNodes.push(node);\n }\n if (node.nodeType === 1 /* ElementNode */) {\n node.childNodes.forEach((childNode) => {\n const hostRef = getHostRef(childNode);\n if (hostRef != null && !docData.staticComponents.has(childNode.nodeName.toLowerCase())) {\n const cmpData = {\n nodeIds: 0\n };\n insertVNodeAnnotations(doc2, childNode, hostRef.$vnode$, docData, cmpData);\n }\n parseVNodeAnnotations(doc2, childNode, docData, orgLocationNodes);\n });\n }\n};\nvar insertVNodeAnnotations = (doc2, hostElm, vnode, docData, cmpData) => {\n if (vnode != null) {\n const hostId = ++docData.hostIds;\n hostElm.setAttribute(HYDRATE_ID, hostId);\n if (hostElm[\"s-cr\"] != null) {\n hostElm[\"s-cr\"].nodeValue = `${CONTENT_REF_ID}.${hostId}`;\n }\n if (vnode.$children$ != null) {\n const depth = 0;\n vnode.$children$.forEach((vnodeChild, index) => {\n insertChildVNodeAnnotations(doc2, vnodeChild, cmpData, hostId, depth, index);\n });\n }\n if (hostElm && vnode && vnode.$elm$ && !hostElm.hasAttribute(HYDRATE_CHILD_ID)) {\n const parent = hostElm.parentElement;\n if (parent && parent.childNodes) {\n const parentChildNodes = Array.from(parent.childNodes);\n const comment = parentChildNodes.find(\n (node) => node.nodeType === 8 /* CommentNode */ && node[\"s-sr\"]\n );\n if (comment) {\n const index = parentChildNodes.indexOf(hostElm) - 1;\n vnode.$elm$.setAttribute(\n HYDRATE_CHILD_ID,\n `${comment[\"s-host-id\"]}.${comment[\"s-node-id\"]}.0.${index}`\n );\n }\n }\n }\n }\n};\nvar insertChildVNodeAnnotations = (doc2, vnodeChild, cmpData, hostId, depth, index) => {\n const childElm = vnodeChild.$elm$;\n if (childElm == null) {\n return;\n }\n const nodeId = cmpData.nodeIds++;\n const childId = `${hostId}.${nodeId}.${depth}.${index}`;\n childElm[\"s-host-id\"] = hostId;\n childElm[\"s-node-id\"] = nodeId;\n if (childElm.nodeType === 1 /* ElementNode */) {\n childElm.setAttribute(HYDRATE_CHILD_ID, childId);\n } else if (childElm.nodeType === 3 /* TextNode */) {\n const parentNode = childElm.parentNode;\n const nodeName = parentNode == null ? void 0 : parentNode.nodeName;\n if (nodeName !== \"STYLE\" && nodeName !== \"SCRIPT\") {\n const textNodeId = `${TEXT_NODE_ID}.${childId}`;\n const commentBeforeTextNode = doc2.createComment(textNodeId);\n insertBefore(parentNode, commentBeforeTextNode, childElm);\n }\n } else if (childElm.nodeType === 8 /* CommentNode */) {\n if (childElm[\"s-sr\"]) {\n const slotName = childElm[\"s-sn\"] || \"\";\n const slotNodeId = `${SLOT_NODE_ID}.${childId}.${slotName}`;\n childElm.nodeValue = slotNodeId;\n }\n }\n if (vnodeChild.$children$ != null) {\n const childDepth = depth + 1;\n vnodeChild.$children$.forEach((vnode, index2) => {\n insertChildVNodeAnnotations(doc2, vnode, cmpData, hostId, childDepth, index2);\n });\n }\n};\n\n// src/client/client-host-ref.ts\nvar hostRefs = BUILD22.hotModuleReplacement ? window.__STENCIL_HOSTREFS__ || (window.__STENCIL_HOSTREFS__ = /* @__PURE__ */ new WeakMap()) : /* @__PURE__ */ new WeakMap();\nvar getHostRef = (ref) => hostRefs.get(ref);\nvar registerInstance = (lazyInstance, hostRef) => hostRefs.set(hostRef.$lazyInstance$ = lazyInstance, hostRef);\nvar registerHost = (hostElement, cmpMeta) => {\n const hostRef = {\n $flags$: 0,\n $hostElement$: hostElement,\n $cmpMeta$: cmpMeta,\n $instanceValues$: /* @__PURE__ */ new Map()\n };\n if (BUILD22.isDev) {\n hostRef.$renderCount$ = 0;\n }\n if (BUILD22.method && BUILD22.lazyLoad) {\n hostRef.$onInstancePromise$ = new Promise((r) => hostRef.$onInstanceResolve$ = r);\n }\n if (BUILD22.asyncLoading) {\n hostRef.$onReadyPromise$ = new Promise((r) => hostRef.$onReadyResolve$ = r);\n hostElement[\"s-p\"] = [];\n hostElement[\"s-rc\"] = [];\n }\n addHostEventListeners(hostElement, hostRef, cmpMeta.$listeners$, false);\n return hostRefs.set(hostElement, hostRef);\n};\nvar isMemberInElement = (elm, memberName) => memberName in elm;\n\n// src/client/client-load-module.ts\nimport { BUILD as BUILD24 } from \"@stencil/core/internal/app-data\";\n\n// src/client/client-log.ts\nimport { BUILD as BUILD23 } from \"@stencil/core/internal/app-data\";\nvar customError;\nvar consoleError = (e, el) => (customError || console.error)(e, el);\nvar STENCIL_DEV_MODE = BUILD23.isTesting ? [\"STENCIL:\"] : [\n \"%cstencil\",\n \"color: white;background:#4c47ff;font-weight: bold; font-size:10px; padding:2px 6px; border-radius: 5px\"\n];\nvar consoleDevError = (...m) => console.error(...STENCIL_DEV_MODE, ...m);\nvar consoleDevWarn = (...m) => console.warn(...STENCIL_DEV_MODE, ...m);\nvar consoleDevInfo = (...m) => console.info(...STENCIL_DEV_MODE, ...m);\nvar setErrorHandler = (handler) => customError = handler;\n\n// src/client/client-load-module.ts\nvar cmpModules = /* @__PURE__ */ new Map();\nvar MODULE_IMPORT_PREFIX = \"./\";\nvar loadModule = (cmpMeta, hostRef, hmrVersionId) => {\n const exportName = cmpMeta.$tagName$.replace(/-/g, \"_\");\n const bundleId = cmpMeta.$lazyBundleId$;\n if (BUILD24.isDev && typeof bundleId !== \"string\") {\n consoleDevError(\n `Trying to lazily load component <${cmpMeta.$tagName$}> with style mode \"${hostRef.$modeName$}\", but it does not exist.`\n );\n return void 0;\n }\n const module = !BUILD24.hotModuleReplacement ? cmpModules.get(bundleId) : false;\n if (module) {\n return module[exportName];\n }\n /*!__STENCIL_STATIC_IMPORT_SWITCH__*/\n return import(\n /* @vite-ignore */\n /* webpackInclude: /\\.entry\\.js$/ */\n /* webpackExclude: /\\.system\\.entry\\.js$/ */\n /* webpackMode: \"lazy\" */\n `./${bundleId}.entry.js${BUILD24.hotModuleReplacement && hmrVersionId ? \"?s-hmr=\" + hmrVersionId : \"\"}`\n ).then((importedModule) => {\n if (!BUILD24.hotModuleReplacement) {\n cmpModules.set(bundleId, importedModule);\n }\n return importedModule[exportName];\n }, consoleError);\n};\n\n// src/client/client-style.ts\nvar styles = /* @__PURE__ */ new Map();\nvar modeResolutionChain = [];\n\n// src/client/client-task-queue.ts\nimport { BUILD as BUILD26 } from \"@stencil/core/internal/app-data\";\n\n// src/client/client-window.ts\nimport { BUILD as BUILD25 } from \"@stencil/core/internal/app-data\";\nvar win = typeof window !== \"undefined\" ? window : {};\nvar doc = win.document || { head: {} };\nvar H = win.HTMLElement || class {\n};\nvar plt = {\n $flags$: 0,\n $resourcesUrl$: \"\",\n jmp: (h2) => h2(),\n raf: (h2) => requestAnimationFrame(h2),\n ael: (el, eventName, listener, opts) => el.addEventListener(eventName, listener, opts),\n rel: (el, eventName, listener, opts) => el.removeEventListener(eventName, listener, opts),\n ce: (eventName, opts) => new CustomEvent(eventName, opts)\n};\nvar setPlatformHelpers = (helpers) => {\n Object.assign(plt, helpers);\n};\nvar supportsShadow = (\n // TODO(STENCIL-854): Remove code related to legacy shadowDomShim field\n BUILD25.shadowDomShim && BUILD25.shadowDom ? /* @__PURE__ */ (() => (doc.head.attachShadow + \"\").indexOf(\"[native\") > -1)() : true\n);\nvar supportsListenerOptions = /* @__PURE__ */ (() => {\n let supportsListenerOptions2 = false;\n try {\n doc.addEventListener(\n \"e\",\n null,\n Object.defineProperty({}, \"passive\", {\n get() {\n supportsListenerOptions2 = true;\n }\n })\n );\n } catch (e) {\n }\n return supportsListenerOptions2;\n})();\nvar promiseResolve = (v) => Promise.resolve(v);\nvar supportsConstructableStylesheets = BUILD25.constructableCSS ? /* @__PURE__ */ (() => {\n try {\n new CSSStyleSheet();\n return typeof new CSSStyleSheet().replaceSync === \"function\";\n } catch (e) {\n }\n return false;\n})() : false;\n\n// src/client/client-task-queue.ts\nvar queueCongestion = 0;\nvar queuePending = false;\nvar queueDomReads = [];\nvar queueDomWrites = [];\nvar queueDomWritesLow = [];\nvar queueTask = (queue, write) => (cb) => {\n queue.push(cb);\n if (!queuePending) {\n queuePending = true;\n if (write && plt.$flags$ & 4 /* queueSync */) {\n nextTick(flush);\n } else {\n plt.raf(flush);\n }\n }\n};\nvar consume = (queue) => {\n for (let i2 = 0; i2 < queue.length; i2++) {\n try {\n queue[i2](performance.now());\n } catch (e) {\n consoleError(e);\n }\n }\n queue.length = 0;\n};\nvar consumeTimeout = (queue, timeout) => {\n let i2 = 0;\n let ts = 0;\n while (i2 < queue.length && (ts = performance.now()) < timeout) {\n try {\n queue[i2++](ts);\n } catch (e) {\n consoleError(e);\n }\n }\n if (i2 === queue.length) {\n queue.length = 0;\n } else if (i2 !== 0) {\n queue.splice(0, i2);\n }\n};\nvar flush = () => {\n if (BUILD26.asyncQueue) {\n queueCongestion++;\n }\n consume(queueDomReads);\n if (BUILD26.asyncQueue) {\n const timeout = (plt.$flags$ & 6 /* queueMask */) === 2 /* appLoaded */ ? performance.now() + 14 * Math.ceil(queueCongestion * (1 / 10)) : Infinity;\n consumeTimeout(queueDomWrites, timeout);\n consumeTimeout(queueDomWritesLow, timeout);\n if (queueDomWrites.length > 0) {\n queueDomWritesLow.push(...queueDomWrites);\n queueDomWrites.length = 0;\n }\n if (queuePending = queueDomReads.length + queueDomWrites.length + queueDomWritesLow.length > 0) {\n plt.raf(flush);\n } else {\n queueCongestion = 0;\n }\n } else {\n consume(queueDomWrites);\n if (queuePending = queueDomReads.length > 0) {\n plt.raf(flush);\n }\n }\n};\nvar nextTick = (cb) => promiseResolve().then(cb);\nvar readTask = /* @__PURE__ */ queueTask(queueDomReads, false);\nvar writeTask = /* @__PURE__ */ queueTask(queueDomWrites, true);\n\n// src/client/index.ts\nimport { BUILD as BUILD27, Env, NAMESPACE as NAMESPACE2 } from \"@stencil/core/internal/app-data\";\nexport {\n BUILD27 as BUILD,\n Build,\n Env,\n Fragment,\n H,\n H as HTMLElement,\n Host,\n NAMESPACE2 as NAMESPACE,\n STENCIL_DEV_MODE,\n addHostEventListeners,\n bootstrapLazy,\n cmpModules,\n connectedCallback,\n consoleDevError,\n consoleDevInfo,\n consoleDevWarn,\n consoleError,\n createEvent,\n defineCustomElement,\n disconnectedCallback,\n doc,\n forceModeUpdate,\n forceUpdate,\n getAssetPath,\n getElement,\n getHostRef,\n getMode,\n getRenderingRef,\n getValue,\n h,\n insertVdomAnnotations,\n isMemberInElement,\n loadModule,\n modeResolutionChain,\n nextTick,\n parsePropertyValue,\n plt,\n postUpdateComponent,\n promiseResolve,\n proxyComponent,\n proxyCustomElement,\n readTask,\n registerHost,\n registerInstance,\n renderVdom,\n setAssetPath,\n setErrorHandler,\n setMode,\n setNonce,\n setPlatformHelpers,\n setPlatformOptions,\n setValue,\n styles,\n supportsConstructableStylesheets,\n supportsListenerOptions,\n supportsShadow,\n win,\n writeTask\n};\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { c as componentOnReady } from './helpers.js';\n\n// TODO(FW-2832): types\nconst attachComponent = async (delegate, container, component, cssClasses, componentProps, inline) => {\n var _a;\n if (delegate) {\n return delegate.attachViewToDom(container, component, componentProps, cssClasses);\n }\n if (!inline && typeof component !== 'string' && !(component instanceof HTMLElement)) {\n throw new Error('framework delegate is missing');\n }\n const el = typeof component === 'string' ? (_a = container.ownerDocument) === null || _a === void 0 ? void 0 : _a.createElement(component) : component;\n if (cssClasses) {\n cssClasses.forEach((c) => el.classList.add(c));\n }\n if (componentProps) {\n Object.assign(el, componentProps);\n }\n container.appendChild(el);\n await new Promise((resolve) => componentOnReady(el, resolve));\n return el;\n};\nconst detachComponent = (delegate, element) => {\n if (element) {\n if (delegate) {\n const container = element.parentElement;\n return delegate.removeViewFromDom(container, element);\n }\n element.remove();\n }\n return Promise.resolve();\n};\nconst CoreDelegate = () => {\n let BaseComponent;\n let Reference;\n const attachViewToDom = async (parentElement, userComponent, userComponentProps = {}, cssClasses = []) => {\n var _a, _b;\n BaseComponent = parentElement;\n let ChildComponent;\n /**\n * If passing in a component via the `component` props\n * we need to append it inside of our overlay component.\n */\n if (userComponent) {\n /**\n * If passing in the tag name, create\n * the element otherwise just get a reference\n * to the component.\n */\n const el = typeof userComponent === 'string' ? (_a = BaseComponent.ownerDocument) === null || _a === void 0 ? void 0 : _a.createElement(userComponent) : userComponent;\n /**\n * Add any css classes passed in\n * via the cssClasses prop on the overlay.\n */\n cssClasses.forEach((c) => el.classList.add(c));\n /**\n * Add any props passed in\n * via the componentProps prop on the overlay.\n */\n Object.assign(el, userComponentProps);\n /**\n * Finally, append the component\n * inside of the overlay component.\n */\n BaseComponent.appendChild(el);\n ChildComponent = el;\n await new Promise((resolve) => componentOnReady(el, resolve));\n }\n else if (BaseComponent.children.length > 0 &&\n (BaseComponent.tagName === 'ION-MODAL' || BaseComponent.tagName === 'ION-POPOVER')) {\n /**\n * The delegate host wrapper el is only needed for modals and popovers\n * because they allow the dev to provide custom content to the overlay.\n */\n const root = (ChildComponent = BaseComponent.children[0]);\n if (!root.classList.contains('ion-delegate-host')) {\n /**\n * If the root element is not a delegate host, it means\n * that the overlay has not been presented yet and we need\n * to create the containing element with the specified classes.\n */\n const el = (_b = BaseComponent.ownerDocument) === null || _b === void 0 ? void 0 : _b.createElement('div');\n // Add a class to track if the root element was created by the delegate.\n el.classList.add('ion-delegate-host');\n cssClasses.forEach((c) => el.classList.add(c));\n // Move each child from the original template to the new parent element.\n el.append(...BaseComponent.children);\n // Append the new parent element to the original parent element.\n BaseComponent.appendChild(el);\n /**\n * Update the ChildComponent to be the\n * newly created div in the event that one\n * does not already exist.\n */\n ChildComponent = el;\n }\n }\n /**\n * Get the root of the app and\n * add the overlay there.\n */\n const app = document.querySelector('ion-app') || document.body;\n /**\n * Create a placeholder comment so that\n * we can return this component to where\n * it was previously.\n */\n Reference = document.createComment('ionic teleport');\n BaseComponent.parentNode.insertBefore(Reference, BaseComponent);\n app.appendChild(BaseComponent);\n /**\n * We return the child component rather than the overlay\n * reference itself since modal and popover will\n * use this to wait for any Ionic components in the child view\n * to be ready (i.e. componentOnReady) when using the\n * lazy loaded component bundle.\n *\n * However, we fall back to returning BaseComponent\n * in the event that a modal or popover is presented\n * with no child content.\n */\n return ChildComponent !== null && ChildComponent !== void 0 ? ChildComponent : BaseComponent;\n };\n const removeViewFromDom = () => {\n /**\n * Return component to where it was previously in the DOM.\n */\n if (BaseComponent && Reference) {\n Reference.parentNode.insertBefore(BaseComponent, Reference);\n Reference.remove();\n }\n return Promise.resolve();\n };\n return { attachViewToDom, removeViewFromDom };\n};\n\nexport { CoreDelegate as C, attachComponent as a, detachComponent as d };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { d as doc } from './index5.js';\nimport { OVERLAY_BACK_BUTTON_PRIORITY, shouldUseCloseWatcher } from './hardware-back-button.js';\nimport { b as getIonMode, c as config } from './ionic-global.js';\nimport { C as CoreDelegate } from './framework-delegate.js';\nimport { c as componentOnReady, f as focusVisibleElement, a as addEventListener, b as removeEventListener, g as getElementRoot } from './helpers.js';\nimport { p as printIonWarning } from './index6.js';\n\nlet lastOverlayIndex = 0;\nlet lastId = 0;\nconst activeAnimations = new WeakMap();\nconst createController = (tagName) => {\n return {\n create(options) {\n return createOverlay(tagName, options);\n },\n dismiss(data, role, id) {\n return dismissOverlay(document, data, role, tagName, id);\n },\n async getTop() {\n return getPresentedOverlay(document, tagName);\n },\n };\n};\nconst alertController = /*@__PURE__*/ createController('ion-alert');\nconst actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');\nconst loadingController = /*@__PURE__*/ createController('ion-loading');\nconst modalController = /*@__PURE__*/ createController('ion-modal');\nconst pickerController = /*@__PURE__*/ createController('ion-picker');\nconst popoverController = /*@__PURE__*/ createController('ion-popover');\nconst toastController = /*@__PURE__*/ createController('ion-toast');\n/**\n * Prepares the overlay element to be presented.\n */\nconst prepareOverlay = (el) => {\n if (typeof document !== 'undefined') {\n /**\n * Adds a single instance of event listeners for application behaviors:\n *\n * - Escape Key behavior to dismiss an overlay\n * - Trapping focus within an overlay\n * - Back button behavior to dismiss an overlay\n *\n * This only occurs when the first overlay is created.\n */\n connectListeners(document);\n }\n const overlayIndex = lastOverlayIndex++;\n /**\n * overlayIndex is used in the overlay components to set a zIndex.\n * This ensures that the most recently presented overlay will be\n * on top.\n */\n el.overlayIndex = overlayIndex;\n};\n/**\n * Assigns an incrementing id to an overlay element, that does not\n * already have an id assigned to it.\n *\n * Used to track unique instances of an overlay element.\n */\nconst setOverlayId = (el) => {\n if (!el.hasAttribute('id')) {\n el.id = `ion-overlay-${++lastId}`;\n }\n return el.id;\n};\nconst createOverlay = (tagName, opts) => {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined') {\n return window.customElements.whenDefined(tagName).then(() => {\n const element = document.createElement(tagName);\n element.classList.add('overlay-hidden');\n /**\n * Convert the passed in overlay options into props\n * that get passed down into the new overlay.\n */\n Object.assign(element, Object.assign(Object.assign({}, opts), { hasController: true }));\n // append the overlay element to the document body\n getAppRoot(document).appendChild(element);\n return new Promise((resolve) => componentOnReady(element, resolve));\n });\n }\n return Promise.resolve();\n};\n/**\n * This query string selects elements that\n * are eligible to receive focus. We select\n * interactive elements that meet the following\n * criteria:\n * 1. Element does not have a negative tabindex\n * 2. Element does not have `hidden`\n * 3. Element does not have `disabled` for non-Ionic components.\n * 4. Element does not have `disabled` or `disabled=\"true\"` for Ionic components.\n * Note: We need this distinction because `disabled=\"false\"` is\n * valid usage for the disabled property on ion-button.\n */\nconst focusableQueryString = '[tabindex]:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), input:not([type=hidden]):not([tabindex^=\"-\"]):not([hidden]):not([disabled]), textarea:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), button:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), select:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), .ion-focusable:not([tabindex^=\"-\"]):not([hidden]):not([disabled]), .ion-focusable[disabled=\"false\"]:not([tabindex^=\"-\"]):not([hidden])';\nconst isOverlayHidden = (overlay) => overlay.classList.contains('overlay-hidden');\n/**\n * Focuses the first descendant in an overlay\n * that can receive focus. If none exists,\n * the entire overlay will be focused.\n */\nconst focusFirstDescendant = (ref, overlay) => {\n const firstInput = ref.querySelector(focusableQueryString);\n focusElementInOverlay(firstInput, overlay);\n};\n/**\n * Focuses the last descendant in an overlay\n * that can receive focus. If none exists,\n * the entire overlay will be focused.\n */\nconst focusLastDescendant = (ref, overlay) => {\n const inputs = Array.from(ref.querySelectorAll(focusableQueryString));\n const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;\n focusElementInOverlay(lastInput, overlay);\n};\n/**\n * Focuses a particular element in an overlay. If the element\n * doesn't have anything focusable associated with it then\n * the overlay itself will be focused.\n * This should be used instead of the focus() method\n * on most elements because the focusable element\n * may not be the host element.\n *\n * For example, if an ion-button should be focused\n * then we should actually focus the native