{"version":3,"file":"static/js/main.11b7d2a4.js","mappings":"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","sources":["config/api.ts","config/asset.ts","config/cache.ts","config/manifest.ts","config/routes.ts","controllers/floorplan/placeholderData.ts","controllers/floorplan/render.tsx","controllers/floorplan/index.tsx","controllers/interface.ts","../../../libs/ui-workspace/src/lib/languageselect/placeholderData.ts","controllers/languageselect/render.tsx","controllers/languageselect/canRender.ts","controllers/languageselect/index.tsx","controllers/languageselect/interface.ts","controllers/launch/defaultProps.ts","controllers/launch/state/events.ts","controllers/launch/mapping.ts","controllers/launch/render.tsx","controllers/launch/index.tsx","../../../libs/ui-workspace/src/lib/siteobject/placeholderData.ts","controllers/siteobject/render.tsx","controllers/siteobject/canLoad.ts","controllers/siteobject/index.tsx","controllers/toast/interface.ts","../../../libs/ui-workspace/src/lib/tour/placeholderData.ts","controllers/tour/DownloadAlert.tsx","controllers/tour/render.tsx","controllers/tour/canLoad.ts","controllers/tour/canRender.ts","controllers/tour/index.tsx","controllers/tour/interface.ts","../../../libs/ui-workspace/src/lib/tourselect/placeholderData.ts","controllers/tourselect/render.tsx","controllers/tourselect/canRender.ts","controllers/tourselect/index.tsx","controllers/tourselect/interface.ts","controllers/useralert/interface.ts","interface/asset.ts","interface/config.ts","interface/container.ts","interface/overrides.ts","interface/util.ts","state/interface.ts","../../../libs/apiservice/src/lib/db/interface/bind.ts","../../../libs/apiservice/src/lib/jobs/interface/bind.ts","../../../libs/apiservice/src/lib/model/interface/bind.ts","../../../libs/apiservice/src/lib/api/private/form.ts","../../../libs/apiservice/src/lib/api/impl/auth.ts","../../../libs/apiservice/src/lib/api/impl/auth.bind.ts","../../../libs/apiservice/src/lib/api/impl/mediaDiff.ts","../../../libs/apiservice/src/lib/api/impl/mediaDiff.bind.ts","../../../libs/apiservice/src/lib/api/impl/mediaVTS.ts","../../../libs/apiservice/src/lib/api/impl/mediaVTS.bind.ts","../../../libs/apiservice/src/lib/api/impl/siteData.ts","../../../libs/apiservice/src/lib/api/impl/siteData.bind.ts","../../../libs/apiservice/src/lib/api/private/bind.ts","../../../libs/apiservice/src/lib/controller/impl/auth.ts","../../../libs/apiservice/src/lib/controller/impl/auth.bind.ts","../../../libs/apiservice/src/lib/controller/impl/media.download.ts","../../../libs/apiservice/src/lib/controller/impl/media.util.ts","../../../libs/apiservice/src/lib/controller/impl/media.filter.ts","../../../libs/apiservice/src/lib/controller/impl/media.ts","../../../libs/apiservice/src/lib/controller/impl/media.bind.ts","../../../libs/apiservice/src/lib/controller/impl/userState.ts","../../../libs/apiservice/src/lib/controller/impl/userState.bind.ts","../../../libs/apiservice/src/lib/controller/interface/bind.ts","../../../libs/apiservice/src/lib/controller/private/bind.ts","../../../libs/apiservice/src/lib/private/db/index.ts","../../../libs/apiservice/src/lib/model/impl/BackgroundModeDto.link.ts","../../../libs/apiservice/src/lib/model/impl/BackgroundModeDto.map.ts","../../../libs/apiservice/src/lib/model/impl/BackgroundModeDto.private.ts","../../../libs/apiservice/src/lib/model/private/transformer.ts","../../../libs/apiservice/src/lib/model/impl/BeaconDto.link.ts","../../../libs/apiservice/src/lib/model/impl/BeaconDto.map.ts","../../../libs/apiservice/src/lib/model/impl/BeaconSensitivityDto.link.ts","../../../libs/apiservice/src/lib/model/impl/BeaconSensitivityDto.map.ts","../../../libs/apiservice/src/lib/model/impl/BeaconSensitivityDto.private.ts","../../../libs/apiservice/src/lib/model/impl/CountryDto.link.ts","../../../libs/apiservice/src/lib/model/impl/CountryDto.map.ts","../../../libs/apiservice/src/lib/model/impl/CountryDto.private.ts","../../../libs/apiservice/src/lib/model/impl/DeviceAccountDto.link.ts","../../../libs/apiservice/src/lib/model/impl/DeviceAccountDto.map.ts","../../../libs/apiservice/src/lib/model/impl/FloorPlanDto.link.ts","../../../libs/apiservice/src/lib/model/impl/FloorPlanDto.map.ts","../../../libs/apiservice/src/lib/model/impl/FloorPlanTourDto.link.ts","../../../libs/apiservice/src/lib/model/impl/FloorPlanTourDto.map.ts","../../../libs/apiservice/src/lib/model/impl/FloorPlanTranslationDto.link.ts","../../../libs/apiservice/src/lib/model/impl/FloorPlanTranslationDto.map.ts","../../../libs/apiservice/src/lib/model/impl/FontFamilyDto.link.ts","../../../libs/apiservice/src/lib/model/impl/FontFamilyDto.map.ts","../../../libs/apiservice/src/lib/model/impl/FontFamilyDto.private.ts","../../../libs/apiservice/src/lib/model/impl/FontStyleDto.link.ts","../../../libs/apiservice/src/lib/model/impl/FontStyleDto.map.ts","../../../libs/apiservice/src/lib/model/impl/FontStyleDto.private.ts","../../../libs/apiservice/src/lib/model/impl/FontSizeUnitDto.link.ts","../../../libs/apiservice/src/lib/model/impl/FontSizeUnitDto.map.ts","../../../libs/apiservice/src/lib/model/impl/FontSizeUnitDto.private.ts","../../../libs/apiservice/src/lib/model/impl/FontAlignmentDto.link.ts","../../../libs/apiservice/src/lib/model/impl/FontAlignmentDto.map.ts","../../../libs/apiservice/src/lib/model/impl/FontAlignmentDto.private.ts","../../../libs/apiservice/src/lib/model/impl/LanguageDto.link.ts","../../../libs/apiservice/src/lib/model/impl/LanguageDto.map.ts","../../../libs/apiservice/src/lib/model/impl/LanguageDto.private.ts","../../../libs/apiservice/src/lib/model/impl/MediumDto.link.ts","../../../libs/apiservice/src/lib/model/impl/MediumDto.map.ts","../../../libs/apiservice/src/lib/model/impl/MenuItemDto.link.ts","../../../libs/apiservice/src/lib/model/impl/MenuItemDto.map.ts","../../../libs/apiservice/src/lib/model/impl/MenuItemKeywordDto.link.ts","../../../libs/apiservice/src/lib/model/impl/MenuItemKeywordDto.map.ts","../../../libs/apiservice/src/lib/model/impl/MenuItemTranslationDto.link.ts","../../../libs/apiservice/src/lib/model/impl/MenuItemTranslationDto.map.ts","../../../libs/apiservice/src/lib/model/impl/PinTypeDto.link.ts","../../../libs/apiservice/src/lib/model/impl/PinTypeDto.map.ts","../../../libs/apiservice/src/lib/model/impl/PinTypeDto.private.ts","../../../libs/apiservice/src/lib/model/impl/RoleDto.link.ts","../../../libs/apiservice/src/lib/model/impl/RoleDto.map.ts","../../../libs/apiservice/src/lib/model/impl/ScreenOrientationDto.link.ts","../../../libs/apiservice/src/lib/model/impl/ScreenOrientationDto.private.ts","../../../libs/apiservice/src/lib/model/impl/ScreenOrientationDto.map.ts","../../../libs/apiservice/src/lib/model/impl/SiteDto.link.ts","../../../libs/apiservice/src/lib/model/impl/SiteDto.map.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectDto.link.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectDto.map.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectOnFloorPlanDto.link.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectOnFloorPlanDto.map.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectKeywordDto.link.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectKeywordDto.map.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectTranslationDto.link.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectTranslationDto.map.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectTypeDto.link.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectTypeDto.map.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectTypeDto.private.ts","../../../libs/apiservice/src/lib/model/impl/SiteSupportedLanguageDto.link.ts","../../../libs/apiservice/src/lib/model/impl/SiteSupportedLanguageDto.map.ts","../../../libs/apiservice/src/lib/model/impl/StyleDto.link.ts","../../../libs/apiservice/src/lib/model/impl/StyleDto.map.ts","../../../libs/apiservice/src/lib/model/impl/TourDto.link.ts","../../../libs/apiservice/src/lib/model/impl/TourDto.map.ts","../../../libs/apiservice/src/lib/model/impl/TourMenuItemDto.link.ts","../../../libs/apiservice/src/lib/model/impl/TourMenuItemDto.map.ts","../../../libs/apiservice/src/lib/model/impl/TourRelatedSiteObjectDto.link.ts","../../../libs/apiservice/src/lib/model/impl/TourRelatedSiteObjectDto.map.ts","../../../libs/apiservice/src/lib/model/impl/TourStatusDto.link.ts","../../../libs/apiservice/src/lib/model/impl/TourStatusDto.map.ts","../../../libs/apiservice/src/lib/model/impl/TourStatusDto.private.ts","../../../libs/apiservice/src/lib/model/impl/TourSubTypeDto.link.ts","../../../libs/apiservice/src/lib/model/impl/TourSubTypeDto.map.ts","../../../libs/apiservice/src/lib/model/impl/TourTranslationDto.link.ts","../../../libs/apiservice/src/lib/model/impl/TourTranslationDto.map.ts","../../../libs/apiservice/src/lib/model/impl/TourTypeDto.link.ts","../../../libs/apiservice/src/lib/model/impl/TourTypeDto.map.ts","../../../libs/apiservice/src/lib/model/impl/TourTypeDto.private.ts","../../../libs/apiservice/src/lib/model/impl/TourSupportedLanguageDto.link.ts","../../../libs/apiservice/src/lib/model/impl/TourSupportedLanguageDto.map.ts","../../../libs/apiservice/src/lib/model/impl/UserDto.link.ts","../../../libs/apiservice/src/lib/model/impl/UserDto.map.ts","../../../libs/apiservice/src/lib/model/impl/Legacy_FloorPlanDto.link.ts","../../../libs/apiservice/src/lib/model/util/instantiator.ts","../../../libs/apiservice/src/lib/model/impl/BackgroundModeDto.ts","../../../libs/apiservice/src/lib/model/impl/BeaconDto.ts","../../../libs/apiservice/src/lib/model/impl/BeaconSensitivityDto.ts","../../../libs/apiservice/src/lib/model/impl/CountryDto.ts","../../../libs/apiservice/src/lib/model/impl/DeviceAccountDto.ts","../../../libs/apiservice/src/lib/model/impl/FloorPlanDto.ts","../../../libs/apiservice/src/lib/model/impl/FloorPlanTourDto.ts","../../../libs/apiservice/src/lib/model/impl/FloorPlanTranslationDto.ts","../../../libs/apiservice/src/lib/model/impl/FontFamilyDto.ts","../../../libs/apiservice/src/lib/model/impl/FontStyleDto.ts","../../../libs/apiservice/src/lib/model/impl/FontSizeUnitDto.ts","../../../libs/apiservice/src/lib/model/impl/FontAlignmentDto.ts","../../../libs/apiservice/src/lib/model/impl/LanguageDto.ts","../../../libs/apiservice/src/lib/model/impl/MediumDto.ts","../../../libs/apiservice/src/lib/model/impl/MenuItemDto.ts","../../../libs/apiservice/src/lib/model/impl/MenuItemKeywordDto.ts","../../../libs/apiservice/src/lib/model/impl/MenuItemTranslationDto.ts","../../../libs/apiservice/src/lib/model/impl/PinTypeDto.ts","../../../libs/apiservice/src/lib/model/impl/RoleDto.ts","../../../libs/apiservice/src/lib/model/impl/ScreenOrientationDto.ts","../../../libs/apiservice/src/lib/model/impl/SiteDto.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectDto.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectOnFloorPlanDto.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectKeywordDto.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectTranslationDto.ts","../../../libs/apiservice/src/lib/model/impl/SiteObjectTypeDto.ts","../../../libs/apiservice/src/lib/model/impl/SiteSupportedLanguageDto.ts","../../../libs/apiservice/src/lib/model/impl/StyleDto.ts","../../../libs/apiservice/src/lib/model/impl/TourDto.ts","../../../libs/apiservice/src/lib/model/impl/TourMenuItemDto.ts","../../../libs/apiservice/src/lib/model/impl/TourRelatedSiteObjectDto.ts","../../../libs/apiservice/src/lib/model/impl/TourStatusDto.ts","../../../libs/apiservice/src/lib/model/impl/TourSubTypeDto.ts","../../../libs/apiservice/src/lib/model/impl/TourTranslationDto.ts","../../../libs/apiservice/src/lib/model/impl/TourTypeDto.ts","../../../libs/apiservice/src/lib/model/impl/TourSupportedLanguageDto.ts","../../../libs/apiservice/src/lib/model/impl/UserDto.ts","../../../libs/apiservice/src/lib/model/impl/Legacy_FloorPlanDto.ts","../../../libs/apiservice/src/lib/db/impl/table.ts","../../../libs/apiservice/src/lib/db/private/migration/1.ts","../../../libs/apiservice/src/lib/db/private/migration/2.ts","../../../libs/apiservice/src/lib/db/private/migration/index.ts","../../../libs/apiservice/src/lib/db/impl/db.ts","../../../libs/apiservice/src/lib/db/impl/instantiator.ts","../../../libs/apiservice/src/lib/db/impl/instantiator.bind.ts","../../../libs/apiservice/src/lib/db/private/bind.ts","../../../node_modules/fast-json-patch/module/helpers.mjs","../../../node_modules/fast-json-patch/module/core.mjs","../../../node_modules/fast-json-patch/module/duplex.mjs","../../../node_modules/fast-json-patch/index.mjs","../../../libs/apiservice/src/lib/jobs/private/patch/apply.ts","../../../libs/apiservice/src/lib/jobs/private/patch/storage.ts","../../../libs/apiservice/src/lib/jobs/private/patch/index.ts","../../../libs/apiservice/src/lib/jobs/impl/updateSite/dbupdate.ts","../../../libs/apiservice/src/lib/jobs/impl/updateSite/patchMap.ts","../../../libs/apiservice/src/lib/jobs/impl/updateSite/util.ts","../../../libs/apiservice/src/lib/jobs/impl/updateSite/updateSite.ts","../../../libs/apiservice/src/lib/jobs/impl/updateSite/updateSite.bind.ts","../../../libs/apiservice/src/lib/jobs/impl/download.ts","../../../libs/apiservice/src/lib/jobs/impl/download.bind.ts","../../../libs/apiservice/src/lib/jobs/impl/delete.ts","../../../libs/apiservice/src/lib/jobs/impl/delete.bind.ts","../../../libs/apiservice/src/lib/jobs/impl/index.ts","../../../libs/apiservice/src/lib/jobs/private/bind.ts","../../../libs/apiservice/src/lib/model/private/bind.ts","../../../libs/apiservice/src/lib/session/private/db.ts","../../../libs/apiservice/src/lib/session/impl/session.serialize.ts","../../../libs/apiservice/src/lib/session/impl/session.build.ts","../../../libs/apiservice/src/lib/session/impl/session.cache.ts","../../../libs/apiservice/src/lib/session/impl/session.callback.ts","../../../libs/apiservice/src/lib/session/impl/session.ts","../../../libs/apiservice/src/lib/session/impl/session.bind.ts","../../../libs/apiservice/src/lib/session/private/bind.ts","../../../libs/apiservice/src/lib/util/impl/cache.util.ts","../../../libs/apiservice/src/lib/util/impl/cache.source.ts","../../../libs/apiservice/src/lib/util/impl/cache.ts","../../../libs/apiservice/src/lib/util/impl/cache.bind.ts","../../../libs/apiservice/src/lib/util/private/bind.ts","../../../libs/apiservice/src/lib/bind.ts","../../../libs/apiservice/src/lib/util/asset.ts","../../../libs/apiservice/src/lib/private/util/languages.ts","../../../libs/apiservice/src/lib/private/util/tours.ts","../../../libs/apiservice/src/lib/private/util/promise.ts","../../../libs/apiservice/src/lib/private/util/index.ts","../../../libs/apiservice/src/lib/private/util/array.ts","../../../libs/apiservice/src/lib/api/impl/media.download.ts","../../../libs/apiservice/src/lib/api/impl/media.util.ts","../../../libs/apiservice/src/lib/api/interface/bind.ts","../../../libs/apiservice/src/lib/api/interface/mediaDiff.ts","../../../libs/apiservice/src/lib/controller/interface/userstate.ts","../../../libs/apiservice/src/lib/interface/config.ts","../../../libs/apiservice/src/lib/interface/container.ts","../../../libs/apiservice/src/lib/interface/promise.ts","../../../libs/apiservice/src/lib/interface/util.ts","../../../libs/apiservice/src/lib/private/container.ts","../../../libs/apiservice/src/lib/session/interface/bind.ts","../../../libs/apiservice/src/lib/session/impl/sessionHooks.ts","../../../libs/apiservice/src/lib/util/interface/bind.ts","../../../libs/ui-common/src/lib/icon/IconExclamation.tsx","../../../libs/ui-common/src/lib/icon/IconInfo.tsx","../../../libs/ui-common/src/lib/icon/IconQuestionMark.tsx","../../../libs/ui-common/src/lib/icon/IconTick.tsx","../../../libs/ui-common/src/lib/transition/FadeTransition.tsx","webpack://pwa-csr/../../libs/ui-workspace/src/lib/common/Loading.module.css?0925","../../../libs/ui-workspace/src/lib/common/Loading.tsx","webpack://pwa-csr/../../libs/ui-workspace/src/lib/common/Toast.module.css?1bb7","../../../libs/ui-workspace/src/lib/common/Toast.style.ts","../../../libs/ui-workspace/src/lib/common/Toast.tsx","../../../libs/ui-workspace/src/lib/siteobject/interface.ts","../../../libs/util/src/interface/config.ts","../../../libs/util/src/interface/cache.ts","../../../libs/util/src/interface/env.ts","../../../libs/util/src/interface/fetch.ts","../../../libs/util/src/interface/kvStorage.ts","../../../libs/util/src/interface/translationStorage.ts","../../../libs/util/src/interface/zip.ts","../../../libs/util/src/interface/hook.ts","../../../libs/util/src/interface/log.ts","../../../libs/util/src/interface/mimeType.ts","../../../libs/util/src/interface/promise.ts","../../../libs/util/src/interface/query.ts","../../../libs/util/src/interface/route.ts","../../../libs/util/src/impl/cache.ts","../../../libs/util/src/impl/cachecontroller.ts","../../../libs/util/src/impl/env.ts","../../../libs/util/src/impl/log.if.ts","../../../libs/util/src/impl/log.console.ts","../../../libs/util/src/impl/log.ai.ts","../../../libs/util/src/impl/log.ls.ts","../../../libs/util/src/impl/log.ts","../../../libs/util/src/impl/querystring.ts","../../../node_modules/p-times/node_modules/clean-stack/index.js","../../../node_modules/p-times/node_modules/escape-string-regexp/index.js","../../../node_modules/p-times/node_modules/aggregate-error/index.js","../../../node_modules/p-times/node_modules/indent-string/index.js","../../../node_modules/p-times/node_modules/p-map/index.js","../../../node_modules/p-times/index.js","../../../node_modules/p-progress/index.js","../../../libs/util/src/impl/promise.ts","../../../libs/util/src/impl/mimeType.ts","../../../libs/util/src/private/bind.ts","../../../libs/util/src/impl/container.ts","../../../libs/util/src/impl/arrayBuffer.ts","../../../libs/util/src/impl/ts.ts","../../../libs/util/src/interface/browser.ts","../../../libs/util/src/interface/container.ts","../../../libs/worker/src/lib/util/interface/channel.ts","../../../libs/worker/src/lib/interface/container.ts","../../../libs/worker/src/lib/interface/config.ts","../../../libs/worker/src/lib/interface/fetch.ts","../../../libs/worker/src/lib/interface/log.ts","../../../libs/worker/src/lib/interface/promise.ts","../../../libs/worker/src/lib/interface/worker.ts","../../../libs/worker/src/lib/message/interface/instantiator.ts","../../../libs/worker/src/lib/util/interface/cache.ts","../../../libs/worker/src/lib/util/interface/fetch.ts","../../../libs/worker/src/lib/util/interface/regex.ts","../../../libs/worker/src/lib/util/interface/requestSerializer.ts","../../../libs/worker/src/lib/util/interface/responseSerializer.ts","../../../libs/worker/src/lib/util/interface/settingsStorage.ts","../../../libs/worker/src/lib/util/interface/workboxUtils.ts","../../../libs/worker/src/lib/util/interface/zip.ts","../../../libs/worker/src/lib/client/interface/worker.ts","../../../libs/worker/src/lib/client/impl/dispatch.ts","../../../libs/worker/src/lib/client/impl/host.ts","../../../libs/worker/src/lib/client/impl/registration.ts","../../../libs/worker/src/lib/client/impl/rules.ts","../../../libs/worker/src/lib/client/impl/worker.ts","../../../libs/worker/src/lib/client/impl/controller.ts","../../../libs/worker/src/lib/client/interface/controller.ts","../../../libs/worker/src/lib/client/bind.ts","../../../libs/worker/src/lib/message/interface/cacheFirst.ts","../../../libs/worker/src/lib/message/interface/cacheOAuth.ts","../../../libs/worker/src/lib/message/interface/fetchToCache.ts","../../../libs/worker/src/lib/message/interface/headerAppend.ts","../../../libs/worker/src/lib/message/interface/logDiagnostics.ts","../../../libs/worker/src/lib/message/interface/preCache.ts","../../../libs/worker/src/lib/message/interface/keepAlive.ts","../../../libs/worker/src/lib/message/interface/zipPathRelative.ts","../../../libs/worker/src/lib/message/util/instantiator.ts","../../../libs/worker/src/lib/message/impl/cacheFirst.ts","../../../libs/worker/src/lib/message/impl/headerAppend.ts","../../../libs/worker/src/lib/message/impl/cacheOAuth.ts","../../../libs/worker/src/lib/message/impl/preCache.ts","../../../libs/worker/src/lib/message/impl/zipPathRelative.ts","../../../libs/worker/src/lib/message/impl/keepAlive.ts","../../../libs/worker/src/lib/message/impl/logDiagnostics.ts","../../../libs/worker/src/lib/message/impl/fetchToCache.ts","../../../libs/worker/src/lib/message/bind.ts","../../../libs/worker/src/lib/private/container.ts","../../../libs/worker/src/lib/util/impl/cache.ts","../../../libs/worker/src/lib/util/impl/callback.ts","../../../node_modules/broadcast-channel/dist/esbrowser/util.js","../../../node_modules/broadcast-channel/dist/esbrowser/methods/native.js","../../../node_modules/oblivious-set/src/index.ts","../../../node_modules/broadcast-channel/dist/esbrowser/options.js","../../../node_modules/broadcast-channel/dist/esbrowser/methods/indexed-db.js","../../../node_modules/broadcast-channel/dist/esbrowser/methods/localstorage.js","../../../node_modules/broadcast-channel/dist/esbrowser/methods/simulate.js","../../../node_modules/broadcast-channel/dist/esbrowser/method-chooser.js","../../../node_modules/broadcast-channel/dist/esbrowser/broadcast-channel.js","../../../node_modules/unload/dist/es/browser.js","../../../node_modules/unload/dist/es/index.js","../../../node_modules/broadcast-channel/dist/esbrowser/leader-election.js","../../../libs/worker/src/lib/util/interface/callback.ts","../../../libs/worker/src/lib/util/impl/channel.ts","../../../libs/worker/src/lib/util/impl/fetch.ts","../../../libs/worker/src/lib/util/impl/log.if.ts","../../../libs/worker/src/lib/util/impl/log.console.ts","../../../libs/worker/src/lib/util/impl/log.ts","../../../libs/worker/src/lib/util/impl/regex.ts","../../../libs/worker/src/lib/util/impl/requestJSON.ts","../../../libs/worker/src/lib/util/impl/responseJSON.ts","../../../node_modules/idb/build/wrap-idb-value.js","../../../node_modules/idb/build/index.js","../../../libs/worker/src/lib/util/impl/settingsStorage.ts","../../../node_modules/workbox-core/models/messages/messages.js","../../../node_modules/workbox-core/models/messages/messageGenerator.js","../../../node_modules/workbox-core/_private/WorkboxError.js","../../../node_modules/workbox-routing/utils/constants.js","../../../node_modules/workbox-routing/utils/normalizeHandler.js","../../../node_modules/workbox-routing/Router.js","../../../node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","../../../libs/worker/src/lib/util/impl/workboxUtils.ts","../../../libs/worker/src/lib/util/impl/zip.ts","../../../libs/worker/src/lib/util/bind.ts","../../../libs/worker/src/lib/bind.ts","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/regenerator-runtime/runtime.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/Generated/SeverityLevel.js","../../../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/es5.ts","../../../node_modules/immer/src/immer.ts","../../../node_modules/immer/src/utils/env.ts","../../../node_modules/redux-thunk/es/index.js","../../../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../../../node_modules/@reduxjs/toolkit/src/isPlainObject.ts","../../../node_modules/@reduxjs/toolkit/src/utils.ts","../../../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../../../node_modules/@reduxjs/toolkit/src/configureStore.ts","../../../node_modules/@reduxjs/toolkit/src/createAction.ts","../../../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../../../node_modules/@reduxjs/toolkit/src/createSlice.ts","../../../node_modules/@reduxjs/toolkit/src/createReducer.ts","../../../node_modules/@reduxjs/toolkit/src/nanoid.ts","../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/utils.ts","../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/exceptions.ts","../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../../../node_modules/@reduxjs/toolkit/src/index.ts","../../../node_modules/detect-node/browser.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/object-assign/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/index.js","../../../node_modules/react-fast-compare/index.js","../../../node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/react-is/index.js","../../../node_modules/react-redux/es/components/Context.js","../../../node_modules/react-redux/es/utils/batch.js","../../../node_modules/react-redux/es/utils/Subscription.js","../../../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../../../node_modules/react-redux/es/components/Provider.js","../../../node_modules/react-redux/es/hooks/useReduxContext.js","../../../node_modules/react-redux/es/hooks/useDispatch.js","../../../node_modules/react-redux/es/hooks/useSelector.js","../../../node_modules/react-redux/es/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/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../node_modules/redux/es/redux.js","../../../node_modules/scheduler/cjs/scheduler.production.min.js","../../../node_modules/scheduler/index.js","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/unzipit/dist/unzipit.module.js","../../../node_modules/workbox-core/_version.js","../../../node_modules/workbox-routing/_version.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../../../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","../../../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../../../node_modules/framer-motion/dist/es/context/LazyContext.mjs","../../../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../../../node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../../../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","../../../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../../../node_modules/framer-motion/dist/es/motion/features/use-features.mjs","../../../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../../../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../../../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../../../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../../../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../../../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","../../../node_modules/framer-motion/dist/es/projection/node/id.mjs","../../../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../../../node_modules/framer-motion/dist/es/motion/utils/VisualElementHandler.mjs","../../../node_modules/framer-motion/dist/es/motion/index.mjs","../../../node_modules/framer-motion/dist/es/motion/features/use-projection.mjs","../../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../../../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../../../node_modules/framer-motion/dist/es/render/html/use-props.mjs","../../../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../../../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../../../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../../../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../../../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../../../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../../../node_modules/framer-motion/dist/es/render/dom/motion-minimal.mjs","../../../node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","../../../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","../../../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../../../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../../../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../../../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","../../../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../../../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../../../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../../../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","../../../node_modules/framer-motion/dist/es/render/html/utils/render.mjs","../../../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","../../../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","../../../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","../../../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","../../../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","../../../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","../../../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","../../../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../../../node_modules/framer-motion/dist/es/render/utils/variants.mjs","../../../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../../../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../../../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs","../../../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","../../../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../../../node_modules/framesync/dist/es/on-next-frame.mjs","../../../node_modules/framesync/dist/es/index.mjs","../../../node_modules/framesync/dist/es/create-render-step.mjs","../../../node_modules/style-value-types/dist/es/numbers/index.mjs","../../../node_modules/style-value-types/dist/es/numbers/units.mjs","../../../node_modules/style-value-types/dist/es/utils.mjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../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/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../../../libs/streamlib/src/lib/impl/media.ts","../../../libs/apiservice/src/lib/api/impl/mediaStream.ts","../../../libs/apiservice/src/lib/api/impl/mediaStream.bind.ts","../../../libs/apiservice/src/lib/util/stream.ts","config/log.ts","config/bind.ts","controllers/toast/reducers.ts","controllers/toast/private.ts","controllers/toast/actions.ts","controllers/toast/store.ts","controllers/toast/Message.tsx","controllers/toast/util.ts","controllers/toast/RootView.tsx","controllers/toast/hooks.ts","controllers/toast/main.ts","controllers/toast/binder.ts","controllers/useralert/private.ts","controllers/useralert/util.ts","controllers/useralert/reducers.ts","controllers/useralert/actions.ts","controllers/useralert/store.ts","controllers/useralert/hooks.ts","controllers/useralert/RootView.tsx","controllers/useralert/main.ts","controllers/useralert/binder.ts","controllers/binder.ts","interface/route.ts","routes/util/session.ts","routes/util/config.ts","routes/util/index.ts","routes/launch/arguments.tsx","routes/launch/component.tsx","routes/launch/coordinator.ts","routes/launch/index.tsx","routes/languageselect/arguments.tsx","routes/languageselect/component.tsx","routes/languageselect/util.ts","routes/languageselect/coordinator.ts","routes/languageselect/index.ts","routes/tourselect/arguments.ts","routes/tourselect/component.tsx","routes/tourselect/util.ts","routes/tourselect/coordinator.ts","routes/tourselect/index.ts","routes/tour/arguments.ts","routes/tour/component.tsx","routes/tour/util.ts","routes/tour/coordinator.ts","routes/tour/index.ts","routes/siteobject/arguments.ts","routes/siteobject/component.tsx","routes/siteobject/coordinator.ts","routes/siteobject/index.ts","routes/floorplan/arguments.tsx","routes/floorplan/component.tsx","routes/floorplan/coordinator.ts","routes/floorplan/index.ts","LocationHistory.ts","routes/router.ts","routes/bind.ts","state/middleware/effect.ts","state/middleware/interceptor.ts","state/middleware/logger.ts","state/middleware/builder.ts","state/middleware/binder.ts","state/reducer/register.ts","state/reducer/binder.ts","state/store/store.ts","state/store/binder.ts","state/render/StoreRender.tsx","state/render/binder.ts","state/bind.ts","index.tsx"],"sourcesContent":["import { IConfigAPI } from '../interface/config';\nimport { IEnv } from '../interface/util';\n\nconst DEFAULTS = {\n URL: 'https://api.ats-workspace.com',\n AUTH: {\n CLIENT_ID: 'MobileApplication.Test',\n CLIENT_SECRET: 'secr3t!MobileApplication.Test',\n GRANT_TYPE: 'password',\n USERNAME: 'demo',\n PASSWORD: '@Demo1',\n },\n EXTENSION: {\n AUTH: '/apptoken',\n SITEDATA: '/sites/app.GetMyZipPatchSite',\n MEDIADIFF: '/media/app.CalculateMyMediaDifference',\n MEDIA: '/media(%MEDIAID%)/app.GetFile',\n MEDIA_WITH_ACCESS_TOKEN: '/media(%MEDIAID%)/app.GetFile?access_token=%ACCESS_TOKEN%',\n },\n};\n\nfunction settings(env: IEnv): IConfigAPI {\n const config: IConfigAPI = {\n url: env.getString('REACT_APP_API_URL', DEFAULTS.URL),\n auth: {\n clientId: env.getString('REACT_APP_API_AUTH_CLIENTID', DEFAULTS.AUTH.CLIENT_ID),\n clientSecret: env.getString(\n 'REACT_APP_API_AUTH_CLIENTSECRET',\n DEFAULTS.AUTH.CLIENT_SECRET,\n ),\n grantType: env.getString('REACT_APP_API_AUTH_GRANTTYPE', DEFAULTS.AUTH.GRANT_TYPE),\n username: env.getString('REACT_APP_API_AUTH_USERNAME', DEFAULTS.AUTH.USERNAME),\n password: env.getString('REACT_APP_API_AUTH_PASSWORD', DEFAULTS.AUTH.PASSWORD),\n },\n extension: {\n auth: env.getString('REACT_APP_API_EXTENSION_AUTH', DEFAULTS.EXTENSION.AUTH),\n siteData: env.getString(\n 'REACT_APP_API_EXTENSION_SITEDATA',\n DEFAULTS.EXTENSION.SITEDATA,\n ),\n mediaDiff: env.getString(\n 'REACT_APP_API_EXTENSION_MEDIADIFF',\n DEFAULTS.EXTENSION.MEDIADIFF,\n ),\n media: env.getString('REACT_APP_API_EXTENSION_MEDIA', DEFAULTS.EXTENSION.MEDIA),\n mediaWithAccessToken: env.getString(\n 'REACT_APP_API_EXTENSION_MEDIA_WITH_ACCESS_TOKEN',\n DEFAULTS.EXTENSION.MEDIA_WITH_ACCESS_TOKEN,\n ),\n },\n };\n\n return config;\n}\n\nexport default settings;\n","import { IAssetFetcher, IAssetMap, IImageAsset, IImageAssetMap } from '../interface/asset';\nimport { default as JSON_IMAGE } from './asset.image.json';\n\nconst DATA_IMAGE: IImageAssetMap = JSON_IMAGE;\n\nconst DATA_ALL: IAssetMap = {\n Image: DATA_IMAGE,\n};\n\n/** the maths checks out - Alex */\nfunction _weightings(\n valuesIn: Array,\n targetValue: number,\n weightGenerator: (valIn: T) => number,\n): {\n minValue: number;\n maxValue: number;\n weightings: Array;\n weightingsNormalized: Array;\n} {\n const weightingsAll = valuesIn.map(val => weightGenerator(val));\n const weightingsMin = Math.min(...weightingsAll);\n const weightingsMax = Math.max(...weightingsAll);\n const weightingsDelta = weightingsMax - weightingsMin;\n /* Take all of the weight values and place it within the range of possible values, \n such that weightingsNormalized contains values between 0->1 only, where 0=targetValue & 1=further value away received */\n const weightingsNormalized = weightingsAll.map(\n weight => Math.abs(weight - targetValue) / weightingsDelta,\n );\n\n return {\n minValue: weightingsMin,\n maxValue: weightingsMax,\n weightings: weightingsAll,\n weightingsNormalized: weightingsNormalized,\n };\n}\n\nfunction _closestImage(\n target: { width: number; height: number },\n allImages: Array,\n): IImageAsset {\n /* for each image generate a weighting value, where 0=same as target & 1=furthest value away */\n const weightingsAR = _weightings(\n allImages,\n target.width / target.height,\n image => image.width / image.height,\n );\n const weightingsWidth = _weightings(allImages, target.width, image => image.width);\n const weightingsHeight = _weightings(allImages, target.height, image => image.height);\n\n const weightedImages = allImages.map((image, idx) => ({\n ...image,\n weight:\n /* take the weightings generated above & generate an overall weight value, \n where the aspect-ratio takes priority over image size */\n weightingsAR.weightingsNormalized[idx] * 0.5 +\n weightingsWidth.weightingsNormalized[idx] * 0.25 +\n weightingsHeight.weightingsNormalized[idx] * 0.25,\n }));\n\n /* sort by smallest weight first */\n weightedImages.sort((prev, next) => prev.weight - next.weight);\n\n /* & pick it out, this image is the closest to #target above */\n const asset = weightedImages.shift() ?? allImages[0];\n\n return asset;\n}\n\nfunction _imageAsset(\n group: K,\n name: V,\n): IImageAssetMap[K][V] {\n return DATA_IMAGE[group][name];\n}\n\nfunction _imageAssetGroup(group: K): Array {\n return Object.values(DATA_IMAGE[group]);\n}\n\nfunction _imageAssetGroupClosestMatch(\n group: K,\n targetWidth: number,\n targetHeight: number,\n): IImageAsset {\n const allValues = Object.values(DATA_IMAGE[group]);\n const image = _closestImage({ width: targetWidth, height: targetHeight }, allValues);\n return image;\n}\n\nfunction AssetFetcher(): IAssetFetcher {\n return {\n imageAsset: _imageAsset,\n imageAssetGroup: _imageAssetGroup,\n imageAssetGroupClosestMatch: _imageAssetGroupClosestMatch,\n };\n}\n\nexport default AssetFetcher;\n","import { IConfigCache, IConfigCacheName } from '../interface/config';\n\nconst settings: IConfigCache = {\n [IConfigCacheName.PublicAssets]: {\n cacheName: 'app-public-cache',\n expiration: 21 * 24 * 60 * 60,\n maxEntries: 200,\n matcher: /public\\/*/,\n },\n [IConfigCacheName.BuildAssets]: {\n cacheName: 'app-build-cache',\n expiration: 21 * 24 * 60 * 60,\n maxEntries: 200,\n matcher: /static\\/*/,\n },\n [IConfigCacheName.WorkspaceMedia]: {\n cacheName: 'app-media-cache',\n expiration: 21 * 24 * 60 * 60,\n maxEntries: 1000,\n /* match all minus media.json */\n matcher: /app.GetFile/,\n fetchOptions: {\n /* When the browser loads the associated asset,\n we need to intercept in the service-worker & resolve. \n By default all requests from the browser have no cors.\n Changes below allow non-opaque responses to be saved to cache */\n mode: 'cors',\n },\n },\n [IConfigCacheName.WorkspaceStream]: {\n cacheName: 'app-stream-cache',\n expiration: 21 * 24 * 60 * 60,\n maxEntries: 1000,\n /* match all minus media.json */\n matcher: new RegExp('atsweb.app/media/[0-9]*/(?!media.json.*)', 'g'),\n fetchOptions: {\n /* When the browser loads the associated asset,\n we need to intercept in the service-worker & resolve. \n By default all requests from the browser have no cors.\n Changes below allow non-opaque responses to be saved to cache */\n mode: 'cors',\n headers: { 'X-Force-Cors': 'true' },\n credentials: 'omit',\n },\n ignoreSearch: true,\n },\n [IConfigCacheName.AppToken]: {\n tokenPath: '/apptoken',\n },\n};\n\nexport default settings;\n","import type { IConfigManifest, IConfigRoute } from '../interface/config';\nimport type { IFetcher } from '../interface/util';\n\nfunction load(fetcher: IFetcher, routing: IConfigRoute): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const pathFetch = `${routing.basename}/manifest.json`.replace(\n /\\/+/g,\n '/',\n ); /* get the base url from config, append /manifest.json & remove double slashes '//' */\n const manifest = await fetcher({\n url: pathFetch,\n method: 'GET',\n expectedResponseType: 'json',\n });\n\n if (!manifest.payload) {\n reject('Missing payload in response: ' + JSON.stringify(manifest));\n } else {\n resolve(manifest.payload);\n }\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default load;\n","import { IConfigRoutePath, IConfigRoute } from '../interface/config';\nimport { IEnv } from '../interface/util';\n\nfunction route(env: IEnv): IConfigRoute {\n /* Pull the basename from env, if empty use '' */\n const basenameIn = env.getString('REACT_APP_ROUTE_BASENAME') ?? '';\n /* & make sure it starts/ends with '/', removing any '//' along the way, So if unset we'll get '/', if we get 'develop/ork' the output will be '/develop/ork/' */\n const basename = `/${basenameIn}/`.replace(/\\/+/g, '/');\n\n const config: IConfigRoute = {\n basename,\n routes: {\n [IConfigRoutePath.Launch]: {\n pathPrefix: '/',\n pathMatch: ['/', '/launch*'],\n },\n [IConfigRoutePath.LanguageSelect]: {\n pathPrefix: '/languageselect',\n pathMatch: ['/languageselect', '/ls'],\n },\n [IConfigRoutePath.TourSelect]: {\n pathPrefix: '/tourselect',\n pathMatch: ['/tourselect*', '/ts*'],\n },\n [IConfigRoutePath.Tour]: {\n pathPrefix: '/tour',\n pathMatch: ['/tour*'],\n },\n [IConfigRoutePath.SiteObject]: {\n pathPrefix: '/siteobject',\n pathMatch: ['/siteobject*', '/so*'],\n },\n [IConfigRoutePath.FloorPlan]: {\n pathPrefix: '/floorplan',\n pathMatch: ['/floorplan*', '/fp*'],\n },\n },\n };\n\n return config;\n}\n\nexport default route;\n","import { IFloorplanViewModel } from '@monofe/ui-workspace/floorplan/interface';\n\nfunction data(): IFloorplanViewModel {\n return {\n backgroundColor: 'transparent',\n title: {\n text: '',\n fontFamily: 'Gill Sans',\n fontSize: '10vmin',\n fontAlignment: 'center',\n fontWeight: 500,\n color: 'transparent',\n visible: false,\n },\n\n zoomControlsBackgroundColor: 'transparent',\n zoomControlsTintColor: 'transparent',\n\n items: [],\n\n backButton: {\n backgroundColor: 'transparent',\n strokeColor: 'transparent',\n strokeSize: 0,\n arrowColor: 'transparent',\n },\n\n onBack: () => {\n /* noop */\n },\n };\n}\n\nexport default data;\n","import React, {\n Fragment,\n Suspense,\n useEffect,\n useState,\n useCallback,\n lazy,\n memo,\n Dispatch,\n SetStateAction,\n} from 'react';\nimport { IFloorplanViewModel } from '@monofe/ui-workspace/floorplan/interface';\nimport { IFloorplanControllerProps } from './interface';\nimport modelPlaceholderData from './placeholderData';\nimport LoadingView from '@monofe/ui-workspace/common/Loading';\nimport type IMapping from './mapping';\nimport { injectLog } from '../../interface/util';\nimport { getProjectOverrides } from '../../interface/overrides';\nimport { AnimatePresence } from 'framer-motion';\n\nconst MainView = lazy(() => import('@monofe/ui-workspace/floorplan'));\nconst loadMapper = (): Promise => {\n return new Promise(function (resolve, reject) {\n import('./mapping')\n .then(controller => resolve(controller.default))\n .catch(error => reject(error));\n });\n};\ninterface IFloorplanController {\n model: IFloorplanViewModel;\n isLoading: boolean;\n}\n\nconst controllerPlaceholderData = (): IFloorplanController => ({\n model: {\n ...modelPlaceholderData(),\n },\n isLoading: true,\n});\n\n/* Same as useState, except 3 return-value allow for partial state updates */\nfunction ReactUseStateWithUpdate(\n initialState: S | (() => S),\n): [S, Dispatch>, Dispatch>] {\n const [getVal, setVal] = useState(initialState);\n const updateVal = useCallback(\n (partial: Partial) => setVal(sPrev => ({ ...sPrev, ...partial })),\n [],\n );\n return [getVal, setVal, updateVal];\n}\n\nfunction Render(props: IFloorplanControllerProps): JSX.Element {\n const log = injectLog();\n\n const [state, _, updateState] = ReactUseStateWithUpdate(\n controllerPlaceholderData(),\n );\n\n const onBack = props.onRequestBack;\n const onSiteObject = useCallback(\n (siteObjectId: number) => props.onRequestSiteObject(siteObjectId),\n [props.onRequestSiteObject],\n );\n\n useEffect(() => {\n loadMapper()\n .then(mapper => mapper(props.route, onSiteObject, onBack))\n .then(model =>\n updateState({\n model: getProjectOverrides('IFloorplanViewModel', model),\n isLoading: false,\n }),\n )\n .then(_ => log.info('Loaded Floorplan'))\n .catch(error => log.error(`Failed to load Floorplan ${error}`));\n }, [onBack, onSiteObject, props.route]);\n\n useEffect(() => {\n document.title = state.model.title.text;\n }, [state.model.title.text]);\n\n return (\n \n {state.isLoading ? (\n \n ) : (\n \n \n \n )}\n \n );\n}\n\nconst propsEqual = (prev: IFloorplanControllerProps, next: IFloorplanControllerProps) => {\n return JSON.stringify(prev.route) === JSON.stringify(next.route);\n};\n\nexport default memo(Render, propsEqual) as typeof Render;\n","import Renderer from './render';\nimport { IRouteFloorplanArguments, IFloorplanControllerProps } from './interface';\nimport { DataCheckResult, IBaseController } from '../interface';\n\nconst module: IBaseController = {\n renderer: Renderer,\n canRender: () => Promise.resolve({ hasEnoughDataToRender: true }),\n canLoad: () => Promise.resolve(DataCheckResult.DataAvailableOffline),\n};\n\nexport default module;\n","export interface IBaseControllerProps {}\n\nexport interface IBaseRouteArguments {}\n\nexport interface IBaseControllerRenderResult {\n hasEnoughDataToRender: boolean;\n suggestedAlternativeRoute?:\n | 'Launch'\n | 'LanguageSelect'\n | 'TourSelect'\n | 'Tour'\n | 'SiteObject'\n | 'FloorPlan';\n additionalRouteDataNeeded?: T;\n}\n\nexport enum DataCheckResult {\n Undef = 0,\n DataAvailableOffline = 1,\n DataNetworkConnectionNeeded = 2,\n LastValue = 3,\n}\n\nexport interface IBaseController {\n renderer: (args: T) => JSX.Element;\n canRender: (route: R) => Promise>;\n canLoad: (route: R) => Promise;\n}\n","import { ILanguageSelectViewModel } from './interface';\n\nfunction placeholderData(): ILanguageSelectViewModel {\n return {\n title: {\n text: '',\n fontFamily: 'Gill Sans',\n fontSize: '10vmin',\n fontAlignment: 'center',\n fontWeight: 500,\n visible: true,\n color: '#000000',\n },\n backgroundColor: '#ffffff',\n backgroundImage: {\n url: '',\n mode: 'contain',\n },\n\n items: [],\n };\n}\n\nexport default placeholderData;\n","import type { ILanguageDto } from '@monofe/apiservice/model';\nimport LoadingView from '@monofe/ui-workspace/common/Loading';\nimport modelPlaceholderData from '@monofe/ui-workspace/languageselect/placeholderData';\nimport React, {\n Dispatch,\n lazy,\n memo,\n SetStateAction,\n Suspense,\n useCallback,\n useEffect,\n useState,\n} from 'react';\nimport { getProjectOverrides } from '../../interface/overrides';\nimport { injectLog } from '../../interface/util';\nimport {\n ILanguageSelectControllerModel,\n ILanguageSelectControllerProps,\n ILanguageSelectType,\n} from './interface';\nimport type IMapping from './mapping';\nconst isEqual = require('react-fast-compare');\nconst MainView = lazy(() => import('@monofe/ui-workspace/languageselect'));\nconst loadMapper = (): Promise => {\n return new Promise(function (resolve, reject) {\n import('./mapping')\n .then(controller => resolve(controller.default))\n .catch(error => reject(error));\n });\n};\n\ninterface ILanguageSelectController {\n model: ILanguageSelectControllerModel;\n type: ILanguageSelectType;\n titleCyclerTimeout: ReturnType | null;\n isLoading: boolean;\n}\n\nconst controllerPlaceholderData = (): ILanguageSelectController => ({\n model: {\n ...modelPlaceholderData(),\n cycler: null,\n activeTitle: () => '',\n nextTitle: () => '',\n delayBetweenChangingTitle: -1,\n },\n type: ILanguageSelectType.List,\n titleCyclerTimeout: null,\n isLoading: true,\n});\n\n/* Same as useState, except 3 return-value allow for partial state updates */\nfunction ReactUseStateWithUpdate(\n initialState: S | (() => S),\n): [S, Dispatch>, Dispatch>] {\n const [getVal, setVal] = useState(initialState);\n const updateVal = useCallback(\n (partial: Partial) => setVal(sPrev => ({ ...sPrev, ...partial })),\n [],\n );\n return [getVal, setVal, updateVal];\n}\n\nfunction View(props: ILanguageSelectControllerProps): JSX.Element {\n const log = injectLog();\n\n const [state, setState, updateState] = ReactUseStateWithUpdate(\n controllerPlaceholderData(),\n );\n\n const onLanguageSelect = useCallback(\n (language: ILanguageDto) => props.didRequestTourSelect(language.id),\n [props.didRequestTourSelect],\n );\n\n const setupUpdates = (delayBetweenChangingTitle: number = -1) => {\n if (state.titleCyclerTimeout) {\n clearInterval(state.titleCyclerTimeout);\n }\n\n if (delayBetweenChangingTitle > 0) {\n //@ts-ignore\n const titleCyclerTimeout: ReturnType = setInterval(_ => {\n log.verbose('Updating LS title, old:' + state.model.title.text);\n setState(stateIn => {\n const stateOut: ILanguageSelectController = { ...stateIn };\n stateOut.model = { ...stateIn.model };\n stateOut.model.title = { ...stateIn.model.title };\n stateOut.model.title.text =\n stateIn.model.nextTitle() || stateIn.model.title.text;\n return stateOut;\n });\n }, delayBetweenChangingTitle);\n\n updateState({ titleCyclerTimeout });\n }\n };\n\n const clearUpdates = () => {\n log.verbose('Clearing up resources');\n if (state.titleCyclerTimeout) {\n clearInterval(state.titleCyclerTimeout);\n }\n updateState({ titleCyclerTimeout: null });\n };\n\n useEffect(() => {\n clearUpdates();\n loadMapper()\n .then(function (mapper) {\n return mapper(props.route, onLanguageSelect);\n })\n .then(function ([model, type]) {\n updateState({\n model: getProjectOverrides(\n 'ILanguageSelectViewModel',\n model,\n ),\n type,\n isLoading: false,\n });\n setupUpdates(model.delayBetweenChangingTitle);\n })\n .then(_ => log.info('Loaded LanguageSelect'))\n .catch(error => log.error(`Failed to load LanguageSelect ${error}`));\n\n return () => {\n clearUpdates();\n };\n }, [props.route]);\n\n useEffect(() => {\n document.title = state.model.title.text;\n }, [state.model.title.text]);\n\n return (\n <>\n {state.isLoading ? (\n \n ) : (\n \n \n \n )}\n \n );\n}\n\nfunction propsEqual(\n prev: ILanguageSelectControllerProps,\n next: ILanguageSelectControllerProps,\n): boolean {\n const match = isEqual(prev, next);\n return match;\n}\n\nexport default memo(View, propsEqual) as typeof View;\n","import { injectAPISession } from '@monofe/apiservice';\nimport { ILanguageSelectControllerRenderResult, IRouteLanguageSelectArguments } from './interface';\n\nfunction CanRender(\n route: IRouteLanguageSelectArguments,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const workspace = await injectAPISession().open(route.sessionName);\n\n const db = await workspace.db.open();\n\n const languages = await db.all('ILanguageDto');\n\n const hasMultipleLanguages = languages.length > 1;\n\n let result: ILanguageSelectControllerRenderResult = {\n hasEnoughDataToRender: hasMultipleLanguages,\n };\n\n if (languages.length <= 0) {\n throw Error('No languages found, unable to launch language-select, or tour-select');\n }\n\n if (!result.hasEnoughDataToRender) {\n result = {\n ...result,\n suggestedAlternativeRoute: 'TourSelect',\n additionalRouteDataNeeded: {\n languageId: languages[0].id,\n },\n };\n }\n\n db.close();\n\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default CanRender;\n","import Renderer from './render';\nimport CanRender from './canRender';\nimport { IRouteLanguageSelectArguments, ILanguageSelectControllerProps } from './interface';\nimport { DataCheckResult, IBaseController } from '../interface';\n\nconst module: IBaseController = {\n renderer: Renderer,\n canRender: CanRender,\n canLoad: () => Promise.resolve(DataCheckResult.DataAvailableOffline),\n};\n\nexport default module;\n","import {\n ILanguageSelectItemViewModel,\n ILanguageSelectViewModel,\n} from '@monofe/ui-workspace/languageselect/interface';\nimport { IBaseControllerRenderResult } from '../interface';\n\nexport interface IRouteLanguageSelectArguments {\n db: string;\n sessionName: string;\n}\n\nexport interface ILanguageSelectControllerProps {\n didRequestTourSelect: (languageId: number) => void;\n didRequestBack: () => void;\n route: IRouteLanguageSelectArguments;\n}\n\nexport interface ILanguageSelectControllerRenderResult\n extends IBaseControllerRenderResult<{ languageId: number }> {}\n\nexport interface ILanguageSelectController {}\n\nexport interface ILanguageSelectItemControllerModel extends ILanguageSelectItemViewModel {}\n\nexport interface ILanguageSelectControllerModel extends ILanguageSelectViewModel {\n cycler: any;\n activeTitle: () => string;\n nextTitle: () => string;\n delayBetweenChangingTitle: number;\n}\n\nexport enum ILanguageSelectType {\n Undef = 0,\n List = 1,\n GridFlag = 2,\n GridTile = 3,\n LastValue = 4,\n}\n","import { ILaunchViewModel } from '@monofe/ui-workspace/launch/interface';\n\nfunction DefaultProps(onDownloadClick?: () => void, onSkipClick?: () => void): ILaunchViewModel {\n return {\n status: {\n text: 'Loading',\n fontFamily: 'Gill Sans',\n fontSize: '10vmin',\n fontAlignment: 'center',\n fontWeight: 300,\n color: '#000',\n visible: false,\n },\n detail: {\n text: '',\n fontFamily: 'Gill Sans',\n fontSize: '3vmin',\n fontAlignment: 'center',\n fontWeight: 300,\n color: '#000',\n visible: false,\n },\n backgroundColor: '#000',\n backgroundImage: {\n url: '',\n mode: 'cover',\n },\n centerImage: {\n url: '',\n mode: 'contain',\n },\n downloadButton: {\n text: {\n text: 'Download',\n fontFamily: 'Gill Sans',\n fontSize: '8vmin',\n fontAlignment: 'center',\n fontWeight: 300,\n color: '#fff',\n visible: true,\n },\n visible: false,\n backgroundColor: '#222',\n onClick: onDownloadClick ?? (() => {}),\n },\n skipButton: {\n text: {\n text: 'Skip',\n fontFamily: 'Gill Sans',\n fontSize: '8vmin',\n fontAlignment: 'center',\n fontWeight: 300,\n color: '#fff',\n visible: true,\n },\n visible: false,\n backgroundColor: '#222',\n onClick: onSkipClick ?? (() => {}),\n },\n progressBar: {\n progress: 0,\n backgroundColor: '#B7B7B7',\n barColor: '#3BB1DC',\n textColor: '#FFFFFF',\n visible: false,\n },\n };\n}\n\nexport default DefaultProps;\n","import { injectAPISession, injectJobs, ISession } from '@monofe/apiservice';\nimport { injectConfigAPI } from '@monofe/apiservice/interface';\nimport { IServiceWorkerStatus } from '@monofe/worker';\nimport { IConfigAPI } from 'apps/pwa-csr/src/interface/config';\nimport { injectLog } from '../../../interface/util';\nimport { IRouteLaunchArguments } from '../interface';\n\nexport enum ILaunchState {\n Initializing = 0,\n UpdatingSite = 1,\n AwaitingUserDownloadSkipConfirmation = 2,\n DownloadingMedia = 3,\n Completed = 4,\n Halted = 5,\n}\n\nexport enum ILaunchEvent {\n None = 0,\n Start = 1,\n FetchingSiteData = 2,\n FetchingUserSettings = 3,\n CheckForServiceWorker = 4,\n AwaitingUserSelectionMediaDownload = 5,\n UserRequestedDownloadingMedia = 6,\n UserRequestedSkipMedia = 7,\n DownloadingMedia = 8,\n Completed = 9,\n Halt = 10,\n}\n\nexport interface IStateProcessorLaunchState {\n session?: ISession;\n swState?: IServiceWorkerStatus;\n updateSiteProgress?: number;\n downloadMediaProgress?: number;\n route: IRouteLaunchArguments;\n activeEvent: ILaunchEvent;\n}\n\nfunction _loginCredentials(configs: Array>): Array<{\n apiUrl: string;\n apiUsername: string;\n apiPassword: string;\n}> {\n const config = configs\n .filter(config => config.url && config.auth?.username && config.auth?.password)\n .map(config => ({\n apiUrl: config.url || 'unknown',\n apiUsername: config.auth?.username || 'unknown',\n apiPassword: config.auth?.password || 'unknown',\n }));\n\n return config;\n}\n\nfunction _start(processor: IStateProcessorPrv): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const sessionName = processor.state().route.sessionName;\n const configAPI = injectConfigAPI();\n const sessionController = injectAPISession();\n const credentials = _loginCredentials(configAPI);\n if (credentials.length === 0) {\n console.error(`Failed to find any login credentials: ${JSON.stringify(configAPI)}`);\n }\n const session =\n processor.state().session ??\n (await sessionController.open(sessionName, credentials[0]).catch(() => undefined));\n\n if (!session) {\n throw new Error('Missing session!');\n }\n\n sessionController.setActive(session);\n\n session.save();\n\n processor.setState({\n ...processor.state(),\n session,\n });\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport function _updateSite(processor: IStateProcessorPrv): Promise {\n const log = injectLog();\n\n const canUpdate = navigator.onLine;\n\n if (!canUpdate) {\n return Promise.resolve();\n }\n\n const hasContentInDb = async () => {\n try {\n const sites = await processor.state().session?.db?.all('ISiteDto');\n return (sites?.length ?? 0) > 0;\n } catch (error) {\n return false;\n }\n };\n\n return new Promise(async function (resolve, reject) {\n try {\n const session = processor.state().session;\n\n if (!session) {\n throw new Error('Missing session!');\n }\n\n const promise = injectJobs().updateSite(session.name, session.db, session.auth);\n\n if (!promise) {\n throw Error('No session update promise');\n }\n\n promise?.onProgress(progress => {\n processor.setState({\n ...processor.state(),\n updateSiteProgress: progress,\n });\n });\n\n promise.then(_ => resolve()).catch(err => reject(err));\n } catch (error) {\n if (await hasContentInDb()) {\n log.warn(`Unable to update: ${error}, allowing skip`);\n resolve();\n } else {\n reject(error);\n }\n }\n });\n}\n\nfunction ProcessEvent(processor: IStateProcessorPrv, event: ILaunchEvent) {\n const log = injectLog();\n\n if (processor.status() === ILaunchState.Halted) {\n return;\n }\n\n log.info('Processing launch-state event ' + event);\n\n switch (event) {\n case ILaunchEvent.Start:\n _start(processor)\n .then(_ => {\n processor.setStatus(ILaunchState.UpdatingSite);\n processor.process(ILaunchEvent.FetchingSiteData);\n })\n .catch(err => {\n processor.setError(`Failed to start: ${err}`);\n processor.setStatus(ILaunchState.Halted);\n });\n break;\n\n case ILaunchEvent.FetchingSiteData:\n _updateSite(processor)\n .then(async _ => {\n processor.process(ILaunchEvent.Completed);\n })\n .catch(err => {\n processor.setError(`Failed to fetch site data: ${err}`);\n processor.setStatus(ILaunchState.Halted);\n });\n break;\n\n case ILaunchEvent.Completed:\n processor.setStatus(ILaunchState.Completed);\n break;\n\n case ILaunchEvent.Halt:\n processor.setStatus(ILaunchState.Halted);\n break;\n\n default:\n case ILaunchEvent.None:\n throw Error(`Unsupported event: ${event}`);\n }\n}\n\ntype IStateProcessorCallback = (model: T) => void;\n\nexport interface IStateProcessor {\n status: () => S;\n setStatus: (status: S) => void;\n setError: (error: string) => void;\n error: () => string;\n onStatusChange: (callback: IStateProcessorCallback) => void;\n process: (event: E) => void;\n isRunning: () => void;\n state: () => U;\n setState: (state: U) => void;\n onStateChange: (callback: IStateProcessorCallback) => void;\n}\n\ninterface IStateProcessorPrv\n extends IStateProcessor {\n _status: ILaunchState;\n _error: string;\n _callbackStatus?: (state: ILaunchState) => void;\n _state: IStateProcessorLaunchState;\n _callbackState?: (model: IStateProcessorLaunchState) => void;\n}\n\nfunction StateProcessor(\n route: IRouteLaunchArguments,\n): IStateProcessor {\n const manager: IStateProcessorPrv = {\n _status: ILaunchState.Initializing,\n _error: '',\n status: function (this: IStateProcessorPrv) {\n return this._status;\n },\n setStatus: function (this: IStateProcessorPrv, status: ILaunchState) {\n this._status = status;\n this._callbackStatus?.(status);\n },\n error: function (this: IStateProcessorPrv) {\n return this._error;\n },\n setError: function (this: IStateProcessorPrv, error: string) {\n this._error = error;\n },\n onStatusChange: function (\n this: IStateProcessorPrv,\n callback: IStateProcessorCallback,\n ) {\n this._callbackStatus = callback;\n },\n process: function (this: IStateProcessorPrv, event: ILaunchEvent) {\n this.setState({\n ...this.state(),\n activeEvent: event,\n });\n ProcessEvent(this, event);\n },\n isRunning: function (this: IStateProcessorPrv) {\n return this._status !== ILaunchState.Completed;\n },\n _state: { route, activeEvent: ILaunchEvent.None },\n state: function (this: IStateProcessorPrv) {\n return this._state;\n },\n setState: function (this: IStateProcessorPrv, state: IStateProcessorLaunchState) {\n this._state = state;\n this._callbackState?.(state);\n },\n onStateChange: function (\n this: IStateProcessorPrv,\n callback: IStateProcessorCallback,\n ) {\n this._callbackState = callback;\n },\n };\n\n return manager as IStateProcessor;\n}\n\nexport default StateProcessor;\n","import { ILaunchViewModel } from '@monofe/ui-workspace/launch/interface';\nimport { IAssetFetcher } from '../../interface/asset';\nimport { IConfigManifest } from '../../interface/config';\nimport defaultProps from './defaultProps';\nimport {\n ILaunchEvent,\n ILaunchState,\n IStateProcessor,\n IStateProcessorLaunchState,\n} from './state/events';\n\nfunction mapping(\n downloadClick: () => void,\n skipClick: () => void,\n manifest: IConfigManifest,\n assets: IAssetFetcher,\n processor: IStateProcessor,\n): ILaunchViewModel {\n let model: ILaunchViewModel = defaultProps();\n\n model.downloadButton.onClick = downloadClick;\n model.skipButton.onClick = skipClick;\n\n model.status = {\n text: '',\n fontFamily: 'Gill Sans',\n fontSize: '8vmin',\n fontAlignment: 'center',\n fontWeight: 300,\n color: '#000',\n visible: true,\n };\n\n model.detail = {\n text: '',\n fontFamily: 'Gill Sans',\n fontSize: '3vmin',\n fontAlignment: 'center',\n fontWeight: 300,\n color: '#000',\n visible: false,\n };\n\n switch (processor.status()) {\n default:\n case ILaunchState.Initializing:\n model.progressBar.visible = false;\n model.status.text = '...Loading';\n break;\n\n case ILaunchState.UpdatingSite:\n model.progressBar.visible = true;\n model.progressBar.progress = processor.state().updateSiteProgress ?? 0;\n model.status.text = '...Updating';\n break;\n\n case ILaunchState.AwaitingUserDownloadSkipConfirmation:\n model.progressBar.visible = false;\n model.progressBar.progress = processor.state().updateSiteProgress ?? 0;\n model.status.text = 'Download all content now?';\n break;\n\n case ILaunchState.DownloadingMedia:\n model.progressBar.visible = true;\n model.progressBar.progress = processor.state().downloadMediaProgress ?? 0;\n model.status.text = '...Downloading';\n break;\n\n case ILaunchState.Halted:\n model.progressBar.visible = false;\n model.status.text = '...Please refresh page';\n model.detail.text = processor.error() ?? '';\n model.detail.visible = true;\n break;\n }\n\n const showingUserDialog =\n processor.status() === ILaunchState.AwaitingUserDownloadSkipConfirmation;\n\n model.downloadButton.visible = showingUserDialog;\n model.skipButton.visible = showingUserDialog;\n\n model.backgroundColor = manifest.background_color;\n model.status.color = manifest.theme_color;\n\n const image = assets.imageAssetGroupClosestMatch(\n 'Splash',\n window.innerWidth * window.devicePixelRatio,\n window.innerHeight * window.devicePixelRatio,\n );\n\n model.backgroundImage.url = image.path;\n\n model.status.visible = processor.state().activeEvent > ILaunchEvent.Start;\n\n return model;\n}\n\nexport default mapping;\n","import React, { Suspense, useEffect, useState, lazy, memo } from 'react';\nimport { ILaunchViewModel } from '@monofe/ui-workspace/launch/interface';\nimport { ILaunchControllerProps, IRouteLaunchArguments } from './interface';\nimport { injectConfigManifest } from '../../interface/config';\nimport mapping from './mapping';\nimport StateProcessor, {\n ILaunchState,\n IStateProcessorLaunchState,\n IStateProcessor,\n ILaunchEvent,\n} from './state/events';\nimport { injectAssetFetcher } from '../../interface/asset';\n\nconst MainView = lazy(() => import('@monofe/ui-workspace/launch'));\n\ntype IProcessor = IStateProcessor;\n\nfunction Render(props: ILaunchControllerProps): JSX.Element {\n const manifest = injectConfigManifest();\n const assets = injectAssetFetcher();\n\n const [processor, _] = useState(StateProcessor(props.route));\n\n const onDownloadClick = () => processor.process(ILaunchEvent.UserRequestedDownloadingMedia);\n const onSkipClick = () => processor.process(ILaunchEvent.UserRequestedSkipMedia);\n\n const [state, setState] = useState(\n mapping(onDownloadClick, onSkipClick, manifest, assets, processor),\n );\n\n const updateState = () =>\n setState(mapping(onDownloadClick, onSkipClick, manifest, assets, processor));\n\n processor.onStateChange(updateState);\n processor.onStatusChange(newStatus => {\n updateState();\n if (newStatus !== ILaunchState.Completed) {\n return;\n }\n props.didRequestLanguageSelect();\n });\n\n useEffect(() => {\n processor.process(ILaunchEvent.Start);\n return () => {\n processor.process(ILaunchEvent.Halt);\n };\n }, [props.route]);\n\n return (\n \n \n \n );\n}\n\nconst routesEqual = (prev: IRouteLaunchArguments, next: IRouteLaunchArguments) => {\n if (prev.db !== next.db) {\n return false;\n }\n if (prev.sessionName !== next.sessionName) {\n return false;\n }\n return true;\n};\n\nconst propsEqual = (prev: ILaunchControllerProps, next: ILaunchControllerProps) => {\n return routesEqual(prev.route, next.route);\n};\n\nexport default memo(Render, propsEqual) as typeof Render;\n","import Renderer from './render';\nimport { IRouteLaunchArguments, ILaunchControllerProps } from './interface';\nimport { DataCheckResult, IBaseController } from '../interface';\n\nconst module: IBaseController = {\n renderer: Renderer,\n canRender: () => Promise.resolve({ hasEnoughDataToRender: true }),\n canLoad: () => Promise.resolve(DataCheckResult.DataAvailableOffline),\n};\n\nexport default module;\n","import { ISiteObjectViewModel } from './interface';\n\nfunction placeholderData(): ISiteObjectViewModel {\n return {\n title: {\n text: '',\n fontFamily: 'Gill Sans',\n fontSize: '10vmin',\n fontAlignment: 'center',\n fontWeight: 500,\n color: '#000000',\n visible: true,\n },\n backgroundColor: '#ffffff',\n backgroundImage: {\n url: '',\n mode: 'contain',\n },\n backButton: {\n backgroundColor: '#fff',\n strokeColor: '#000',\n strokeSize: '0.6vmin',\n arrowColor: '#000',\n visible: false,\n },\n };\n}\n\nexport default placeholderData;\n","import React, { Fragment, Suspense, useEffect, useState, lazy, memo } from 'react';\nimport { ISiteObjectViewModel, ISiteObjectType } from '@monofe/ui-workspace/siteobject/interface';\nimport placeholderData from '@monofe/ui-workspace/siteobject/placeholderData';\nimport { IRouteSiteObjectArguments, ISiteObjectControllerProps } from './interface';\nimport LoadingView from '@monofe/ui-workspace/common/Loading';\nimport type IMapping from './mapping';\nimport { injectLog } from '../../interface/util';\nimport { getProjectOverrides } from '../../interface/overrides';\n\nconst MainView = lazy(() => import('@monofe/ui-workspace/siteobject'));\nconst loadMapper = (): Promise => {\n return new Promise(function (resolve, reject) {\n import('./mapping')\n .then(controller => resolve(controller.default))\n .catch(error => reject(error));\n });\n};\n\nconst RouteEqual = (\n route1: Partial,\n route2: Partial,\n): boolean => {\n if (route1.db !== route2.db) {\n return false;\n }\n if (route1.sessionName !== route2.sessionName) {\n return false;\n }\n if (route1.languageId !== route2.languageId) {\n return false;\n }\n if (route1.siteObjectId !== route2.siteObjectId) {\n return false;\n }\n if (route1.tourId !== route2.tourId) {\n return false;\n }\n return true;\n};\n\ninterface ISiteObjectController {\n model: ISiteObjectViewModel;\n type: ISiteObjectType;\n isLoading: boolean;\n}\n\nfunction View(props: ISiteObjectControllerProps): JSX.Element {\n const log = injectLog();\n\n const [state, setState] = useState({\n model: placeholderData(),\n type: ISiteObjectType.Image,\n isLoading: true,\n });\n\n useEffect(() => {\n loadMapper()\n .then(function (mapper) {\n return mapper(props.route, props.didRequestBack);\n })\n .then(function ([model, type]) {\n return setState(stateIn => ({\n ...stateIn,\n props,\n model: getProjectOverrides('ISiteObjectViewModel', model),\n type,\n isLoading: false,\n }));\n })\n .then(_ => log.info('Loaded SiteObject'))\n .catch(error => {\n log.error(`Failed to load SiteObject, loading previous page. Error:${error}`);\n props.didRequestBack();\n });\n }, [props, props.route]);\n\n useEffect(() => {\n /* Markdown: Remove emphasis (repeat the line to remove double emphasis) */\n document.title = state.model.title.text\n .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, '$2')\n .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, '$2');\n }, [state.model.title.text]);\n\n return (\n <>\n {state.isLoading ? (\n \n ) : (\n \n \n \n )}\n \n );\n}\n\nconst propsEqual = (prev: ISiteObjectControllerProps, next: ISiteObjectControllerProps) => {\n return RouteEqual(prev.route, next.route);\n};\n\nexport default memo(View, propsEqual) as typeof View;\n","import { IWorkspaceDB } from '@monofe/apiservice';\nimport { ILanguageDto } from '@monofe/apiservice/model';\nimport { IMediumDto } from '@monofe/apiservice/model';\nimport { ISiteObjectDto } from '@monofe/apiservice/model';\nimport { injectAPISession } from '@monofe/apiservice';\nimport { DataCheckResult } from '../interface';\nimport { IRouteSiteObjectArguments } from './interface';\nimport { injectLog } from '../../interface/util';\n\nfunction mediaRequired(\n siteObject: ISiteObjectDto,\n language: ILanguageDto,\n db: IWorkspaceDB,\n): Promise> {\n const log = injectLog();\n\n return new Promise(async function (resolve, reject) {\n try {\n let media: IMediumDto[] = [];\n\n const translation = await siteObject.translation(db, language);\n\n if (translation.mediumId) {\n media.push(await translation.medium(db));\n }\n\n resolve(media);\n } catch (error) {\n log.error('Failed to map media ' + error);\n reject(error);\n }\n });\n}\n\nfunction NeedsInternet(route: IRouteSiteObjectArguments): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const workspace = await injectAPISession().open(route.sessionName);\n\n await workspace.db.open();\n\n const language = await workspace.db.get('ILanguageDto', route.languageId);\n\n const siteObject = await workspace.db.get('ISiteObjectDto', route.siteObjectId);\n\n const requiredMedia = await mediaRequired(siteObject, language, workspace.db);\n\n const allCached = await workspace.media.isAllMediaCached(\n requiredMedia.map(medium => medium.id),\n );\n\n const needsInternet = !allCached;\n\n workspace.db.close();\n\n resolve(needsInternet);\n } catch (error) {\n reject(error);\n }\n });\n}\nfunction CanLoad(route: IRouteSiteObjectArguments): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const needsInternet = await NeedsInternet(route);\n\n resolve(\n needsInternet\n ? DataCheckResult.DataNetworkConnectionNeeded\n : DataCheckResult.DataAvailableOffline,\n );\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default CanLoad;\n","import Renderer from './render';\nimport CanLoad from './canLoad';\nimport { IRouteSiteObjectArguments, ISiteObjectControllerProps } from './interface';\nimport { IBaseController } from '../interface';\n\nconst module: IBaseController = {\n renderer: Renderer,\n canRender: () => Promise.resolve({ hasEnoughDataToRender: true }),\n canLoad: CanLoad,\n};\n\nexport default module;\n","import { IContainer, injectContainer } from '../../interface/container';\n\nexport interface IToastMessage {\n id?: string;\n text: string;\n type?: 'info' | 'warn' | 'error' | 'success';\n}\n\nexport interface IToast {\n renderer: (props?: { children?: React.ReactNode }) => JSX.Element;\n show: (message: IToastMessage & Partial<{ id: string }>, duration?: number) => void;\n hide: (message: Partial) => void;\n message: (id: string) => IToastMessage | undefined;\n isShowing: (message: Partial) => boolean;\n}\n\nconst TYPES = {\n IToast: Symbol.for('IToast'),\n};\n\nexport function injectToast(container: IContainer = injectContainer()): IToast {\n return container.get(TYPES.IToast);\n}\n\nexport function bindToast(val: IToast, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IToast, val);\n}\n","import { ITourMainProps, ITourItemViewModel } from './interface';\n\nconst dummyItem: ITourItemViewModel = {\n title: {\n text: '',\n fontFamily: 'Gill Sans',\n fontSize: '10vmin',\n lineHeight: '10vmin',\n fontAlignment: 'center',\n fontWeight: 500,\n color: '#000',\n visible: true,\n },\n titleBackgroundColor: '#ddd',\n\n backgroundImage: {\n mode: 'contain',\n url: '',\n },\n backgroundColor: '#fff',\n cornerRadius: 2,\n\n number: {\n text: '',\n fontFamily: 'Gill Sans',\n fontSize: '10vmin',\n lineHeight: '10vmin',\n fontAlignment: 'center',\n fontWeight: 500,\n color: '#ddd',\n visible: true,\n },\n numberBackgroundColor: '#000',\n shouldGrayAfterViewing: true,\n subItems: [],\n\n onClick: (item: ITourItemViewModel) => {\n /* noop */\n },\n};\n\nfunction placeholderData(): ITourMainProps {\n return {\n sideMenu: {\n backgroundColor: '#000',\n foregroundImage: {\n url: '',\n mode: 'contain',\n },\n items: [],\n },\n topBar: {\n title: {\n text: '',\n fontFamily: 'Gill Sans',\n fontSize: '10vmin',\n lineHeight: '10vmin',\n fontAlignment: 'center',\n fontWeight: 500,\n color: '#000000',\n visible: true,\n },\n backgroundColor: '#000',\n iconColor: '#fff',\n },\n\n backgroundColor: '#ffffff',\n backgroundImage: {\n url: '',\n mode: 'contain',\n },\n backButton: {\n backgroundColor: 'transparent',\n strokeColor: 'transparent',\n strokeSize: '0',\n arrowColor: 'transparent',\n visible: false,\n },\n collection: {\n backgroundColor: '#fff',\n backgroundImage: {\n url: '',\n mode: 'contain',\n },\n items: [dummyItem, dummyItem, dummyItem, dummyItem],\n },\n showFloorPlanIcon: false,\n hasContentDownloaded: false,\n onDownloadStatusRequest: () => {\n /* noop */\n },\n onBack: () => {\n /* noop */\n },\n onFloorPlanSelect: () => {\n /* noop */\n },\n };\n}\n\nexport default placeholderData;\n","import { ITourMainProps } from '@monofe/ui-workspace/tour/interface';\nimport { useEffect } from 'react';\nimport { injectKVStorage } from '../../interface/util';\n\nconst SHOW_DELAY_MS = 3000;\n\nconst downloadTourStateFetcher = async () => {\n const module = await import('../downloadtour/state/main');\n return module.default();\n};\n\nconst _triggerPopUp = async (): Promise => (await downloadTourStateFetcher()).show();\n\nconst _StorageKey = (tour: ITourMainProps): string =>\n `AutoTriggered-Download-${tour.topBar.title.text}`;\n\nconst _canTriggerPopUp = async (tour: ITourMainProps): Promise =>\n tour.topBar.title.text.length > 0 && (await downloadTourStateFetcher()).isShowable();\n\nconst _hasShownPopUp = async (tour: ITourMainProps): Promise =>\n (await injectKVStorage()).getItem(_StorageKey(tour)) ?? false;\n\nconst _setHasShownPopUp = async (tour: ITourMainProps): Promise =>\n (await injectKVStorage()).setItem(_StorageKey(tour), true);\n\nfunction DownloadAlertTrigger(tour: ITourMainProps): JSX.Element {\n useEffect(() => {\n setTimeout(async () => {\n const canShow = await _canTriggerPopUp(tour);\n const hasShown = await _hasShownPopUp(tour);\n\n if (canShow && !hasShown) {\n await _setHasShownPopUp(tour);\n await _triggerPopUp();\n }\n }, SHOW_DELAY_MS);\n }, [tour]);\n\n return <>;\n}\n\nexport default DownloadAlertTrigger;\n","import React, {\n Suspense,\n Dispatch,\n SetStateAction,\n useCallback,\n useState,\n useEffect,\n useReducer,\n lazy,\n memo,\n} from 'react';\nimport { ITourMainProps } from '@monofe/ui-workspace/tour/interface';\nimport placeholderData from '@monofe/ui-workspace/tour/placeholderData';\nimport { ISiteObjectDto } from '@monofe/apiservice/model';\nimport { ITourControllerProps, ITourStateActionModifier, ITourType } from './interface';\nimport LoadingView from '@monofe/ui-workspace/common/Loading';\nimport { injectCacheController, injectLog } from '../../interface/util';\nimport type IMapping from './mapping';\nimport { getProjectOverrides } from '../../interface/overrides';\nimport { AnimatePresence } from 'framer-motion';\nimport { injectToast } from '../toast/interface';\nimport DownloadAlertTrigger from './DownloadAlert';\n\nconst MainView = lazy(() => import('@monofe/ui-workspace/tour'));\nconst loadMapper = (): Promise => {\n return new Promise(function (resolve, reject) {\n import('./mapping')\n .then(controller => resolve(controller.default))\n .catch(error => reject(error));\n });\n};\n\nconst downloadTourStateFetcher = async () => {\n const module = await import('../downloadtour/state/main');\n return module.default();\n};\nconst deleteTourStateFetcher = async () => {\n const module = await import('../deletetour/state/main');\n return module.default();\n};\n\ninterface ITourController extends ITourMainProps {\n type: ITourType;\n isLoading: boolean;\n showPopUpDownload: boolean;\n showPopUpDelete: boolean;\n}\n\nexport interface ITourControllerActionModifier {\n (model: ITourController): ITourController;\n}\n\n/* Same as useState, except 3 return-value allow for partial state updates */\nfunction ReactUseStateWithUpdate(\n initialState: S | (() => S),\n): [S, Dispatch>, Dispatch>] {\n const [getVal, setVal] = useState(initialState);\n const updateVal = useCallback(\n (partial: Partial) => setVal(sPrev => ({ ...sPrev, ...partial })),\n [],\n );\n return [getVal, setVal, updateVal];\n}\n\nfunction _StateReducer(\n state: ITourController,\n action: ITourControllerActionModifier,\n): ITourController {\n const newState = action(state);\n return newState;\n}\n\nfunction View(props: ITourControllerProps): JSX.Element {\n const log = injectLog();\n\n const [model, modelDispatcher] = useReducer(_StateReducer, {\n ...placeholderData(),\n type: ITourType.List,\n isLoading: true,\n showPopUpDownload: false,\n showPopUpDelete: false,\n });\n\n const onSiteObject = useCallback(\n (siteObject: ISiteObjectDto) => {\n props.didRequestSiteObject(siteObject.id);\n },\n [props.didRequestSiteObject],\n );\n\n const onFloorPlan = props.didRequestFloorPlan;\n const onLanguageSelect = props.didRequestLanguageSelect;\n const onTourSelect = props.didRequestTourSelect;\n const onBack = props.didRequestBack;\n const reducer = useCallback(\n (modifier: ITourStateActionModifier) => {\n modelDispatcher((modelState: ITourController) => {\n return {\n type: modelState.type,\n isLoading: modelState.isLoading,\n showPopUpDownload: modelState.showPopUpDownload,\n showPopUpDelete: modelState.showPopUpDelete,\n /* apply reducer & pass result to project-overrides before applying */\n ...getProjectOverrides('ITourMainProps', modifier(modelState)),\n };\n });\n },\n [modelDispatcher],\n );\n\n const onDownloadStatusRequest = useCallback(\n async (newStatus: boolean) => {\n const downloadState = await downloadTourStateFetcher();\n const deleteState = await deleteTourStateFetcher();\n\n if (newStatus) {\n const canDownload = downloadState.isShowable();\n deleteState.hide();\n\n if (canDownload) {\n downloadState.show();\n } else {\n const toaster = injectToast();\n toaster.show({ text: 'Tour not downloadable', type: 'warn' });\n }\n } else {\n downloadState.hide();\n\n if (deleteState.isShowable()) {\n deleteState.show();\n } else {\n const toaster = injectToast();\n toaster.show({ text: 'Tour not deletable', type: 'warn' });\n }\n }\n\n reducer(oldProps => ({\n ...oldProps,\n hasContentDownloaded: newStatus,\n showPopUpDownload: newStatus,\n showPopUpDelete: !newStatus,\n }));\n },\n [reducer],\n );\n\n useEffect(() => {\n reducer(oldState => ({\n ...oldState,\n onDownloadStatusRequest,\n }));\n }, [reducer, onDownloadStatusRequest]);\n\n useEffect(() => {\n log.info(`New route: ${JSON.stringify(props.route)}`);\n loadMapper()\n .then(function (mapper) {\n return mapper(\n props.route,\n reducer,\n injectCacheController().getAssociatedCache(props) ||\n injectCacheController().getGlobalCache(),\n onSiteObject,\n onFloorPlan,\n onLanguageSelect,\n onTourSelect,\n onBack,\n onDownloadStatusRequest,\n );\n })\n .then(([modelResult, type]) => {\n reducer(modelIn => ({\n ...modelIn,\n ...modelResult,\n type,\n isLoading: false,\n }));\n })\n .catch(error => {\n log.error(`Failed to map/update tour controller. Error:${JSON.stringify(error)}`);\n props.didRequestBack();\n });\n }, [props.route]);\n\n useEffect(() => {\n document.title = model.topBar.title.text;\n }, [model.topBar.title.text]);\n\n useEffect(() => {\n if (!model.isLoading) {\n log.info('Showing Tour controller view');\n }\n }, [model.isLoading]);\n\n return (\n \n {model.isLoading ? (\n \n ) : (\n \n {model.type === ITourType.Hamburger && }\n \n \n )}\n \n );\n}\n\nView.displayName = 'Tour-render-View';\n\nconst propsEqual = (prev: ITourControllerProps, next: ITourControllerProps) => {\n const match = JSON.stringify(prev.route) === JSON.stringify(next.route);\n return match;\n};\n\nexport default memo(View, propsEqual) as typeof View;\n","import { IWorkspaceDB } from '@monofe/apiservice';\nimport { ILanguageDto } from '@monofe/apiservice/model';\nimport { IMediumDto } from '@monofe/apiservice/model';\nimport { ISiteObjectDto } from '@monofe/apiservice/model';\nimport { injectAPISession } from '@monofe/apiservice';\nimport { DataCheckResult } from '../interface';\nimport { IRouteTourArguments } from './interface';\nimport { injectLog } from '../../interface/util';\n\nfunction mediaRequired(\n siteObject: ISiteObjectDto,\n language: ILanguageDto,\n db: IWorkspaceDB,\n): Promise> {\n const log = injectLog();\n\n return new Promise(async function (resolve, reject) {\n try {\n const media: IMediumDto[] = [];\n\n const translation = await siteObject.translation(db, language);\n\n if (translation.mediumId) {\n media.push(await translation.medium(db));\n }\n\n resolve(media);\n } catch (error) {\n log.error('Failed to map media ' + error);\n reject(error);\n }\n });\n}\n\nfunction NeedsInternet(route: IRouteTourArguments): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const workspace = await injectAPISession().open(route.sessionName);\n\n await workspace.db.open();\n\n const language = await workspace.db.get('ILanguageDto', route.languageId);\n const tour = await workspace.db.get('ITourDto', route.tourId);\n\n const tourRelatedSiteObjects = await workspace.db.all('ITourRelatedSiteObjectDto');\n const siteObjectIds = tourRelatedSiteObjects\n .filter(x => x.tourId === tour.id)\n .map(x => x.siteObjectId);\n\n const allSiteObjects = await Promise.all(\n siteObjectIds.map(x => workspace.db.get('ISiteObjectDto', x)),\n );\n\n const allRequiredMedia = (\n await Promise.all(\n allSiteObjects.map(so => mediaRequired(so, language, workspace.db)),\n )\n ).flat();\n\n const isAllCached = await workspace.media.isAllMediaCached(\n allRequiredMedia.map(medium => medium.id),\n );\n\n const needsInternet = !isAllCached;\n\n workspace.db.close();\n\n resolve(needsInternet);\n } catch (error) {\n reject(error);\n }\n });\n}\nfunction CanLoad(route: IRouteTourArguments): Promise {\n return new Promise(async function (resolve, reject) {\n const needsInternet = await NeedsInternet(route);\n\n if (!needsInternet) {\n resolve(DataCheckResult.DataAvailableOffline);\n } else {\n resolve(DataCheckResult.DataNetworkConnectionNeeded);\n }\n });\n}\n\nexport default CanLoad;\n","import { injectAPISession } from '@monofe/apiservice';\nimport { IRouteTourArguments, ISiteObjectSelectControllerRenderResult } from './interface';\n\nfunction CanRender(route: IRouteTourArguments): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const workspace = await injectAPISession().open(route.sessionName);\n\n await workspace.db.open();\n\n const tour = await workspace.db.get('ITourDto', route.tourId);\n\n const allTourRelatedSiteObjects = await workspace.db.all('ITourRelatedSiteObjectDto');\n const matchingTourRelatedSiteObjects = allTourRelatedSiteObjects.filter(\n x => x.tourId === tour.id,\n );\n\n const hasMultipleSiteObjects = matchingTourRelatedSiteObjects.length > 1;\n\n let result: ISiteObjectSelectControllerRenderResult = {\n hasEnoughDataToRender: hasMultipleSiteObjects,\n };\n\n if (matchingTourRelatedSiteObjects.length <= 0) {\n throw Error('‘No site-objects found. Unable to launch tour');\n }\n\n if (!result.hasEnoughDataToRender) {\n result = {\n ...result,\n suggestedAlternativeRoute: 'SiteObject',\n additionalRouteDataNeeded: {\n ...route,\n siteObjectId: matchingTourRelatedSiteObjects[0].siteObjectId,\n },\n };\n }\n\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default CanRender;\n","import Renderer from './render';\nimport CanLoad from './canLoad';\nimport { IRouteTourArguments, ITourControllerProps } from './interface';\nimport { IBaseController } from '../interface';\nimport CanRender from './canRender';\n\nconst module: IBaseController = {\n renderer: Renderer,\n canRender: CanRender,\n canLoad: CanLoad,\n};\n\nexport default module;\n","import { ITourMainProps } from '@monofe/ui-workspace/tour/interface';\nimport { IBaseControllerRenderResult } from '../interface';\n\nexport interface IRouteTourArguments {\n db: string;\n languageId: number;\n tourId: number;\n sessionName: string;\n}\n\nexport interface ITourControllerProps {\n didRequestSiteObject: (id: number) => void;\n didRequestFloorPlan: (id: number) => void;\n didRequestLanguageSelect: () => void;\n didRequestTourSelect: () => void;\n didRequestBack: () => void;\n route: IRouteTourArguments;\n}\n\nexport interface ISiteObjectSelectControllerRenderResult\n extends IBaseControllerRenderResult<{ siteObjectId: any }> {}\n\nexport enum ITourType {\n Undef = 0,\n List = 1,\n Cascaded = 2,\n Keypad = 3,\n Hamburger = 4,\n LastValue = 5,\n}\n\nexport interface ITourStateActionModifier {\n (model: ITourMainProps): ITourMainProps;\n}\n","import { ITourSelectViewModel } from './interface';\n\nfunction placeholderData(): ITourSelectViewModel {\n return {\n title: {\n text: '',\n fontFamily: 'Gill Sans',\n fontSize: '10vmin',\n fontAlignment: 'center',\n fontWeight: 500,\n color: '#000000',\n visible: true,\n opacity: 0,\n },\n backgroundColor: '#ffffff',\n backgroundImage: {\n url: '',\n mode: 'contain',\n },\n\n backButton: {\n backgroundColor: '#fff',\n strokeColor: '#000',\n strokeSize: '0.6vmin',\n arrowColor: '#000',\n visible: false,\n },\n\n onBack: () => {\n /* noop */\n },\n\n items: [],\n };\n}\n\nexport default placeholderData;\n","import React, { Suspense, useState, useCallback, useEffect, lazy, memo } from 'react';\nimport {\n ITourSelectControllerModel,\n ITourSelectControllerProps,\n ITourSelectType,\n} from './interface';\nimport modelPlaceholderData from '@monofe/ui-workspace/tourselect/placeholderData';\nimport { ITourDto } from '@monofe/apiservice/model';\nimport LoadingView from '@monofe/ui-workspace/common/Loading';\nimport type IMapping from './mapping';\nimport { injectLog } from '../../interface/util';\nimport { ITourSelectViewModel } from '@monofe/ui-workspace/tourselect/interface';\nimport { getProjectOverrides } from '../../interface/overrides';\nimport { AnimatePresence } from 'framer-motion';\nconst isEqual = require('react-fast-compare');\nconst MainView = lazy(() => import('@monofe/ui-workspace/tourselect'));\nconst loadMapper = (): Promise => {\n return new Promise(function (resolve, reject) {\n import('./mapping')\n .then(controller => resolve(controller.default))\n .catch(error => reject(error));\n });\n};\n\n/* max draw offset at which it is still visible during scrolling */\nconst TOPBAR_TEXT_OPACITY_MAX_OFFSET = 120;\n\ninterface ITourSelectController {\n model: ITourSelectControllerModel;\n type: ITourSelectType;\n isLoading: boolean;\n}\n\nconst controllerPlaceholderData = (): ITourSelectController => ({\n model: {\n ...modelPlaceholderData(),\n },\n type: ITourSelectType.List,\n isLoading: true,\n});\n\nfunction View(props: ITourSelectControllerProps): JSX.Element {\n const log = injectLog();\n\n const [state, setState] = useState(controllerPlaceholderData());\n\n const onTourSelect = useCallback(\n (tour: ITourDto) => props.didRequestTour(tour.id),\n [props.didRequestTour],\n );\n\n const onScroll = (position: { left: number; top: number }) => {\n const newOpacityPC =\n 1 -\n Math.min(Math.max(position.top, 0), TOPBAR_TEXT_OPACITY_MAX_OFFSET) /\n TOPBAR_TEXT_OPACITY_MAX_OFFSET;\n setState(stateIn => ({\n ...stateIn,\n model: {\n ...stateIn.model,\n title: {\n ...stateIn.model.title,\n opacity: newOpacityPC,\n },\n },\n }));\n };\n\n useEffect(() => {\n loadMapper()\n .then(mapper => mapper(props.route, props.didRequestBack, onTourSelect, onScroll))\n .then(function ([model, type]) {\n return setState({\n model: getProjectOverrides('ITourSelectViewModel', model),\n type,\n isLoading: false,\n });\n })\n .then(_ => log.info('Loaded TourSelect'))\n .catch(error => log.error(`Failed to load TourSelect ${error}`));\n }, [props.route]);\n\n useEffect(() => {\n document.title = state.model.title.text;\n }, [state.model.title.text]);\n\n return (\n \n {state.isLoading ? (\n \n ) : (\n \n \n \n )}\n \n );\n}\n\nfunction propsEqual(prev: ITourSelectControllerProps, next: ITourSelectControllerProps): boolean {\n const match = isEqual(prev, next);\n return match;\n}\n\nexport default memo(View, propsEqual) as typeof View;\n","import { injectAPISession, util } from '@monofe/apiservice';\nimport { IRouteTourSelectArguments, ITourSelectControllerRenderResult } from './interface';\n\nfunction CanRender(route: IRouteTourSelectArguments): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const workspace = await injectAPISession().open(route.sessionName);\n\n await workspace.db.open();\n\n const language = await workspace.db.get('ILanguageDto', route.languageId ?? 0);\n\n const tours = await util.tours.ToursForLanguage(workspace.db, language);\n\n const hasMultipleTours = tours.length > 1;\n\n let result: ITourSelectControllerRenderResult = {\n hasEnoughDataToRender: hasMultipleTours,\n };\n\n if (tours.length <= 0) {\n throw Error('No tours found, unable to launch tour-select, or tour menu');\n }\n\n if (!result.hasEnoughDataToRender) {\n result = {\n ...result,\n suggestedAlternativeRoute: 'Tour',\n additionalRouteDataNeeded: {\n tourId: tours[0].id,\n },\n };\n }\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default CanRender;\n","import Renderer from './render';\nimport CanRender from './canRender';\nimport { IRouteTourSelectArguments, ITourSelectControllerProps } from './interface';\nimport { DataCheckResult, IBaseController } from '../interface';\n\nconst module: IBaseController = {\n renderer: Renderer,\n canRender: CanRender,\n canLoad: () => Promise.resolve(DataCheckResult.DataAvailableOffline),\n};\n\nexport default module;\n","import type {\n ITourSelectItemViewModel,\n ITourSelectViewModel,\n} from '@monofe/ui-workspace/tourselect/interface';\nimport type { IBaseControllerRenderResult } from '../interface';\n\nexport interface IRouteTourSelectArguments {\n db: string;\n languageId: number;\n sessionName: string;\n}\n\nexport interface ITourSelectControllerProps {\n didRequestTour: (id: number) => void;\n didRequestBack: () => void;\n route: IRouteTourSelectArguments;\n}\n\nexport interface ITourSelectControllerRenderResult\n extends IBaseControllerRenderResult<{ tourId: number }> {}\n\nexport interface ITourSelectItemControllerModel extends ITourSelectItemViewModel {}\n\nexport interface ITourSelectControllerModel extends ITourSelectViewModel {}\n\nexport enum ITourSelectType {\n Undef = 0,\n List = 1,\n GridTile = 2,\n GridFeatured = 3,\n LastValue = 4,\n}\n","import { IContainer, injectContainer } from '../../interface/container';\n\nexport interface IDisplayOptions {\n removeOnHide: boolean;\n}\n\nexport interface IAlertMessage {\n id: string;\n title: string;\n show?: boolean;\n textAccept?: string;\n textDecline?: string;\n onAccept?: () => void;\n onDecline?: () => void;\n options?: IDisplayOptions;\n}\n\nexport interface IUserAlert {\n renderer: (props?: { children?: React.ReactNode }) => JSX.Element;\n show: (message: Partial) => void;\n hide: (message: Partial) => void;\n isShowing: (message: Partial & Required<{ id: string }>) => boolean;\n alert: (id: string) => IAlertMessage | undefined;\n update: (message: Partial & { id: string }) => void;\n}\n\nconst TYPES = {\n IUserAlert: Symbol.for('IUserAlert'),\n};\n\nexport function injectUserAlert(container: IContainer = injectContainer()): IUserAlert {\n return container.get(TYPES.IUserAlert);\n}\n\nexport function bindUserAlert(val: IUserAlert, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IUserAlert, val);\n}\n","import { IContainer, injectContainer } from './container';\n\nexport interface IAsset {\n path: string;\n}\n\nexport interface IImageAsset extends IAsset {\n width: number;\n height: number;\n}\n\nexport interface IImageAssetMap {\n Flag: {\n AD: IImageAsset;\n AR: IImageAsset;\n BE: IImageAsset;\n BG: IImageAsset;\n BP: IImageAsset;\n BSL: IImageAsset;\n CS: IImageAsset;\n DE: IImageAsset;\n EN: IImageAsset;\n ES: IImageAsset;\n FI: IImageAsset;\n FR: IImageAsset;\n GD: IImageAsset;\n GL: IImageAsset;\n GR: IImageAsset;\n HU: IImageAsset;\n IS: IImageAsset;\n IT: IImageAsset;\n JA: IImageAsset;\n KO: IImageAsset;\n LT: IImageAsset;\n NL: IImageAsset;\n NO: IImageAsset;\n PL: IImageAsset;\n PT: IImageAsset;\n RO: IImageAsset;\n RU: IImageAsset;\n SE: IImageAsset;\n SH: IImageAsset;\n ZH: IImageAsset;\n };\n AppIcon: {\n 167: IImageAsset;\n 180: IImageAsset;\n 192: IImageAsset;\n 512: IImageAsset;\n 64: IImageAsset;\n favico: IImageAsset;\n };\n Splash: {\n '1024x1024': IImageAsset;\n '1125x2436': IImageAsset;\n '1136x640': IImageAsset;\n '1200x627': IImageAsset;\n '1242x2148': IImageAsset;\n '1294x750': IImageAsset;\n '1536x2048': IImageAsset;\n '1668x2224': IImageAsset;\n '2048x1536': IImageAsset;\n '2048x2732': IImageAsset;\n '2148x1242': IImageAsset;\n '2224x1668': IImageAsset;\n '2436x1125': IImageAsset;\n '2732x2048': IImageAsset;\n '640x1136': IImageAsset;\n '750x1294': IImageAsset;\n };\n Misc: {\n Alpha: IImageAsset;\n Alpha_Debug: IImageAsset;\n };\n}\n\nexport interface IAssetMap {\n Image: IImageAssetMap;\n}\n\nexport interface IAssetFetcher {\n imageAsset(\n group: K,\n name: V,\n ): IImageAssetMap[K][V];\n imageAssetGroup(group: K): Array;\n imageAssetGroupClosestMatch(\n group: K,\n targetWidth: number,\n targetHeight: number,\n ): IImageAsset;\n}\n\nconst TYPES = {\n IAssetFetcher: Symbol.for('IAssetFetcher'),\n};\n\nexport function injectAssetFetcher(container: IContainer = injectContainer()): IAssetFetcher {\n return container.get(TYPES.IAssetFetcher);\n}\n\nexport function bindAssetFetcher(val: IAssetFetcher, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IAssetFetcher, val);\n}\n","import { IContainer, injectContainer } from './container';\n\nexport enum IConfigLogLevel {\n Undef = 0,\n Milestone = 1,\n Trace = 2,\n Verbose = 3,\n Info = 4,\n Warn = 5,\n Error = 6,\n Fatal = 7,\n LastValue = 8,\n}\n\nexport enum IConfigLogDestination {\n Undef = 0,\n Console = 1,\n Remote_ApplicationInsights = 2,\n LastValue = 3,\n}\n\nexport interface IConfigLogSettings {\n authorizationKey?: string;\n name?: string;\n}\n\nexport interface IConfigLog {\n loggingLevelsEnabled: Array;\n outputDestinations: Array;\n outputConfiguration: Record<\n IConfigLogDestination.Console | IConfigLogDestination.Remote_ApplicationInsights,\n IConfigLogSettings\n >;\n}\n\nexport interface IConfigAPI {\n url: string;\n auth: {\n clientId?: string;\n clientSecret?: string;\n grantType?: string;\n username?: string;\n password?: string;\n };\n extension: {\n auth?: string;\n siteData?: string;\n mediaDiff?: string;\n media?: string;\n mediaWithAccessToken?: string;\n };\n}\n\nexport interface IConfigManifest {\n short_name: string;\n name: string;\n description: string;\n icons: Array<{ src: string; sizes: string; type: string }>;\n start_url: string;\n display: string;\n theme_color: string;\n background_color: string;\n orientation: string;\n categories: Array;\n}\n\nexport enum IConfigCacheName {\n Undef = 0,\n BuildAssets,\n PublicAssets,\n WorkspaceMedia,\n WorkspaceStream,\n AppToken,\n LastValue,\n}\n\nexport interface IConfigCacheAssets {\n cacheName: string;\n expiration: number;\n maxEntries: number;\n matcher: RegExp;\n ignoreSearch?: boolean;\n fetchOptions?: Partial;\n}\n\nexport interface IConfigCacheOAuthToken {\n tokenPath: string;\n}\n\nexport type IConfigCache = Partial<\n Record\n>;\n\nexport enum IConfigRoutePath {\n Undef = 0,\n Launch = 1,\n LanguageSelect = 2,\n TourSelect = 3,\n Tour = 4,\n SiteObject = 5,\n FloorPlan = 6,\n LastValue = 7,\n}\n\nexport interface IRouteConfigSettings {\n pathPrefix: string;\n pathMatch: Array;\n}\n\nexport type IConfigRoute = {\n basename: string;\n routes: Record<\n | IConfigRoutePath.Launch\n | IConfigRoutePath.LanguageSelect\n | IConfigRoutePath.TourSelect\n | IConfigRoutePath.Tour\n | IConfigRoutePath.SiteObject\n | IConfigRoutePath.FloorPlan,\n IRouteConfigSettings\n >;\n};\n\nconst TYPES = {\n IConfigLog: Symbol.for('IConfigLog'),\n IConfigAPI: Symbol.for('IConfigAPI'),\n IConfigManifest: Symbol.for('IConfigManifest'),\n IConfigCache: Symbol.for('IConfigCache'),\n IConfigRoute: Symbol.for('IConfigRoute'),\n};\n\nexport function injectConfigLog(container: IContainer = injectContainer()): IConfigLog {\n return container.get(TYPES.IConfigLog);\n}\n\nexport function bindConfigLog(val: IConfigLog, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IConfigLog, val);\n}\n\nexport function injectConfigAPI(\n container: IContainer = injectContainer(),\n): Array> {\n return container.get>>(TYPES.IConfigAPI);\n}\n\nexport function bindConfigAPI(\n val: Array>,\n container: IContainer = injectContainer(),\n) {\n return container.bind>>(TYPES.IConfigAPI, val);\n}\n\nexport function injectConfigManifest(container: IContainer = injectContainer()): IConfigManifest {\n return container.get(TYPES.IConfigManifest);\n}\n\nexport function bindConfigManifest(\n val: IConfigManifest,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IConfigManifest, val);\n}\n\nexport function injectConfigCache(container: IContainer = injectContainer()): IConfigCache {\n return container.get(TYPES.IConfigCache);\n}\n\nexport function bindConfigCache(val: IConfigCache, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IConfigCache, val);\n}\n\nexport function injectConfigRoute(container: IContainer = injectContainer()): IConfigRoute {\n return container.get(TYPES.IConfigRoute);\n}\n\nexport function bindConfigRoute(val: IConfigRoute, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IConfigRoute, val);\n}\n","export interface IContainer {\n get: (key: symbol) => T;\n bind: (key: symbol, val: T) => void;\n remove: (key: symbol) => void;\n importBindings: (container: IContainer) => void;\n}\n\nexport type ILazyBinder = () => Promise;\n\n/* global container storage */\ntype ContainerMap = Record;\n\nexport function injectContainer(name = 'default'): IContainer {\n let containers: ContainerMap | undefined = (global as any).containers;\n if (!containers) {\n console.warn('No containers found! Creating new');\n containers = {};\n (global as any).containers = containers;\n }\n\n const container = containers[name];\n return container;\n}\n\nexport function bindContainer(container: IContainer, name = 'default') {\n let containers: ContainerMap | undefined = (global as any).containers;\n if (!containers) {\n containers = {};\n (global as any).containers = containers;\n }\n\n if (containers[name]) {\n console.warn(`Overwriting container: ${name}`);\n }\n\n containers[name] = container;\n}\n","import { injectENV } from './util';\n\nconst KEY_ALL_MODELOVERRIDES = 'REACT_APP_MODELOVERRIDES';\n\ntype ModelOverrides = Record T) | undefined>;\n\nexport function getProjectOverrides(name: string, obj: T): T {\n const env = injectENV();\n const allOverrides = env.getValueWithDefault>(KEY_ALL_MODELOVERRIDES, {});\n const overrideMapper = allOverrides[name];\n const result = overrideMapper ? overrideMapper(obj) : obj;\n return result;\n}\n","import { IContainer, ILazyBinder, injectContainer } from './container';\nimport { IProgressPromise } from './promise';\n\nexport interface IEnv {\n getValue: (envName: string) => T | null;\n getValueWithDefault: (envName: string, defaultValue: T) => T;\n getNumber: (name: string, defaultValue?: number) => number;\n getBoolean: (name: string, defaultValue?: boolean) => boolean;\n getString: (name: string, defaultValue?: string) => string;\n}\n\nexport interface IFetchHeader {\n name: string;\n value: string;\n}\n\nexport type Method = 'HEAD' | 'GET' | 'PUT' | 'PATCH' | 'POST' | 'DELETE' | 'OPTIONS';\nexport type ResponseTypes = 'json' | 'text' | 'blob' | 'arraybuffer' | 'void' | 'opaque';\n\nexport interface IFetchRequest {\n url: string;\n method?: Method;\n headers?: Array;\n body?: string;\n expectedResponseType?: ResponseTypes;\n expectedResponseSize?: number;\n}\n\nexport interface IFetchResponse {\n request: IFetchRequest;\n statusCode: number;\n isStatusOk: boolean;\n error?: Error;\n payload: T | null;\n}\n\n/**\n * IFetcher external resource resolver\n *\n * @param {string} requestPayload - Request payload contains url, method?, headers?, body? etc\n * @param {string} [timeout] - Time to wait before giving up (Milliseconds)\n * @param {string} [retryCount] - A optional string param\n * @return {IProgressPromise>} Promise with resource response\n */\nexport type IFetcher = (\n requestPayload: IFetchRequest,\n timeout?: number,\n retryCount?: number,\n) => IProgressPromise>;\n\nexport interface ILog {\n milestone: (msg: string) => void;\n verbose: (msg: string) => void;\n trace: (msg: string) => void;\n info: (msg: string) => void;\n warn: (msg: string) => void;\n warning: (msg: string) => void;\n error: (msg: string) => void;\n fatal: (msg: string) => void;\n assert: (condition: boolean | string | number, msg: string | undefined) => void;\n}\n\nexport interface IQueryURL {\n parse: (queryString: string) => {};\n assemble: (queryArgs: {}) => string;\n}\n\ninterface IUnzipEntry {\n versionMadeBy: number;\n versionNeededToExtract: number;\n generalPurposeBitFlag: number;\n compressionMethod: number;\n lastModTime: number;\n lastModDate: number;\n crc32: number;\n compressedSize: number;\n uncompressedSize: number;\n internalAttributes: number;\n externalAttributes: number;\n localHeaderOffset: number;\n name: string;\n comment: string;\n extraFields: object[];\n}\n\ntype IUnzipReadEntriesCallback = (err: Error, entries: IUnzipEntry[]) => void;\ntype IUnzipReadEntryDataCallback = (err: Error, readStream: IZipReadStream) => void;\n\ninterface IUnzipFile {\n readEntries: (callback: IUnzipReadEntriesCallback) => void;\n readEntryData: (\n entry: IUnzipEntry,\n checkCrc: boolean,\n callback: IUnzipReadEntryDataCallback,\n ) => void;\n}\n\ntype IReadStreamCallback = (value: any) => void;\ntype IReadStreamEvent = 'data' | 'error' | 'end';\n\ninterface IZipReadStream {\n on: (event: IReadStreamEvent, callback: IReadStreamCallback) => void;\n}\n\nexport interface IZip {\n unzipFile: (blobData: Blob, fileName: string) => Promise;\n unzipAll: (blobData: Blob, destDirectoryPrefix: string) => Promise<{ [keyof: string]: T }>;\n listings: (blobData: Blob) => Promise>;\n}\n\nexport interface IKVStorage {\n getItem: (key: any) => Promise;\n setItem: (key: any, value: any) => Promise;\n removeItem: (key: any) => Promise;\n clear: () => Promise;\n length: () => Promise;\n}\n\nexport enum IBrowserPlatform {\n Unknown = 0,\n MobileiOS = 1,\n MobileAndroid = 2,\n}\n\nexport interface IBrowser {\n platform: IBrowserPlatform;\n isMobile: boolean;\n isInstalled: boolean;\n}\n\nexport interface ICache {\n add: (key: string | symbol, value: any) => void;\n get: (key: string | symbol) => any;\n}\n\nexport interface ICacheController {\n getAssociatedCache: (associatedObject: any) => ICache | null;\n getGlobalCache: () => ICache;\n}\n\nexport type LANGUAGE_CODE =\n | 'cs'\n | 'de'\n | 'en'\n | 'es'\n | 'fr'\n | 'it'\n | 'ja'\n | 'ko'\n | 'pl'\n | 'pt'\n | 'ru'\n | 'zh'\n | 'nl'\n | 'ar'\n | 'bp'\n | 'ga'\n | 'gd';\n\nexport interface ITranslationStorage {\n translation: (\n language: LANGUAGE_CODE,\n key: string,\n parameters?: Array,\n fallback?: string,\n ) => string;\n}\n\nconst TYPES = {\n IEnv: Symbol.for('IEnv'),\n IFetch: Symbol.for('IFetch'),\n ILog: Symbol.for('ILog'),\n IQueryURL: Symbol.for('IQueryURL'),\n IZip: Symbol.for('IZip'),\n IKVStorage: Symbol.for('IKVStorage'),\n IBrowser: Symbol.for('IBrowser'),\n ICache: Symbol.for('ICache'),\n ICacheController: Symbol.for('ICacheController'),\n ITranslationStorage: Symbol.for('ITranslationStorage'),\n};\n\nexport function injectENV(container: IContainer = injectContainer()): IEnv {\n return container.get(TYPES.IEnv);\n}\n\nexport function bindENV(val: IEnv, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IEnv, val);\n}\n\nexport function injectFetch(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IFetch)();\n}\n\nexport function bindFetch(val: ILazyBinder, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IFetch, val);\n}\n\nexport function injectLog(container: IContainer = injectContainer()): ILog {\n return container.get(TYPES.ILog);\n}\n\nexport function bindLog(val: ILog, container: IContainer = injectContainer()) {\n return container.bind(TYPES.ILog, val);\n}\n\nexport function injectQueryURL(container: IContainer = injectContainer()): IQueryURL {\n return container.get(TYPES.IQueryURL);\n}\n\nexport function bindQueryURL(val: IQueryURL, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IQueryURL, val);\n}\n\nexport function injectZip(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IZip)();\n}\n\nexport function bindZip(val: ILazyBinder, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IZip, val);\n}\n\nexport function injectKVStorage(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IKVStorage)();\n}\n\nexport function bindKVStorage(\n val: ILazyBinder,\n container: IContainer = injectContainer(),\n) {\n return container.bind>(TYPES.IKVStorage, val);\n}\n\nexport function injectBrowser(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IBrowser)();\n}\n\nexport function bindBrowser(val: ILazyBinder, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IBrowser, val);\n}\n\nexport function injectCache(container: IContainer = injectContainer()): ICache {\n return container.get(TYPES.ICache);\n}\n\nexport function bindCache(val: ICache, container: IContainer = injectContainer()) {\n return container.bind(TYPES.ICache, val);\n}\n\nexport function injectCacheController(container: IContainer = injectContainer()): ICacheController {\n return container.get(TYPES.ICacheController);\n}\n\nexport function bindCacheController(\n val: ICacheController,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.ICacheController, val);\n}\n\nexport function injectTranslationStorage(\n container: IContainer = injectContainer(),\n): Promise {\n return container.get>(TYPES.ITranslationStorage)();\n}\n\nexport function bindTranslationStorage(\n val: ILazyBinder,\n container: IContainer = injectContainer(),\n) {\n return container.bind>(TYPES.ITranslationStorage, val);\n}\n","import {\n Action,\n AnyAction,\n EnhancedStore,\n ListenerMiddlewareInstance,\n Middleware,\n PayloadAction,\n Reducer,\n Slice,\n SliceCaseReducers,\n ThunkDispatch,\n} from '@reduxjs/toolkit';\nimport { IContainer, injectContainer } from '../interface/container';\n\nexport enum IStoreMiddlewareType {\n Undef = 0,\n Logger = 1,\n SideEffect = 2,\n Other = 3,\n LastValue = 4,\n}\n\nexport type MiddlewareSideEffect = ListenerMiddlewareInstance<\n unknown,\n ThunkDispatch,\n unknown\n>;\n\nexport interface IStoreMiddlewareMap {\n [IStoreMiddlewareType.Logger]: Middleware;\n [IStoreMiddlewareType.SideEffect]: MiddlewareSideEffect;\n}\n\nexport interface IStoreMiddlewares {\n get: (\n type: Type,\n ) => IStoreMiddlewareMap[Type] | undefined;\n add: (middleware: Middleware) => void;\n remove: (middleware: Middleware) => void;\n all: () => Array;\n}\n\nexport type ReducerUnknown = Reducer>;\nexport type ReducerActionReset = (state: any, payload: PayloadAction) => void;\nexport type ReducerSlice = Slice<\n any,\n SliceCaseReducers & { reset: ReducerActionReset },\n string\n>;\n\nexport interface CallbackEmpty {\n (): void;\n}\n\nexport interface ReducerManagerEventMap {\n SliceAdded: (slice: ReducerSlice) => void;\n ReducersChanged: CallbackEmpty;\n}\n\nexport type SubscriberList = {\n [key in keyof ReducerManagerEventMap]: Array;\n};\n\nexport interface IReducerRegister {\n getReducerMap: () => Record;\n reduce: (state: any, action: Action) => void;\n addSlice: (slice: ReducerSlice) => void;\n add: (key: string, reducer: ReducerUnknown) => void;\n remove: (key: string) => void;\n subscribe: (\n event: K,\n callback: ReducerManagerEventMap[K],\n ) => void;\n unsubscribe: (\n event: K,\n callback: ReducerManagerEventMap[K],\n ) => void;\n}\n\nexport interface IStoresData {\n store: EnhancedStore;\n dispatch: (action: T) => T;\n}\n\nexport interface IStoresRenderer {\n render: (props: { children?: React.ReactNode }) => JSX.Element;\n}\n\nconst TYPES = {\n IStoreMiddlewares: Symbol.for('IStoreMiddlewares'),\n IStoresReducer: Symbol.for('IStoresReducer'),\n IStoresData: Symbol.for('IStoresData'),\n IStoresRenderer: Symbol.for('IStoresRenderer'),\n};\n\nexport function injectStoresMiddleware(\n container: IContainer = injectContainer(),\n): IStoreMiddlewares {\n return container.get(TYPES.IStoreMiddlewares);\n}\n\nexport function bindStoresMiddleware(\n val: IStoreMiddlewares,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IStoreMiddlewares, val);\n}\n\nexport function injectStoresData(container: IContainer = injectContainer()): IStoresData {\n return container.get(TYPES.IStoresData);\n}\n\nexport function bindStoresReducer(\n val: IReducerRegister,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IStoresReducer, val);\n}\n\nexport function injectStoresReducer(container: IContainer = injectContainer()): IReducerRegister {\n return container.get(TYPES.IStoresReducer);\n}\n\nexport function bindStoresData(val: IStoresData, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IStoresData, val);\n}\n\nexport function injectStoresRenderer(container: IContainer = injectContainer()): IStoresRenderer {\n return container.get(TYPES.IStoresRenderer);\n}\n\nexport function bindStoresRenderer(\n val: IStoresRenderer,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IStoresRenderer, val);\n}\n","import { IContainer, injectContainer } from '../../interface/container';\nimport type { IWorkspaceDBInstantiator } from './instantiator';\n\nconst TYPES = {\n IWorkspaceDBInstantiate: Symbol.for('IWorkspaceDBInstantiate'),\n};\n\nexport function injectWorkspaceDB(\n container: IContainer = injectContainer(),\n): IWorkspaceDBInstantiator {\n return container.get(TYPES.IWorkspaceDBInstantiate);\n}\n\nexport function bindWorkspaceDB(\n val: IWorkspaceDBInstantiator,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IWorkspaceDBInstantiate, val);\n}\n\nexport function unbindWorkspaceDB(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IWorkspaceDBInstantiate);\n}\n","import type { IJobs } from './jobs';\nimport { IContainer, injectContainer } from '../../interface/container';\n\nconst TYPES = {\n IJobs: Symbol.for('IJobs'),\n};\n\nexport function injectJobs(container: IContainer = injectContainer()): IJobs {\n return container.get(TYPES.IJobs);\n}\n\nexport function bindJobs(val: IJobs, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IJobs, val);\n}\n\nexport function unbindJobs(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IJobs);\n}\n","import { IContainer, injectContainer } from '../../interface/container';\nimport type { IModelInstantiator } from './instantiator';\n\nconst TYPES = {\n IModelInstantiator: Symbol.for('IModelInstantiator'),\n};\n\nexport function injectModelInstantiator(\n container: IContainer = injectContainer(),\n): IModelInstantiator {\n return container.get(TYPES.IModelInstantiator);\n}\n\nexport function bindModelInstantiator(\n val: IModelInstantiator,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IModelInstantiator, val);\n}\n\nexport function unbindModelInstantiator(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IModelInstantiator);\n}\n","function serialize(obj: Record): string {\n const pairings: Array = [];\n\n for (const key of Object.keys(obj)) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n pairings.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n }\n\n const body = pairings.join('&');\n\n return body;\n}\n\nconst module = {\n serialize,\n};\n\nexport default module;\n","import type { IFetcher, IFetchRequest, ILog, Method } from '../../interface/util';\nimport type { IAuthenticateResponse } from '../interface/auth';\nimport form from '../private/form';\n\nfunction _isIAuthenticateResponse(object: unknown): object is IAuthenticateResponse {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record?.access_token) &&\n !isNullOrUndefined(record?.userName) &&\n !isNullOrUndefined(record?.token_type) &&\n !isNullOrUndefined(record?.expires_in) &&\n !isNullOrUndefined(record?.refresh_token) &&\n !isNullOrUndefined(record?.['.expires']) &&\n !isNullOrUndefined(record?.['.issued'])\n );\n}\n\nfunction _request(\n apiUrl: string,\n apiExtension: string,\n clientId: string,\n clientSecret: string,\n grantType: string,\n username: string,\n password: string,\n): IFetchRequest {\n const authParams = {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: grantType,\n username,\n password,\n };\n\n const req: IFetchRequest = {\n url: apiUrl + apiExtension,\n method: 'POST' as Method,\n body: form.serialize(authParams),\n headers: [{ name: 'Content-Type', value: 'application/x-www-form-urlencoded' }],\n };\n\n return req;\n}\n\nfunction _authenticate(\n fetcher: IFetcher,\n logger: ILog,\n authParams: {\n apiUrl: string;\n apiExtension: string;\n clientId: string;\n clientSecret: string;\n grantType: string;\n username: string;\n password: string;\n },\n timeout: number = 10 * 1000,\n): Promise {\n return new Promise(function (resolve, reject) {\n const req = _request(\n authParams.apiUrl,\n authParams.apiExtension,\n authParams.clientId,\n authParams.clientSecret,\n authParams.grantType,\n authParams.username,\n authParams.password,\n );\n\n fetcher(req, timeout)\n .then(function (response) {\n if (response.statusCode === 400) {\n reject(new Error('Invalid credentials, authentication failed'));\n } else if (!response.isStatusOk) {\n reject(new Error(`Authentication failed: ${response.statusCode}`));\n } else if (!_isIAuthenticateResponse(response.payload)) {\n reject(new Error('Missing access_token in auth response'));\n } else {\n resolve(response.payload);\n }\n })\n .catch(function (error: Error) {\n logger.error(`Authentication request failed: ${JSON.stringify(error)}`);\n reject(error);\n });\n });\n}\n\nexport interface IAuthParams {\n apiUrl: string;\n apiExtension: string;\n clientId: string;\n clientSecret: string;\n grantType: string;\n username: string;\n password: string;\n}\n\nfunction authenticate(\n fetcher: Promise,\n logger: ILog,\n authParams: Array,\n timeout: number = 10 * 1000,\n): Promise {\n return new Promise(async function (resolve, reject) {\n const errors: Array = [];\n\n const fetchLoader = await fetcher;\n\n logger.assert(\n authParams.length > 0,\n `Failed to find authentication params for apiservice:auth`,\n );\n\n for (const auth of authParams) {\n logger.assert(auth.clientId, 'Bad clientId ' + JSON.stringify(auth));\n\n try {\n const response = await _authenticate(fetchLoader, logger, auth);\n resolve(response);\n return;\n } catch (error) {\n errors.push(error);\n }\n }\n\n reject(\n `Failed to authenticate: ${JSON.stringify(authParams)}, error:${JSON.stringify(\n errors,\n )}`,\n );\n });\n}\n\nexport default authenticate;\n","import { IConfigAPI_Auth, injectConfigAPI } from '../../interface/config';\nimport type { IContainer } from '../../interface/container';\nimport { injectFetch, injectLog } from '../../interface/util';\nimport type { IAuthAPI } from '../interface/auth';\nimport authImpl from './auth';\n\ntype AuthRequired = Required;\n\nfunction _isApiAuth(object: Partial | undefined): object is AuthRequired {\n return object &&\n object?.clientId &&\n object?.clientSecret &&\n object?.grantType &&\n object?.password &&\n object?.username\n ? true\n : false;\n}\n\nfunction auth(container: IContainer): IAuthAPI {\n const fetcher = injectFetch(container);\n const logger = injectLog(container);\n const configAPI = injectConfigAPI(container);\n\n const authParams = configAPI\n .filter(config => _isApiAuth(config.auth) && config.url && config.extension?.auth)\n .map(config => ({\n ...(config.auth as Required) /* type checked above */,\n apiUrl: config.url ?? '',\n apiExtension: config.extension?.auth ?? '',\n }));\n\n logger.assert(\n authParams.length > 0,\n `Failed to find authentication params for apiservice:auth`,\n );\n\n const auth: IAuthAPI = {\n authenticate: (apiURL: string, username: string, password: string, timeout?: number) =>\n authImpl(fetcher, logger, authParams, timeout),\n };\n\n return auth;\n}\n\nexport default auth;\n","import { IContainer } from '../../interface/container';\nimport { IFetcher, IFetchRequest, injectFetch, Method, ResponseTypes } from '../../interface/util';\nimport { IConfigAPI, injectConfigAPI } from '../../interface/config';\nimport { IMediumDiffRequestStatus, IMediaDiffResponse } from '../interface';\nimport { IMediaDiffAPI } from '../interface/mediaDiff';\n\ninterface IMediaDiffRequest {\n requestDto: {\n siteId: number;\n hash: string;\n requests: Array<{ id: string; mediumHash: string }>;\n };\n}\n\nfunction _request(params: {\n apiHref: string;\n authToken: string;\n siteId: number;\n siteHash?: string;\n existingMedia: Array;\n}): IFetchRequest {\n const mapMediumToBodyRequest = (\n medium: IMediumDiffRequestStatus,\n ): { id: string; mediumHash: string } => ({\n id: medium.id,\n mediumHash: medium.mediumHash,\n });\n\n const body: IMediaDiffRequest = {\n requestDto: {\n siteId: params.siteId,\n hash: params.siteHash ?? '',\n requests: (params.existingMedia ?? []).map(medium => mapMediumToBodyRequest(medium)),\n },\n };\n\n const req: IFetchRequest = {\n url: params.apiHref,\n method: 'POST',\n headers: [\n { name: 'Authorization', value: `Bearer ${params.authToken}` },\n { name: 'Content-Type', value: 'application/json' },\n ],\n body: JSON.stringify(body),\n expectedResponseType: 'json' as ResponseTypes,\n };\n\n return req;\n}\n\nfunction _isMediaDiffResponse(object: unknown): object is IMediaDiffResponse {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return !isNullOrUndefined(record.value) && Array.isArray(record.value);\n}\n\nfunction getMediaDiff(\n fetcher: Promise,\n configs: Array>,\n authToken: string,\n siteId: number,\n siteHash = '',\n existingMedia: Array = [],\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const requester = await fetcher;\n\n const apiHrefs = configs\n .filter(config => config.url && config.extension?.mediaDiff)\n .map(config => `${config.url}${config.extension?.mediaDiff}`);\n\n for (const apiHref of apiHrefs) {\n const req = _request({\n apiHref,\n authToken,\n siteId,\n siteHash,\n existingMedia,\n });\n\n const response = await requester(req).catch(error => {\n console.error(\n `Failed to fetch site data url:${apiHref}, error:${JSON.stringify(error)}`,\n );\n return null;\n });\n\n if (response && response.payload && _isMediaDiffResponse(response.payload)) {\n resolve(response.payload);\n return;\n }\n }\n\n reject(`Failed to resolve mediaDiff from hrefs: ${apiHrefs}`);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default getMediaDiff;\n","import type { IContainer } from '../../interface/container';\nimport { injectFetch } from '../../interface/util';\nimport { injectConfigAPI } from '../../interface/config';\nimport type { IMediumDiffRequestStatus } from '../interface';\nimport type { IMediaDiffAPI } from '../interface/mediaDiff';\nimport getMediaDiff from './mediaDiff';\n\nfunction mediaDiff(container: IContainer): IMediaDiffAPI {\n const fetcher = injectFetch(container);\n const config = injectConfigAPI(container);\n\n const module: IMediaDiffAPI = {\n getMediaDiff: (\n authToken: string,\n siteId: number,\n siteHash = '',\n existingMedia: Array = [],\n ) => getMediaDiff(fetcher, config, authToken, siteId, siteHash ?? '', existingMedia ?? []),\n };\n\n return module;\n}\n\nexport default mediaDiff;\n","import type { IConfigAPI } from '../../interface/config';\nimport type { IProgressPromise, IProgressPromiseGenerator } from '../../interface/promise';\nimport type { IFetcher } from '../../interface/util';\nimport type { IMediaURLResolverParameters, MediaBinaryStorageTypeMap } from '../interface/media';\nimport mediaDownload from './media.download';\nimport mediaUtil from './media.util';\n\nconst _hasHttpPrefix = (url?: string) => url?.startsWith('http://') || url?.startsWith('https://');\n\nfunction _requestFromConfig(config: Partial, mediaId: string): string | undefined {\n if (!config.extension?.media) {\n return undefined;\n }\n\n const templatedPath = _hasHttpPrefix(config.extension?.media)\n ? config.extension?.media\n : `${config.url}${config.extension?.media}`;\n\n const resolvedPath = templatedPath ? templatedPath.replace('%MEDIAID%', mediaId) : undefined;\n\n return _hasHttpPrefix(resolvedPath) ? resolvedPath : undefined;\n}\n\nfunction _requestFromConfigWithToken(\n config: Partial,\n mediaId: string,\n accessToken: string,\n): string | undefined {\n if (!config.extension?.mediaWithAccessToken) {\n return undefined;\n }\n\n const templatedPath = _hasHttpPrefix(config.extension?.mediaWithAccessToken ?? '')\n ? config.extension?.mediaWithAccessToken\n : `${config.url ?? ''}${config.extension?.mediaWithAccessToken}`;\n\n const resolvedPath = templatedPath\n ? templatedPath.replace('%MEDIAID%', mediaId).replace('%ACCESS_TOKEN%', accessToken)\n : undefined;\n\n return _hasHttpPrefix(resolvedPath) ? resolvedPath : undefined;\n}\n\nfunction canResolveMedium(mediaId: string): Promise {\n /* No way to query for this, just assume we can */\n return Promise.resolve(true);\n}\n\nfunction requestURL(\n configs: Array>,\n mediaId: string,\n parameters: IMediaURLResolverParameters = {},\n): Array {\n let resolver = (mediaId: string, config: Partial) =>\n _requestFromConfig(config, mediaId);\n\n const authToken = parameters.accessToken;\n\n if (authToken) {\n resolver = (mediaId: string, config: Partial) =>\n _requestFromConfigWithToken(config, mediaId, authToken);\n }\n\n const urls = configs\n .map(config => resolver(mediaId, config))\n .filter(config => config) as Array;\n\n return urls;\n}\n\nfunction getMedia<\n K extends keyof MediaBinaryStorageTypeMap,\n V extends MediaBinaryStorageTypeMap[K],\n>(\n promiser: IProgressPromiseGenerator,\n config: Array>,\n fetcher: Promise,\n type: K,\n mediaId: string,\n parameters: IMediaURLResolverParameters,\n): IProgressPromise {\n const urls = requestURL(config, mediaId, parameters);\n const requests = urls.map(url => mediaUtil.requestForURL(url, type));\n\n return mediaDownload.download(promiser, fetcher, requests, type);\n}\n\nconst module = {\n canResolveMedium,\n getMedia,\n requestURL,\n};\n\nexport default module;\n","import { MediaBinaryStorageTypeMap } from '../../controller/interface/media';\nimport { injectConfigAPI } from '../../interface/config';\nimport type { IContainer } from '../../interface/container';\nimport { injectProgressPromise, IProgressPromise } from '../../interface/promise';\nimport { injectFetch } from '../../interface/util';\nimport type { IMediaAPI, IMediaURLResolverParameters } from '../interface/media';\nimport mediaImpl from './mediaVTS';\n\nfunction media(container: IContainer) {\n const promiser = injectProgressPromise(container);\n const fetcher = injectFetch(container);\n const config = injectConfigAPI(container);\n\n const module: IMediaAPI = {\n getMedia: <\n T extends keyof MediaBinaryStorageTypeMap,\n U extends MediaBinaryStorageTypeMap[T],\n >(\n type: T,\n mediaId: string,\n parameters?: IMediaURLResolverParameters,\n ) =>\n mediaImpl.getMedia(\n promiser,\n config,\n fetcher,\n type,\n mediaId,\n parameters ?? {},\n ) as IProgressPromise,\n\n /* IMediaURLResolver */\n canResolveMedium: (mediaId: string) => mediaImpl.canResolveMedium(mediaId),\n\n requestURL: (mediaId: string, parameters: IMediaURLResolverParameters = {}) =>\n mediaImpl.requestURL(config, mediaId, parameters),\n };\n\n return module;\n}\n\nexport default media;\n","import type { IZip, IFetcher, IFetchRequest, Method, IFetchResponse } from '../../interface/util';\nimport type { IProgressPromise, IProgressPromiseGenerator } from '../../interface/promise';\nimport type { IConfigAPI } from '../../interface/config';\nimport type { ISiteData } from '../interface/siteData';\nimport { arrayBuffer } from '@monofe/util';\n\nfunction _isBlob(object: unknown): object is Blob {\n try {\n return (\n object instanceof Blob ||\n ['[object Blob]', '[object File]'].indexOf(Object.prototype.toString.call(object)) !==\n -1\n );\n } catch (error) {\n /* Blob typings missing (running on NodeJS) */\n return false;\n }\n}\n\nfunction _blobToString(blob: Blob): Promise {\n return blob.text();\n}\n\nfunction _request(apiHref: string, authToken: string, hash: string): IFetchRequest {\n const isRunningOnNodeJS = typeof window === 'undefined';\n\n const req: IFetchRequest = {\n url: apiHref,\n method: 'POST' as Method,\n headers: [\n { name: 'Authorization', value: `Bearer ${authToken}` },\n { name: 'Content-Type', value: 'application/json' },\n ],\n body: JSON.stringify({ hash: hash }),\n expectedResponseType: isRunningOnNodeJS ? 'arraybuffer' : 'blob',\n };\n\n return req;\n}\n\nfunction _downloadSiteData(\n fetcher: IFetcher,\n promiser: IProgressPromiseGenerator,\n apiHref: string,\n authToken: string,\n hash = '',\n timeout = 20 * 10000,\n): IProgressPromise {\n return promiser.promise(function (resolve, reject, progress) {\n const req = _request(apiHref, authToken, hash);\n const promise = fetcher(req, timeout);\n promise.onProgress(function (data) {\n progress(data);\n });\n\n promise\n .then(function (response: IFetchResponse) {\n const payload = response.payload;\n\n if (!payload) {\n reject('Missing payload from response');\n return;\n }\n\n resolve(payload);\n })\n .catch(function (err) {\n reject(err);\n });\n });\n}\n\nfunction _isISiteData(object: unknown): object is ISiteData {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record.currentHash) &&\n !isNullOrUndefined(record.previousHash) &&\n !isNullOrUndefined(record.patch)\n );\n}\n\nconst PATCH_DATA_FILE_NAME = 'data.json';\n\nfunction _unzipSiteData(\n promiser: IProgressPromiseGenerator,\n zip: IZip,\n srcData: Blob | ArrayBuffer,\n): IProgressPromise {\n return promiser.promise(function (resolve, reject, progress) {\n zip.unzipFile(srcData, PATCH_DATA_FILE_NAME)\n .then(function (dataFile) {\n progress(0.9);\n\n if (_isBlob(dataFile)) {\n return _blobToString(dataFile);\n } else if (arrayBuffer.isArrayBuffer(dataFile)) {\n return arrayBuffer.arrayBufferToString(dataFile);\n } else {\n throw new Error(`unknown zip-file response type: ${dataFile}`);\n }\n })\n .then(dataStr => {\n const jsonData = JSON.parse(dataStr);\n\n if (!_isISiteData(jsonData)) {\n reject(new Error('Response does not match expected ISiteData type'));\n } else {\n resolve(jsonData);\n }\n })\n .catch(function (err) {\n reject(err);\n });\n });\n}\n\nfunction getSiteData(\n promiser: IProgressPromiseGenerator,\n fetcher: Promise,\n zipper: Promise,\n configs: Array>,\n authToken: string,\n hash = '',\n timeout = 20 * 10000,\n): IProgressPromise {\n return promiser.promise(async function (resolve, reject, progress) {\n const fetchGet = await fetcher;\n const zip = await zipper;\n\n const apiHrefs = configs\n .filter(config => config.url && config.extension?.siteData)\n .map(config => `${config.url}${config.extension?.siteData}`);\n\n let siteDataBinary: ArrayBuffer | Blob | null = null;\n\n for (const apiHref of apiHrefs) {\n const promise = _downloadSiteData(\n fetchGet,\n promiser,\n apiHref,\n authToken,\n hash,\n timeout,\n );\n\n promise.onProgress(function (data) {\n progress(data / 2); /* 2 Jobs */\n });\n\n siteDataBinary = await promise.catch(error => {\n console.error(\n `Failed to fetch site data url:${apiHref}, error:${JSON.stringify(error)}`,\n );\n return null;\n });\n\n if (siteDataBinary) {\n break;\n }\n }\n\n if (siteDataBinary) {\n const srcData = await _unzipSiteData(promiser, zip, siteDataBinary);\n resolve(srcData);\n } else {\n reject(`Unable to fetch site data from hrefs: ${JSON.stringify(apiHrefs)}`);\n }\n });\n}\n\nexport default getSiteData;\n","import type { IContainer } from '../../interface/container';\nimport { injectFetch, injectZip } from '../../interface/util';\nimport { injectProgressPromise } from '../../interface/promise';\nimport { ISiteDataAPI } from '../interface/siteData';\nimport { injectConfigAPI } from '../../interface/config';\nimport getSiteData from './siteData';\n\nfunction siteData(container: IContainer): ISiteDataAPI {\n const promiser = injectProgressPromise(container);\n const fetcher = injectFetch(container);\n const zip = injectZip(container);\n const config = injectConfigAPI(container);\n\n const module: ISiteDataAPI = {\n getSiteData: (apiURL: string, authToken: string, hash = '', timeout = 20 * 1000) =>\n getSiteData(promiser, fetcher, zip, config, authToken, hash, timeout),\n };\n\n return module;\n}\n\nexport default siteData;\n","import { IContainer } from '../../interface/container';\nimport authApiInst from '../impl/auth.bind';\nimport mediaDiffApiInst from '../impl/mediaDiff.bind';\nimport mediaApiInst from '../impl/mediaVTS.bind';\nimport siteDataApiInst from '../impl/siteData.bind';\nimport {\n bindAuthAPI,\n bindMediaAPI,\n bindMediaDiffAPI,\n bindSiteDataAPI,\n injectAuthAPI,\n injectMediaAPI,\n injectMediaDiffAPI,\n injectSiteDataAPI,\n unbindAuthAPI,\n unbindMediaAPI,\n unbindMediaDiffAPI,\n unbindSiteDataAPI,\n} from '../interface/bind';\n\nfunction bind(container: IContainer) {\n /* find existing mediaAPIs & append */\n const mediaAPIs = injectMediaAPI(container) ?? [];\n bindMediaAPI([...mediaAPIs, mediaApiInst(container)], container);\n\n bindAuthAPI(authApiInst(container), container);\n bindMediaDiffAPI(mediaDiffApiInst(container), container);\n bindSiteDataAPI(siteDataApiInst(container), container);\n}\n\nfunction unbind(container: IContainer) {\n unbindMediaAPI(container);\n unbindAuthAPI(container);\n unbindMediaDiffAPI(container);\n unbindSiteDataAPI(container);\n}\n\nfunction expose(srcContainer: IContainer, dstContainer: IContainer) {\n bindMediaAPI(injectMediaAPI(srcContainer), dstContainer);\n bindAuthAPI(injectAuthAPI(srcContainer), dstContainer);\n bindMediaDiffAPI(injectMediaDiffAPI(srcContainer), dstContainer);\n bindSiteDataAPI(injectSiteDataAPI(srcContainer), dstContainer);\n}\n\nconst module = {\n bind,\n unbind,\n expose,\n};\n\nexport default module;\n","import type { IAuthAPI } from '../../api/interface';\nimport {\n IAuthenticationManager,\n IAuthManagerArguments,\n IAuthManagerStatus,\n} from '../interface/auth';\n\ninterface IAuthManagerPrv extends IAuthenticationManager {\n pendingRenew: Promise | null;\n}\n\nconst TIME_REFRESH_THRESHOLD_MS = 30 * 1000; /* 30s */\n\ninterface IAuthManagerSaveState {\n accessToken: string;\n expiry: number;\n apiUrl: string;\n apiExtension: string;\n clientId: string;\n clientSecret: string;\n grantType: string;\n username: string;\n password: string;\n}\n\nfunction _open(authAPI: IAuthAPI, initState: IAuthManagerSaveState): IAuthenticationManager {\n const manager: IAuthManagerPrv = {\n pendingRenew: null,\n\n accessToken: initState.accessToken,\n expiry: new Date(initState.expiry * 1000),\n\n apiUrl: initState.apiUrl,\n apiExtension: initState.apiExtension,\n clientId: initState.clientId,\n clientSecret: initState.clientSecret,\n grantType: initState.grantType,\n username: initState.username,\n password: initState.password,\n\n status: function (this: IAuthManagerPrv): IAuthManagerStatus {\n if (this.accessToken.length <= 1) {\n return 'Unset';\n }\n\n if (this.hasExpired()) {\n return 'Expired';\n }\n\n return 'Authorized';\n },\n\n hasExpired: function (this: IAuthManagerPrv): boolean {\n const now = new Date().getTime();\n const threshold =\n now - TIME_REFRESH_THRESHOLD_MS; /* if we are within 30s, get a new token */\n const expiry = this.expiry.getTime();\n const hasExpired = expiry < threshold;\n return hasExpired;\n },\n\n renew: function (this: IAuthManagerPrv): Promise {\n if (!manager.hasExpired()) {\n return Promise.resolve(manager.accessToken);\n }\n\n if (!manager.pendingRenew) {\n manager.pendingRenew = new Promise(async (resolve, reject) => {\n authAPI\n .authenticate(manager.apiUrl, manager.username, manager.password)\n .then(authResponse => {\n manager.accessToken = authResponse.access_token;\n this.expiry = new Date(\n new Date().getTime() + authResponse.expires_in * 1000,\n );\n this.pendingRenew = null;\n resolve(authResponse.access_token);\n })\n .catch(error =>\n reject(\n `Authentication failed: ${JSON.stringify(error).substring(0, 30)}`,\n ),\n );\n });\n }\n\n return manager.pendingRenew;\n },\n\n serialize: function (this: IAuthManagerPrv): string {\n const obj: IAuthManagerSaveState = {\n accessToken: this.accessToken,\n expiry: this.expiry.getSeconds(),\n apiUrl: this.apiUrl,\n apiExtension: this.apiExtension,\n clientId: this.clientId,\n clientSecret: this.clientSecret,\n grantType: this.grantType,\n username: this.username,\n password: this.password,\n };\n\n return JSON.stringify(obj);\n },\n };\n\n return manager as IAuthenticationManager;\n}\n\nfunction open(authAPI: IAuthAPI, args: IAuthManagerArguments): IAuthenticationManager {\n const state: IAuthManagerSaveState = {\n /* make sure onCreation #hasExpired() returns true */\n expiry: new Date().getSeconds() - TIME_REFRESH_THRESHOLD_MS - 1,\n accessToken: '',\n ...args,\n };\n\n return _open(authAPI, state);\n}\n\nfunction expand(authAPI: IAuthAPI, initString: string): IAuthenticationManager {\n const initState: IAuthManagerSaveState = initString.length > 2 ? JSON.parse(initString) : {};\n return _open(authAPI, initState);\n}\n\nconst module = {\n open,\n expand,\n};\n\nexport default module;\n","import { injectAuthAPI } from '../../api/interface';\nimport type { IContainer } from '../../interface/container';\nimport type { IAuthManagerArguments, IAuthManagerInstantiator } from '../interface';\nimport authImpl from './auth';\n\nfunction bind(container: IContainer): IAuthManagerInstantiator {\n const authAPI = injectAuthAPI(container);\n\n return {\n open: (args: IAuthManagerArguments) => authImpl.open(authAPI, args),\n expand: (data: string) => authImpl.expand(authAPI, data),\n };\n}\n\nexport default bind;\n","import type { IMediaAPI } from '../../api/interface';\nimport type { IWorkspaceDB } from '../../db/interface';\nimport type { IMediaCacheController } from '../../util/interface';\nimport type { IAuthenticationManager } from '../interface/auth';\nimport type { MediaBinaryStorageTypeMap } from '../interface/media';\n\nfunction downloadToBinary<\n T extends keyof MediaBinaryStorageTypeMap,\n U extends MediaBinaryStorageTypeMap[T],\n>(\n database: IWorkspaceDB,\n auth: IAuthenticationManager,\n cacheController: IMediaCacheController,\n mediaAPIs: Array,\n mediaId: string,\n cacheOnly: boolean,\n type?: T,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n await database.open();\n\n /* do this first, as if it doesn't exist, lets crash out early before network requests */\n const medium = await database.get('IMediumDto', mediaId);\n let data: U | undefined = (await cacheController\n .cachedResponse(mediaId, type ?? 'Blob')\n .catch(error => undefined)) as U | undefined;\n\n if (!cacheOnly && !data) {\n const token = auth.hasExpired() ? await auth.renew() : auth.accessToken;\n\n for (const api of mediaAPIs) {\n const mediaBinary = await api\n .getMedia(type ?? 'Blob', mediaId, { accessToken: token })\n .catch(error => undefined);\n\n if (mediaBinary === undefined) {\n /* failed, try next api */\n continue;\n } else if (type === 'Blob') {\n data = mediaBinary as U;\n } else if (type === 'ArrayBuffer') {\n data = mediaBinary as U;\n } else {\n /* type === 'none' */\n }\n }\n }\n\n database.close();\n\n if (data) {\n if (type === 'Blob') {\n /* make sure to specify the mime-type in the blob, otherwise media such as mp3/mp4's won't play on Safari */\n data = new Blob([data as Blob], { type: medium.mimeType }) as U;\n }\n\n resolve(data);\n } else {\n reject(`Unable to find data for mediaId:${mediaId}`);\n }\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction downloadToBinaries<\n T extends keyof MediaBinaryStorageTypeMap,\n U extends MediaBinaryStorageTypeMap[T],\n>(\n database: IWorkspaceDB,\n auth: IAuthenticationManager,\n cacheController: IMediaCacheController,\n mediaAPI: Array,\n mediaIds: Array,\n cacheOnly: boolean,\n type?: T,\n): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n const promises = mediaIds.map(id =>\n downloadToBinary(\n database,\n auth,\n cacheController,\n mediaAPI,\n id,\n cacheOnly,\n type,\n ),\n );\n\n const results = await Promise.all(promises);\n\n resolve(results);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction downloadToUrl(\n database: IWorkspaceDB,\n auth: IAuthenticationManager,\n cacheController: IMediaCacheController,\n mediaAPI: Array,\n mediaId: string,\n cacheOnly: boolean,\n): Promise {\n return new Promise(function (resolve, reject) {\n downloadToBinary(database, auth, cacheController, mediaAPI, mediaId, cacheOnly, 'Blob')\n .then(blob => {\n const url = URL.createObjectURL(blob);\n resolve(url);\n })\n .catch(error => reject(error));\n });\n}\n\nfunction downloadToUrls(\n database: IWorkspaceDB,\n auth: IAuthenticationManager,\n cacheController: IMediaCacheController,\n mediaAPI: Array,\n mediaIds: Array,\n cacheOnly: boolean,\n): Promise> {\n return new Promise(function (resolve, reject) {\n downloadToBinaries(database, auth, cacheController, mediaAPI, mediaIds, cacheOnly, 'Blob')\n .then(blobs => {\n const urls = blobs.map(blob => URL.createObjectURL(blob));\n resolve(urls);\n })\n .catch(error => reject(error));\n });\n}\n\nconst module = {\n downloadToUrl,\n downloadToUrls,\n downloadToBinary,\n downloadToBinaries,\n};\n\nexport default module;\n","import type { IMediumDto, IStyleDto } from '../../model/interface';\nimport type { IWorkspaceDB } from '../../db/interface';\n\nfunction mediaForStyling(db: IWorkspaceDB, style: IStyleDto): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n const shouldOpenClose = !db.isOpen();\n\n if (shouldOpenClose) {\n await db.open();\n }\n\n const queryIds: Array = [\n style.backgroundImageMediumId,\n style.foregroundImageMediumId,\n style.menuImageMediumId,\n ].filter(mediumId => mediumId && mediumId.length > 1); /* filter falsy values */\n\n const media = await Promise.all(\n queryIds.map(mediumId => db.get('IMediumDto', mediumId)),\n );\n\n if (shouldOpenClose) {\n db.close();\n }\n\n resolve(media);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n mediaForStyling,\n};\n\nexport default module;\n","import { IWorkspaceDB } from '../../db/interface';\nimport type {\n ILanguageDto,\n IMediumDto,\n ISiteObjectDto,\n ISiteObjectTranslationDto,\n ITourDto,\n} from '../../model';\nimport mediaUtil from './media.util';\n\nfunction mediaForSiteObject(\n db: IWorkspaceDB,\n siteObject: ISiteObjectDto,\n language: ILanguageDto,\n): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n const shouldOpenClose = !db.isOpen();\n\n if (shouldOpenClose) {\n await db.open();\n }\n\n const allTranslations = await siteObject.translations(db);\n /* if only 1 translation provided assume universal(no-translation-needed) & include */\n const matchTranslations =\n allTranslations.length > 1\n ? allTranslations.filter(sot => sot.languageId === language.id)\n : allTranslations;\n\n const downloadList = matchTranslations\n .map(sot => sot.mediumId)\n .filter(mediumId => mediumId && mediumId.length > 1);\n\n const media = await Promise.all(\n downloadList.map(mediumId => db.get('IMediumDto', mediumId)),\n );\n\n if (siteObject.styleId) {\n const style = await db.get('IStyleDto', siteObject.styleId);\n media.push(...(await mediaUtil.mediaForStyling(db, style)));\n }\n\n const localMediaIds = [\n siteObject.foregroundImageMediumId,\n siteObject.backgroundImageMediumId,\n siteObject.menuImageMediumId,\n ];\n\n const allLocalMedia = await Promise.all(\n localMediaIds.filter(id => id).map(id => db.get('IMediumDto', id)),\n );\n\n media.push(...allLocalMedia);\n\n if (shouldOpenClose) {\n db.close();\n }\n\n resolve(media);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction mediaUsedForSiteObjectTranslationsInLanguage(\n db: IWorkspaceDB,\n allSiteObjectTranslations: Array,\n language: ILanguageDto,\n): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n const shouldOpenClose = !db.isOpen();\n\n if (shouldOpenClose) {\n await db.open();\n }\n\n const allMediaWithTranslations = allSiteObjectTranslations.filter(\n sot => sot.mediumId,\n ); /* if the mediumId is blank, ignore */\n const matchMediaTranslations = await Promise.all(\n allMediaWithTranslations\n .filter(sot => sot.languageId === language.id)\n .map(sot => db.get('IMediumDto', sot.mediumId)),\n ); /* filter all SOTs with valid mediumId, where language matches & pull sot.mediumId from db */\n\n /* any media without an associated translation, treat as if it is universal (needed on all languages) & download regardless */\n const allMedia = await db.all('IMediumDto');\n const allMediaWithTranslationsIds = allMediaWithTranslations.map(m => m.mediumId);\n const mediaUniversal = allMedia.filter(\n medium => !allMediaWithTranslationsIds.includes(medium.id),\n );\n\n if (shouldOpenClose) {\n db.close();\n }\n\n /* generate Mapping, so as to remove any duplicates */\n const downloadMedia: Record = {};\n\n mediaUniversal.forEach(medium => (downloadMedia[medium.id] = medium));\n matchMediaTranslations.forEach(medium => (downloadMedia[medium.id] = medium));\n\n const downloadList = Object.values(downloadMedia);\n\n resolve(downloadList);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction mediaUsedForLanguage(\n db: IWorkspaceDB,\n language: ILanguageDto,\n): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n const shouldOpenClose = !db.isOpen();\n\n if (shouldOpenClose) {\n await db.open();\n }\n\n /* get a list of all media associated with SiteObjectTranslations & filter these by #language */\n const allSiteObjectTranslations = await db.all('ISiteObjectTranslationDto');\n const downloadList = mediaUsedForSiteObjectTranslationsInLanguage(\n db,\n allSiteObjectTranslations,\n language,\n );\n\n if (shouldOpenClose) {\n db.close();\n }\n\n resolve(downloadList);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction _siteObjectsForTour(db: IWorkspaceDB, tour: ITourDto): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n const shouldOpenClose = !db.isOpen();\n\n if (shouldOpenClose) {\n await db.open();\n }\n\n const tourRelatedSiteObjects = await db.all('ITourRelatedSiteObjectDto');\n const siteObjectIds = tourRelatedSiteObjects\n .filter(x => x.tourId === tour.id)\n .map(x => x.siteObjectId);\n const siteObjects = await Promise.all(\n siteObjectIds.map(id => db.get('ISiteObjectDto', id)),\n );\n\n if (shouldOpenClose) {\n db.close();\n }\n\n resolve(siteObjects);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction mediaForLanguageWithTour(\n db: IWorkspaceDB,\n language: ILanguageDto,\n tour: ITourDto,\n): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n const shouldOpenClose = !db.isOpen();\n\n if (shouldOpenClose) {\n await db.open();\n }\n\n const mediaList: Array = [];\n\n if (tour.styleId) {\n const tourStyle = await tour.style(db);\n mediaList.push(...(await mediaUtil.mediaForStyling(db, tourStyle)));\n }\n\n const siteObjects = await _siteObjectsForTour(db, tour);\n\n const soMediaList = await Promise.all(\n siteObjects.map(so => mediaForSiteObject(db, so, language)),\n );\n\n soMediaList.forEach(soMedia => mediaList.push(...soMedia));\n\n if (shouldOpenClose) {\n db.close();\n }\n\n resolve(mediaList);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n mediaUsedForLanguage,\n mediaForSiteObject,\n mediaForLanguageWithTour,\n};\n\nexport default module;\n","import type { IMediaAPI } from '../../api/interface';\nimport type { IWorkspaceDB } from '../../db/interface';\nimport type { IFetcher } from '../../interface/util';\nimport type { ILanguageDto, ITourDto } from '../../model';\nimport type { IMediaCacheController } from '../../util/interface';\nimport type { IAuthenticationManager } from '../interface/auth';\nimport type { IMediaManager, MediaBinaryStorageTypeMap } from '../interface/media';\nimport mediaDownload from './media.download';\nimport mediaFilter from './media.filter';\n\ntype IMediaManagerPrv = IMediaManager;\n\nasync function _resolveUrlWithToken(\n db: IWorkspaceDB,\n auth: IAuthenticationManager,\n apis: Array,\n fetcher: Promise,\n cacheController: IMediaCacheController,\n mediaId: string,\n): Promise {\n /* short circuit, if we can just get the asset from cache */\n const isCached = await cacheController.isMediumCached(mediaId);\n\n if (isCached) {\n const url = mediaDownload.downloadToUrl(db, auth, cacheController, apis, mediaId, true);\n return url;\n }\n\n const authToken = await auth.renew();\n\n let url = '';\n\n for (const api of apis) {\n const canResolve = await api.canResolveMedium(mediaId);\n\n if (!canResolve) {\n continue;\n }\n\n const urls = await api.requestURL(mediaId, { accessToken: authToken });\n\n url = urls.filter(url => url.length > 0)[0];\n\n if (url) {\n break;\n }\n }\n\n if (!url) {\n throw new Error(`Unable to resolve mediaId: ${mediaId}`);\n }\n\n return url;\n}\n\nfunction MediaManager(\n db: IWorkspaceDB,\n auth: IAuthenticationManager,\n mediaAPI: () => Array,\n fetcher: Promise,\n cacheController: IMediaCacheController,\n): IMediaManager {\n const manager: IMediaManagerPrv = {\n downloadToURL: (id: string, cacheOnly?: boolean) =>\n mediaDownload.downloadToUrl(\n db,\n auth,\n cacheController,\n mediaAPI(),\n id,\n cacheOnly ?? false,\n ),\n downloadToURLs: (ids: Array, cacheOnly?: boolean) =>\n mediaDownload.downloadToUrls(\n db,\n auth,\n cacheController,\n mediaAPI(),\n ids,\n cacheOnly ?? false,\n ),\n\n downloadToBinary: <\n T extends keyof MediaBinaryStorageTypeMap,\n U extends MediaBinaryStorageTypeMap[T],\n >(\n id: string,\n type?: T,\n cacheOnly?: boolean,\n ) =>\n mediaDownload.downloadToBinary(\n db,\n auth,\n cacheController,\n mediaAPI(),\n id,\n cacheOnly ?? false,\n type,\n ),\n\n downloadToBinaries: <\n T extends keyof MediaBinaryStorageTypeMap,\n U extends MediaBinaryStorageTypeMap[T],\n >(\n ids: Array,\n type?: T,\n cacheOnly?: boolean,\n ) =>\n mediaDownload.downloadToBinaries(\n db,\n auth,\n cacheController,\n mediaAPI(),\n ids,\n cacheOnly ?? false,\n type,\n ),\n\n isMediumCached: async (mediaId: string) => cacheController.isMediumCached(mediaId),\n isAllMediaCached: async (mediaIds: Array) =>\n cacheController.isAllMediaCached(mediaIds),\n removeMediumCache: async (mediaId: string) => cacheController.removeMediumCache(mediaId),\n\n mediaForLanguage: (language: ILanguageDto) =>\n mediaFilter.mediaUsedForLanguage(db, language),\n mediaForLanguageWithTour: (language: ILanguageDto, tour: ITourDto) =>\n mediaFilter.mediaForLanguageWithTour(db, language, tour),\n\n resolveUrlWithToken: (mediaId: string) =>\n _resolveUrlWithToken(db, auth, mediaAPI(), fetcher, cacheController, mediaId),\n };\n\n return manager;\n}\n\nexport default MediaManager;\n","import { injectMediaAPI } from '../../api/interface/bind';\nimport type { IWorkspaceDB } from '../../db/interface';\nimport type { IContainer } from '../../interface/container';\nimport { injectFetch } from '../../interface/util';\nimport { injectMediaCacheController } from '../../util/interface';\nimport type { IAuthenticationManager } from '../interface/auth';\nimport { IMediaManagerInstantiator } from '../interface/media';\nimport MediaManager from './media';\n\nfunction bind(container: IContainer): IMediaManagerInstantiator {\n const mediaAPI = () => injectMediaAPI(container);\n const fetcher = injectFetch(container);\n const cacheController = injectMediaCacheController(container);\n\n return {\n open: (db: IWorkspaceDB, auth: IAuthenticationManager) =>\n MediaManager(db, auth, mediaAPI, fetcher, cacheController),\n };\n}\n\nexport default bind;\n","import { IUserState, IUserStateCallback } from '../interface/userstate';\n\ninterface ICallbackRecord {\n name: string;\n callback: IUserStateCallback;\n}\n\ninterface IUserStatePrv extends IUserState {\n name: string;\n collection: Record;\n callbacks: Record>>;\n}\n\ninterface IUserStateSaveStructure {\n name: string;\n collection: Record;\n}\n\nconst StoreSymbol = Symbol.for('user-state');\n\n/* eslint-disable no-restricted-globals */\nconst globalObject: any = typeof window === 'undefined' ? globalThis : window;\n/* eslint-enable no-restricted-globals */\n\nfunction _saveUserState(key: string, state: IUserStatePrv) {\n const store: Record = globalObject[StoreSymbol] ?? {};\n store[key] = state;\n globalObject[StoreSymbol] = store;\n}\n\nfunction _loadFromStore(name: string): IUserStatePrv | null {\n const store: Record = globalObject[StoreSymbol] ?? {};\n const val = store[name];\n return val;\n}\n\nfunction _GetValue(state: IUserStatePrv, key: string): any | undefined {\n return state.collection[key];\n}\n\nfunction _SetValue(state: IUserStatePrv, key: string, value: any | undefined) {\n if (value === undefined) {\n delete state.collection[key];\n } else {\n state.collection[key] = value;\n }\n _saveUserState(state.name, state);\n}\n\nfunction _init(name: string, startingData: Record): IUserState {\n const val: IUserStatePrv = {\n name,\n collection: startingData,\n callbacks: {},\n getProperty: function (this: IUserStatePrv, key: string) {\n return _GetValue(this, key) as T | undefined;\n },\n getPropertyWithDefault: function (this: IUserStatePrv, key: string, defaultValue: T) {\n return (_GetValue(this, key) as T | undefined) ?? defaultValue;\n },\n setProperty: function (this: IUserStatePrv, key: string, value: any | undefined) {\n _SetValue(this, key, value);\n const cbArray = this.callbacks[key] ?? [];\n\n for (const record of cbArray) {\n record.callback(key, value);\n }\n },\n subscribeChanges: function (\n this: IUserStatePrv,\n key: string,\n callback: IUserStateCallback,\n subscriberKey?: string,\n ): void {\n const arr = this.callbacks[key] ?? [];\n const subKey = subscriberKey ?? `${key}-${arr.length}`;\n\n const record: ICallbackRecord = {\n name: subKey,\n callback,\n };\n\n arr.push(record);\n\n this.callbacks[key] = arr;\n },\n unsubscribeChanges: function (\n this: IUserStatePrv,\n key: string,\n callback: IUserStateCallback,\n ): void {\n const arr = this.callbacks[key] ?? [];\n this.callbacks[key] = arr.filter(record => callback !== record.callback);\n },\n subscriber: function (\n this: IUserStatePrv,\n subscriberKey: string,\n ): IUserStateCallback | undefined {\n for (const key of Object.keys(this.callbacks)) {\n const records = this.callbacks[key];\n const match = records.filter(record => record.name === subscriberKey);\n\n if (match.length > 0) {\n return match[0].callback;\n }\n }\n return undefined;\n },\n flatten: function (this: IUserStatePrv): string {\n const data: IUserStateSaveStructure = {\n name: this.name,\n collection: this.collection,\n };\n return JSON.stringify(data);\n },\n };\n\n return val as IUserState;\n}\n\nfunction load(name: string): IUserState {\n return _loadFromStore(name) ?? _init(name, {});\n}\n\nfunction expand(data: string): IUserState {\n const dataObj: IUserStateSaveStructure = data.length > 2 ? JSON.parse(data) : {};\n return _init(dataObj.name, dataObj.collection);\n}\n\nconst module = {\n load,\n expand,\n};\n\nexport default module;\n","import { IContainer } from '../../interface/container';\nimport { IUserStateInstantiator } from '../interface/userstate';\nimport userState from './userState';\n\nfunction bind(container: IContainer): IUserStateInstantiator {\n return {\n open: (name: string) => userState.load(name),\n expand: (data: string) => userState.expand(data),\n };\n}\n\nexport default bind;\n","import { IContainer, injectContainer } from '../../interface/container';\nimport type { IAuthManagerInstantiator } from './auth';\nimport type { IMediaManagerInstantiator } from './media';\nimport type { IUserStateInstantiator } from './userstate';\n\nconst TYPES = {\n IAuthenticationManager: Symbol.for('IAuthenticationManager'),\n IMediaManager: Symbol.for('IMediaManager'),\n IUserStateManager: Symbol.for('IUserStateManager'),\n};\n\nexport function injectMediaManager(\n container: IContainer = injectContainer(),\n): IMediaManagerInstantiator {\n return container.get(TYPES.IMediaManager);\n}\n\nexport function bindMediaManager(\n val: IMediaManagerInstantiator,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IMediaManager, val);\n}\n\nexport function unbindMediaManager(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IMediaManager);\n}\n\nexport function injectAuthManager(\n container: IContainer = injectContainer(),\n): IAuthManagerInstantiator {\n return container.get(TYPES.IAuthenticationManager);\n}\n\nexport function bindAuthManager(\n val: IAuthManagerInstantiator,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IAuthenticationManager, val);\n}\n\nexport function unbindAuthManager(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IAuthenticationManager);\n}\n\nexport function injectUserStateManager(\n container: IContainer = injectContainer(),\n): IUserStateInstantiator {\n return container.get(TYPES.IUserStateManager);\n}\n\nexport function bindUserStateManager(\n val: IUserStateInstantiator,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IUserStateManager, val);\n}\n\nexport function unbindUserStateManager(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IUserStateManager);\n}\n","import type { IContainer } from '../../interface/container';\nimport authInst from '../impl/auth.bind';\nimport mediaInst from '../impl/media.bind';\nimport userStateInst from '../impl/userState.bind';\nimport {\n bindAuthManager,\n bindMediaManager,\n bindUserStateManager,\n injectAuthManager,\n injectMediaManager,\n injectUserStateManager,\n unbindAuthManager,\n unbindMediaManager,\n unbindUserStateManager,\n} from '../interface/bind';\n\nfunction bind(container: IContainer) {\n bindMediaManager(mediaInst(container), container);\n bindAuthManager(authInst(container), container);\n bindUserStateManager(userStateInst(container), container);\n}\n\nfunction unbind(container: IContainer) {\n unbindMediaManager(container);\n unbindAuthManager(container);\n unbindUserStateManager(container);\n}\n\nfunction expose(srcContainer: IContainer, dstContainer: IContainer) {\n bindMediaManager(injectMediaManager(srcContainer), dstContainer);\n bindAuthManager(injectAuthManager(srcContainer), dstContainer);\n bindUserStateManager(injectUserStateManager(srcContainer), dstContainer);\n}\n\nconst module = {\n bind,\n unbind,\n expose,\n};\n\nexport default module;\n","import { IDB, IDBCreate, IDBOptions, IDBStoreEngine } from './interface';\n\nfunction _openIDB(name: string, options?: Partial): Promise {\n return new Promise(function (resolve, reject) {\n import('./idb')\n .then(idb => idb.default(name, options))\n .then((db: IDB) => resolve(db))\n .catch((err: Error) => reject(err));\n });\n}\n\nfunction _openMem(name: string, options?: Partial): Promise {\n return new Promise(function (resolve, reject) {\n import('./mem')\n .then(mem => mem.default(name, options))\n .then((db: IDB) => resolve(db))\n .catch((err: Error) => reject(err));\n });\n}\n\nconst STORAGEENGINE: Record<\n IDBStoreEngine,\n (name: string, options?: Partial) => Promise\n> = {\n indexeddb: _openIDB,\n memory: _openMem,\n};\n\nconst OPTIONS_DEFAULTS: IDBOptions = {\n version: 1,\n engine: 'memory',\n mappings: {},\n};\n\nlet OPTIONS_OVERRIDES: Partial = {};\n\nfunction _options(options?: Partial): IDBOptions {\n const isRunningOnNodeJS = typeof window === 'undefined';\n\n const optionsDB: IDBOptions = {\n ...OPTIONS_DEFAULTS,\n ...OPTIONS_OVERRIDES,\n ...options,\n engine:\n OPTIONS_OVERRIDES.engine ??\n options?.engine ??\n (isRunningOnNodeJS ? 'memory' : 'indexeddb'),\n };\n\n return optionsDB;\n}\n\nfunction _open(name: string, optionsIn?: Partial) {\n const options = _options(optionsIn);\n\n return STORAGEENGINE[options.engine](name, options);\n}\n\nfunction _expand(data: string, name: string, optionsIn?: Partial): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const options = _options(optionsIn);\n\n const db = await STORAGEENGINE[options.engine](name, options);\n\n await db.apply(data);\n\n resolve(db);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction DB(): IDBCreate {\n return {\n open: _open,\n expand: _expand,\n setDefaults: (options: Partial) => {\n OPTIONS_OVERRIDES = options;\n },\n };\n}\n\nexport default DB;\n","import type { IBackgroundModeDto_Props } from './BackgroundModeDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IBackgroundModeDto_Linkables {}\n\n/** \n * @description all custom properties for\n BeaconSensitivityDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IBackgroundModeDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import IMapProperty from '../private/IMapProperty';\nimport { VALUES_FIELD_NAME } from './BackgroundModeDto.private';\n\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_NAME = ['contain', 'cover'] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n","import type IMapProperty from './IMapProperty';\nimport type BaseDto from '../interface/IBaseDto';\n\ntype ObjectType = Record;\n\nfunction _isEntity(object: unknown): object is BaseDto {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n const record: Partial> = object as Record;\n\n return (\n typeof record.flatten === 'function' &&\n typeof record.apply === 'function' &&\n typeof record.mappings === 'function'\n );\n}\n\nfunction _mapExtToIntProps(\n mappings: Array,\n sourceObject?: Partial,\n): IntProps {\n const props: ObjectType = {};\n\n for (const property of mappings) {\n let newValue = null;\n const externalName = property.externalName ?? property.localName;\n\n if (!sourceObject) {\n /* ignore */\n } else if (property.removeValueOnImport ?? false) {\n /* ignore */\n } else if (property.customImport) {\n newValue = property.customImport(sourceObject);\n } else if (sourceObject[externalName] !== undefined) {\n newValue = sourceObject[externalName] as typeof property.defaultValue;\n } else if (property.defaultValue != null && !newValue) {\n newValue = property.defaultValue as typeof property.defaultValue;\n }\n\n if (newValue !== null && newValue !== undefined) {\n props[property.localName] = newValue;\n }\n }\n\n return props as IntProps;\n}\n\n/** IntProps = internal props, the consumer api, ExtProps = the external workspace api, CustomProps = linkables */\nfunction create<\n IntProps extends ObjectType,\n ExtProps extends ObjectType,\n CustomProps extends Object,\n>(\n mappings: Array,\n customProps: CustomProps,\n sourceObject?: Partial,\n): BaseDto & IntProps & CustomProps {\n const newEntity: BaseDto & IntProps & CustomProps = {\n /* BaseDto fields */\n apply: (data: ObjectType) => {\n return apply(mappings, customProps, newEntity);\n },\n\n flatten: () => {\n return flatten(newEntity, mappings);\n },\n\n mappings: () => {\n return mappings;\n },\n\n /* convert Ext(external field definitions) to local field definitions */\n ..._mapExtToIntProps(mappings, sourceObject),\n\n /* any custom fields passed in (will override above) */\n ...customProps,\n };\n\n return newEntity;\n}\n\n/** take an incoming IMapProperty[] and generate a new object with the sourceObject */\nfunction apply<\n IntProps extends ObjectType,\n ExtProps extends ObjectType,\n CustomProps extends Object,\n>(\n mappings: Array,\n customProps: CustomProps,\n sourceObject: ExtProps | BaseDto,\n): BaseDto & IntProps & CustomProps {\n const newEntity = create(\n mappings,\n customProps,\n /* if we are given an existing entity, flatten it out & apply that */\n _isEntity(sourceObject)\n ? sourceObject.flatten()\n : (sourceObject as ExtProps) ?? {},\n );\n\n return newEntity;\n}\n\nfunction flatten(\n entityIn: BaseDto,\n mappings?: Array,\n): Api {\n const flattenObject: ObjectType = {};\n\n const entityCast: ObjectType = entityIn as ObjectType;\n\n for (const property of mappings ?? []) {\n let value = property.defaultValue;\n const keySave = property.externalName ?? property.localName;\n const keyGet = property.localName;\n\n if (property.removeValueOnExport ?? false) {\n /* ignore */\n continue;\n } else if (property.customExport) {\n value = property.customExport(entityCast);\n } else if (entityCast[keyGet] !== undefined) {\n value = entityCast[keyGet];\n }\n\n flattenObject[keySave] = value;\n }\n\n return flattenObject as Api;\n}\n\nexport default {\n create,\n apply,\n flatten,\n};\n","import type { IBeaconDto_Props } from './BeaconDto.if';\nimport type { IModelSource } from '../interface/db';\n\nimport type ISiteDto from './SiteDto.if';\n\nexport interface IBeaconDto_Linkables {\n site: (db: IModelSource) => Promise;\n}\n\nfunction _site(this: Partial, db: IModelSource): Promise {\n return this.siteId\n ? db.get('ISiteDto', this.siteId)\n : Promise.reject('Missing field beacon.siteId');\n}\n\n/** \n * @description all custom properties for\n BeaconDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IBeaconDto_Linkables {\n return {\n site: _site.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'uuid',\n\n defaultValue: '',\n },\n {\n localName: 'major',\n\n defaultValue: 0,\n },\n {\n localName: 'minor',\n\n defaultValue: 0,\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n];\n\nexport default MAPPINGS;\n","import type { IBeaconSensitivityDto_Props } from './BeaconSensitivityDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IBeaconSensitivityDto_Linkables {}\n\n/** \n * @description all custom properties for\n BeaconSensitivityDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IBeaconSensitivityDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\nimport { VALUES_FIELD_NAME } from './BeaconSensitivityDto.private';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_NAME = ['Immediate', 'Near', 'Far'] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n","import type { ICountryDto_Props } from './CountryDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface ICountryDto_Linkables {}\n\n/** \n * @description all custom properties for\n CountryDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ICountryDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\nimport { VALUES_FIELD_NAME } from './CountryDto.private';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_NAME = [\n 'Afghanistan',\n 'Aland Islands',\n 'Albania',\n 'Algeria',\n 'American Samoa',\n 'Andorra',\n 'Angola',\n 'Anguilla',\n 'Antigua and Barbuda',\n 'Argentina',\n 'Armenia',\n 'Aruba',\n 'Australia',\n 'Austria',\n 'Azerbaijan',\n 'Bahamas',\n 'Bahrain',\n 'Bangladesh',\n 'Barbados',\n 'Belarus',\n 'Belgium',\n 'Belize',\n 'Benin',\n 'Bermuda',\n 'Bhutan',\n 'Bolivia (Plurinational State of)',\n 'Bonaire, Saint Eustatius and Saba',\n 'Bosnia and Herzegovina',\n 'Botswana',\n 'Brazil',\n 'British Virgin Islands',\n 'Brunei Darussalam',\n 'Bulgaria',\n 'Burkina Faso',\n 'Burundi',\n 'Cambodia',\n 'Cameroon',\n 'Canada',\n 'Cape Verde',\n 'Cayman Islands',\n 'Central African Republic',\n 'Chad',\n 'Chile',\n 'China',\n 'China, Hong Kong Special Administrative Region',\n 'China, Macao Special Administrative Region',\n 'Colombia',\n 'Comoros',\n 'Congo',\n 'Cook Islands',\n 'Costa Rica',\n 'Côte dIvoire',\n 'Croatia',\n 'Cuba',\n 'Curaçao',\n 'Cyprus',\n 'Czech Republic',\n 'Democratic Peoples Republic of Korea',\n 'Democratic Republic of the Congo',\n 'Denmark',\n 'Djibouti',\n 'Dominica',\n 'Dominican Republic',\n 'Ecuador',\n 'Egypt',\n 'El Salvador',\n 'Equatorial Guinea',\n 'Eritrea',\n 'Estonia',\n 'Ethiopia',\n 'Faeroe Islands',\n 'Falkland Islands (Malvinas)',\n 'Fiji',\n 'Finland',\n 'France',\n 'French Guiana',\n 'French Polynesia',\n 'Gabon',\n 'Gambia',\n 'Georgia',\n 'Germany',\n 'Ghana',\n 'Gibraltar',\n 'Greece',\n 'Greenland',\n 'Grenada',\n 'Guadeloupe',\n 'Guam',\n 'Guatemala',\n 'Guernsey',\n 'Guinea',\n 'Guinea-Bissau',\n 'Guyana',\n 'Haiti',\n 'Holy See',\n 'Honduras',\n 'Hungary',\n 'Iceland',\n 'India',\n 'Indonesia',\n 'Iran (Islamic Republic of)',\n 'Iraq',\n 'Ireland',\n 'Isle of Man',\n 'Israel',\n 'Italy',\n 'Jamaica',\n 'Japan',\n 'Jersey',\n 'Jordan',\n 'Kazakhstan',\n 'Kenya',\n 'Kiribati',\n 'Kuwait',\n 'Kyrgyzstan',\n 'Lao Peoples Democratic Republic',\n 'Latvia',\n 'Lebanon',\n 'Lesotho',\n 'Liberia',\n 'Libya',\n 'Liechtenstein',\n 'Lithuania',\n 'Luxembourg',\n 'Madagascar',\n 'Malawi',\n 'Malaysia',\n 'Maldives',\n 'Mali',\n 'Malta',\n 'Marshall Islands',\n 'Martinique',\n 'Mauritania',\n 'Mauritius',\n 'Mayotte',\n 'Mexico',\n 'Micronesia (Federated States of)',\n 'Monaco',\n 'Mongolia',\n 'Montenegro',\n 'Montserrat',\n 'Morocco',\n 'Mozambique',\n 'Myanmar',\n 'Namibia',\n 'Nauru',\n 'Nepal',\n 'Netherlands',\n 'New Caledonia',\n 'New Zealand',\n 'Nicaragua',\n 'Niger',\n 'Nigeria',\n 'Niue',\n 'Norfolk Island',\n 'Northern Mariana Islands',\n 'Norway',\n 'Occupied Palestinian Territory',\n 'Oman',\n 'Pakistan',\n 'Palau',\n 'Panama',\n 'Papua New Guinea',\n 'Paraguay',\n 'Peru',\n 'Philippines',\n 'Pitcairn',\n 'Poland',\n 'Portugal',\n 'Puerto Rico',\n 'Qatar',\n 'Republic of Korea',\n 'Republic of Moldova',\n 'Réunion',\n 'Romania',\n 'Russian Federation',\n 'Rwanda',\n 'Saint Helena',\n 'Saint Kitts and Nevis',\n 'Saint Lucia',\n 'Saint Pierre and Miquelon',\n 'Saint Vincent and the Grenadines',\n 'Saint-Barthélemy',\n 'Saint-Martin (French part)',\n 'Samoa',\n 'San Marino',\n 'Sao Tome and Principe',\n 'Saudi Arabia',\n 'Senegal',\n 'Serbia',\n 'Seychelles',\n 'Sierra Leone',\n 'Singapore',\n 'Sint Maarten (Dutch part)',\n 'Slovakia',\n 'Slovenia',\n 'Solomon Islands',\n 'Somalia',\n 'South Africa',\n 'South Sudan',\n 'Spain',\n 'Sri Lanka',\n 'Sudan',\n 'Suriname',\n 'Svalbard and Jan Mayen Islands',\n 'Swaziland',\n 'Sweden',\n 'Switzerland',\n 'Syrian Arab Republic',\n 'Tajikistan',\n 'Thailand',\n 'The former Yugoslav Republic of Macedonia',\n 'Timor-Leste',\n 'Togo',\n 'Tokelau',\n 'Tonga',\n 'Trinidad and Tobago',\n 'Tunisia',\n 'Turkey',\n 'Turkmenistan',\n 'Turks and Caicos Islands',\n 'Tuvalu',\n 'Uganda',\n 'Ukraine',\n 'United Arab Emirates',\n 'United Kingdom',\n 'United Republic of Tanzania',\n 'United States of America',\n 'United States Virgin Islands',\n 'Uruguay',\n 'Uzbekistan',\n 'Vanuatu',\n 'Venezuela (Bolivarian Republic of)',\n 'Vietnam',\n 'Wallis and Futuna Islands',\n 'Western Sahara',\n 'Yemen',\n 'Zambia',\n 'Zimbabwe',\n] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n","import type { IDeviceAccountDto_Props } from './DeviceAccountDto.if';\n\n/** \n * @description all custom properties for\n DeviceAccountDto & methods to link against other entities\n*/\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IDeviceAccountDto_Linkables {}\n\nfunction linkables(model: Partial): IDeviceAccountDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'userName',\n\n defaultValue: '',\n },\n {\n localName: 'password',\n\n defaultValue: '',\n },\n {\n localName: 'confirmPassword',\n\n defaultValue: '',\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n {\n localName: 'modifiedById',\n\n defaultValue: 0,\n },\n {\n localName: 'isProductionUser',\n\n defaultValue: false,\n },\n];\n\nexport default MAPPINGS;\n","import type { IFloorPlanDto_Props } from './FloorPlanDto.if';\nimport type IFloorPlanTranslationDto from './FloorPlanTranslationDto.if';\nimport type { IModelSource } from '../interface/db';\n\nfunction _translations(\n this: Partial,\n db: IModelSource,\n): Promise> {\n if (!this.id) {\n return Promise.reject('Missing field floorplan.id');\n }\n\n const _that = this;\n return new Promise(function (resolve, reject) {\n db.all('IFloorPlanTranslationDto')\n .then(result => result.filter(translation => translation.floorPlanId === _that.id))\n .then(translations => resolve(translations))\n .catch(error => reject(error));\n });\n}\n\nexport interface IFloorPlanDto_Linkables {\n translations: (db: IModelSource) => Promise;\n}\n\n/** \n * @description all custom properties for\n FloorPlanDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IFloorPlanDto_Linkables {\n return {\n translations: _translations.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'imageFileName',\n\n defaultValue: '',\n },\n {\n localName: 'removeImage',\n\n defaultValue: false,\n },\n {\n localName: 'imageMediumId',\n\n defaultValue: '',\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n {\n localName: 'siteObjectsOnFloorPlanCount',\n\n defaultValue: 0,\n },\n {\n localName: 'styleId',\n\n defaultValue: 0,\n },\n];\n\nexport default MAPPINGS;\n","import type { IFloorPlanTourDto_Props } from './FloorPlanTourDto.if';\nimport type IFloorPlanTranslationDto from './FloorPlanTranslationDto.if';\nimport type { IModelSource } from '../interface/db';\n\nfunction _translations(\n this: Partial,\n db: IModelSource,\n): Promise> {\n if (!this.id) {\n return Promise.reject('Missing field floorplan.id');\n }\n\n const _that = this;\n return new Promise(function (resolve, reject) {\n db.all('IFloorPlanTranslationDto')\n .then(result => result.filter(translation => translation.floorPlanId === _that.id))\n .then(translations => resolve(translations))\n .catch(error => reject(error));\n });\n}\n\nexport interface IFloorPlanTourDto_Linkables {\n translations: (db: IModelSource) => Promise;\n}\n\n/** \n * @description all custom properties for\n FloorPlanDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IFloorPlanTourDto_Linkables {\n return {\n translations: _translations.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'floorPlanId',\n\n defaultValue: 0,\n },\n {\n localName: 'tourId',\n\n defaultValue: 0,\n },\n];\n\nexport default MAPPINGS;\n","import type { IModelSource } from '../interface/db';\nimport type IFloorPlanTranslationDto_Props from './FloorPlanTranslationDto.if';\nimport type IMediumDto from './MediumDto.if';\nimport type ISiteDto from './SiteDto.if';\nimport type ILanguageDto from './LanguageDto.if';\nimport type IStyleDto from './StyleDto.if';\nimport type ISiteObjectOnFloorPlanDto from './SiteObjectOnFloorPlanDto.if';\nimport type ISiteObjectDto from './SiteObjectDto.if';\n\nexport interface IFloorPlanTranslationDto_Linkables {\n image: (db: IModelSource) => Promise;\n site: (db: IModelSource) => Promise;\n language: (db: IModelSource) => Promise;\n style: (db: IModelSource) => Promise;\n allSiteObjectsOnFloorplan: (db: IModelSource) => Promise>;\n siteObjectOnFloorplan: (\n siteObject: ISiteObjectDto,\n db: IModelSource,\n ) => Promise;\n}\n\nfunction _image(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.imageMediumId\n ? db.get('IMediumDto', this.imageMediumId)\n : Promise.reject('Missing field floorPlanTranslation.imageMediumId');\n}\n\nfunction _site(this: Partial, db: IModelSource): Promise {\n return this?.siteId\n ? db.get('ISiteDto', this.siteId)\n : Promise.reject('Missing field floorPlanTranslation.siteId');\n}\n\nfunction _language(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.languageId\n ? db.get('ILanguageDto', this.languageId)\n : Promise.reject('Missing field floorPlanTranslation.languageId');\n}\n\nfunction _style(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.styleId\n ? db.get('IStyleDto', this.styleId)\n : Promise.reject('Missing field floorPlanTranslation.styleId');\n}\n\nfunction _allSiteObjectsOnFloorplan(\n this: Partial,\n db: IModelSource,\n): Promise {\n if (!this.id) {\n return Promise.reject('Missing field floorPlanTranslation.id');\n }\n\n const _that = this;\n return new Promise(function (resolve, reject) {\n db.all('ISiteObjectOnFloorPlanDto')\n .then(soFPs => {\n const match = soFPs.filter(x => x.floorPlanId === _that.id);\n if (match.length > 0) {\n resolve(match);\n } else {\n reject('No SiteObjectOnFloorplans found for floorplanId:' + _that.id);\n }\n })\n .catch(error => reject(error));\n });\n}\n\nfunction _siteObjectOnFloorplan(\n this: Partial,\n siteObject: ISiteObjectDto,\n db: IModelSource,\n): Promise {\n if (!this.id) {\n return Promise.reject('Missing field floorPlanTranslation.id');\n }\n\n const _that = this;\n return new Promise(function (resolve, reject) {\n _allSiteObjectsOnFloorplan\n .call(_that, db)\n .then(soFPs => {\n const match = soFPs.filter(x => x.siteObjectId === siteObject.id);\n if (match.length > 0) {\n resolve(match[0]);\n } else {\n reject(\n `No matching soFPs found for floorplanId ${_that.id}/siteObjectId: ${siteObject.id}`,\n );\n }\n })\n .catch(error => reject(error));\n });\n}\n\n/** \n * @description all custom properties for\n FloorPlanDto & methods to link against other entities\n*/\nfunction linkables(\n model: Partial,\n): IFloorPlanTranslationDto_Linkables {\n return {\n image: _image,\n site: _site,\n language: _language,\n style: _style,\n allSiteObjectsOnFloorplan: _allSiteObjectsOnFloorplan,\n siteObjectOnFloorplan: _siteObjectOnFloorplan,\n };\n}\n\nexport default linkables;\n","import IMapProperty from '../private/IMapProperty';\n\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'imageFileName',\n\n defaultValue: '',\n },\n {\n localName: 'removeImage',\n\n defaultValue: false,\n },\n {\n localName: 'imageMediumId',\n\n defaultValue: '',\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n {\n localName: 'languageId',\n\n defaultValue: 0,\n },\n {\n localName: 'floorPlanId',\n\n defaultValue: 0,\n },\n {\n localName: 'positionX',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'positionY',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'zoom',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'siteObjectsOnFloorPlanCount',\n\n defaultValue: 0,\n },\n {\n localName: 'styleId',\n\n defaultValue: 0,\n },\n];\n\nexport default MAPPINGS;\n","import type { IFontFamilyDto_Props } from './FontFamilyDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IFontFamilyDto_Linkables {}\n\n/** \n * @description all custom properties for\n FontFamilyDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IFontFamilyDto_Linkables {\n return {\n /* none */\n };\n}\n\nexport default linkables;\n","import { VALUES_FIELD_NAME } from './FontFamilyDto.private';\nimport IMapProperty from '../private/IMapProperty';\n\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_NAME = [\n 'Abel',\n 'Arial',\n 'Arya',\n 'Bebas Neue',\n 'Boogaloo',\n 'Calibri',\n 'Chewy',\n 'Dosis',\n 'Gill Sans',\n 'Goudy Old Style',\n 'Heebo',\n 'Imprima',\n 'Josefin Sans',\n 'Lato',\n 'Libre Franklin',\n 'Mada',\n 'Montserrat',\n 'Muli',\n 'Nobile',\n 'Overpass',\n 'Pavanam',\n 'Poppins',\n 'Quicksand',\n 'Raleway',\n 'Reem Kufi',\n 'Roboto',\n 'Source Sans Pro',\n 'Times New Roman',\n 'Tahoma',\n 'Tenor Sans',\n 'Ubuntu',\n 'Varela',\n 'Varela Round',\n 'Verdana',\n] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n","import type { IFontStyleDto_Props } from './FontStyleDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IFontStyleDto_Linkables {}\n\n/** \n * @description all custom properties for\n FontStyleDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IFontStyleDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\nimport { VALUES_FIELD_NAME } from './FontStyleDto.private';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_NAME = [\n 'Thin',\n 'Thin Italic',\n 'Light',\n 'Light Italic',\n 'Regular',\n 'Regular Italic',\n 'Medium',\n 'Medium Italic',\n 'Semi-Bold',\n 'Semi-Bold Italic',\n 'Bold',\n 'Bold Italic',\n 'Black',\n 'Black Italic',\n] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n","import type { IFontSizeUnitDto_Props } from './FontSizeUnitDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IFontSizeUnitDto_Linkables {}\n\n/** \n * @description all custom properties for\n FontSizeUnitDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IFontSizeUnitDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import { VALUES_FIELD_NAME } from './FontSizeUnitDto.private';\nimport IMapProperty from '../private/IMapProperty';\n\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_NAME = [\n '%',\n 'cm',\n 'em',\n 'ex',\n 'in',\n 'mm',\n 'pc',\n 'px',\n 'pt',\n 'vh',\n 'vw',\n 'vmin',\n] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n","import type { IFontAlignmentDto_Props } from './FontAlignmentDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IFontAlignmentDto_Linkables {}\n\n/** \n * @description all custom properties for\n FontAlignmentDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IFontAlignmentDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\nimport { VALUES_FIELD_NAME } from './FontAlignmentDto.private';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_NAME = ['Left', 'Right', 'Center', 'Justify'] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n","import type { ILanguageDto_Props } from './LanguageDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface ILanguageDto_Linkables {}\n\n/** \n * @description all custom properties for\n LanguageDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ILanguageDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\nimport { VALUES_FIELD_LOCALIZEDNAME, VALUES_FIELD_NAME } from './LanguageDto.private';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n {\n localName: 'localizedName',\n\n defaultValue: VALUES_FIELD_LOCALIZEDNAME[0],\n },\n {\n localName: 'isDefault',\n\n defaultValue: false,\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_NAME = [\n 'EN',\n 'AA',\n 'AB',\n 'AD',\n 'AE',\n 'AF',\n 'AK',\n 'AM',\n 'AN',\n 'AR',\n 'AS',\n 'ASL',\n 'AV',\n 'AY',\n 'AZ',\n 'BA',\n 'BE',\n 'BG',\n 'BH',\n 'BI',\n 'BM',\n 'BN',\n 'BO',\n 'BR',\n 'BS',\n 'BSL',\n 'CA',\n 'CE',\n 'CH',\n 'CO',\n 'CR',\n 'CS',\n 'CU',\n 'CV',\n 'CY',\n 'DA',\n 'DE',\n 'DV',\n 'DZ',\n 'EE',\n 'EL',\n 'EO',\n 'ES',\n 'ET',\n 'EU',\n 'FA',\n 'FF',\n 'FI',\n 'FJ',\n 'FO',\n 'FR',\n 'FY',\n 'GA',\n 'GD',\n 'GL',\n 'GN',\n 'GU',\n 'GV',\n 'HA',\n 'HE',\n 'HI',\n 'HO',\n 'HR',\n 'HT',\n 'HU',\n 'HY',\n 'HZ',\n 'IA',\n 'ID',\n 'IE',\n 'IG',\n 'II',\n 'IK',\n 'INSL',\n 'IO',\n 'IS',\n 'ISE',\n 'ISG',\n 'IT',\n 'IU',\n 'JA',\n 'JV',\n 'KA',\n 'KG',\n 'KI',\n 'KJ',\n 'KK',\n 'KL',\n 'KM',\n 'KN',\n 'KO',\n 'KR',\n 'KS',\n 'KU',\n 'KV',\n 'KW',\n 'KY',\n 'LA',\n 'LB',\n 'LG',\n 'LI',\n 'LN',\n 'LO',\n 'LT',\n 'LU',\n 'LV',\n 'MG',\n 'MH',\n 'MI',\n 'MK',\n 'ML',\n 'MN',\n 'MR',\n 'MS',\n 'MT',\n 'MY',\n 'NA',\n 'NB',\n 'ND',\n 'NE',\n 'NG',\n 'NL',\n 'NN',\n 'NO',\n 'NR',\n 'NV',\n 'NY',\n 'OC',\n 'OJ',\n 'OM',\n 'OR',\n 'OS',\n 'PA',\n 'PI',\n 'PL',\n 'PS',\n 'PT',\n 'PT-BR',\n 'QU',\n 'RM',\n 'RN',\n 'RO',\n 'RU',\n 'RW',\n 'SA',\n 'SC',\n 'SD',\n 'SE',\n 'SG',\n 'SI',\n 'SIEN',\n 'SK',\n 'SL',\n 'SM',\n 'SN',\n 'SO',\n 'SQ',\n 'SR',\n 'SS',\n 'SSP',\n 'ST',\n 'SU',\n 'SV',\n 'SW',\n 'TA',\n 'TE',\n 'TG',\n 'TH',\n 'TI',\n 'TK',\n 'TL',\n 'TN',\n 'TO',\n 'TR',\n 'TS',\n 'TT',\n 'TW',\n 'TY',\n 'UG',\n 'UK',\n 'UR',\n 'UZ',\n 'VE',\n 'VI',\n 'VO',\n 'WA',\n 'WO',\n 'XH',\n 'YI',\n 'YO',\n 'YUE',\n 'ZA',\n 'ZH',\n 'ZU',\n] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n\nexport const VALUES_FIELD_LOCALIZEDNAME = [\n 'English',\n 'Afaraf',\n 'аҧсуа бызшәа, аҧсшәа',\n 'Access Tours',\n 'avesta',\n 'Afrikaans',\n 'Akan',\n 'አማርኛ',\n 'aragonés',\n 'العربية',\n 'অসমীয়া',\n 'American Sign Language',\n 'авар мацӀ, магӀарул мацӀ',\n 'aymar aru',\n 'azərbaycan dili',\n 'башҡорт теле',\n 'беларуская мова',\n 'български език',\n 'भोजपुरी',\n 'Bislama',\n 'bamanankan',\n 'বাংলা',\n 'བོད་ཡིག',\n 'brezhoneg',\n 'bosanski jezik',\n 'BSL',\n 'Catalan',\n 'нохчийн мотт',\n 'Chamoru',\n 'corsu, lingua corsa',\n 'ᓀᐦᐃᔭᐍᐏᐣ',\n 'Ceský jazyk',\n 'ѩзыкъ словѣньскъ',\n 'чӑваш чӗлхи',\n 'Cymraeg',\n 'Dansk',\n 'Deutsch',\n 'ދިވެހި',\n 'རྫོང་ཁ',\n 'E?egbe',\n 'Hellenic',\n 'Esperanto',\n 'Español',\n 'eesti, eesti keel',\n 'euskara, euskera',\n 'فارسی',\n 'Fulfulde, Pulaar, Pular',\n 'Finnish',\n 'vosa Vakaviti',\n 'føroyskt',\n 'Français',\n 'Frysk',\n 'Gaeilge',\n 'Gàidhlig',\n 'Galego',\n \"Avañe'ẽ\",\n 'ગુજરાતી',\n 'Gaelg, Gailck',\n 'هَوُسَ',\n 'עברית',\n 'हिन्दी, हिंदी',\n 'Hiri Motu',\n 'Hrvatski jezik',\n 'Kreyòl ayisyen',\n 'magyar',\n 'Հայերեն',\n 'Otjiherero',\n 'Interlingua',\n 'Bahasa Indonesia',\n 'Originally called Occidental; then Interlingue after WWII',\n 'Asụsụ Igbo',\n 'ꆈꌠ꒿ Nuosuhxop',\n 'Iñupiaq, Iñupiatun',\n 'International Sign Language',\n 'Ido',\n 'Íslenska',\n 'Italian Sign Language',\n 'Irish Sign Language',\n 'Italiano',\n 'ᐃᓄᒃᑎᑐᑦ',\n '日本語',\n 'ꦧꦱꦗꦮ',\n 'ქართული',\n 'Kikongo',\n 'Gĩkũyũ',\n 'Kuanyama',\n 'қазақ тілі',\n 'kalaallisut',\n 'ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ',\n 'ಕನ್ನಡ',\n '한국어',\n 'Kanuri',\n 'कश्मीरी, كشميري‎',\n 'Kurdî, کوردی‎',\n 'коми кыв',\n 'Kernewek',\n 'Кыргызча, Кыргыз тили',\n 'latine, lingua latina',\n 'Lëtzebuergesch',\n 'Luganda',\n 'Limburgs',\n 'Lingála',\n 'ພາສາລາວ',\n 'Lietuviu kalba',\n 'Kiluba',\n 'Latviešu valoda',\n 'fiteny malagasy',\n 'Kajin M̧ajeļ',\n 'te reo Maori',\n 'македонски јазик',\n 'മലയാളം',\n 'Монгол хэл',\n 'मराठी',\n 'Bahasa Melayu, بهاس ملايو‎',\n 'Malti',\n 'ဗမာစာ',\n 'Dorerin Naoero',\n 'Norsk Bokmål',\n 'isiNdebele',\n 'Nepali',\n 'Owambo',\n 'Nederlands',\n 'Norsk Nynorsk',\n 'Norsk',\n 'isiNdebele',\n 'Diné bizaad',\n 'chiCheŵa, chinyanja',\n \"occitan, lenga d'òc\",\n 'ᐊᓂᔑᓈᐯᒧᐎᓐ',\n 'Afaan Oromoo',\n 'ଓଡ଼ିଆ',\n 'ирон æвзаг',\n 'ਪੰਜਾਬੀ',\n 'पाऴि',\n 'Jezyk polski',\n 'پښتو',\n 'Português',\n 'Português do Brasil',\n 'Runa Simi, Kichwa',\n 'Rumantsch grischun',\n 'Ikirundi',\n 'Română',\n 'Русский',\n 'Ikinyarwanda',\n 'संस्कृतम्',\n 'sardu',\n 'सिन्धी, سنڌي، سندھی‎',\n 'Davvisámegiella',\n 'yângâ tî sängö',\n 'සිංහල',\n 'Simplified English',\n 'Slovencina',\n 'Slovenski Jezik, Slovenščina',\n \"gagana fa'a Samoa\",\n 'chiShona',\n 'Soomaaliga, af Soomaali',\n 'Shqip',\n 'српски језик',\n 'SiSwati',\n 'Spanish Sign Language',\n 'Sesotho',\n 'Basa Sunda',\n 'Svenska',\n 'Kiswahili',\n 'தமிழ்',\n 'తెలుగు',\n 'тоҷикӣ, toçikī, تاجیکی‎',\n 'ไทย',\n 'ትግርኛ',\n 'Türkmen, Түркмен',\n 'Wikang Tagalog',\n 'Setswana',\n 'Faka Tonga',\n 'Türkçe',\n 'Xitsonga',\n 'татар теле, tatar tele',\n 'Twi',\n 'Reo Tahiti',\n 'ئۇيغۇرچە‎, Uyghurche',\n 'Ukrainian',\n 'اردو',\n 'Oʻzbek, Ўзбек, أۇزبېك‎',\n 'Tshiven?a',\n 'Tiếng Việt',\n 'Volapük',\n 'Walon',\n 'Wollof',\n 'isiXhosa',\n 'ייִדיש',\n 'Yorùbá',\n '粵語',\n 'Saɯ cueŋƅ, Saw cuengh',\n '中文',\n 'isiZulu',\n] as const;\nexport type TYPES_FIELD_LOCALIZEDNAME = typeof VALUES_FIELD_LOCALIZEDNAME[number];\n","import type { IMediumDto_Props } from './MediumDto.if';\nimport type { IModelSource } from '../interface/db';\nimport type ILanguageDto from './LanguageDto.if';\nimport type ISiteDto from './SiteDto.if';\n\nexport interface IMediumDto_Linkables {\n site: (db: IModelSource) => Promise;\n languages: (db: IModelSource) => Promise;\n}\n\nfunction _site(this: Partial, db: IModelSource): Promise {\n return this.siteId\n ? db.get('ISiteDto', this.siteId)\n : Promise.reject('Missing field medium.siteId');\n}\n\nfunction _languages(this: Partial, db: IModelSource): Promise {\n if (!this.id) {\n return Promise.reject('Missing field medium.id');\n }\n const self = this;\n\n return new Promise(async function (resolve, reject) {\n try {\n /* this is inefficient, but works. Fetch all translations, filter until the mediumId matches this & then fetch the related languages */\n const allSOTs = await db.all('ISiteObjectTranslationDto');\n const matchSOTs = allSOTs.filter(sot => sot.mediumId === self.id);\n const languageIds = matchSOTs.map(sot => sot.languageId);\n const languages = await Promise.all(languageIds.map(id => db.get('ILanguageDto', id)));\n\n resolve(languages);\n } catch (error) {\n reject(`Error occurred fetching MediumDto.languages: ${error}`);\n }\n });\n}\n\n/** \n * @description all custom properties for\n MediumDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IMediumDto_Linkables {\n return {\n site: _site,\n languages: _languages,\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: '',\n },\n {\n localName: 'mediumHash',\n\n defaultValue: false,\n },\n {\n localName: 'fileName',\n\n defaultValue: '',\n },\n {\n localName: 'mimeType',\n\n defaultValue: '',\n },\n {\n localName: 'mediumSize',\n\n defaultValue: 0,\n },\n {\n localName: 'deleted',\n\n defaultValue: false,\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n];\n\nexport default MAPPINGS;\n","import type { IMenuItemDto_Props } from './MenuItemDto.if';\nimport type IMediumDto from './MediumDto.if';\nimport type ISiteDto from './SiteDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface IMenuItemDto_Linkables {\n image: (db: IModelSource) => Promise;\n site: (db: IModelSource) => Promise;\n}\n\nfunction _image(this: Partial, db: IModelSource): Promise {\n return this.imageMediumId\n ? db.get('IMediumDto', this.imageMediumId)\n : Promise.reject('Missing field menuItem.imageMediumId');\n}\n\nfunction _site(this: Partial, db: IModelSource): Promise {\n return this.siteId\n ? db.get('ISiteDto', this.siteId)\n : Promise.reject('Missing field menuItem.siteId');\n}\n\n/** \n * @description all custom properties for\n MenuItemDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IMenuItemDto_Linkables {\n return {\n image: _image.bind(model),\n site: _site.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'namePropagation',\n\n defaultValue: false,\n },\n {\n localName: 'imageFileName',\n\n defaultValue: '',\n },\n {\n localName: 'removeImage',\n\n defaultValue: false,\n },\n {\n localName: 'imageMediumId',\n\n defaultValue: '',\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n {\n localName: 'toursCount',\n\n defaultValue: 0,\n },\n {\n localName: 'publishedToursCount',\n\n defaultValue: 0,\n },\n {\n localName: 'deleted',\n\n defaultValue: false,\n },\n {\n localName: 'menuPosition',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'keypadNumber',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'contentStyleId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'menuStyleId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'isBackButtonOverride',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'backButtonStyleId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'siteObjectId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'int1',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'int2',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'int3',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'int4',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'bool1',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'bool2',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'tourId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'menuTypeId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'menuSubTypeId',\n\n defaultValue: 0,\n optional: true,\n },\n];\n\nexport default MAPPINGS;\n","import type { IMenuItemKeywordDto_Props } from './MenuItemKeywordDto.if';\n\n/** \n * @description all custom properties for\n MenuItemKeywordDto & methods to link against other entities\n*/\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IMenuItemKeywordDto_Linkables {}\n\nfunction linkables(model: Partial): IMenuItemKeywordDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n {\n localName: 'isTag',\n\n defaultValue: false,\n },\n];\n\nexport default MAPPINGS;\n","import type { IMenuItemTranslationDto_Props } from './MenuItemTranslationDto.if';\nimport type ILanguageDto from './LanguageDto.if';\nimport type IMenuItemDto from './MenuItemDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface IMenuItemTranslationDto_Linkables {\n language: (db: IModelSource) => Promise;\n menuItem: (db: IModelSource) => Promise;\n}\n\nfunction _language(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.languageId\n ? db.get('ILanguageDto', this.languageId)\n : Promise.reject('Missing field menuItemTranslation.languageId');\n}\nfunction _menuItem(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.menuItemId\n ? db.get('IMenuItemDto', this.menuItemId)\n : Promise.reject('Missing field menuItemTranslation.menuItemId');\n}\n\n/** \n * @description all custom properties for\n MenuItemTranslationDto & methods to link against other entities\n*/\nfunction linkables(\n model: Partial,\n): IMenuItemTranslationDto_Linkables {\n return {\n language: _language.bind(model),\n menuItem: _menuItem.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'menuItemId',\n\n defaultValue: 0,\n },\n {\n localName: 'languageId',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'deleted',\n\n defaultValue: false,\n },\n {\n localName: 'subMenuName',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'description',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'backgroundImageFileName',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'removeBackgroundImage',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'backgroundImageMediumId',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'menuImageFileName',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'removeMenuImage',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'menuImageMediumId',\n\n defaultValue: '',\n optional: true,\n },\n];\n\nexport default MAPPINGS;\n","import type { IPinTypeDto_Props } from './PinTypeDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IPinTypeDto_Linkables {}\n\n/** \n * @description all custom properties for\n PinTypeDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IPinTypeDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\nimport { VALUES_FIELD_CONTENT, VALUES_FIELD_ICON, VALUES_FIELD_TEXT } from './PinTypeDto.private';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'value',\n\n defaultValue: '',\n },\n {\n localName: 'content',\n\n defaultValue: VALUES_FIELD_CONTENT[0],\n },\n {\n localName: 'icon',\n\n defaultValue: VALUES_FIELD_ICON[0],\n },\n {\n localName: 'text',\n\n defaultValue: VALUES_FIELD_TEXT[0],\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_CONTENT = [\n 'f3a5',\n 'f192',\n 'f111',\n 'f111',\n 'f0fe',\n 'f182',\n 'f183',\n 'f0f4',\n 'f2e7',\n 'f015',\n 'f193',\n] as const;\nexport type TYPES_FIELD_CONTENT = typeof VALUES_FIELD_CONTENT[number];\n\nexport const VALUES_FIELD_ICON = [\n 'far fa-gem',\n 'far fa-dot-circle',\n 'fas fa-circle',\n 'far fa-circle',\n 'fas fa-plus-square',\n 'fas fa-female',\n 'fas fa-male',\n 'fas fa-coffee',\n 'fas fa-utensils',\n 'fas fa-home',\n 'fas fa-wheelchair',\n] as const;\nexport type TYPES_FIELD_ICON = typeof VALUES_FIELD_ICON[number];\n\nexport const VALUES_FIELD_TEXT = [\n '[[f219]]',\n 'Dot circle',\n '[[f111]]',\n 'Circle',\n '[[f0fe]]',\n 'Female',\n 'Male',\n 'Coffee',\n 'Cutlery',\n '[[f015]]',\n '[[f193]]',\n] as const;\nexport type TYPES_FIELD_TEXT = typeof VALUES_FIELD_TEXT[number];\n","import type { IRoleDto_Props } from './RoleDto.if';\n\n/** \n * @description all custom properties for\n RoleDto & methods to link against other entities\n*/\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IRoleDto_Linkables {}\n\nfunction linkables(model: Partial): IRoleDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n];\n\nexport default MAPPINGS;\n","import type { IScreenOrientationDto_Props } from './ScreenOrientationDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IScreenOrientationDto_Linkables {}\n\n/** \n * @description all custom properties for\n ScreenOrientationDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IScreenOrientationDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","export const VALUES_FIELD_NAME = [\n 'All',\n 'Landscape',\n 'Landscape (left)',\n 'Landscape (right)',\n 'Portrait',\n 'Portrait (up)',\n] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n\nexport type TYPES_FIELD_BYTEVALUE = 0 | 1 | 2 | 4 | 8;\n\nexport const VALUES_FIELD_BYTEVALUE: Record = {\n All: 0,\n Landscape: 0,\n 'Landscape (left)': 1,\n 'Landscape (right)': 2,\n Portrait: 4,\n 'Portrait (up)': 8,\n} as const;\n","import type MapProperty from '../private/IMapProperty';\nimport { VALUES_FIELD_NAME } from './ScreenOrientationDto.private';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n {\n localName: 'byteValue',\n\n defaultValue: 0,\n optional: true,\n },\n];\n\nexport default MAPPINGS;\n","import type { ISiteDto_Props } from './SiteDto.if';\nimport type { IModelSource } from '../interface/db';\nimport type IMediumDto from './MediumDto.if';\nimport type IScreenOrientationDto from './ScreenOrientationDto.if';\nimport type IStyleDto from './StyleDto.if';\nimport type ISiteSupportedLanguageDto from './SiteSupportedLanguageDto.if';\n\nexport interface ISiteDto_Linkables {\n imageLogo: (db: IModelSource) => Promise;\n screenOrientation: (db: IModelSource) => Promise;\n languageSelectionStyle: (db: IModelSource) => Promise;\n tourSelectionStyle: (db: IModelSource) => Promise;\n siteSupportedLanguages: (db: IModelSource) => Promise;\n}\n\nfunction _imageLogo(this: Partial, db: IModelSource): Promise {\n return this.logoMediumId\n ? db.get('IMediumDto', this.logoMediumId)\n : Promise.reject('Missing field site.logoMediumId');\n}\n\nfunction _screenOrientation(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.screenOrientationId\n ? db.get('IScreenOrientationDto', this.screenOrientationId)\n : Promise.reject('Missing field site.screenOrientationId');\n}\n\nfunction _languageSelectionStyle(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.languageSelectionStyleId\n ? db.get('IStyleDto', this.languageSelectionStyleId)\n : Promise.reject('Missing field site.languageSelectionStyleId');\n}\n\nfunction _tourSelectionStyle(this: Partial, db: IModelSource): Promise {\n return this.tourSelectionStyleId\n ? db.get('IStyleDto', this.tourSelectionStyleId)\n : Promise.reject('Missing field site.tourSelectionStyleId');\n}\n\nfunction _siteSupportedLanguages(\n this: Partial,\n db: IModelSource,\n): Promise {\n if (!this.id) {\n return Promise.reject('Missing field site.id');\n }\n\n const self = this;\n return new Promise(async function (resolve, reject) {\n try {\n const ssl = await db.all('ISiteSupportedLanguageDto');\n const sslMatch = ssl.filter(x => x.siteId === self.id);\n resolve(sslMatch);\n } catch (error) {\n reject(error);\n }\n });\n}\n\n/** \n * @description all custom properties for\n SiteDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ISiteDto_Linkables {\n return {\n imageLogo: _imageLogo.bind(model),\n screenOrientation: _screenOrientation.bind(model),\n languageSelectionStyle: _languageSelectionStyle.bind(model),\n tourSelectionStyle: _tourSelectionStyle.bind(model),\n siteSupportedLanguages: _siteSupportedLanguages.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'logoFileName',\n\n defaultValue: '',\n },\n {\n localName: 'removeLogo',\n\n defaultValue: false,\n },\n {\n localName: 'logoMediumId',\n\n defaultValue: '',\n },\n {\n localName: 'alarmEnabled',\n\n defaultValue: false,\n },\n {\n localName: 'alarmPin',\n\n defaultValue: '',\n },\n {\n localName: 'adminPin',\n\n defaultValue: '',\n },\n {\n localName: 'languageSelectionMenu',\n\n defaultValue: 0,\n },\n {\n localName: 'tourSelectionMenu',\n\n defaultValue: 0,\n },\n {\n localName: 'clientId',\n\n defaultValue: 0,\n },\n {\n localName: 'screenOrientationId',\n\n defaultValue: 0,\n },\n {\n localName: 'majorVersion',\n\n defaultValue: 0,\n },\n {\n localName: 'minorVersion',\n\n defaultValue: 0,\n },\n {\n localName: 'toursCount',\n\n defaultValue: 0,\n },\n {\n localName: 'deviceAccountsCount',\n\n defaultValue: 0,\n },\n {\n localName: 'languageSelectionStyleId',\n\n defaultValue: 0,\n },\n {\n localName: 'tourSelectionStyleId',\n\n defaultValue: 0,\n },\n {\n localName: 'groupingSelectionMenu',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'screenOrientations',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'contactName',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'title',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'phone',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'mobile',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'addressLine1',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'addressLine2',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'county',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'postalCode',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'countryId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'notes',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'bluetoothEnabled',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'streamMedia',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'streamingMediaPrefixUrl',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'showBatteryDot',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'disableSpeakerOutput',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'grayOutContentOnPlayback',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'backButtonStyleId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'batteryThresholdRed',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'batteryThresholdOrange',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'screensaverEnabled',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'screensaverShowDelay',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'resetInactivityDelay',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'alwaysShowLanguageSelection',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'alwaysShowTourSelection',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'alwaysShowGroupingSelection',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'showGroupingSelectionHeader',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'showLanguageSelectionHeader',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'showTourSelectionHeader',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'showLanguageConfirmation',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'resetGroupingDaily',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'groupingMenuEnabled',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'groupingShow',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'groupingSelectionStyleId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'defaultLanguageId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'groupingHeader',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'languageHeader',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'tourHeader',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'siteObjectOnGroupingSelectionId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'siteObjectOnGroupingSelectionInitName',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'siteObjectOnLanguageSelectionId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'siteObjectOnLanguageSelectionInitName',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'siteObjectOnTourSelectionId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'siteObjectOnTourSelectionInitName',\n\n defaultValue: '',\n optional: true,\n },\n];\n\nexport default MAPPINGS;\n","import ISiteObjectDto, { ISiteObjectDto_Props } from './SiteObjectDto.if';\nimport type ISiteDto from './SiteDto.if';\nimport type ISiteObjectTypeDto from './SiteObjectTypeDto.if';\nimport type IStyleDto from './StyleDto.if';\nimport type IMediumDto from './MediumDto.if';\nimport type IBeaconSensitivityDto from './BeaconSensitivityDto.if';\nimport type IBeaconDto from './BeaconDto.if';\nimport type ISiteObjectTranslationDto from './SiteObjectTranslationDto.if';\nimport type ILanguageDto from './LanguageDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface ISiteObjectDto_Linkables {\n site: (db: IModelSource) => Promise;\n type: (db: IModelSource) => Promise;\n beacon: (db: IModelSource) => Promise;\n beaconSensitivity: (db: IModelSource) => Promise;\n nextObject: (db: IModelSource) => Promise;\n relatedObject1: (db: IModelSource) => Promise;\n relatedObject2: (db: IModelSource) => Promise;\n relatedObject3: (db: IModelSource) => Promise;\n relatedObject4: (db: IModelSource) => Promise;\n relatedObject5: (db: IModelSource) => Promise;\n foregroundImageMedium: (db: IModelSource) => Promise;\n backgroundImageMedium: (db: IModelSource) => Promise;\n menuImageMedium: (db: IModelSource) => Promise;\n style: (db: IModelSource) => Promise;\n translations: (db: IModelSource) => Promise;\n translation: (\n db: IModelSource,\n language: ILanguageDto | number,\n ) => Promise;\n relatedObjects: (db: IModelSource) => Promise;\n}\n\nfunction _site(this: Partial, db: IModelSource): Promise {\n return this.siteId\n ? db.get('ISiteDto', this.siteId)\n : Promise.reject('Missing field siteObject.siteId');\n}\n\nfunction _type(this: Partial, db: IModelSource): Promise {\n return this.siteObjectTypeId\n ? db.get('ISiteObjectTypeDto', this.siteObjectTypeId)\n : Promise.reject('Missing field siteObject.siteObjectTypeId');\n}\n\nfunction _beacon(this: Partial, db: IModelSource): Promise {\n return this.beaconId\n ? db.get('IBeaconDto', this.beaconId)\n : Promise.reject('Missing field siteObject.beaconId');\n}\n\nfunction _beaconSensitivity(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.beaconSensitivityId\n ? db.get('IBeaconSensitivityDto', this.beaconSensitivityId)\n : Promise.reject('Missing field siteObject.beaconSensitivityId');\n}\n\nfunction _nextObject(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.nextObjectId\n ? db.get('ISiteObjectDto', this.nextObjectId)\n : Promise.reject('Missing field siteObject.nextObjectId');\n}\n\nfunction _relatedObject1(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.relatedObject1Id\n ? db.get('ISiteObjectDto', this.relatedObject1Id)\n : Promise.reject('Missing field siteObject.relatedObject1Id');\n}\n\nfunction _relatedObject2(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.relatedObject2Id\n ? db.get('ISiteObjectDto', this.relatedObject2Id)\n : Promise.reject('Missing field siteObject.relatedObject2Id');\n}\n\nfunction _relatedObject3(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.relatedObject3Id\n ? db.get('ISiteObjectDto', this.relatedObject3Id)\n : Promise.reject('Missing field siteObject.relatedObject3Id');\n}\n\nfunction _relatedObject4(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.relatedObject4Id\n ? db.get('ISiteObjectDto', this.relatedObject4Id)\n : Promise.reject('Missing field siteObject.relatedObject4Id');\n}\n\nfunction _relatedObject5(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.relatedObject5Id\n ? db.get('ISiteObjectDto', this.relatedObject5Id)\n : Promise.reject('Missing field siteObject.relatedObject5Id');\n}\n\nfunction _foregroundImageMedium(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.foregroundImageMediumId\n ? db.get('IMediumDto', this.foregroundImageMediumId)\n : Promise.reject('Missing field siteObject.foregroundImageMediumId');\n}\n\nfunction _backgroundImageMedium(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.backgroundImageMediumId\n ? db.get('IMediumDto', this.backgroundImageMediumId)\n : Promise.reject('Missing field siteObject.backgroundImageMediumId');\n}\n\nfunction _menuImageMedium(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.menuImageMediumId\n ? db.get('IMediumDto', this.menuImageMediumId)\n : Promise.reject('Missing field siteObject.menuImageMediumId');\n}\n\nfunction _style(this: Partial, db: IModelSource): Promise {\n return this.styleId\n ? db.get('IStyleDto', this.styleId)\n : Promise.reject('Missing field siteObject.styleId');\n}\n\nfunction _translations(\n this: Partial,\n db: IModelSource,\n): Promise {\n if (!this.id) {\n return Promise.reject('Missing field siteObject.id');\n }\n\n const siteObject = this;\n return new Promise((resolve, reject) => {\n db.all('ISiteObjectTranslationDto')\n .then(translations => {\n const match = translations.filter(x => x.siteObjectId === siteObject.id);\n if (match.length > 0) {\n resolve(match);\n } else {\n reject('No translations found for siteObjectId:' + siteObject.id);\n }\n })\n .catch((error: Error) => reject(error));\n });\n}\n\nfunction _translation(\n this: Partial,\n db: IModelSource,\n language: ILanguageDto | number,\n): Promise {\n if (!this.id) {\n return Promise.reject('Missing field siteObject.id');\n }\n\n const languageId: number =\n (language as ILanguageDto)?.id != undefined\n ? Number((language as ILanguageDto).id ?? -1)\n : Number(language);\n\n const siteObject = this;\n return new Promise(function (resolve, reject) {\n _translations\n .call(siteObject, db)\n .then(function (allTranslations: ISiteObjectTranslationDto[]) {\n const match = allTranslations.filter(x => x.languageId === languageId);\n if (match.length > 0) {\n resolve(match[0]);\n } else {\n reject(\n 'Unable to find matching translation in siteobject:' +\n siteObject.id +\n ', for language:' +\n languageId,\n );\n }\n })\n .catch((error: Error) => reject(error));\n });\n}\n\nfunction _relatedObjects(\n this: Partial,\n db: IModelSource,\n): Promise> {\n const siteObject = this;\n\n return new Promise(async function (resolve, reject) {\n try {\n const promises: Array> = [];\n\n if (siteObject.relatedObject1Id) {\n promises.push(_relatedObject1.call(siteObject, db));\n }\n\n if (siteObject.relatedObject2Id) {\n promises.push(_relatedObject2.call(siteObject, db));\n }\n\n if (siteObject.relatedObject3Id) {\n promises.push(_relatedObject3.call(siteObject, db));\n }\n\n if (siteObject.relatedObject4Id) {\n promises.push(_relatedObject4.call(siteObject, db));\n }\n\n if (siteObject.relatedObject5Id) {\n promises.push(_relatedObject5.call(siteObject, db));\n }\n\n const objects: Array =\n promises.length > 0 ? await Promise.all(promises) : [];\n\n resolve(objects);\n } catch (error) {\n reject(error);\n }\n });\n}\n\n/** \n * @description all custom properties for\n SiteObjectDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ISiteObjectDto_Linkables {\n return {\n site: _site.bind(model),\n type: _type.bind(model),\n beacon: _beacon.bind(model),\n beaconSensitivity: _beaconSensitivity.bind(model),\n nextObject: _nextObject.bind(model),\n relatedObject1: _relatedObject1.bind(model),\n relatedObject2: _relatedObject2.bind(model),\n relatedObject3: _relatedObject3.bind(model),\n relatedObject4: _relatedObject4.bind(model),\n relatedObject5: _relatedObject5.bind(model),\n foregroundImageMedium: _foregroundImageMedium.bind(model),\n backgroundImageMedium: _backgroundImageMedium.bind(model),\n menuImageMedium: _menuImageMedium.bind(model),\n style: _style.bind(model),\n translations: _translations.bind(model),\n translation: _translation.bind(model),\n relatedObjects: _relatedObjects.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'int1',\n\n defaultValue: 0,\n },\n {\n localName: 'int2',\n\n defaultValue: 0,\n },\n {\n localName: 'int3',\n\n defaultValue: 0,\n },\n {\n localName: 'int4',\n\n defaultValue: 0,\n },\n {\n localName: 'altBoolean1',\n\n defaultValue: false,\n },\n {\n localName: 'altBoolean2',\n\n defaultValue: false,\n },\n {\n localName: 'isUniversal',\n\n defaultValue: false,\n },\n {\n localName: 'keypadNumber',\n\n defaultValue: 0,\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n {\n localName: 'siteObjectTypeId',\n\n defaultValue: 0,\n },\n {\n localName: 'beaconId',\n\n defaultValue: 0,\n },\n {\n localName: 'beaconSensitivityId',\n\n defaultValue: 0,\n },\n {\n localName: 'fontSize',\n\n defaultValue: 0,\n },\n {\n localName: 'fontFamily',\n\n defaultValue: '',\n },\n {\n localName: 'fontColor',\n\n defaultValue: '',\n },\n {\n localName: 'menuPosition',\n\n defaultValue: 0,\n },\n {\n localName: 'nextObjectId',\n\n defaultValue: 0,\n },\n {\n localName: 'relatedObject1Id',\n\n defaultValue: 0,\n },\n {\n localName: 'relatedObject2Id',\n\n defaultValue: 0,\n },\n {\n localName: 'relatedObject3Id',\n\n defaultValue: 0,\n },\n {\n localName: 'relatedObject4Id',\n\n defaultValue: 0,\n },\n {\n localName: 'relatedObject5Id',\n\n defaultValue: 0,\n },\n {\n localName: 'removeForegroundImage',\n\n defaultValue: false,\n },\n {\n localName: 'foregroundImageMediumId',\n\n defaultValue: '',\n },\n {\n localName: 'foregroundImageFileName',\n\n defaultValue: '',\n },\n {\n localName: 'removeBackgroundImage',\n\n defaultValue: false,\n },\n {\n localName: 'backgroundImageMediumId',\n\n defaultValue: '',\n },\n {\n localName: 'backgroundImageFileName',\n\n defaultValue: '',\n },\n {\n localName: 'removeMenuImage',\n\n defaultValue: false,\n },\n {\n localName: 'menuImageMediumId',\n\n defaultValue: '',\n },\n {\n localName: 'menuImageFileName',\n\n defaultValue: '',\n },\n {\n localName: 'namePropagation',\n\n defaultValue: false,\n },\n {\n localName: 'longNamePropagation',\n\n defaultValue: false,\n },\n {\n localName: 'descriptionPropagation',\n\n defaultValue: false,\n },\n {\n localName: 'alternativeText1Propagation',\n\n defaultValue: false,\n },\n {\n localName: 'alternativeText2Propagation',\n\n defaultValue: false,\n },\n {\n localName: 'mediumPropagation',\n\n defaultValue: false,\n },\n {\n localName: 'mediumFileName',\n\n defaultValue: '',\n },\n {\n localName: 'removeMedium',\n\n defaultValue: false,\n },\n {\n localName: 'backgroundColor',\n\n defaultValue: '',\n },\n {\n localName: 'foregroundColor',\n\n defaultValue: '',\n },\n {\n localName: 'styleId',\n\n defaultValue: 0,\n },\n {\n localName: 'toursCount',\n\n defaultValue: 0,\n },\n {\n localName: 'publishedToursCount',\n\n defaultValue: 0,\n },\n {\n localName: 'deleted',\n\n defaultValue: false,\n },\n {\n localName: 'screenOrientations',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'keywords',\n\n defaultValue: [],\n\n customImport: function (source: Record): unknown {\n const siteObjectKeywords: unknown =\n source['siteObjectKeywords'] ?? source['keywords'] ?? [];\n\n const keywords =\n typeof siteObjectKeywords === 'object' && siteObjectKeywords !== null\n ? Object.values(siteObjectKeywords).map(keyword => {\n /* Handle case where we have SiteObjectKeywordsDto[] or string[] */\n if (keyword.name !== undefined) {\n return keyword.name || '';\n } else {\n return keyword || '';\n }\n })\n : [];\n\n return keywords;\n },\n },\n {\n localName: 'isSiteObjectV2',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'siteObjectTypeV2Id',\n\n defaultValue: 0,\n optional: true,\n },\n];\n\nexport default MAPPINGS;\n","import { ISiteObjectOnFloorPlanDto_Props } from './SiteObjectOnFloorPlanDto.if';\nimport type ISiteObjectDto from './SiteObjectDto.if';\nimport type IFloorPlanDto from './FloorPlanDto.if';\nimport type IPinTypeDto from './PinTypeDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface ISiteObjectOnFloorPlanDto_Linkables {\n siteObject: (db: IModelSource) => Promise;\n floorPlan: (db: IModelSource) => Promise;\n pinType: (db: IModelSource) => Promise;\n}\n\nfunction _siteObject(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.siteObjectId\n ? db.get('ISiteObjectDto', this.siteObjectId)\n : Promise.reject('Missing field siteObjectOnFloorPlan.siteObjectId');\n}\nfunction _floorPlan(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.floorPlanId\n ? db.get('IFloorPlanDto', this.floorPlanId)\n : Promise.reject('Missing field siteObjectOnFloorPlan.floorPlanId');\n}\nfunction _pinType(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.pinTypeId\n ? db.get('IPinTypeDto', this.pinTypeId)\n : Promise.reject('Missing field siteObjectOnFloorPlan.pinTypeId');\n}\n\n/** \n * @description all custom properties for\n SiteObjectOnFloorPlanDto & methods to link against other entities\n*/\nfunction linkables(\n model: Partial,\n): ISiteObjectOnFloorPlanDto_Linkables {\n return {\n siteObject: _siteObject.bind(model),\n floorPlan: _floorPlan.bind(model),\n pinType: _pinType.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n /* id property does not exist on https://api.ats-workspace.com/$metadata/SiteObjectOnFloorPlanDto,\n the primary key is a combination here of the #floorplanId & the #siteObjectId,\n mimic this behaviour */\n {\n localName: 'id',\n\n defaultValue: 0,\n customImport: function (source: Record): unknown {\n const siteObjectIdRaw: unknown = source['siteObjectId'] ?? 0;\n const floorPlanIdRaw: unknown = source['siteObjectId'] ?? 0;\n\n const siteObjectId: number = typeof siteObjectIdRaw === 'number' ? siteObjectIdRaw : 0;\n const floorPlanId: number = typeof floorPlanIdRaw === 'number' ? floorPlanIdRaw : 0;\n\n const id = (floorPlanId << 4) & siteObjectId;\n\n return id;\n },\n removeValueOnExport: true,\n },\n {\n localName: 'siteObjectId',\n\n defaultValue: 0,\n },\n {\n localName: 'floorPlanId',\n\n defaultValue: 0,\n },\n {\n localName: 'x',\n\n defaultValue: 0,\n },\n {\n localName: 'y',\n\n defaultValue: 0,\n },\n {\n localName: 'pinTypeId',\n\n defaultValue: 0,\n },\n {\n localName: 'pinColor',\n\n defaultValue: '',\n },\n {\n localName: 'siteObjectName',\n\n defaultValue: '',\n },\n];\n\nexport default MAPPINGS;\n","import type { ISiteObjectKeywordDto_Props } from './SiteObjectKeywordDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface ISiteObjectKeywordDto_Linkables {}\n\n/** \n * @description all custom properties for\n SiteObjectKeywordDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ISiteObjectKeywordDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n {\n localName: 'isTag',\n\n defaultValue: false,\n },\n];\n\nexport default MAPPINGS;\n","import { ISiteObjectTranslationDto_Props } from './SiteObjectTranslationDto.if';\nimport type ILanguageDto from './LanguageDto.if';\nimport type IMediumDto from './MediumDto.if';\nimport type ISiteObjectDto from './SiteObjectDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface ISiteObjectTranslationDto_Linkables {\n siteObject: (db: IModelSource) => Promise;\n language: (db: IModelSource) => Promise;\n medium: (db: IModelSource) => Promise;\n}\n\nfunction _siteObject(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.siteObjectId\n ? db.get('ISiteObjectDto', this.siteObjectId)\n : Promise.reject('Missing field siteObjectTranslation.siteObjectId');\n}\n\nfunction _language(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.languageId\n ? db.get('ILanguageDto', this.languageId)\n : Promise.reject('Missing field siteObjectTranslation.languageId');\n}\n\nfunction _medium(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.mediumId\n ? db.get('IMediumDto', this.mediumId)\n : Promise.reject('Missing field siteObjectTranslation.mediumId');\n}\n\n/** \n * @description all custom properties for\n SiteObjectTranslationDto & methods to link against other entities\n*/\nfunction linkables(\n model: Partial,\n): ISiteObjectTranslationDto_Linkables {\n return {\n siteObject: _siteObject.bind(model),\n language: _language.bind(model),\n medium: _medium.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'siteObjectId',\n\n defaultValue: 0,\n },\n {\n localName: 'languageId',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'longName',\n\n defaultValue: '',\n },\n {\n localName: 'description',\n\n defaultValue: '',\n },\n {\n localName: 'alternativeText1',\n\n defaultValue: '',\n },\n {\n localName: 'alternativeText2',\n\n defaultValue: '',\n },\n {\n localName: 'mediumId',\n\n defaultValue: '',\n },\n {\n localName: 'text',\n\n defaultValue: '',\n },\n {\n localName: 'deleted',\n\n defaultValue: false,\n },\n];\n\nexport default MAPPINGS;\n","import type { ISiteObjectTypeDto_Props } from './SiteObjectTypeDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface ISiteObjectTypeDto_Linkables {}\n\n/** \n * @description all custom properties for\n SiteObjectTypeDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ISiteObjectTypeDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\nimport { VALUES_FIELD_DEFAULTEXTENSIONS, VALUES_FIELD_NAME } from './SiteObjectTypeDto.private';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'defaultExtensions',\n\n defaultValue: VALUES_FIELD_DEFAULTEXTENSIONS[0],\n },\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_NAME = [\n 'Image',\n 'Audio',\n 'Video',\n 'Text file',\n 'HTML file',\n 'Rubaway',\n] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n\nexport const VALUES_FIELD_DEFAULTEXTENSIONS = [\n '.png, .jpg, .jpeg',\n '.mp3, .aac',\n '.mp4',\n '.txt, .md',\n '.html, .zip',\n // null,\n];\nexport type TYPES_FIELD_DEFAULTEXTENSIONS = typeof VALUES_FIELD_DEFAULTEXTENSIONS[number];\n","import type { ISiteSupportedLanguageDto_Props } from './SiteSupportedLanguageDto.if';\nimport type ISiteDto from './SiteDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface ISiteSupportedLanguageDto_Linkables {\n site: (db: IModelSource) => Promise;\n}\n\nfunction _site(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.siteId\n ? db.get('ISiteDto', this.siteId)\n : Promise.reject('Missing field siteSupportedLanguage.siteId');\n}\n\n/** \n * @description all custom properties for\n SiteSupportedLanguageDto & methods to link against other entities\n*/\nfunction linkables(\n model: Partial,\n): ISiteSupportedLanguageDto_Linkables {\n return {\n site: _site.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n {\n localName: 'languageId',\n\n defaultValue: 0,\n },\n];\n\nexport default MAPPINGS;\n","import type { IStyleDto_Props } from './StyleDto.if';\nimport type IStyleDto from './StyleDto.if';\nimport type IFontSizeUnitDto from './FontSizeUnitDto.if';\nimport type IMediumDto from './MediumDto.if';\nimport type IBackgroundModeDto from './BackgroundModeDto.if';\nimport type IFontFamilyDto from './FontFamilyDto.if';\nimport type IFontStyleDto from './FontStyleDto.if';\nimport type IFontAlignmentDto from './FontAlignmentDto.if';\nimport type ISiteDto from './SiteDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface IStyleDto_Linkables {\n parent: (db: IModelSource) => Promise;\n site: (db: IModelSource) => Promise;\n foregroundImageMedium: (db: IModelSource) => Promise;\n backgroundImageMedium: (db: IModelSource) => Promise;\n menuImageMedium: (db: IModelSource) => Promise;\n backgroundMode: (db: IModelSource) => Promise;\n primaryFontFamily: (db: IModelSource) => Promise;\n primaryFontStyle: (db: IModelSource) => Promise;\n primaryFontSizeUnit: (db: IModelSource) => Promise;\n primaryFontAlignment: (db: IModelSource) => Promise;\n secondaryFontFamily: (db: IModelSource) => Promise;\n secondaryFontStyle: (db: IModelSource) => Promise;\n secondaryFontSizeUnit: (db: IModelSource) => Promise;\n secondaryFontAlignment: (db: IModelSource) => Promise;\n tertiaryFontFamily: (db: IModelSource) => Promise;\n tertiaryFontStyle: (db: IModelSource) => Promise;\n tertiaryFontSizeUnit: (db: IModelSource) => Promise;\n tertiaryFontAlignment: (db: IModelSource) => Promise;\n}\n\nfunction _parent(this: Partial, db: IModelSource): Promise {\n return this.parentId\n ? db.get('IStyleDto', this.parentId)\n : Promise.reject('Missing field style.parentId');\n}\n\nfunction _site(this: Partial, db: IModelSource): Promise {\n return this.siteId\n ? db.get('ISiteDto', this.siteId)\n : Promise.reject('Missing field style.siteId');\n}\n\nfunction _foregroundImageMedium(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.foregroundImageMediumId\n ? db.get('IMediumDto', this.foregroundImageMediumId)\n : Promise.reject('Missing field style.foregroundImageMediumId');\n}\n\nfunction _backgroundImageMedium(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.backgroundImageMediumId\n ? db.get('IMediumDto', this.backgroundImageMediumId)\n : Promise.reject('Missing field style.backgroundImageMediumId');\n}\n\nfunction _menuImageMedium(this: Partial, db: IModelSource): Promise {\n return this.menuImageMediumId\n ? db.get('IMediumDto', this.menuImageMediumId)\n : Promise.reject('Missing field style.menuImageMediumId');\n}\n\nfunction _backgroundMode(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.backgroundModeId\n ? db.get('IBackgroundModeDto', this.backgroundModeId)\n : Promise.reject('Missing field style.backgroundModeId');\n}\n\nfunction _primaryFontFamily(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.primaryFontFamilyId\n ? db.get('IFontFamilyDto', this.primaryFontFamilyId)\n : Promise.reject('Missing field style.primaryFontFamilyId');\n}\n\nfunction _primaryFontStyle(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.primaryFontStyleId\n ? db.get('IFontStyleDto', this.primaryFontStyleId)\n : Promise.reject('Missing field style.primaryFontStyleId');\n}\n\nfunction _primaryFontSizeUnit(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.primaryFontSizeUnitId\n ? db.get('IFontSizeUnitDto', this.primaryFontSizeUnitId)\n : Promise.reject('Missing field style.primaryFontSizeUnitId');\n}\n\nfunction _primaryFontAlignment(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.primaryFontAlignmentId\n ? db.get('IFontAlignmentDto', this.primaryFontAlignmentId)\n : Promise.reject('Missing field style.primaryFontAlignmentId');\n}\n\nfunction _secondaryFontFamily(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.secondaryFontFamilyId\n ? db.get('IFontFamilyDto', this.secondaryFontFamilyId)\n : Promise.reject('Missing field style.secondaryFontFamilyId');\n}\n\nfunction _secondaryFontStyle(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.secondaryFontStyleId\n ? db.get('IFontStyleDto', this.secondaryFontStyleId)\n : Promise.reject('Missing field style.secondaryFontStyleId');\n}\n\nfunction _secondaryFontSizeUnit(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.secondaryFontSizeUnitId\n ? db.get('IFontSizeUnitDto', this.secondaryFontSizeUnitId)\n : Promise.reject('Missing field style.secondaryFontSizeUnitId');\n}\n\nfunction _secondaryFontAlignment(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.secondaryFontAlignmentId\n ? db.get('IFontAlignmentDto', this.secondaryFontAlignmentId)\n : Promise.reject('Missing field style.secondaryFontAlignmentId');\n}\n\nfunction _tertiaryFontFamily(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.tertiaryFontFamilyId\n ? db.get('IFontFamilyDto', this.tertiaryFontFamilyId)\n : Promise.reject('Missing field style.tertiaryFontFamilyId');\n}\n\nfunction _tertiaryFontStyle(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.tertiaryFontStyleId\n ? db.get('IFontStyleDto', this.tertiaryFontStyleId)\n : Promise.reject('Missing field style.tertiaryFontStyleId');\n}\n\nfunction _tertiaryFontSizeUnit(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.tertiaryFontSizeUnitId\n ? db.get('IFontSizeUnitDto', this.tertiaryFontSizeUnitId)\n : Promise.reject('Missing field style.tertiaryFontSizeUnitId');\n}\n\nfunction _tertiaryFontAlignment(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.tertiaryFontAlignmentId\n ? db.get('IFontAlignmentDto', this.tertiaryFontAlignmentId)\n : Promise.reject('Missing field style.tertiaryFontAlignmentId');\n}\n\n/** \n * @description all custom properties for\n StyleDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): IStyleDto_Linkables {\n return {\n parent: _parent.bind(model),\n site: _site.bind(model),\n foregroundImageMedium: _foregroundImageMedium.bind(model),\n backgroundImageMedium: _backgroundImageMedium.bind(model),\n menuImageMedium: _menuImageMedium.bind(model),\n backgroundMode: _backgroundMode.bind(model),\n primaryFontFamily: _primaryFontFamily.bind(model),\n primaryFontStyle: _primaryFontStyle.bind(model),\n primaryFontSizeUnit: _primaryFontSizeUnit.bind(model),\n primaryFontAlignment: _primaryFontAlignment.bind(model),\n secondaryFontFamily: _secondaryFontFamily.bind(model),\n secondaryFontStyle: _secondaryFontStyle.bind(model),\n secondaryFontSizeUnit: _secondaryFontSizeUnit.bind(model),\n secondaryFontAlignment: _secondaryFontAlignment.bind(model),\n tertiaryFontFamily: _tertiaryFontFamily.bind(model),\n tertiaryFontStyle: _tertiaryFontStyle.bind(model),\n tertiaryFontSizeUnit: _tertiaryFontSizeUnit.bind(model),\n tertiaryFontAlignment: _tertiaryFontAlignment.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'parentId',\n\n defaultValue: 0,\n },\n {\n localName: 'isDefault',\n\n defaultValue: false,\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'description',\n\n defaultValue: '',\n },\n {\n localName: 'foregroundImageMediumId',\n\n defaultValue: '',\n },\n {\n localName: 'backgroundImageMediumId',\n\n defaultValue: '',\n },\n {\n localName: 'backgroundColor',\n\n defaultValue: '',\n },\n {\n localName: 'menuImageMediumId',\n\n defaultValue: '',\n },\n {\n localName: 'backgroundModeId',\n\n defaultValue: 0,\n },\n {\n localName: 'menuColor',\n\n defaultValue: '',\n },\n {\n localName: 'primaryFontFamilyId',\n\n defaultValue: 0,\n },\n {\n localName: 'primaryFontStyleId',\n\n defaultValue: 0,\n },\n {\n localName: 'primaryFontSize',\n\n defaultValue: 0,\n },\n {\n localName: 'primaryFontSizeUnitId',\n\n defaultValue: 0,\n },\n {\n localName: 'primaryFontColor',\n\n defaultValue: '',\n },\n {\n localName: 'primaryFontAlignmentId',\n\n defaultValue: 0,\n },\n {\n localName: 'secondaryFontFamilyId',\n\n defaultValue: 0,\n },\n {\n localName: 'secondaryFontStyleId',\n\n defaultValue: 0,\n },\n {\n localName: 'secondaryFontSize',\n\n defaultValue: 0,\n },\n {\n localName: 'secondaryFontSizeUnitId',\n\n defaultValue: 0,\n },\n {\n localName: 'secondaryFontColor',\n\n defaultValue: '',\n },\n {\n localName: 'secondaryFontAlignmentId',\n\n defaultValue: 0,\n },\n {\n localName: 'tertiaryFontFamilyId',\n\n defaultValue: 0,\n },\n {\n localName: 'tertiaryFontStyleId',\n\n defaultValue: 0,\n },\n {\n localName: 'tertiaryFontSize',\n\n defaultValue: 0,\n },\n {\n localName: 'tertiaryFontSizeUnitId',\n\n defaultValue: 0,\n },\n {\n localName: 'tertiaryFontColor',\n\n defaultValue: '',\n },\n {\n localName: 'tertiaryFontAlignmentId',\n\n defaultValue: 0,\n },\n {\n localName: 'foregroundImageFileName',\n\n defaultValue: '',\n },\n {\n localName: 'removeForegroundImage',\n\n defaultValue: false,\n },\n {\n localName: 'menuImageFileName',\n\n defaultValue: '',\n },\n {\n localName: 'removeMenuImage',\n\n defaultValue: false,\n },\n {\n localName: 'backgroundImageFileName',\n\n defaultValue: '',\n },\n {\n localName: 'removeBackgroundImage',\n\n defaultValue: false,\n },\n {\n localName: 'hasChildren',\n\n defaultValue: false,\n },\n {\n localName: 'primaryColor',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'secondaryColor',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'tertiaryColor',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'quaternaryColor',\n\n defaultValue: '',\n optional: true,\n },\n];\n\nexport default MAPPINGS;\n","import type { ITourDto_Props } from './TourDto.if';\nimport type ISiteDto from './SiteDto.if';\nimport type ITourTypeDto from './TourTypeDto.if';\nimport type ITourSubTypeDto from './TourSubTypeDto.if';\nimport type ITourStatusDto from './TourStatusDto.if';\nimport type IStyleDto from './StyleDto.if';\nimport type ITourSupportedLanguageDto from './TourSupportedLanguageDto.if';\nimport type ITourTranslationDto from './TourTranslationDto.if';\nimport type ILanguageDto from './LanguageDto.if';\nimport type IFloorPlanDto from './FloorPlanDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface ITourDto_Linkables {\n site: (db: IModelSource) => Promise;\n tourType: (db: IModelSource) => Promise;\n tourSubType: (db: IModelSource) => Promise;\n style: (db: IModelSource) => Promise;\n tourStatus: (db: IModelSource) => Promise;\n tourSupportedLanguages: (db: IModelSource) => Promise;\n translations: (db: IModelSource) => Promise;\n translation: (\n db: IModelSource,\n language: ILanguageDto | number,\n ) => Promise;\n floorplans: (db: IModelSource) => Promise>;\n}\n\nfunction _site(this: Partial, db: IModelSource): Promise {\n return this.siteId\n ? db.get('ISiteDto', this.siteId)\n : Promise.reject('Missing field tour.siteId');\n}\n\nfunction _tourType(this: Partial, db: IModelSource): Promise {\n return this.tourTypeId\n ? db.get('ITourTypeDto', this.tourTypeId)\n : Promise.reject('Missing field tour.tourTypeId');\n}\n\nfunction _tourSubType(this: Partial, db: IModelSource): Promise {\n return this.tourSubTypeId\n ? db.get('ITourSubTypeDto', this.tourSubTypeId)\n : Promise.reject('Missing field tour.tourSubTypeId');\n}\n\nfunction _style(this: Partial, db: IModelSource): Promise {\n return this.styleId\n ? db.get('IStyleDto', this.styleId)\n : Promise.reject('Missing field tour.styleId');\n}\n\nfunction _tourStatus(this: Partial, db: IModelSource): Promise {\n return this.tourStatusId\n ? db.get('ITourStatusDto', this.tourStatusId)\n : Promise.reject('Missing field tour.tourStatusId');\n}\n\nfunction _tourSupportedLanguages(\n this: Partial,\n db: IModelSource,\n): Promise> {\n if (!this.id) {\n return Promise.reject('Missing field tour.id');\n }\n\n const self = this;\n return new Promise(function (resolve, reject) {\n db.all('ITourSupportedLanguageDto')\n .then(function (allTourSupportedLanguages) {\n const match = allTourSupportedLanguages.filter(x => x.tourId === self.id);\n resolve(match);\n })\n .catch(error => reject(error));\n });\n}\n\nfunction _translations(\n this: Partial,\n db: IModelSource,\n): Promise> {\n if (!this.id) {\n return Promise.reject('Missing field tour.id');\n }\n\n const self = this;\n return new Promise(async function (resolve, reject) {\n try {\n /* TourDto <-1-M=> TourSupportedLanguageDto <-1-1-> TourTranslationDto */\n const matchTSL = await _tourSupportedLanguages.call(self, db);\n const matchTSLIds = matchTSL.map(x => x.id);\n const allTranslations = await db.all('ITourTranslationDto');\n const matchTranslations = allTranslations.filter(x =>\n matchTSLIds.includes(x.tourSupportedLanguageId),\n );\n\n resolve(matchTranslations);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction _translation(\n this: Partial,\n db: IModelSource,\n language: ILanguageDto | number,\n): Promise {\n if (!this.id) {\n return Promise.reject('Missing field tour.id');\n }\n\n const self = this;\n\n const languageId: number =\n (language as ILanguageDto)?.id != undefined\n ? Number((language as ILanguageDto).id ?? -1)\n : Number(language);\n\n return new Promise(async function (resolve, reject) {\n try {\n const allSSL = await db.all('ISiteSupportedLanguageDto');\n const matchSSL = allSSL.filter(x => x.languageId === languageId);\n const matchSSLIds = matchSSL.map(x => x.id);\n\n const allTSL = await _tourSupportedLanguages.call(self, db);\n const matchTSL = allTSL.filter(\n x =>\n matchSSLIds.includes(x.siteSupportedLanguageId) /* Workspace 1.0 */ ||\n x.languageId === languageId /* Workspace 2.0 */,\n );\n const matchTSLIds = matchTSL.map(x => x.id);\n\n const tourTranslations = await _translations.call(self, db);\n\n let matchTranslations = tourTranslations.filter(x =>\n matchTSLIds.includes(x.tourSupportedLanguageId),\n );\n\n /* Workspace 2.0 */\n if (matchTranslations.length <= 0 && matchTSLIds.length > 0) {\n matchTranslations = [await db.get('ITourTranslationDto', matchTSLIds[0])];\n }\n\n matchTranslations.length > 0\n ? resolve(matchTranslations[0])\n : reject(\n `Unable to find translation for languageId:${languageId}, tourId:${self.id}`,\n );\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction _floorplans(\n this: Partial,\n db: IModelSource,\n): Promise> {\n if (!this.id) {\n return Promise.reject('Missing field tour.id');\n }\n\n const thisId = this.id;\n\n return new Promise(async function (resolve, reject) {\n try {\n const allFloorPlanTours = await db.all('IFloorPlanTourDto');\n const matchFPTours = allFloorPlanTours.filter(fpTour => fpTour.tourId === thisId);\n const matchFloorPlans = await Promise.all(\n matchFPTours.map(fpTour => db.get('IFloorPlanDto', fpTour.floorPlanId)),\n );\n\n resolve(matchFloorPlans);\n } catch (error) {\n reject(error);\n }\n });\n}\n\n/** \n * @description all custom properties for\n TourDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ITourDto_Linkables {\n return {\n site: _site.bind(model),\n tourType: _tourType.bind(model),\n tourSubType: _tourSubType.bind(model),\n style: _style.bind(model),\n tourStatus: _tourStatus.bind(model),\n tourSupportedLanguages: _tourSupportedLanguages.bind(model),\n translations: _translations.bind(model),\n translation: _translation.bind(model),\n floorplans: _floorplans.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'fontColor',\n\n defaultValue: '',\n },\n {\n localName: 'fontSize',\n\n defaultValue: 0,\n },\n {\n localName: 'fontName',\n\n defaultValue: '',\n },\n {\n localName: 'backgroundColor',\n\n defaultValue: '',\n },\n {\n localName: 'foregroundColor',\n\n defaultValue: '',\n },\n {\n localName: 'description',\n\n defaultValue: '',\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n {\n localName: 'tourTypeId',\n\n defaultValue: 0,\n },\n {\n localName: 'tourSubTypeId',\n\n defaultValue: 0,\n },\n {\n localName: 'styleId',\n\n defaultValue: 0,\n },\n {\n localName: 'tourStatusId',\n\n defaultValue: 0,\n },\n {\n localName: 'stage1',\n\n defaultValue: false,\n },\n {\n localName: 'stage2',\n\n defaultValue: false,\n },\n {\n localName: 'stage3',\n\n defaultValue: false,\n },\n {\n localName: 'stage4',\n\n defaultValue: false,\n },\n {\n localName: 'createdById',\n\n defaultValue: 0,\n },\n {\n localName: 'modifiedById',\n\n defaultValue: 0,\n },\n {\n localName: 'version',\n\n defaultValue: 0,\n },\n {\n localName: 'minorVersion',\n\n defaultValue: 0,\n },\n {\n localName: 'publishedVersion',\n\n defaultValue: 0,\n },\n {\n localName: 'testVersion',\n\n defaultValue: 0,\n },\n {\n localName: 'internalName',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'grayOutContentOnPlayback',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'qrCode',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'visibilityScheduleShow',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'visibilityScheduleHide',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'siteObjectPlayOnLaunchId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'showFloorplanOnMenuOnly',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'hideOnTourSelect',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'backButtonStyleId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'hideKeypadNumber',\n\n defaultValue: false,\n optional: true,\n },\n {\n localName: 'screenOrientations',\n\n defaultValue: 0,\n optional: true,\n },\n];\n\nexport default MAPPINGS;\n","import type { ITourMenuItemDto_Props } from './TourMenuItemDto.if';\nimport type ITourDto from './TourDto.if';\nimport type IMenuItemDto from './MenuItemDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface ITourMenuItemDto_Linkables {\n menuItem: (db: IModelSource) => Promise;\n tour: (db: IModelSource) => Promise;\n}\n\nfunction _menuItem(this: Partial, db: IModelSource): Promise {\n return this.menuItemId\n ? db.get('IMenuItemDto', this.menuItemId)\n : Promise.reject('Missing field tourMenuItem.menuItemId');\n}\n\nfunction _tour(this: Partial, db: IModelSource): Promise {\n return this.tourId\n ? db.get('ITourDto', this.tourId)\n : Promise.reject('Missing field tourMenuItem.tourId');\n}\n\n/** \n * @description all custom properties for\n TourMenuItemDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ITourMenuItemDto_Linkables {\n return {\n menuItem: _menuItem.bind(model),\n tour: _tour.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'menuItemId',\n\n defaultValue: 0,\n },\n {\n localName: 'tourId',\n\n defaultValue: 0,\n },\n {\n localName: 'menuOrder',\n\n defaultValue: 0,\n },\n];\n\nexport default MAPPINGS;\n","import type { ITourRelatedSiteObjectDto_Props } from './TourRelatedSiteObjectDto.if';\nimport type ISiteObjectDto from './SiteObjectDto.if';\nimport type ITourDto from './TourDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface ITourRelatedSiteObjectDto_Linkables {\n siteObject: (db: IModelSource) => Promise;\n tour: (db: IModelSource) => Promise;\n}\n\nfunction _siteObject(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.siteObjectId\n ? db.get('ISiteObjectDto', this.siteObjectId)\n : Promise.reject('Missing field tourRelatedSiteObject.siteObjectId');\n}\nfunction _tour(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.tourId\n ? db.get('ITourDto', this.tourId)\n : Promise.reject('Missing field tourRelatedSiteObject.tourId');\n}\n\n/** \n * @description all custom properties for\n TourRelatedSiteObjectDto & methods to link against other entities\n*/\nfunction linkables(\n model: Partial,\n): ITourRelatedSiteObjectDto_Linkables {\n return {\n siteObject: _siteObject.bind(model),\n tour: _tour.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'tourId',\n\n defaultValue: 0,\n },\n {\n localName: 'elementOrder',\n\n defaultValue: 0,\n },\n {\n localName: 'siteObjectId',\n\n defaultValue: 0,\n },\n {\n localName: 'menuItemId',\n\n defaultValue: 0,\n optional: true,\n },\n {\n localName: 'parentTourRelatedSiteObjectId',\n\n defaultValue: 0,\n optional: true,\n },\n];\n\nexport default MAPPINGS;\n","import type { ITourStatusDto_Props } from './TourStatusDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface ITourStatusDto_Linkables {}\n\n/** \n * @description all custom properties for\n TourStatusDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ITourStatusDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\nimport { VALUES_FIELD_NAME } from './TourStatusDto.private';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_NAME = ['Published', 'Test', 'Draft', 'Unpublished', 'Deleted'] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n","import type { ITourSubTypeDto_Props } from './TourSubTypeDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface ITourSubTypeDto_Linkables {}\n\n/** \n * @description all custom properties for\n TourSubTypeDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ITourSubTypeDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'tourTypeId',\n\n defaultValue: 0,\n },\n];\n\nexport default MAPPINGS;\n","import type { ITourTranslationDto_Props } from './TourTranslationDto.if';\nimport type ITourSupportedLanguageDto from './TourSupportedLanguageDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface ITourTranslationDto_Linkables {\n tourSupportedLanguage: (db: IModelSource) => Promise;\n}\n\nfunction _tourSupportedLanguage(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.tourSupportedLanguageId\n ? db.get('ITourSupportedLanguageDto', this.tourSupportedLanguageId)\n : Promise.reject('Missing field tourTranslation.tourSupportedLanguageId');\n}\n\n/** \n * @description all custom properties for\n TourTranslationDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ITourTranslationDto_Linkables {\n return {\n tourSupportedLanguage: _tourSupportedLanguage.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'name',\n\n defaultValue: '',\n },\n {\n localName: 'completed',\n\n defaultValue: false,\n },\n {\n localName: 'tourSupportedLanguageId',\n\n defaultValue: 0,\n },\n {\n localName: 'mediumId',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'mediumFileName',\n\n defaultValue: '',\n optional: true,\n },\n {\n localName: 'removeMedium',\n\n defaultValue: false,\n optional: true,\n },\n];\n\nexport default MAPPINGS;\n","import type { ITourTypeDto_Props } from './TourTypeDto.if';\n\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface ITourTypeDto_Linkables {}\n\n/** \n * @description all custom properties for\n TourTypeDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ITourTypeDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\nimport { VALUES_FIELD_NAME } from './TourTypeDto.private';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'name',\n\n defaultValue: VALUES_FIELD_NAME[0],\n },\n];\n\nexport default MAPPINGS;\n","export const VALUES_FIELD_NAME = [\n 'Cascaded',\n 'Hamburger style',\n 'Keypad style',\n 'List menu',\n 'Outdoor map',\n] as const;\nexport type TYPES_FIELD_NAME = typeof VALUES_FIELD_NAME[number];\n","import type { ITourSupportedLanguageDto_Props } from './TourSupportedLanguageDto.if';\nimport type ISiteSupportedLanguageDto from './SiteSupportedLanguageDto.if';\nimport type ITourDto from './TourDto.if';\nimport type { IModelSource } from '../interface/db';\n\nexport interface ITourSupportedLanguageDto_Linkables {\n tour: (db: IModelSource) => Promise;\n siteSupportedLanguage: (db: IModelSource) => Promise;\n}\n\nfunction _siteSupportedLanguage(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.siteSupportedLanguageId\n ? db.get('ISiteSupportedLanguageDto', this.siteSupportedLanguageId)\n : Promise.reject('Missing field tourSupportedLanguage.siteSupportedLanguageId');\n}\n\nfunction _tour(\n this: Partial,\n db: IModelSource,\n): Promise {\n return this.tourId\n ? db.get('ITourDto', this.tourId)\n : Promise.reject('Missing field tourSupportedLanguage.tourId');\n}\n\n/** \n * @description all custom properties for\n TourSupportedLanguageDto & methods to link against other entities\n*/\nfunction linkables(\n model: Partial,\n): ITourSupportedLanguageDto_Linkables {\n return {\n siteSupportedLanguage: _siteSupportedLanguage.bind(model),\n tour: _tour.bind(model),\n };\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'siteSupportedLanguageId',\n\n defaultValue: 0,\n },\n {\n localName: 'tourId',\n\n defaultValue: 0,\n },\n {\n localName: 'languageId',\n\n defaultValue: 0,\n optional: true,\n },\n];\n\nexport default MAPPINGS;\n","import type { IUserDto_Props } from './UserDto.if';\n\n/** \n * @description all custom properties for\n UserDto & methods to link against other entities\n*/\n/* eslint-disable-next-line @typescript-eslint/no-empty-interface */\nexport interface IUserDto_Linkables {}\n\nfunction linkables(model: Partial): IUserDto_Linkables {\n return {};\n}\n\nexport default linkables;\n","import type MapProperty from '../private/IMapProperty';\n\n/**\n * @description array of each field & how to convert between external(api) & internal representations\n */\nconst MAPPINGS: Array = [\n {\n localName: 'id',\n\n defaultValue: 0,\n },\n {\n localName: 'userName',\n\n defaultValue: '',\n },\n {\n localName: 'firstName',\n\n defaultValue: '',\n },\n {\n localName: 'lastName',\n\n defaultValue: '',\n },\n {\n localName: 'avatarFileName',\n\n defaultValue: '',\n },\n {\n localName: 'removeAvatar',\n\n defaultValue: false,\n },\n {\n localName: 'avatar',\n\n defaultValue: false,\n },\n {\n localName: 'avatarMimeType',\n\n defaultValue: '',\n },\n {\n localName: 'isCmsUser',\n\n defaultValue: false,\n },\n {\n localName: 'emailConfirmed',\n\n defaultValue: false,\n },\n {\n localName: 'siteId',\n\n defaultValue: 0,\n },\n {\n localName: 'managedClientId',\n\n defaultValue: 0,\n },\n {\n localName: 'managedSiteId',\n\n defaultValue: 0,\n },\n {\n localName: 'modifiedById',\n\n defaultValue: 0,\n },\n {\n localName: 'mainRole',\n\n defaultValue: '',\n },\n {\n localName: 'workingForClientId',\n\n defaultValue: 0,\n },\n {\n localName: 'mainRoleHR',\n\n defaultValue: '',\n },\n];\n\nexport default MAPPINGS;\n","import { ILegacy_FloorPlanDto_Props } from './Legacy_FloorPlanDto.if';\nimport type { IModelSource } from '../interface/db';\nimport type IMediumDto from './MediumDto.if';\nimport type ISiteDto from './SiteDto.if';\nimport type IStyleDto from './StyleDto.if';\nimport type ISiteObjectOnFloorPlanDto from './SiteObjectOnFloorPlanDto.if';\nimport type ISiteObjectDto from './SiteObjectDto.if';\n\nexport interface ILegacy_FloorPlanDto_Linkables {\n image: (db: IModelSource) => Promise;\n site: (db: IModelSource) => Promise;\n style: (db: IModelSource) => Promise;\n allSiteObjectsOnFloorplan: (db: IModelSource) => Promise>;\n siteObjectOnFloorplan: (\n siteObject: ISiteObjectDto,\n db: IModelSource,\n ) => Promise;\n}\n\nfunction _image(this: Partial, db: IModelSource): Promise {\n return this.imageMediumId\n ? db.get('IMediumDto', this.imageMediumId)\n : Promise.reject('Missing field legacy_floorPlan.imageMediumId');\n}\n\nfunction _site(this: Partial, db: IModelSource): Promise {\n return this.siteId\n ? db.get('ISiteDto', this.siteId)\n : Promise.reject('Missing field legacy_floorPlan.siteId');\n}\n\nfunction _style(this: Partial, db: IModelSource): Promise {\n return this.styleId\n ? db.get('IStyleDto', this.styleId)\n : Promise.reject('Missing field legacy_floorPlan.styleId');\n}\n\nfunction _allSiteObjectsOnFloorplan(\n this: ILegacy_FloorPlanDto_Props,\n db: IModelSource,\n): Promise {\n if (!this.id) {\n return Promise.reject('Missing field legacy_floorPLan.id');\n }\n\n const _that = this;\n return new Promise(function (resolve, reject) {\n db.all('ISiteObjectOnFloorPlanDto')\n .then(soFPs => {\n const match = soFPs.filter(x => x.floorPlanId === _that.id);\n if (match.length > 0) {\n resolve(match);\n } else {\n reject('No SiteObjectOnFloorplans found for floorplanId:' + _that.id);\n }\n })\n .catch(error => reject(error));\n });\n}\n\nfunction _siteObjectOnFloorplan(\n this: ILegacy_FloorPlanDto_Props,\n siteObject: ISiteObjectDto,\n db: IModelSource,\n): Promise {\n if (!this.id) {\n return Promise.reject('Missing field legacy_floorPLan.id');\n }\n\n const _that = this;\n return new Promise(function (resolve, reject) {\n _allSiteObjectsOnFloorplan\n .call(_that, db)\n .then(soFPs => {\n const match = soFPs.filter(x => x.siteObjectId === siteObject.id);\n if (match.length > 0) {\n resolve(match[0]);\n } else {\n reject(\n `No matching soFPs found for floorplanId ${_that.id}/siteObjectId: ${siteObject.id}`,\n );\n }\n })\n .catch(error => reject(error));\n });\n}\n\n/** \n * @description all custom properties for\n LanguageDto & methods to link against other entities\n*/\nfunction linkables(model: Partial): ILegacy_FloorPlanDto_Linkables {\n return {\n image: _image,\n site: _site,\n style: _style,\n allSiteObjectsOnFloorplan: _allSiteObjectsOnFloorplan,\n siteObjectOnFloorplan: _siteObjectOnFloorplan,\n };\n}\n\nexport default linkables;\n","import { default as BackgroundModeDto } from '../impl/BackgroundModeDto';\nimport { default as BeaconDto } from '../impl/BeaconDto';\nimport { default as BeaconSensitivityDto } from '../impl/BeaconSensitivityDto';\nimport { default as CountryDto } from '../impl/CountryDto';\nimport { default as DeviceAccountDto } from '../impl/DeviceAccountDto';\nimport { default as FloorPlanDto } from '../impl/FloorPlanDto';\nimport { default as FloorPlanTourDto } from '../impl/FloorPlanTourDto';\nimport { default as FloorPlanTranslationDto } from '../impl/FloorPlanTranslationDto';\nimport { default as FontFamilyDto } from '../impl/FontFamilyDto';\nimport { default as FontStyleDto } from '../impl/FontStyleDto';\nimport { default as FontSizeUnitDto } from '../impl/FontSizeUnitDto';\nimport { default as FontAlignmentDto } from '../impl/FontAlignmentDto';\nimport { default as LanguageDto } from '../impl/LanguageDto';\nimport { default as MediumDto } from '../impl/MediumDto';\nimport { default as MenuItemDto } from '../impl/MenuItemDto';\nimport { default as MenuItemKeywordDto } from '../impl/MenuItemKeywordDto';\nimport { default as MenuItemTranslationDto } from '../impl/MenuItemTranslationDto';\nimport { default as PinTypeDto } from '../impl/PinTypeDto';\nimport { default as RoleDto } from '../impl/RoleDto';\nimport { default as ScreenOrientationDto } from '../impl/ScreenOrientationDto';\nimport { default as SiteDto } from '../impl/SiteDto';\nimport { default as SiteObjectDto } from '../impl/SiteObjectDto';\nimport { default as SiteObjectOnFloorPlanDto } from '../impl/SiteObjectOnFloorPlanDto';\nimport { default as SiteObjectKeywordDto } from '../impl/SiteObjectKeywordDto';\nimport { default as SiteObjectTranslationDto } from '../impl/SiteObjectTranslationDto';\nimport { default as SiteObjectTypeDto } from '../impl/SiteObjectTypeDto';\nimport { default as SiteSupportedLanguageDto } from '../impl/SiteSupportedLanguageDto';\nimport { default as StyleDto } from '../impl/StyleDto';\nimport { default as TourDto } from '../impl/TourDto';\nimport { default as TourMenuItemDto } from '../impl/TourMenuItemDto';\nimport { default as TourRelatedSiteObjectDto } from '../impl/TourRelatedSiteObjectDto';\nimport { default as TourStatusDto } from '../impl/TourStatusDto';\nimport { default as TourSubTypeDto } from '../impl/TourSubTypeDto';\nimport { default as TourTranslationDto } from '../impl/TourTranslationDto';\nimport { default as TourTypeDto } from '../impl/TourTypeDto';\nimport { default as TourSupportedLanguageDto } from '../impl/TourSupportedLanguageDto';\nimport { default as UserDto } from '../impl/UserDto';\nimport { default as Legacy_FloorPlanDto } from '../impl/Legacy_FloorPlanDto';\n\nimport { IModelInstantiator, INSTANTIATOR_INTERFACES } from '../interface/instantiator';\n\nconst InstantiateMap: INSTANTIATOR_INTERFACES = {\n IBackgroundModeDto: BackgroundModeDto,\n IBeaconDto: BeaconDto,\n IBeaconSensitivityDto: BeaconSensitivityDto,\n ICountryDto: CountryDto,\n IDeviceAccountDto: DeviceAccountDto,\n IFloorPlanDto: FloorPlanDto,\n IFloorPlanTourDto: FloorPlanTourDto,\n IFloorPlanTranslationDto: FloorPlanTranslationDto,\n IFontFamilyDto: FontFamilyDto,\n IFontStyleDto: FontStyleDto,\n IFontSizeUnitDto: FontSizeUnitDto,\n IFontAlignmentDto: FontAlignmentDto,\n ILanguageDto: LanguageDto,\n IMediumDto: MediumDto,\n IMenuItemDto: MenuItemDto,\n IMenuItemKeywordDto: MenuItemKeywordDto,\n IMenuItemTranslationDto: MenuItemTranslationDto,\n IPinTypeDto: PinTypeDto,\n IRoleDto: RoleDto,\n IScreenOrientationDto: ScreenOrientationDto,\n ISiteDto: SiteDto,\n ISiteObjectDto: SiteObjectDto,\n ISiteObjectOnFloorPlanDto: SiteObjectOnFloorPlanDto,\n ISiteObjectKeywordDto: SiteObjectKeywordDto,\n ISiteObjectTranslationDto: SiteObjectTranslationDto,\n ISiteObjectTypeDto: SiteObjectTypeDto,\n ISiteSupportedLanguageDto: SiteSupportedLanguageDto,\n IStyleDto: StyleDto,\n ITourDto: TourDto,\n ITourMenuItemDto: TourMenuItemDto,\n ITourRelatedSiteObjectDto: TourRelatedSiteObjectDto,\n ITourStatusDto: TourStatusDto,\n ITourSubTypeDto: TourSubTypeDto,\n ITourTranslationDto: TourTranslationDto,\n ITourTypeDto: TourTypeDto,\n ITourSupportedLanguageDto: TourSupportedLanguageDto,\n IUserDto: UserDto,\n\n ILegacy_FloorPlanDto: Legacy_FloorPlanDto,\n} as const;\n\nfunction instantiate<\n Interface extends keyof INSTANTIATOR_INTERFACES,\n Constructor extends INSTANTIATOR_INTERFACES[Interface],\n ApiData extends Parameters[0],\n Response extends ReturnType,\n>(className: Interface, data: ApiData): Response {\n if (!InstantiateMap.hasOwnProperty(className)) {\n throw new Error('Unable to find instantiator for: ' + className);\n }\n\n const constructor = InstantiateMap[className];\n return constructor(data as any) as Response;\n}\n\nfunction allInterfaces(): Array {\n return Object.keys(InstantiateMap) as Array;\n}\n\nconst module: IModelInstantiator = {\n instantiate,\n allInterfaces,\n};\n\nexport default module;\n","import IBackgroundModeDto, { IBackgroundModeDto_Props } from './BackgroundModeDto.if';\nimport type IBackgroundModeDto_Api from './BackgroundModeDto.api';\nimport linkables, { IBackgroundModeDto_Linkables } from './BackgroundModeDto.link';\nimport mappings from './BackgroundModeDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IBeaconDto_Props & IBeaconDto_Linkables \n & can be flattened back down to IBeaconDto_Api \n*/\nfunction generator(data: Partial): IBackgroundModeDto {\n return Transformers.create<\n IBackgroundModeDto_Api,\n IBackgroundModeDto_Props,\n IBackgroundModeDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import IBeaconDto, { IBeaconDto_Props } from './BeaconDto.if';\nimport type IBeaconDto_Api from './BeaconDto.api';\nimport linkables, { IBeaconDto_Linkables } from './BeaconDto.link';\nimport mappings from './BeaconDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IBeaconDto_Props & IBeaconDto_Linkables \n & can be flattened back down to IBeaconDto_Api \n*/\nfunction generator(data: Partial): IBeaconDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import IBeaconSensitivityDto, { IBeaconSensitivityDto_Props } from './BeaconSensitivityDto.if';\nimport type IBeaconSensitivityDto_Api from './BeaconSensitivityDto.api';\nimport linkables, { IBeaconSensitivityDto_Linkables } from './BeaconSensitivityDto.link';\nimport mappings from './BeaconSensitivityDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IBeaconSensitivityDto_Props & IBeaconSensitivityDto_Linkables \n & can be flattened back down to IBeaconSensitivityDto_Api \n*/\nfunction generator(data: Partial): IBeaconSensitivityDto {\n return Transformers.create<\n IBeaconSensitivityDto_Api,\n IBeaconSensitivityDto_Props,\n IBeaconSensitivityDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import ICountryDto, { ICountryDto_Props } from './CountryDto.if';\nimport type ICountryDto_Api from './CountryDto.api';\nimport linkables, { ICountryDto_Linkables } from './CountryDto.link';\nimport mappings from './CountryDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ICountryDto_Props & ICountryDto_Linkables \n & can be flattened back down to ICountryDto_Api \n*/\nfunction generator(data: Partial): ICountryDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import IDeviceAccountDto, { IDeviceAccountDto_Props } from './DeviceAccountDto.if';\nimport type IDeviceAccountDto_Api from './DeviceAccountDto.api';\nimport linkables, { IDeviceAccountDto_Linkables } from './DeviceAccountDto.link';\nimport mappings from './DeviceAccountDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IDeviceAccountDto_Props & IDeviceAccountDto_Linkables \n & can be flattened back down to IDeviceAccountDto_Api \n*/\nfunction generator(data: Partial): IDeviceAccountDto {\n return Transformers.create<\n IDeviceAccountDto_Api,\n IDeviceAccountDto_Props,\n IDeviceAccountDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import IFloorPlanDto, { IFloorPlanDto_Props } from './FloorPlanDto.if';\nimport type IFloorPlanDto_Api from './FloorPlanDto.api';\nimport linkables, { IFloorPlanDto_Linkables } from './FloorPlanDto.link';\nimport mappings from './FloorPlanDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IFloorPlanDto_Props & IFloorPlanDto_Linkables \n & can be flattened back down to IFloorPlanDto_Api \n*/\nfunction generator(data: Partial): IFloorPlanDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import IFloorPlanTourDto, { IFloorPlanTourDto_Props } from './FloorPlanTourDto.if';\nimport type IFloorPlanTourDto_Api from './FloorPlanTourDto.api';\nimport linkables, { IFloorPlanTourDto_Linkables } from './FloorPlanTourDto.link';\nimport mappings from './FloorPlanTourDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IFloorPlanDto_Props & IFloorPlanDto_Linkables \n & can be flattened back down to IFloorPlanDto_Api \n*/\nfunction generator(data: Partial): IFloorPlanTourDto {\n return Transformers.create<\n IFloorPlanTourDto_Api,\n IFloorPlanTourDto_Props,\n IFloorPlanTourDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import IFloorPlanTranslationDto, {\n IFloorPlanTranslationDto_Props,\n} from './FloorPlanTranslationDto.if';\nimport type IFloorPlanTranslationDto_Api from './FloorPlanTranslationDto.api';\nimport linkables, { IFloorPlanTranslationDto_Linkables } from './FloorPlanTranslationDto.link';\nimport mappings from './FloorPlanTranslationDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IFloorPlanTranslationDto_Props & IFloorPlanTranslationDto_Linkables \n & can be flattened back down to IFloorPlanTranslationDto_Api \n*/\nfunction generator(data: Partial): IFloorPlanTranslationDto {\n return Transformers.create<\n IFloorPlanTranslationDto_Api,\n IFloorPlanTranslationDto_Props,\n IFloorPlanTranslationDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import IFontFamilyDto, { IFontFamilyDto_Props } from './FontFamilyDto.if';\nimport type IFontFamilyDto_Api from './FontFamilyDto.api';\nimport linkables, { IFontFamilyDto_Linkables } from './FontFamilyDto.link';\nimport mappings from './FontFamilyDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IFontFamilyDto_Props & IFontFamilyDto_Linkables \n & can be flattened back down to IFontFamilyDto_Api \n*/\nfunction generator(data: Partial): IFontFamilyDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import IFontStyleDto, { IFontStyleDto_Props } from './FontStyleDto.if';\nimport type IFontStyleDto_Api from './FontStyleDto.api';\nimport linkables, { IFontStyleDto_Linkables } from './FontStyleDto.link';\nimport mappings from './FontStyleDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IFontStyleDto_Props & IFontStyleDto_Linkables \n & can be flattened back down to IFontStyleDto_Api \n*/\nfunction generator(data: Partial): IFontStyleDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import IFontSizeUnitDto, { IFontSizeUnitDto_Props } from './FontSizeUnitDto.if';\nimport type IFontSizeUnitDto_Api from './FontSizeUnitDto.api';\nimport linkables, { IFontSizeUnitDto_Linkables } from './FontSizeUnitDto.link';\nimport mappings from './FontSizeUnitDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IFontSizeUnitDto_Props & IFontSizeUnitDto_Linkables \n & can be flattened back down to IFontSizeUnitDto_Api \n*/\nfunction generator(data: Partial): IFontSizeUnitDto {\n return Transformers.create<\n IFontSizeUnitDto_Api,\n IFontSizeUnitDto_Props,\n IFontSizeUnitDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import IFontAlignmentDto, { IFontAlignmentDto_Props } from './FontAlignmentDto.if';\nimport type IFontAlignmentDto_Api from './FontAlignmentDto.api';\nimport linkables, { IFontAlignmentDto_Linkables } from './FontAlignmentDto.link';\nimport mappings from './FontAlignmentDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IFontAlignmentDto_Props & IFontAlignmentDto_Linkables \n & can be flattened back down to IFontAlignmentDto_Api \n*/\nfunction generator(data: Partial): IFontAlignmentDto {\n return Transformers.create<\n IFontAlignmentDto_Api,\n IFontAlignmentDto_Props,\n IFontAlignmentDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import ILanguageDto, { ILanguageDto_Props } from './LanguageDto.if';\nimport type ILanguageDto_Api from './LanguageDto.api';\nimport linkables, { ILanguageDto_Linkables } from './LanguageDto.link';\nimport mappings from './LanguageDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ILanguageDto_Props & ILanguageDto_Linkables \n & can be flattened back down to ILanguageDto_Api \n*/\nfunction generator(data: Partial): ILanguageDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import IMediumDto, { IMediumDto_Props } from './MediumDto.if';\nimport type IMediumDto_Api from './MediumDto.api';\nimport linkables, { IMediumDto_Linkables } from './MediumDto.link';\nimport mappings from './MediumDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IMediumDto_Props & IMediumDto_Linkables \n & can be flattened back down to IMediumDto_Api \n*/\nfunction generator(data: Partial): IMediumDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import IMenuItemDto, { IMenuItemDto_Props } from './MenuItemDto.if';\nimport type IMenuItemDto_Api from './MenuItemDto.api';\nimport linkables, { IMenuItemDto_Linkables } from './MenuItemDto.link';\nimport mappings from './MenuItemDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IMenuItemDto_Props & IMenuItemDto_Linkables \n & can be flattened back down to IMenuItemDto_Api \n*/\nfunction generator(data: Partial): IMenuItemDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import IMenuItemKeywordDto, { IMenuItemKeywordDto_Props } from './MenuItemKeywordDto.if';\nimport type IMenuItemKeywordDto_Api from './MenuItemKeywordDto.api';\nimport linkables, { IMenuItemKeywordDto_Linkables } from './MenuItemKeywordDto.link';\nimport mappings from './MenuItemKeywordDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IMenuItemKeywordDto_Props & IMenuItemKeywordDto_Linkables \n & can be flattened back down to IMenuItemKeywordDto_Api \n*/\nfunction generator(data: Partial): IMenuItemKeywordDto {\n return Transformers.create<\n IMenuItemKeywordDto_Api,\n IMenuItemKeywordDto_Props,\n IMenuItemKeywordDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import IMenuItemTranslationDto, {\n IMenuItemTranslationDto_Props,\n} from './MenuItemTranslationDto.if';\nimport type IMenuItemTranslationDto_Api from './MenuItemTranslationDto.api';\nimport linkables, { IMenuItemTranslationDto_Linkables } from './MenuItemTranslationDto.link';\nimport mappings from './MenuItemTranslationDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IMenuItemTranslationDto_Props & IMenuItemTranslationDto_Linkables \n & can be flattened back down to IMenuItemTranslationDto_Api \n*/\nfunction generator(data: Partial): IMenuItemTranslationDto {\n return Transformers.create<\n IMenuItemTranslationDto_Api,\n IMenuItemTranslationDto_Props,\n IMenuItemTranslationDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import IPinTypeDto, { IPinTypeDto_Props } from './PinTypeDto.if';\nimport type IPinTypeDto_Api from './PinTypeDto.api';\nimport linkables, { IPinTypeDto_Linkables } from './PinTypeDto.link';\nimport mappings from './PinTypeDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IPinTypeDto_Props & IPinTypeDto_Linkables \n & can be flattened back down to IPinTypeDto_Api \n*/\nfunction generator(data: Partial): IPinTypeDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import IRoleDto, { IRoleDto_Props } from './RoleDto.if';\nimport type IRoleDto_Api from './RoleDto.api';\nimport linkables, { IRoleDto_Linkables } from './RoleDto.link';\nimport mappings from './RoleDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IRoleDto_Props & IRoleDto_Linkables \n & can be flattened back down to IRoleDto_Api \n*/\nfunction generator(data: Partial): IRoleDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import IScreenOrientationDto, { IScreenOrientationDto_Props } from './ScreenOrientationDto.if';\nimport type IScreenOrientationDto_Api from './ScreenOrientationDto.api';\nimport linkables, { IScreenOrientationDto_Linkables } from './ScreenOrientationDto.link';\nimport mappings from './ScreenOrientationDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IScreenOrientationDto_Props & IScreenOrientationDto_Linkables \n & can be flattened back down to IScreenOrientationDto_Api \n*/\nfunction generator(data: Partial): IScreenOrientationDto {\n return Transformers.create<\n IScreenOrientationDto_Api,\n IScreenOrientationDto_Props,\n IScreenOrientationDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import ISiteDto, { ISiteDto_Props } from './SiteDto.if';\nimport type ISiteDto_Api from './SiteDto.api';\nimport linkables, { ISiteDto_Linkables } from './SiteDto.link';\nimport mappings from './SiteDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ISiteDto_Props & ISiteDto_Linkables \n & can be flattened back down to ISiteDto_Api \n*/\nfunction generator(data: Partial): ISiteDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import ISiteObjectDto, { ISiteObjectDto_Props } from './SiteObjectDto.if';\nimport type ISiteObjectDto_Api from './SiteObjectDto.api';\nimport linkables, { ISiteObjectDto_Linkables } from './SiteObjectDto.link';\nimport mappings from './SiteObjectDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ISiteObjectDto_Props & ISiteObjectDto_Linkables \n & can be flattened back down to ISiteObjectDto_Api \n*/\nfunction generator(data: Partial): ISiteObjectDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import ISiteObjectOnFloorPlanDto, {\n ISiteObjectOnFloorPlanDto_Props,\n} from './SiteObjectOnFloorPlanDto.if';\nimport type ISiteObjectOnFloorPlanDto_Api from './SiteObjectOnFloorPlanDto.api';\nimport linkables, { ISiteObjectOnFloorPlanDto_Linkables } from './SiteObjectOnFloorPlanDto.link';\nimport mappings from './SiteObjectOnFloorPlanDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ISiteObjectOnFloorPlanDto_Props & ISiteObjectOnFloorPlanDto_Linkables \n & can be flattened back down to ISiteObjectOnFloorPlanDto_Api \n*/\nfunction generator(data: Partial): ISiteObjectOnFloorPlanDto {\n return Transformers.create<\n ISiteObjectOnFloorPlanDto_Api,\n ISiteObjectOnFloorPlanDto_Props,\n ISiteObjectOnFloorPlanDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import ISiteObjectKeywordDto, { ISiteObjectKeywordDto_Props } from './SiteObjectKeywordDto.if';\nimport type ISiteObjectKeywordDto_Api from './SiteObjectKeywordDto.api';\nimport linkables, { ISiteObjectKeywordDto_Linkables } from './SiteObjectKeywordDto.link';\nimport mappings from './SiteObjectKeywordDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ISiteObjectKeywordDto_Props & ISiteObjectKeywordDto_Linkables \n & can be flattened back down to ISiteObjectKeywordDto_Api \n*/\nfunction generator(data: Partial): ISiteObjectKeywordDto {\n return Transformers.create<\n ISiteObjectKeywordDto_Api,\n ISiteObjectKeywordDto_Props,\n ISiteObjectKeywordDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import ISiteObjectTranslationDto, {\n ISiteObjectTranslationDto_Props,\n} from './SiteObjectTranslationDto.if';\nimport type ISiteObjectTranslationDto_Api from './SiteObjectTranslationDto.api';\nimport linkables, { ISiteObjectTranslationDto_Linkables } from './SiteObjectTranslationDto.link';\nimport mappings from './SiteObjectTranslationDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ISiteObjectTranslationDto_Props & ISiteObjectTranslationDto_Linkables \n & can be flattened back down to ISiteObjectTranslationDto_Api \n*/\nfunction generator(data: Partial): ISiteObjectTranslationDto {\n return Transformers.create<\n ISiteObjectTranslationDto_Api,\n ISiteObjectTranslationDto_Props,\n ISiteObjectTranslationDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import ISiteObjectTypeDto, { ISiteObjectTypeDto_Props } from './SiteObjectTypeDto.if';\nimport type ISiteObjectTypeDto_Api from './SiteObjectTypeDto.api';\nimport linkables, { ISiteObjectTypeDto_Linkables } from './SiteObjectTypeDto.link';\nimport mappings from './SiteObjectTypeDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ISiteObjectTypeDto_Props & ISiteObjectTypeDto_Linkables \n & can be flattened back down to ISiteObjectTypeDto_Api \n*/\nfunction generator(data: Partial): ISiteObjectTypeDto {\n return Transformers.create<\n ISiteObjectTypeDto_Api,\n ISiteObjectTypeDto_Props,\n ISiteObjectTypeDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import ISiteSupportedLanguageDto, {\n ISiteSupportedLanguageDto_Props,\n} from './SiteSupportedLanguageDto.if';\nimport type ISiteSupportedLanguageDto_Api from './SiteSupportedLanguageDto.api';\nimport linkables, { ISiteSupportedLanguageDto_Linkables } from './SiteSupportedLanguageDto.link';\nimport mappings from './SiteSupportedLanguageDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ISiteSupportedLanguageDto_Props & ISiteSupportedLanguageDto_Linkables \n & can be flattened back down to ISiteSupportedLanguageDto_Api \n*/\nfunction generator(data: Partial): ISiteSupportedLanguageDto {\n return Transformers.create<\n ISiteSupportedLanguageDto_Api,\n ISiteSupportedLanguageDto_Props,\n ISiteSupportedLanguageDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import IStyleDto, { IStyleDto_Props } from './StyleDto.if';\nimport type IStyleDto_Api from './StyleDto.api';\nimport linkables, { IStyleDto_Linkables } from './StyleDto.link';\nimport mappings from './StyleDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IStyleDto_Props & IStyleDto_Linkables \n & can be flattened back down to IStyleDto_Api \n*/\nfunction generator(data: Partial): IStyleDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import ITourDto, { ITourDto_Props } from './TourDto.if';\nimport type ITourDto_Api from './TourDto.api';\nimport linkables, { ITourDto_Linkables } from './TourDto.link';\nimport mappings from './TourDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ITourDto_Props & ITourDto_Linkables \n & can be flattened back down to ITourDto_Api \n*/\nfunction generator(data: Partial): ITourDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import ITourMenuItemDto, { ITourMenuItemDto_Props } from './TourMenuItemDto.if';\nimport type ITourMenuItemDto_Api from './TourMenuItemDto.api';\nimport linkables, { ITourMenuItemDto_Linkables } from './TourMenuItemDto.link';\nimport mappings from './TourMenuItemDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ITourMenuItemDto_Props & ITourMenuItemDto_Linkables \n & can be flattened back down to ITourMenuItemDto_Api \n*/\nfunction generator(data: Partial): ITourMenuItemDto {\n return Transformers.create<\n ITourMenuItemDto_Api,\n ITourMenuItemDto_Props,\n ITourMenuItemDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import ITourRelatedSiteObjectDto, {\n ITourRelatedSiteObjectDto_Props,\n} from './TourRelatedSiteObjectDto.if';\nimport type ITourRelatedSiteObjectDto_Api from './TourRelatedSiteObjectDto.api';\nimport linkables, { ITourRelatedSiteObjectDto_Linkables } from './TourRelatedSiteObjectDto.link';\nimport mappings from './TourRelatedSiteObjectDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ITourRelatedSiteObjectDto_Props & ITourRelatedSiteObjectDto_Linkables \n & can be flattened back down to ITourRelatedSiteObjectDto_Api \n*/\nfunction generator(data: Partial): ITourRelatedSiteObjectDto {\n return Transformers.create<\n ITourRelatedSiteObjectDto_Api,\n ITourRelatedSiteObjectDto_Props,\n ITourRelatedSiteObjectDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import ITourStatusDto, { ITourStatusDto_Props } from './TourStatusDto.if';\nimport type ITourStatusDto_Api from './TourStatusDto.api';\nimport linkables, { ITourStatusDto_Linkables } from './TourStatusDto.link';\nimport mappings from './TourStatusDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ITourStatusDto_Props & ITourStatusDto_Linkables \n & can be flattened back down to ITourStatusDto_Api \n*/\nfunction generator(data: Partial): ITourStatusDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import ITourSubTypeDto, { ITourSubTypeDto_Props } from './TourSubTypeDto.if';\nimport type ITourSubTypeDto_Api from './TourSubTypeDto.api';\nimport linkables, { ITourSubTypeDto_Linkables } from './TourSubTypeDto.link';\nimport mappings from './TourSubTypeDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ITourSubTypeDto_Props & ITourSubTypeDto_Linkables \n & can be flattened back down to ITourSubTypeDto_Api \n*/\nfunction generator(data: Partial): ITourSubTypeDto {\n return Transformers.create<\n ITourSubTypeDto_Api,\n ITourSubTypeDto_Props,\n ITourSubTypeDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import ITourTranslationDto, { ITourTranslationDto_Props } from './TourTranslationDto.if';\nimport type ITourTranslationDto_Api from './TourTranslationDto.api';\nimport linkables, { ITourTranslationDto_Linkables } from './TourTranslationDto.link';\nimport mappings from './TourTranslationDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ITourTranslationDto_Props & ITourTranslationDto_Linkables \n & can be flattened back down to ITourTranslationDto_Api \n*/\nfunction generator(data: Partial): ITourTranslationDto {\n return Transformers.create<\n ITourTranslationDto_Api,\n ITourTranslationDto_Props,\n ITourTranslationDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import ITourTypeDto, { ITourTypeDto_Props } from './TourTypeDto.if';\nimport type ITourTypeDto_Api from './TourTypeDto.api';\nimport linkables, { ITourTypeDto_Linkables } from './TourTypeDto.link';\nimport mappings from './TourTypeDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ITourTypeDto_Props & ITourTypeDto_Linkables \n & can be flattened back down to ITourTypeDto_Api \n*/\nfunction generator(data: Partial): ITourTypeDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import ITourSupportedLanguageDto, {\n ITourSupportedLanguageDto_Props,\n} from './TourSupportedLanguageDto.if';\nimport type ITourSupportedLanguageDto_Api from './TourSupportedLanguageDto.api';\nimport linkables, { ITourSupportedLanguageDto_Linkables } from './TourSupportedLanguageDto.link';\nimport mappings from './TourSupportedLanguageDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & ITourSupportedLanguageDto_Props & ITourSupportedLanguageDto_Linkables \n & can be flattened back down to ITourSupportedLanguageDto_Api \n*/\nfunction generator(data: Partial): ITourSupportedLanguageDto {\n return Transformers.create<\n ITourSupportedLanguageDto_Api,\n ITourSupportedLanguageDto_Props,\n ITourSupportedLanguageDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import IUserDto, { IUserDto_Props } from './UserDto.if';\nimport type IUserDto_Api from './UserDto.api';\nimport linkables, { IUserDto_Linkables } from './UserDto.link';\nimport mappings from './UserDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IUserDto_Props & IUserDto_Linkables \n & can be flattened back down to IUserDto_Api \n*/\nfunction generator(data: Partial): IUserDto {\n return Transformers.create(\n mappings,\n linkables(data),\n data,\n );\n}\n\nexport default generator;\n","import ILegacy_FloorPlanDto, { ILegacy_FloorPlanDto_Props } from './Legacy_FloorPlanDto.if';\nimport type ILegacy_FloorPlanDto_Api from './Legacy_FloorPlanDto.api';\nimport linkables, { ILegacy_FloorPlanDto_Linkables } from './Legacy_FloorPlanDto.link';\nimport mappings from './FloorPlanDto.map';\nimport Transformers from '../private/transformer';\n\n/** \n * @description pass in the data from the api response & build\n an object that responds to BaseDto & IFloorPlanDto_Props & IFloorPlanDto_Linkables \n & can be flattened back down to IFloorPlanDto_Api \n*/\nfunction generator(data: Partial): ILegacy_FloorPlanDto {\n return Transformers.create<\n ILegacy_FloorPlanDto_Api,\n ILegacy_FloorPlanDto_Props,\n ILegacy_FloorPlanDto_Linkables\n >(mappings, linkables(data), data);\n}\n\nexport default generator;\n","import instantiator from '../../model/util/instantiator';\nimport type { INSTANTIATOR_INTERFACES } from '../../model/interface/instantiator';\nimport type BaseDto from '../../model/interface/IBaseDto';\nimport type { IWorkspaceTable } from '../interface/table';\nimport type { ITable } from '../../private/db/interface';\n\n/* Api data from serve response for type of Interface */\ntype ApiData = Parameters<\n INSTANTIATOR_INTERFACES[Interface]\n>[0];\n\nfunction _isEntity>(\n object: unknown,\n): object is BaseDto {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n const record: Partial> = object as Record;\n\n return (\n typeof record.flatten === 'function' &&\n typeof record.apply === 'function' &&\n typeof record.mappings === 'function'\n );\n}\n\nclass ContainerTable<\n Interface extends keyof INSTANTIATOR_INTERFACES,\n Constructor extends INSTANTIATOR_INTERFACES[Interface],\n Entity extends ReturnType,\n> implements IWorkspaceTable\n{\n private _table: ITable, keyof ApiData>;\n private _entityName: Interface;\n\n constructor(options: {\n table: ITable, keyof ApiData>;\n name: keyof INSTANTIATOR_INTERFACES;\n }) {\n this._table = options.table;\n this._entityName = options.name as Interface;\n }\n\n count(): Promise {\n return this._table.count();\n }\n\n first(): Promise {\n const table = this._table;\n const entityName = this._entityName;\n return new Promise(function (resolve, reject) {\n table\n .toArray()\n .then((arr: Array>) => {\n if (arr.length === 0) {\n reject('No items found');\n }\n const item =\n instantiator.instantiate(entityName, arr[0]) ?? (null as Entity | null);\n item\n ? resolve(item as Entity)\n : reject('Failed to instantiate element ' + entityName);\n })\n .catch((err: Error) => reject(err));\n });\n }\n\n get>(pk: Key): Promise {\n const table = this._table;\n const entityName = this._entityName;\n return new Promise(function (resolve, reject) {\n table\n .get(pk)\n .then(data => {\n if (data) {\n const item = instantiator.instantiate(entityName, data ?? {});\n resolve(item as Entity);\n } else {\n reject('Unable to instantiate item for pk:' + pk);\n }\n })\n .catch((err: Error) => reject(err));\n });\n }\n\n all(): Promise {\n const table = this._table;\n const entityName = this._entityName;\n return new Promise(function (resolve, reject) {\n table\n .toArray()\n .then((arr: Array>) => {\n const items: Entity[] = [];\n arr.forEach(x => {\n const item = instantiator.instantiate(entityName, x);\n if (item) {\n items.push(item as Entity);\n }\n });\n resolve(items);\n })\n .catch((err: Error) => reject(err));\n });\n }\n\n bulkAddOrUpdate(items: Readonly>>): Promise {\n const table = this._table;\n return new Promise(function (resolve, reject) {\n const insItems: Array> = items.map(\n item => (_isEntity(item) ? item.flatten?.() : item) ?? item,\n );\n\n table\n .bulkAddOrUpdate(insItems)\n .then(() => resolve())\n .catch((err: Error) => {\n reject(err);\n });\n });\n }\n}\n\nfunction ctor<\n Interface extends keyof INSTANTIATOR_INTERFACES,\n Constructor extends INSTANTIATOR_INTERFACES[Interface],\n Entity extends ReturnType,\n>(\n name: Interface,\n table: ITable, keyof ApiData>,\n): IWorkspaceTable {\n const obj = new ContainerTable({\n name,\n table,\n });\n\n return obj as IWorkspaceTable;\n}\n\nexport default ctor;\n","import { ITransaction } from '../../../private/db/interface';\nimport type { DataMap, IDBVersionMigrator } from './interface';\n\nconst module: IDBVersionMigrator = {\n version: 1,\n description: 'Initial version',\n mappings: {\n IBackgroundModeDto: '++id,name',\n IBeaconDto: '++id,name,uuid,major,minor,siteId',\n IBeaconSensitivityDto: '++id,name',\n IFloorPlanDto:\n '++id,name,imageFileName,removeImage,imageMediumId,siteId,siteObjectsOnFloorPlanCount,styleId',\n IFontAlignmentDto: '++id,name',\n IFontFamilyDto: '++id,name',\n IFontSizeUnitDto: '++id,name',\n IFontStyleDto: '++id,name',\n ILanguageDto: '++id,name,code,isDefault',\n IMediumDto: '++id,mediumHash,fileName,mimeType,mediumSize,deleted,siteId',\n IMenuItemDto:\n '++id,name,namePropagation,imageFileName,removeImage,imageMediumId,siteId,toursCount,publishedToursCount,deleted',\n IMenuItemTranslationDto: '++id,menuItemId,languageId,name,deleted',\n IPinTypeDto: '++value,content,icon,text',\n IScreenOrientationDto: '++id,name',\n ISiteDto:\n '++id,name,logoFileName,removeLogo,logoMediumId,alarmEnabled,alarmPin,adminPin,languageSelectionMenu,tourSelectionMenu,clientId,screenOrientationId,majorVersion,minorVersion,toursCount,deviceAccountsCount,languageSelectionStyleId,tourSelectionStyleId',\n ISiteObjectOnFloorPlanDto:\n '++id,siteObjectId,floorPlanId,x,y,pinTypeId,pinColor,siteObjectName',\n ISiteObjectDto:\n '++id,name,int1,int2,int3,int4,altBoolean1,altBoolean2,isUniversal,keypadNumber,siteId,siteObjectTypeId,beaconId,beaconSensitivityId,fontSize,fontFamily,fontColor,menuPosition,nextObjectId,relatedObject1Id,relatedObject2Id,relatedObject3Id,relatedObject4Id,relatedObject5Id,removeForegroundImage,foregroundImageMediumId,foregroundImageFileName,removeBackgroundImage,backgroundImageMediumId,backgroundImageFileName,removeMenuImage,menuImageMediumId,menuImageFileName,namePropagation,longNamePropagation,descriptionPropagation,alternativeText1Propagation,alternativeText2Propagation,mediumPropagation,mediumFileName,removeMedium,backgroundColor,foregroundColor,styleId,toursCount,publishedToursCount,deleted,keywords',\n ISiteObjectTranslationDto:\n '++id,siteObjectId,languageId,name,longName,description,alternativeText1,alternativeText2,mediumId,text,deleted',\n ISiteObjectTypeDto: '++id,defaultExtensions,name',\n ISiteSupportedLanguageDto: '++id,siteId,languageId',\n IStyleDto:\n '++id,parentId,isDefault,siteId,name,description,foregroundImageMediumId,backgroundImageMediumId,backgroundColor,menuImageMediumId,backgroundModeId,menuColor,primaryFontFamilyId,primaryFontStyleId,primaryFontSize,primaryFontSizeUnitId,primaryFontColor,primaryFontAlignmentId,secondaryFontFamilyId,secondaryFontStyleId,secondaryFontSize,secondaryFontSizeUnitId,secondaryFontColor,secondaryFontAlignmentId,tertiaryFontFamilyId,tertiaryFontStyleId,tertiaryFontSize,tertiaryFontSizeUnitId,tertiaryFontColor,tertiaryFontAlignmentId,foregroundImageFileName,removeForegroundImage,menuImageFileName,removeMenuImage,backgroundImageFileName,removeBackgroundImage,hasChildren',\n ITourMenuItemDto: '++id,menuItemId,tourId,menuOrder',\n ITourRelatedSiteObjectDto: '++id,tourId,elementOrder,siteObjectId',\n ITourDto:\n '++id,name,fontColor,fontSize,fontName,backgroundColor,foregroundColor,description,siteId,tourTypeId,tourSubTypeId,styleId,tourStatusId,stage1,stage2,stage3,stage4,createdById,modifiedById,version,minorVersion,publishedVersion,testVersion',\n ITourStatusDto: '++id,name',\n ITourSubTypeDto: '++id,name,tourTypeId',\n ITourSupportedLanguageDto: '++id,siteSupportedLanguageId,tourId',\n ITourTranslationDto: '++tourSupportedLanguageId,name,completed',\n ITourTypeDto: '++id,name',\n },\n upgrade: (transaction: ITransaction) => Promise.resolve(),\n preInsertCleanup: (dataIn: DataMap) => {\n return dataIn;\n },\n};\n\nexport default module;\n","import {\n TYPES_FIELD_NAME as ScreenOrientation_TYPES_FIELD_NAME,\n VALUES_FIELD_BYTEVALUE as ScreenOrientation_FIELD_BYTEVALUE,\n} from '../../../model/impl/ScreenOrientationDto.private';\nimport type { DataMap, IDBVersionMigrator } from './interface';\nimport type { ILegacy_FloorPlanDto } from '../../../model';\nimport { ITransaction } from '../../../private/db/interface';\n\nfunction _isLegacyFloorPlan(floorplan: object): floorplan is ILegacy_FloorPlanDto {\n return 'imageMediumId' in floorplan;\n}\n\nconst module: IDBVersionMigrator = {\n version: 2,\n description: 'Workspace 2.0 support',\n mappings: {\n IBackgroundModeDto: '++id,name',\n IBeaconDto: '++id,name,uuid,major,minor,siteId',\n IBeaconSensitivityDto: '++id,name',\n ICountryDto: '++id,name',\n IDeviceAccountDto:\n '++id,userName,password,confirmPassword,siteId,modifiedById,isProductionUser',\n IFloorPlanDto:\n '++id,name,imageFileName,removeImage,imageMediumId,siteId,siteObjectsOnFloorPlanCount,styleId',\n IFloorPlanTourDto: '++id,floorPlanId,tourId',\n IFloorPlanTranslationDto:\n '++id,name,imageFileName,removeImage,imageMediumId,siteId,languageId,floorPlanId,positionX,positionY,zoom,siteObjectsOnFloorPlanCount,styleId',\n IFontFamilyDto: '++id,name',\n IFontStyleDto: '++id,name',\n IFontSizeUnitDto: '++id,name',\n IFontAlignmentDto: '++id,name',\n ILanguageDto: '++id,name,localizedName,isDefault',\n IMediumDto: '++id,mediumHash,fileName,mimeType,mediumSize,deleted,siteId',\n IMenuItemDto:\n '++id,name,namePropagation,imageFileName,removeImage,imageMediumId,siteId,toursCount,publishedToursCount,deleted,menuPosition,keypadNumber,contentStyleId,menuStyleId,isBackButtonOverride,backButtonStyleId,siteObjectId,int1,int2,int3,int4,bool1,bool2,tourId,menuTypeId,menuSubTypeId',\n IMenuItemKeywordDto: '++id,name,siteId,isTag',\n IMenuItemTranslationDto:\n '++id,menuItemId,languageId,name,deleted,subMenuName,description,backgroundImageFileName,removeBackgroundImage,backgroundImageMediumId,menuImageFileName,removeMenuImage,menuImageMediumId',\n IPinTypeDto: '++value,content,icon,text',\n IRoleDto: '++id,name',\n IScreenOrientationDto: '++id,name,byteValue',\n ISiteDto:\n '++id,name,logoFileName,removeLogo,logoMediumId,alarmEnabled,alarmPin,adminPin,languageSelectionMenu,tourSelectionMenu,clientId,screenOrientationId,majorVersion,minorVersion,toursCount,deviceAccountsCount,languageSelectionStyleId,tourSelectionStyleId,groupingSelectionMenu,screenOrientations,contactName,title,phone,mobile,addressLine1,addressLine2,county,postalCode,countryId,notes,bluetoothEnabled,streamMedia,streamingMediaPrefixUrl,showBatteryDot,disableSpeakerOutput,grayOutContentOnPlayback,backButtonStyleId,batteryThresholdRed,batteryThresholdOrange,screensaverEnabled,screensaverShowDelay,resetInactivityDelay,alwaysShowLanguageSelection,alwaysShowTourSelection,alwaysShowGroupingSelection,showGroupingSelectionHeader,showLanguageSelectionHeader,showTourSelectionHeader,showLanguageConfirmation,resetGroupingDaily,groupingMenuEnabled,groupingShow,groupingSelectionStyleId,defaultLanguageId,groupingHeader,languageHeader,tourHeader,siteObjectOnGroupingSelectionId,siteObjectOnGroupingSelectionInitName,siteObjectOnLanguageSelectionId,siteObjectOnLanguageSelectionInitName,siteObjectOnTourSelectionId,siteObjectOnTourSelectionInitName',\n ISiteObjectDto:\n '++id,name,int1,int2,int3,int4,altBoolean1,altBoolean2,isUniversal,keypadNumber,siteId,siteObjectTypeId,beaconId,beaconSensitivityId,fontSize,fontFamily,fontColor,menuPosition,nextObjectId,relatedObject1Id,relatedObject2Id,relatedObject3Id,relatedObject4Id,relatedObject5Id,removeForegroundImage,foregroundImageMediumId,foregroundImageFileName,removeBackgroundImage,backgroundImageMediumId,backgroundImageFileName,removeMenuImage,menuImageMediumId,menuImageFileName,namePropagation,longNamePropagation,descriptionPropagation,alternativeText1Propagation,alternativeText2Propagation,mediumPropagation,mediumFileName,removeMedium,backgroundColor,foregroundColor,styleId,toursCount,publishedToursCount,deleted,screenOrientations,keywords,isSiteObjectV2,siteObjectTypeV2Id',\n ISiteObjectOnFloorPlanDto:\n '++id,siteObjectId,floorPlanId,x,y,pinTypeId,pinColor,siteObjectName',\n ISiteObjectKeywordDto: '++id,name,siteId,isTag',\n ISiteObjectTranslationDto:\n '++id,siteObjectId,languageId,name,longName,description,alternativeText1,alternativeText2,mediumId,text,deleted',\n ISiteObjectTypeDto: '++id,defaultExtensions,name',\n ISiteSupportedLanguageDto: '++id,siteId,languageId',\n IStyleDto:\n '++id,parentId,isDefault,siteId,name,description,foregroundImageMediumId,backgroundImageMediumId,backgroundColor,menuImageMediumId,backgroundModeId,menuColor,primaryFontFamilyId,primaryFontStyleId,primaryFontSize,primaryFontSizeUnitId,primaryFontColor,primaryFontAlignmentId,secondaryFontFamilyId,secondaryFontStyleId,secondaryFontSize,secondaryFontSizeUnitId,secondaryFontColor,secondaryFontAlignmentId,tertiaryFontFamilyId,tertiaryFontStyleId,tertiaryFontSize,tertiaryFontSizeUnitId,tertiaryFontColor,tertiaryFontAlignmentId,foregroundImageFileName,removeForegroundImage,menuImageFileName,removeMenuImage,backgroundImageFileName,removeBackgroundImage,hasChildren,primaryColor,secondaryColor,tertiaryColor,quaternaryColor',\n ITourDto:\n '++id,name,fontColor,fontSize,fontName,backgroundColor,foregroundColor,description,siteId,tourTypeId,tourSubTypeId,styleId,tourStatusId,stage1,stage2,stage3,stage4,createdById,modifiedById,version,minorVersion,publishedVersion,testVersion,internalName,grayOutContentOnPlayback,qrCode,visibilityScheduleShow,visibilityScheduleHide,siteObjectPlayOnLaunchId,showFloorplanOnMenuOnly,hideOnTourSelect,backButtonStyleId,hideKeypadNumber,screenOrientations',\n ITourMenuItemDto: '++id,menuItemId,tourId,menuOrder',\n ITourRelatedSiteObjectDto:\n '++id,tourId,elementOrder,siteObjectId,menuItemId,parentTourRelatedSiteObjectId',\n ITourStatusDto: '++id,name',\n ITourSubTypeDto: '++id,name,tourTypeId',\n ITourTranslationDto:\n '++name,completed,tourSupportedLanguageId,mediumId,mediumFileName,removeMedium',\n ITourTypeDto: '++id,name',\n ITourSupportedLanguageDto: '++id,siteSupportedLanguageId,tourId,languageId',\n IUserDto:\n '++id,userName,firstName,lastName,avatarFileName,removeAvatar,avatar,avatarMimeType,isCmsUser,emailConfirmed,siteId,managedClientId,managedSiteId,modifiedById,mainRole,workingForClientId,mainRoleHR',\n ILegacy_FloorPlanDto:\n '++id,name,imageFileName,removeImage,imageMediumId,siteId,siteObjectsOnFloorPlanCount,styleId',\n },\n upgrade: (transaction: ITransaction) => {\n return new Promise(async function (resolve, reject) {\n try {\n /* Move IFloorPlanDto to ILegacy_FloorPlanDto (no move support, must add+delete) */\n const allFloorplansLegacy = await transaction.table('IFloorPlanDto').toArray();\n await transaction.table('ILegacy_FloorPlanDto').bulkAdd(allFloorplansLegacy);\n const floorPlanLegacyPrimaryKeys = await transaction\n .table('IFloorPlanDto')\n .toCollection()\n .keys();\n\n transaction\n .table('IFloorPlanDto')\n .bulkDelete(floorPlanLegacyPrimaryKeys)\n .catch(error => {\n throw error;\n });\n\n /* ignore addition operations */\n /* ICountryDto - add table */\n /* IDeviceAccountDto - add table */\n /* IFloorPlanTourDto - add table */\n /* IFloorPlanTranslationDto - add table */\n\n /* IMenuItemDto -- add fields */\n /* IMenuItemKeywordDto - add table */\n /* IMenuItemTranslationDto - add table */\n /* IRoleDto - add table */\n /* IScreenOrientationDto - add field byteValue(manual migration) */\n transaction\n .table('IScreenOrientationDto')\n .toCollection()\n .modify((obj: Record) => {\n const newObj = { ...obj };\n const name = (obj['name'] as ScreenOrientation_TYPES_FIELD_NAME) ?? 'All';\n newObj['byteValue'] = ScreenOrientation_FIELD_BYTEVALUE[name];\n return newObj;\n })\n .catch(error => {\n throw error;\n });\n\n /* ISiteDto - add fields */\n /* ISiteObjectDto - add fields */\n /* IStyleDto - add fields */\n /* ITourRelatedSiteObjectDto - add fields */\n /* ITourDto - add fields\n /* ITourSupportedLanguageDto - add fields */\n /* ITourTranslationDto - add fields */\n /* IUserDto - add fields */\n /* ILegacy_FloorPlanDto - add fields */\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n },\n preInsertCleanup: (dataIn: DataMap) => {\n const dataOut = { ...dataIn };\n\n const floorplans = dataOut['IFloorPlanDto'];\n\n if (floorplans.length > 0 && _isLegacyFloorPlan(floorplans[0])) {\n /* move to Legacy interface & remove existing */\n dataOut['ILegacy_FloorPlanDto'] = floorplans;\n dataOut['IFloorPlanDto'] = [];\n }\n\n return dataOut;\n },\n};\n\nexport default module;\n","import v1 from './1';\nimport v2 from './2';\n\nconst module = {\n versions: Object.freeze([v1, v2]),\n};\n\nexport default Object.freeze(module);\n","import DB from '../../private/db';\nimport { IDB } from '../../private/db/interface';\nimport tableConstructor from './table';\nimport type {\n IModelInstantiator,\n INSTANTIATOR_INTERFACES,\n} from '../../model/interface/instantiator';\nimport type { IDBOptions } from '../interface/instantiator';\nimport type { IWorkspaceDB } from '../interface/db';\nimport type { IWorkspaceTable } from '../interface/table';\nimport migration from '../private/migration';\nimport type { DataMap } from '../private/migration/interface';\n\n/* Api data from serve response for type of Interface */\ntype ApiData = Parameters<\n INSTANTIATOR_INTERFACES[Interface]\n>[0];\n\nclass ContainerDB implements IWorkspaceDB {\n private _db: IDB;\n private _openCount = 0;\n private _modelInstantiator: IModelInstantiator;\n\n name = '';\n\n constructor(modelInstantiator: IModelInstantiator, db: IDB) {\n this._db = db;\n\n /* pass in migrators to handle version upgrades */\n for (const migrator of migration.versions) {\n this._db.version(migrator.version).upgrade(migrator.upgrade);\n }\n\n this._modelInstantiator = modelInstantiator;\n this.name = this._db?.name;\n }\n\n open(): Promise {\n this._openCount += 1;\n if (this._openCount <= 1) {\n const self = this;\n return new Promise((resolve, reject) => {\n this._db\n .open()\n .then(_ => resolve(self))\n .catch(err => reject(err));\n });\n } else {\n return Promise.resolve(this);\n }\n }\n\n close(): void {\n if (this._db && this.isOpen() && this._openCount <= 1) {\n this._db.close();\n }\n\n this._openCount = Math.max(0, this._openCount - 1);\n }\n\n isOpen(): boolean {\n return this._db?.isOpen() ?? false;\n }\n\n preInsertCleanup(dataIn: DataMap): DataMap {\n let dataOut = dataIn;\n\n for (const migrator of migration.versions) {\n dataOut = migrator.preInsertCleanup(dataOut);\n }\n\n return dataOut;\n }\n\n table<\n Interface extends keyof INSTANTIATOR_INTERFACES,\n Constructor extends INSTANTIATOR_INTERFACES[Interface],\n Entity extends ReturnType,\n >(\n tableName: Interface,\n ): IWorkspaceTable {\n const table = this._db.table, keyof ApiData>(tableName);\n return tableConstructor(tableName, table);\n }\n\n first<\n Interface extends keyof INSTANTIATOR_INTERFACES,\n Entity extends ReturnType,\n >(tableName: Interface): Promise {\n if (!tableName) {\n return Promise.reject('No Table to search with');\n }\n\n const db = this._db;\n const instantiator = this._modelInstantiator.instantiate;\n\n return new Promise(function (resolve, reject) {\n db.table(tableName)\n .toArray()\n .then((items: Array>) => {\n if (items.length > 0) {\n const obj = instantiator(tableName, items[0]);\n resolve(obj as Entity);\n } else {\n reject(new Error(`No items found in table: ${tableName}`));\n }\n })\n .catch((err: Error) => reject(err));\n });\n }\n\n get<\n Interface extends keyof INSTANTIATOR_INTERFACES,\n Entity extends ReturnType,\n PrimaryKey extends keyof Parameters[0],\n >(tableName: Interface, pk: PrimaryKey): Promise {\n if (!pk) {\n return Promise.reject(`No PK to search with, table:${tableName}, pk:${pk}`);\n }\n\n const db = this._db;\n const instantiator = this._modelInstantiator.instantiate;\n\n return new Promise(function (resolve, reject) {\n db.table(tableName)\n .get(pk)\n .then((data?: ApiData) => {\n if (data) {\n const item = instantiator(tableName, data);\n resolve(item as Entity);\n } else {\n reject(`No data found in ${tableName} matching pk:${pk}`);\n }\n })\n .catch((err: Error) => reject(err));\n });\n }\n\n all<\n Interface extends keyof INSTANTIATOR_INTERFACES,\n Entity extends ReturnType,\n >(tableName: Interface): Promise> {\n if (!tableName) {\n return Promise.reject('No Table to search with');\n }\n\n const db = this._db;\n const instantiator = this._modelInstantiator.instantiate;\n\n return new Promise>(function (resolve, reject) {\n db.table(tableName)\n .toArray()\n .then((itemData: Array>) => {\n const items: Entity[] = itemData.map(item => instantiator(tableName, item));\n resolve(items);\n })\n .catch((err: Error) => reject(err));\n });\n }\n}\n\nfunction create(\n modelInstantiator: IModelInstantiator,\n options: IDBOptions = {},\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const dbMigrator = migration.versions[migration.versions.length - 1];\n\n const db = await DB().open(options.name ?? 'Workspace', {\n version: dbMigrator?.version,\n mappings: dbMigrator?.mappings,\n });\n\n const controller = new ContainerDB(modelInstantiator, db);\n\n resolve(controller);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default create;\n","import type { IDBOptions } from '../interface/instantiator';\nimport type { IWorkspaceDB } from '../interface/db';\nimport type { IModelInstantiator } from '../../model/interface';\nimport ContainerDB from './db';\nimport { IDB } from '../../private/db/interface';\n\ninterface IControllerDB {\n openCount: number;\n db: IWorkspaceDB;\n open(): Promise;\n close(): void;\n isOpen(): boolean;\n}\n\nfunction _open(this: IControllerDB): Promise {\n this.openCount += 1;\n\n if (this.isOpen() && this.openCount > 1) {\n return Promise.resolve(this.db); /* already open */\n }\n\n const db = this.db;\n\n return new Promise((resolve, reject) => {\n db.open()\n .then(dbOpen => resolve(dbOpen))\n .catch((err: Error) => reject(err));\n });\n}\n\nfunction _close(this: IControllerDB): void {\n this.openCount = Math.max(0, this.openCount - 1);\n\n if (this.isOpen() && this.openCount <= 0) {\n this.db.close();\n }\n}\n\nfunction _isOpen(this: IControllerDB): boolean {\n return this.db.isOpen();\n}\n\nfunction _newController(\n modelInstantiator: IModelInstantiator,\n options: IDBOptions,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const db = await ContainerDB(modelInstantiator, options);\n\n const controller: IControllerDB = {\n openCount: 0,\n db,\n open: _open,\n close: _close,\n isOpen: _isOpen,\n };\n\n resolve(controller);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst records: Record = {};\n\nfunction instantiator(\n modelInstantiator: IModelInstantiator,\n options: IDBOptions,\n): Promise {\n const existing = records[options.name ?? ''];\n\n if (existing) {\n return Promise.resolve(existing.db);\n }\n\n return new Promise(async function (resolve, reject) {\n try {\n const controller = await _newController(modelInstantiator, options);\n records[options.name ?? ''] = controller;\n\n resolve(controller.db);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default instantiator;\n","import type { IContainer } from '../../interface/container';\nimport { injectModelInstantiator } from '../../model/interface/bind';\nimport type { IDBOptions, IWorkspaceDBInstantiator } from '../interface/instantiator';\nimport instantiator from './instantiator';\n\nfunction bind(container: IContainer): IWorkspaceDBInstantiator {\n const modelInstantiator = injectModelInstantiator(container);\n\n return {\n open: (options: IDBOptions) => instantiator(modelInstantiator, options),\n };\n}\n\nexport default bind;\n","import type { IContainer } from '../../interface/container';\nimport dbInst from '../impl/instantiator.bind';\nimport { bindWorkspaceDB, injectWorkspaceDB, unbindWorkspaceDB } from '../interface/bind';\n\nfunction bind(container: IContainer) {\n bindWorkspaceDB(dbInst(container), container);\n}\n\nfunction unbind(container: IContainer) {\n unbindWorkspaceDB(container);\n}\n\nfunction expose(srcContainer: IContainer, dstContainer: IContainer) {\n bindWorkspaceDB(injectWorkspaceDB(srcContainer), dstContainer);\n}\n\nconst module = {\n bind,\n unbind,\n expose,\n};\n\nexport default module;\n","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017 Joachim Wester\n * MIT license\n */\nvar __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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n if (Array.isArray(obj)) {\n var keys = new Array(obj.length);\n for (var k = 0; k < keys.length; k++) {\n keys[k] = \"\" + k;\n }\n return keys;\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var i in obj) {\n if (hasOwnProperty(obj, i)) {\n keys.push(i);\n }\n }\n return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n switch (typeof obj) {\n case \"object\":\n return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case \"undefined\":\n return null; //this is how JSON.stringify behaves for array items\n default:\n return obj; //no need to clone primitives\n }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n var i = 0;\n var len = str.length;\n var charCode;\n while (i < len) {\n charCode = str.charCodeAt(i);\n if (charCode >= 48 && charCode <= 57) {\n i++;\n continue;\n }\n return false;\n }\n return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\n return path;\n return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n var found;\n for (var key in root) {\n if (hasOwnProperty(root, key)) {\n if (root[key] === obj) {\n return escapePathComponent(key) + '/';\n }\n else if (typeof root[key] === 'object') {\n found = _getPathRecursive(root[key], obj);\n if (found != '') {\n return escapePathComponent(key) + '/' + found;\n }\n }\n }\n }\n return '';\n}\nexport function getPath(root, obj) {\n if (root === obj) {\n return '/';\n }\n var path = _getPathRecursive(root, obj);\n if (path === '') {\n throw new Error(\"Object not found in root\");\n }\n return '/' + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n if (obj === undefined) {\n return true;\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (var i = 0, len = obj.length; i < len; i++) {\n if (hasUndefined(obj[i])) {\n return true;\n }\n }\n }\n else if (typeof obj === \"object\") {\n var objKeys = _objectKeys(obj);\n var objKeysLength = objKeys.length;\n for (var i = 0; i < objKeysLength; i++) {\n if (hasUndefined(obj[objKeys[i]])) {\n return true;\n }\n }\n }\n }\n return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n var messageParts = [message];\n for (var key in args) {\n var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n if (typeof value !== 'undefined') {\n messageParts.push(key + \": \" + value);\n }\n }\n return messageParts.join('\\n');\n}\nvar PatchError = /** @class */ (function (_super) {\n __extends(PatchError, _super);\n function PatchError(message, name, index, operation, tree) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\n _this.name = name;\n _this.index = index;\n _this.operation = operation;\n _this.tree = tree;\n Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\n return _this;\n }\n return PatchError;\n}(Error));\nexport { PatchError };\n","import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n add: function (obj, key, document) {\n obj[key] = this.value;\n return { newDocument: document };\n },\n remove: function (obj, key, document) {\n var removed = obj[key];\n delete obj[key];\n return { newDocument: document, removed: removed };\n },\n replace: function (obj, key, document) {\n var removed = obj[key];\n obj[key] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: function (obj, key, document) {\n /* in case move target overwrites an existing value,\n return the removed value, this can be taxing performance-wise,\n and is potentially unneeded */\n var removed = getValueByPointer(document, this.path);\n if (removed) {\n removed = _deepClone(removed);\n }\n var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n return { newDocument: document, removed: removed };\n },\n copy: function (obj, key, document) {\n var valueToCopy = getValueByPointer(document, this.from);\n // enforce copy by value so further operations don't affect source (see issue #177)\n applyOperation(document, { op: \"add\", path: this.path, value: _deepClone(valueToCopy) });\n return { newDocument: document };\n },\n test: function (obj, key, document) {\n return { newDocument: document, test: _areEquals(obj[key], this.value) };\n },\n _get: function (obj, key, document) {\n this.value = obj[key];\n return { newDocument: document };\n }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n add: function (arr, i, document) {\n if (isInteger(i)) {\n arr.splice(i, 0, this.value);\n }\n else { // array props\n arr[i] = this.value;\n }\n // this may be needed when using '-' in an array\n return { newDocument: document, index: i };\n },\n remove: function (arr, i, document) {\n var removedList = arr.splice(i, 1);\n return { newDocument: document, removed: removedList[0] };\n },\n replace: function (arr, i, document) {\n var removed = arr[i];\n arr[i] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: objOps.move,\n copy: objOps.copy,\n test: objOps.test,\n _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n if (pointer == '') {\n return document;\n }\n var getOriginalDestination = { op: \"_get\", path: pointer };\n applyOperation(document, getOriginalDestination);\n return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n if (validateOperation === void 0) { validateOperation = false; }\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (index === void 0) { index = 0; }\n if (validateOperation) {\n if (typeof validateOperation == 'function') {\n validateOperation(operation, 0, document, operation.path);\n }\n else {\n validator(operation, 0);\n }\n }\n /* ROOT OPERATIONS */\n if (operation.path === \"\") {\n var returnValue = { newDocument: document };\n if (operation.op === 'add') {\n returnValue.newDocument = operation.value;\n return returnValue;\n }\n else if (operation.op === 'replace') {\n returnValue.newDocument = operation.value;\n returnValue.removed = document; //document we removed\n return returnValue;\n }\n else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n if (operation.op === 'move') { // report removed item\n returnValue.removed = document;\n }\n return returnValue;\n }\n else if (operation.op === 'test') {\n returnValue.test = _areEquals(document, operation.value);\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n returnValue.newDocument = document;\n return returnValue;\n }\n else if (operation.op === 'remove') { // a remove on root\n returnValue.removed = document;\n returnValue.newDocument = null;\n return returnValue;\n }\n else if (operation.op === '_get') {\n operation.value = document;\n return returnValue;\n }\n else { /* bad operation */\n if (validateOperation) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else {\n return returnValue;\n }\n }\n } /* END ROOT OPERATIONS */\n else {\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var path = operation.path || \"\";\n var keys = path.split('/');\n var obj = document;\n var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n var len = keys.length;\n var existingPathFragment = undefined;\n var key = void 0;\n var validateFunction = void 0;\n if (typeof validateOperation == 'function') {\n validateFunction = validateOperation;\n }\n else {\n validateFunction = validator;\n }\n while (true) {\n key = keys[t];\n if (key && key.indexOf('~') != -1) {\n key = unescapePathComponent(key);\n }\n if (banPrototypeModifications && key == '__proto__') {\n throw new TypeError('JSON-Patch: modifying `__proto__` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n }\n if (validateOperation) {\n if (existingPathFragment === undefined) {\n if (obj[key] === undefined) {\n existingPathFragment = keys.slice(0, t).join('/');\n }\n else if (t == len - 1) {\n existingPathFragment = operation.path;\n }\n if (existingPathFragment !== undefined) {\n validateFunction(operation, 0, document, existingPathFragment);\n }\n }\n }\n t++;\n if (Array.isArray(obj)) {\n if (key === '-') {\n key = obj.length;\n }\n else {\n if (validateOperation && !isInteger(key)) {\n throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n } // only parse key when it's an integer for `arr.prop` to work\n else if (isInteger(key)) {\n key = ~~key;\n }\n }\n if (t >= len) {\n if (validateOperation && operation.op === \"add\" && key > obj.length) {\n throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n }\n var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n else {\n if (t >= len) {\n var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n obj = obj[key];\n // If we have more keys in the path, but the next value isn't a non-null object,\n // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (validateOperation) {\n if (!Array.isArray(patch)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n }\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var results = new Array(patch.length);\n for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n document = results[i].newDocument; // in case root was replaced\n }\n results.newDocument = document;\n return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n var operationResult = applyOperation(document, operation);\n if (operationResult.test === false) { // failed test\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n }\n else if (!objOps[operation.op]) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else if (typeof operation.path !== 'string') {\n throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n // paths that aren't empty string should start with \"/\"\n throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n }\n else if (document) {\n if (operation.op == \"add\") {\n var pathLen = operation.path.split(\"/\").length;\n var existingPathLen = existingPathFragment.split(\"/\").length;\n if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n }\n }\n else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n if (operation.path !== existingPathFragment) {\n throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n else if (operation.op === 'move' || operation.op === 'copy') {\n var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n var error = validate([existingValue], document);\n if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n try {\n if (!Array.isArray(sequence)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n if (document) {\n //clone document and sequence so that we can safely try applying operations\n applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n }\n else {\n externalValidator = externalValidator || validator;\n for (var i = 0; i < sequence.length; i++) {\n externalValidator(sequence[i], i, document, undefined);\n }\n }\n }\n catch (e) {\n if (e instanceof JsonPatchError) {\n return e;\n }\n else {\n throw e;\n }\n }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\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// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\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 THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!_areEquals(a[i], b[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!b.hasOwnProperty(keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!_areEquals(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n}\n;\n","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n function Mirror(obj) {\n this.observers = new Map();\n this.obj = obj;\n }\n return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n function ObserverInfo(callback, observer) {\n this.callback = callback;\n this.observer = observer;\n }\n return ObserverInfo;\n}());\nfunction getMirror(obj) {\n return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n var patches = [];\n var observer;\n var mirror = getMirror(obj);\n if (!mirror) {\n mirror = new Mirror(obj);\n beforeDict.set(obj, mirror);\n }\n else {\n var observerInfo = getObserverFromMirror(mirror, callback);\n observer = observerInfo && observerInfo.observer;\n }\n if (observer) {\n return observer;\n }\n observer = {};\n mirror.value = _deepClone(obj);\n if (callback) {\n observer.callback = callback;\n observer.next = null;\n var dirtyCheck = function () {\n generate(observer);\n };\n var fastCheck = function () {\n clearTimeout(observer.next);\n observer.next = setTimeout(dirtyCheck);\n };\n if (typeof window !== 'undefined') { //not Node\n window.addEventListener('mouseup', fastCheck);\n window.addEventListener('keyup', fastCheck);\n window.addEventListener('mousedown', fastCheck);\n window.addEventListener('keydown', fastCheck);\n window.addEventListener('change', fastCheck);\n }\n }\n observer.patches = patches;\n observer.object = obj;\n observer.unobserve = function () {\n generate(observer);\n clearTimeout(observer.next);\n removeObserverFromMirror(mirror, observer);\n if (typeof window !== 'undefined') {\n window.removeEventListener('mouseup', fastCheck);\n window.removeEventListener('keyup', fastCheck);\n window.removeEventListener('mousedown', fastCheck);\n window.removeEventListener('keydown', fastCheck);\n window.removeEventListener('change', fastCheck);\n }\n };\n mirror.observers.set(callback, new ObserverInfo(callback, observer));\n return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n if (invertible === void 0) { invertible = false; }\n var mirror = beforeDict.get(observer.object);\n _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n if (observer.patches.length) {\n applyPatch(mirror.value, observer.patches);\n }\n var temp = observer.patches;\n if (temp.length > 0) {\n observer.patches = [];\n if (observer.callback) {\n observer.callback(temp);\n }\n }\n return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n if (obj === mirror) {\n return;\n }\n if (typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n var newKeys = _objectKeys(obj);\n var oldKeys = _objectKeys(mirror);\n var changed = false;\n var deleted = false;\n //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n for (var t = oldKeys.length - 1; t >= 0; t--) {\n var key = oldKeys[t];\n var oldVal = mirror[key];\n if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n var newVal = obj[key];\n if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n }\n else {\n if (oldVal !== newVal) {\n changed = true;\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"replace\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(newVal) });\n }\n }\n }\n else if (Array.isArray(mirror) === Array.isArray(obj)) {\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"remove\", path: path + \"/\" + escapePathComponent(key) });\n deleted = true; // property has been deleted\n }\n else {\n if (invertible) {\n patches.push({ op: \"test\", path: path, value: mirror });\n }\n patches.push({ op: \"replace\", path: path, value: obj });\n changed = true;\n }\n }\n if (!deleted && newKeys.length == oldKeys.length) {\n return;\n }\n for (var t = 0; t < newKeys.length; t++) {\n var key = newKeys[t];\n if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n patches.push({ op: \"add\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(obj[key]) });\n }\n }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n if (invertible === void 0) { invertible = false; }\n var patches = [];\n _generate(tree1, tree2, patches, '', invertible);\n return patches;\n}\n","export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\nexport default Object.assign({}, core, duplex, {\n JsonPatchError,\n deepClone,\n escapePathComponent,\n unescapePathComponent\n});","import { IPatchItem } from './interface';\nimport jsonpatch from 'fast-json-patch';\n\nfunction apply(\n patchData: Array,\n source: Record = {},\n): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n const validatePatch = true;\n const mutateDocument = false;\n const result = jsonpatch.applyPatch(\n source,\n patchData as any,\n validatePatch,\n mutateDocument,\n ).newDocument;\n\n resolve(result);\n } catch (error) {\n console.error(`Failed to patch: ${JSON.stringify(error)}`);\n reject(error);\n }\n });\n}\n\nexport default apply;\n","import type { IDB } from '../../../private/db/interface';\nimport DB from '../../../private/db';\nimport type { IPatchStorage, IPatchStorageOptions } from './interface';\n\nconst TABLE_NAME = 'IPatchStorage';\nconst TABLE_MAPPINGS = '++name, hash, data';\n\nfunction _isPatchStorage(object: unknown): object is IPatchStorage {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n const record: Partial = object as Record;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record.name) &&\n !isNullOrUndefined(record.hash) &&\n !isNullOrUndefined(record.data)\n );\n}\n\nfunction _db(options: IPatchStorageOptions = {}): Promise {\n const db = DB().open(options.name ?? TABLE_NAME, {\n version: 1,\n mappings: {\n [TABLE_NAME]: TABLE_MAPPINGS,\n },\n });\n\n return db;\n}\n\nasync function load(name: string, options: IPatchStorageOptions = {}): Promise {\n const db = await _db(options);\n\n await db.open();\n\n const table = db.table(TABLE_NAME);\n\n const result = await table.get(name);\n\n db.close();\n\n if (!result) {\n throw new Error(`Unable to find patch-storage named: ${name}`);\n } else if (!_isPatchStorage(result)) {\n throw new Error(`Object returned is not patch-storage type: ${name}, ${result}`);\n }\n\n return result;\n}\n\nasync function save(data: IPatchStorage, options: IPatchStorageOptions = {}) {\n const db = await _db(options);\n\n await db.open();\n\n const table = db.table(TABLE_NAME);\n\n const result = await table.addOrUpdate(data.name, data);\n\n db.close();\n\n if (!result) {\n throw new Error('Failed to save data into patch-storage table');\n }\n}\n\nasync function remove(name: string, options: IPatchStorageOptions = {}) {\n const db = await _db(options);\n\n await db.open();\n\n const table = db.table(TABLE_NAME);\n\n await table.delete(name);\n\n db.close();\n}\n\nexport default {\n load,\n save,\n remove,\n};\n","import apply from './apply';\nimport { IPatch } from './interface';\nimport storage from './storage';\n\nconst module: IPatch = {\n apply,\n storage,\n};\n\nexport default module;\n","import type { IWorkspaceDB } from '../../../db/interface';\nimport type { IProgressPromise, IProgressPromiseGenerator } from '../../../interface/promise';\nimport type { INSTANTIATOR_INTERFACES } from '../../../model/interface';\nimport type { SourceApiDataArray, SourceApiRecord } from './interfaces';\n\nfunction _promise(\n db: IWorkspaceDB,\n entityName: Interface,\n items: SourceApiDataArray,\n): Promise {\n let promise = Promise.resolve();\n\n if (entityName) {\n promise = db.table(entityName).bulkAddOrUpdate(items);\n } else {\n promise = Promise.reject(`Unable to find table name for entity: ${entityName}`);\n }\n\n return promise;\n}\n\nfunction update(\n promiser: IProgressPromiseGenerator,\n db: IWorkspaceDB,\n source: Partial,\n): IProgressPromise {\n return promiser.promise(async function (resolve, reject, progress) {\n try {\n const patchPaths = Object.keys(source) as Array;\n const progressPerPath = 1.0 / patchPaths.length;\n\n for (let i = 0; i < patchPaths.length; i++) {\n const patchPath = patchPaths[i];\n const items = source[patchPath];\n\n if (!items) {\n continue; /* no data */\n }\n\n const promise = _promise(db, patchPath, items);\n\n await promise;\n\n progress(i * progressPerPath);\n }\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default update;\n","import type { INSTANTIATOR_INTERFACES } from '../../../model/interface/instantiator';\n\n/* typing this was gives up type safety, that we will always find a match for every INSTANTIATOR_INTERFACE */\nconst ENTITY_MAPPING: Record> = {\n IBackgroundModeDto: ['backgroundmodes', 'backgroundmode', 'backgroundmodedto'],\n IBeaconDto: ['beacons', 'beacon', 'beacondto'],\n IBeaconSensitivityDto: ['beaconsensitivities', 'beaconsensitivity', 'beaconsensitivitydto'],\n ICountryDto: ['country', 'countries', 'countrydto'],\n IDeviceAccountDto: ['deviceaccount', 'deviceaccounts', 'deviceaccountdto'],\n IFloorPlanDto: ['floorplans', 'floorplan', 'floorplandto'],\n IFloorPlanTourDto: ['floorplantours', 'floorplantour', 'floorplantourdto'],\n IFontAlignmentDto: ['fontalignments', 'fontalignment', 'fontalignmentdto'],\n IFontFamilyDto: ['fontfamilies', 'fontfamily', 'fontfamilydto'],\n IFontSizeUnitDto: ['fontsizeunits', 'fontsizeunit', 'fontsizeunitdto'],\n IFontStyleDto: ['fontstyles', 'fontstyle', 'fontstyledto'],\n IFloorPlanTranslationDto: [\n 'floorplantranslation',\n 'floorplantranslations',\n 'floorplantranslationdto',\n ],\n ILanguageDto: ['languages', 'language', 'languagedto'],\n IMediumDto: ['media', 'medium', 'mediumdto'],\n IMenuItemKeywordDto: ['menuitemkeyword', 'menuitemkeywords', 'menuitemkeyworddto'],\n IMenuItemDto: ['menuitems', 'menuitem', 'menuitemdto'],\n IMenuItemTranslationDto: [\n 'menuitemtranslations',\n 'menuitemtranslation',\n 'menuitemtranslationdto',\n ],\n IPinTypeDto: ['pintypes', 'pintype', 'pintypedto'],\n IRoleDto: ['role', 'roles', 'roledto'],\n IScreenOrientationDto: ['screenorientations', 'screenorientation', 'screenorientationdto'],\n ISiteDto: ['sites', 'site', 'sitedto'],\n ISiteObjectOnFloorPlanDto: [\n 'siteobjectonfloorplans',\n 'siteobjectonfloorplan',\n 'siteobjectonfloorplandto',\n ],\n ISiteObjectDto: ['siteobjects', 'siteobject', 'siteobjectdto'],\n ISiteObjectKeywordDto: ['siteobjectkeywords', 'siteobjectkeyword', 'siteobjectkeyworddto'],\n ISiteObjectTranslationDto: [\n 'siteobjecttranslations',\n 'siteobjecttranslation',\n 'siteobjecttranslationdto',\n ],\n ISiteObjectTypeDto: ['siteobjecttypes', 'siteobjecttype', 'siteobjecttypedto'],\n ISiteSupportedLanguageDto: [\n 'sitesupportedlanguages',\n 'sitesupportedlanguage',\n 'sitesupportedlanguagedto',\n ],\n IStyleDto: ['styles', 'style', 'styledto'],\n ITourRelatedSiteObjectDto: [\n 'tourrelatedsiteobjects',\n 'tourrelatedsiteobject',\n 'tourrelatedsiteobjectdto',\n ],\n ITourDto: ['tours', 'tour', 'tourdto'],\n ITourMenuItemDto: ['tourmenuitem', 'tourmenuitems', 'tourmenuitemdto'],\n ITourStatusDto: ['tourstatuses', 'tourstatus', 'tourstatusdto'],\n ITourSubTypeDto: ['toursubtypes', 'toursubtype', 'toursubtypedto'],\n ITourSupportedLanguageDto: [\n 'toursupportedlanguages',\n 'toursupportedlanguage',\n 'toursupportedlanguagedto',\n ],\n ITourTranslationDto: ['tourtranslations', 'tourtranslation', 'tourtranslationdto'],\n ITourTypeDto: ['tourtypes', 'tourtype', 'tourtypedto'],\n IUserDto: ['users', 'user', 'userdto'],\n\n ILegacy_FloorPlanDto: ['legacy_floorplan', 'legacy_floorplans', 'legacy_floorplandto'],\n};\n\n/* However rebuild at runtime (swap k->v) for quicker lookup times */\nconst LOOKUP_MAP: Record = {};\nlet LOOKUP_MAP_BUILT = false;\n\nfunction _buildMap() {\n for (const entityname of Object.keys(ENTITY_MAPPING) as Array) {\n const patchPaths = ENTITY_MAPPING[entityname];\n\n patchPaths.forEach(path => {\n LOOKUP_MAP[path] = entityname;\n });\n }\n}\n\nfunction entityNameFromPatchPath(path: string): keyof INSTANTIATOR_INTERFACES | null {\n if (!LOOKUP_MAP_BUILT) {\n LOOKUP_MAP_BUILT = true;\n _buildMap();\n }\n\n let pathCompare = path.toLowerCase();\n\n if (path.startsWith('/')) {\n pathCompare = pathCompare.slice(1);\n }\n\n return LOOKUP_MAP[pathCompare];\n}\n\nexport default entityNameFromPatchPath;\n","import { SourceApiRecord } from './interfaces';\nimport entityNameFromPatchPath from './patchMap';\n\nexport function siteDataResponseToEntityMap(patchData: Record): SourceApiRecord {\n const applicator: Partial = {};\n const keys = Object.keys(patchData);\n for (let i = 0; i < keys.length; i++) {\n const patchPath = keys[i];\n\n if (patchPath === 'hash') {\n continue;\n }\n\n let items = patchData[patchPath];\n\n /* '/site' comes back as an Object, not an array. make sure all added are arrays */\n if (!Array.isArray(items)) {\n items = [items];\n }\n\n const entityName = entityNameFromPatchPath(patchPath);\n\n if (!entityName) {\n continue;\n }\n\n applicator[entityName] = items;\n }\n\n return applicator as SourceApiRecord;\n}\n","import { patch, IPatchStorage } from '../../private';\nimport load from './dbupdate';\nimport { IConfigAPI } from '../../../interface/config';\nimport { IProgressPromise, IProgressPromiseGenerator } from '../../../interface/promise';\nimport { IAuthenticationManager } from '../../../controller/interface/auth';\nimport { siteDataResponseToEntityMap } from './util';\nimport { ISiteData, ISiteDataAPI } from '../../../api/interface/siteData';\nimport { IWorkspaceDB } from '../../../db/interface/db';\n\nfunction update(\n configAPI: Array>,\n siteAPI: ISiteDataAPI,\n promiser: IProgressPromiseGenerator,\n name: string,\n db: IWorkspaceDB,\n auth: IAuthenticationManager,\n): IProgressPromise {\n return promiser.promise(async function (resolve, reject, progress) {\n try {\n await db.open();\n\n progress(0.1);\n\n const token = await auth.renew();\n\n progress(0.2);\n\n const existingPatch: IPatchStorage = await patch.storage.load(name).catch(error => ({\n name: name,\n hash: '',\n data: {},\n }));\n\n progress(0.3);\n\n const urls = configAPI.map(config => config.url).filter(url => url) as Array;\n\n let siteData: ISiteData | null = null;\n\n for (const urlAPI of urls) {\n const siteFetcher = siteAPI.getSiteData(urlAPI, token, existingPatch.hash);\n\n siteFetcher.onProgress(function (data: number) {\n progress(0.3 + data * 0.3);\n });\n\n progress(0.6);\n\n siteData = await siteFetcher.catch(error => {\n console.error(\n `Failed to fetch api-url: ${urlAPI}, error:${JSON.stringify(error)}`,\n );\n return null;\n });\n\n if (siteData) {\n break;\n }\n }\n\n if (!siteData) {\n throw new Error(`Unable to find any site data`);\n } else if (siteData.patch.length > 0) {\n /* only bother if there is something in the patch */\n const newPatch: IPatchStorage = { ...existingPatch };\n newPatch.data = await patch.apply(siteData.patch, existingPatch.data);\n newPatch.hash = siteData.currentHash;\n\n await patch.storage.save(newPatch);\n\n const applicator = siteDataResponseToEntityMap(newPatch.data);\n\n await load(promiser, db, db.preInsertCleanup(applicator));\n }\n\n progress(0.8);\n\n db.close();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default update;\n","import type { IWorkspaceDB } from '../../../db/interface';\nimport type { IAuthenticationManager } from '../../../controller/interface';\nimport { injectSiteDataAPI } from '../../../api/interface/bind';\nimport { injectConfigAPI } from '../../../interface/config';\nimport type { IContainer } from '../../../interface/container';\nimport { injectProgressPromise } from '../../../interface/promise';\nimport updateSite from './updateSite';\n\nfunction bind(\n container: IContainer,\n): (name: string, db: IWorkspaceDB, auth: IAuthenticationManager) => ReturnType {\n const configAPI = injectConfigAPI(container);\n const siteAPI = injectSiteDataAPI(container);\n const promiser = injectProgressPromise(container);\n return (name: string, db: IWorkspaceDB, auth: IAuthenticationManager) =>\n updateSite(configAPI, siteAPI, promiser, name, db, auth);\n}\n\nexport default bind;\n","import type { IMediaAPI } from '../../api/interface/media';\nimport type { IAuthenticationManager } from '../../controller/interface/auth';\nimport type { IProgressPromise, IProgressPromiseGenerator } from '../../interface/promise';\nimport type { IMediumDto } from '../../model';\n\ninterface IMediaResponseType {\n Blob: Blob;\n ArrayBuffer: ArrayBuffer;\n none: void;\n}\n\nconst DEFAULT_MEDIUM_SIZE = 1024 * 1024 * 5; /* 5MiB */\n\nconst _clamp = (value: number, min: number, max: number) => Math.max(Math.min(value, max), min);\n\nfunction _isMediumDto(medium: Object): medium is IMediumDto {\n return 'id' in medium;\n}\n\nexport function download(\n promiser: IProgressPromiseGenerator,\n mediaAPI: () => Array,\n type: K,\n media: Array,\n auth: IAuthenticationManager,\n): IProgressPromise> {\n return promiser.promise(async function (resolve, reject, progressCb) {\n try {\n const accessToken = await auth.renew();\n let fetchError: string | null = null;\n\n progressCb(0.01);\n\n const totalBytesToDownload = media.reduce(\n (total: number, medium: IMediumDto | string) =>\n total + (_isMediumDto(medium) ? medium.mediumSize : DEFAULT_MEDIUM_SIZE),\n 0,\n );\n\n const responses: Array = [];\n\n let progressUptoThisFetch = 0; /* as we loop through keep a running counter of all weightings up to this point */\n\n /* download each fetch in order sequentially */\n for (let idx = 0; idx < media.length; idx++) {\n const medium = media[idx];\n\n const mediaId = _isMediumDto(medium) ? medium.id : medium;\n const mediumSize = _isMediumDto(medium) ? medium.mediumSize : DEFAULT_MEDIUM_SIZE;\n\n /* how much is this request worth overall to the progress */\n const progressWeighting = mediumSize / totalBytesToDownload;\n\n /* Fix warning: https://eslint.org/docs/rules/no-loop-func */\n const progressCounterSoFar = progressUptoThisFetch;\n\n const parameters = { accessToken };\n\n const fetchers: Array<() => IProgressPromise | null> = mediaAPI().map(\n api => () => api.getMedia(type, mediaId, parameters) as IProgressPromise,\n );\n\n const fetchErrors: Array = [];\n\n let result: V | null = null;\n\n for (const fetchLoader of fetchers) {\n const fetcher = fetchLoader();\n\n fetcher?.onProgress(progressNow => {\n const newProgress = progressCounterSoFar + progressNow * progressWeighting;\n progressCb(_clamp(newProgress, 0, 1));\n });\n\n try {\n result = await fetcher;\n\n if (type === 'Blob') {\n responses.push(result ?? (null as any));\n }\n\n progressUptoThisFetch += progressWeighting;\n\n progressCb(_clamp(progressUptoThisFetch, 0, 1));\n\n break; /* we're done, skip over rest of fetchers & move to next medium download */\n } catch (error) {\n fetchErrors.push(error);\n continue;\n }\n }\n\n if (fetchErrors.length > 0 && !result) {\n fetchError = `Download all media failed: ${JSON.stringify(fetchErrors)}`;\n console.error(fetchError);\n }\n }\n\n fetchError ? reject(fetchError) : resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default download;\n","import { injectMediaAPI } from '../../api/interface/bind';\nimport type { IAuthenticationManager } from '../../controller/interface/auth';\nimport type { IContainer } from '../../interface/container';\nimport type { IProgressPromise } from '../../interface/promise';\nimport { injectProgressPromise } from '../../interface/promise';\nimport type { IMediumDto } from '../../model';\nimport download from './download';\n\nfunction downloadMedia(\n container: IContainer,\n): (\n media: Array,\n auth: IAuthenticationManager,\n) => IProgressPromise> {\n const promiser = injectProgressPromise(container);\n const mediaAPI = () => injectMediaAPI(container);\n\n return (media: Array, auth: IAuthenticationManager) =>\n download(promiser, mediaAPI, 'Blob', media, auth);\n}\n\nfunction downloadMediaNoResponse(\n container: IContainer,\n): (\n media: Array,\n auth: IAuthenticationManager,\n) => IProgressPromise> {\n const promiser = injectProgressPromise(container);\n const mediaAPI = () => injectMediaAPI(container);\n\n return (media: Array, auth: IAuthenticationManager) =>\n download(promiser, mediaAPI, 'none', media, auth);\n}\n\nconst module = {\n downloadMedia,\n downloadMediaNoResponse,\n};\n\nexport default module;\n","import type { IMediumDto } from '../../model';\nimport type { IProgressPromise, IProgressPromiseGenerator } from '../../interface/promise';\nimport type { IMediaManager } from '../../controller/interface';\n\nfunction _isMedium(object: unknown): object is IMediumDto {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n /* force to boolean type */\n return !!(record.apply && record.flatten && record.mappings);\n}\n\nfunction removeMedia(\n promiser: IProgressPromiseGenerator,\n manager: IMediaManager,\n media: Array,\n): IProgressPromise {\n return promiser.promise(async function (resolve, reject, progress) {\n try {\n const mediaIds = media.map(item => (_isMedium(item) ? item.id : item));\n const progressPerItem = 1 / mediaIds.length;\n await mediaIds.forEach(async (mediaId, idx) => {\n await manager.removeMediumCache(mediaId);\n progress(idx * progressPerItem);\n });\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport default removeMedia;\n","import type { IContainer } from '../../interface/container';\nimport type { IMediumDto } from '../../model';\nimport type { IProgressPromise } from '../../interface/promise';\nimport { injectProgressPromise } from '../../interface/promise';\nimport type { IMediaManager } from '../../controller/interface';\nimport mediaDelete from './delete';\n\nfunction deleteMedia(\n container: IContainer,\n): (manager: IMediaManager, media: Array) => IProgressPromise {\n const promiser = injectProgressPromise(container);\n\n return (manager: IMediaManager, media: Array) =>\n mediaDelete(promiser, manager, media);\n}\n\nconst module = {\n deleteMedia,\n};\n\nexport default module;\n","import type { IContainer } from '../../interface/container';\nimport updateSiteBinder from './updateSite/updateSite.bind';\nimport downloadBinder from './download.bind';\nimport deleteBinder from './delete.bind';\nimport type { IJobs } from '../interface';\n\nfunction bind(container: IContainer): IJobs {\n const tasks: IJobs = {\n updateSite: updateSiteBinder(container),\n downloadMedia: downloadBinder.downloadMedia(container),\n downloadMediaNoResponse: downloadBinder.downloadMediaNoResponse(container),\n deleteMedia: deleteBinder.deleteMedia(container),\n };\n\n return tasks;\n}\n\nexport default bind;\n","import { IContainer } from '../../interface/container';\nimport jobsInst from '../impl/index';\nimport { bindJobs, injectJobs, unbindJobs } from '../interface/bind';\n\nfunction bind(container: IContainer) {\n bindJobs(jobsInst(container), container);\n}\n\nfunction unbind(container: IContainer) {\n unbindJobs(container);\n}\n\nfunction expose(srcContainer: IContainer, dstContainer: IContainer) {\n bindJobs(injectJobs(srcContainer), dstContainer);\n}\n\nconst module = {\n bind,\n unbind,\n expose,\n};\n\nexport default module;\n","import type { IContainer } from '../../interface/container';\nimport { bindModelInstantiator, unbindModelInstantiator } from '../interface/bind';\nimport instantiator from '../util/instantiator';\n\nfunction bind(container: IContainer) {\n bindModelInstantiator(instantiator, container);\n}\n\nfunction unbind(container: IContainer) {\n unbindModelInstantiator(container);\n}\n\nfunction expose(srcContainer: IContainer, dstContainer: IContainer) {\n bindModelInstantiator(instantiator, dstContainer);\n}\n\nconst module = {\n bind,\n unbind,\n expose,\n};\n\nexport default module;\n","import DB from '../../private/db';\nimport { IDB, ITable } from '../../private/db/interface';\n\nconst TABLE_NAME = 'ISession';\nconst TABLE_MAPPINGS = {\n [TABLE_NAME]: 'name, grouping, languageId, tourId, auth',\n};\n\nexport interface ISessionData extends Record {\n name: string;\n userState: string;\n auth: string;\n}\n\nconst DEFAULT_ISESSIONDATA: ISessionData = {\n name: '',\n userState: '',\n auth: '',\n};\n\nfunction _instantiate(name: string = TABLE_NAME): Promise {\n const db = DB().open(name, {\n version: 1,\n mappings: TABLE_MAPPINGS,\n });\n\n return db;\n}\n\nfunction exists(key: string): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const db = await _instantiate();\n\n await db.open();\n\n const table = db.table(TABLE_NAME) as ITable;\n const result = await table.get(key).catch(error => undefined);\n\n db.close();\n\n resolve(result ? true : false);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction load(key: string): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const db = await _instantiate();\n\n await db.open();\n\n const table = db.table(TABLE_NAME) as ITable;\n const result = await table.get(key);\n\n db.close();\n\n if (result) {\n resolve(result);\n } else {\n reject(`Unable to find data named: ${key}`);\n }\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction save(name: string, session: ISessionData): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const db = await _instantiate();\n\n await db.open();\n\n const table = db.table(TABLE_NAME);\n\n const result = await table.addOrUpdate(name, session);\n\n db.close();\n\n result ? resolve() : reject('Failed to save data into patch-storage table');\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction remove(name: string): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const db = await _instantiate();\n\n await db.open();\n\n const table = db.table(TABLE_NAME);\n\n await table.delete(name);\n\n db.close();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction constructor(data: Partial): ISessionData {\n return {\n ...DEFAULT_ISESSIONDATA,\n ...data,\n };\n}\n\nconst module = {\n load,\n save,\n exists,\n remove,\n constructor,\n};\n\nexport default module;\n","import type { ISession } from '../interface/session';\nimport { ISessionData } from '../private/db';\n\nfunction flatten(session: ISession): ISessionData {\n return {\n name: session.name,\n userState: session.state.flatten() ?? '',\n auth: session.auth.serialize() ?? '',\n };\n}\n\nconst module = {\n flatten,\n};\n\nexport default module;\n","import type { IAuthManagerInstantiator } from '../../controller/interface/auth';\nimport type { IMediaManagerInstantiator } from '../../controller/interface/media';\nimport type { IUserStateInstantiator } from '../../controller/interface/userstate';\nimport type { IWorkspaceDBInstantiator } from '../../db/interface';\nimport type { IConfigAPIRequired } from '../../interface';\nimport type { ISession, ISessionArgs } from '../interface/session';\nimport sessionDB, { ISessionData } from '../private/db';\nimport sessionSerialize from './session.serialize';\n\nconst _remove = async (session: ISession) => {\n const hasSession = await sessionDB.exists(session.name);\n\n if (!hasSession) {\n throw new Error(`Session ${session.name}, does not exist, cannot remove`);\n }\n\n await sessionDB.remove(session.name);\n};\n\nconst _save = async (session: ISession) => {\n await sessionDB.save(session.name, sessionSerialize.flatten(session));\n};\n\nfunction buildFromSessionData(\n authInst: IAuthManagerInstantiator,\n mediaInst: IMediaManagerInstantiator,\n userInst: IUserStateInstantiator,\n dbInst: IWorkspaceDBInstantiator,\n data: ISessionData,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const authArgs = authInst.expand(data.auth);\n const auth = authInst.open(authArgs);\n\n const db = await dbInst.open({ name: data.name });\n\n const media = mediaInst.open(db, auth);\n const state = userInst.expand(data.userState);\n\n const session: ISession = {\n name: data.name,\n\n auth,\n db,\n media,\n state,\n\n save: async function (this: ISession) {\n return _save(this);\n },\n remove: async function (this: ISession) {\n return _remove(this);\n },\n };\n\n resolve(session);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction buildFromArgs(\n configAPI: IConfigAPIRequired,\n authInst: IAuthManagerInstantiator,\n mediaInst: IMediaManagerInstantiator,\n userInst: IUserStateInstantiator,\n dbInst: IWorkspaceDBInstantiator,\n nameIn: string,\n args: ISessionArgs,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const name = nameIn ?? args.apiUsername ?? configAPI.auth.username;\n\n const auth = authInst.open({\n apiUrl: args.apiUrl ?? configAPI.url,\n apiExtension: configAPI.extension.auth,\n clientId: configAPI.auth.clientId,\n clientSecret: configAPI.auth.clientSecret,\n grantType: configAPI.auth.grantType,\n username: args.apiUsername ?? configAPI.auth.username,\n password: args.apiPassword ?? configAPI.auth.password,\n });\n\n const db = await dbInst.open({ name });\n\n const media = mediaInst.open(db, auth);\n const state = userInst.open(name);\n\n const session: ISession = {\n name,\n\n auth,\n db,\n media,\n state,\n\n save: async function (this: ISession) {\n return _save(this);\n },\n remove: async function (this: ISession) {\n return _remove(this);\n },\n };\n\n resolve(session);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n buildFromArgs,\n buildFromSessionData,\n};\n\nexport default module;\n","import type { ISession } from '../interface/session';\n\nlet memoryCache: Array = [];\n\nconst get = (name: string) => memoryCache.filter(session => session.name === name)[0];\n\nconst save = (session: ISession) => {\n /* only add if it's missing */\n if (!get(session.name)) {\n memoryCache.push(session);\n } else {\n console.error(\n `Already exists, ignoring add to cache for session: ${JSON.stringify(session)}`,\n );\n }\n};\n\nconst remove = (sessionDelete: ISession) => {\n memoryCache = memoryCache.filter(session => session.name !== sessionDelete.name);\n};\n\nconst all = () => memoryCache;\n\nconst module = {\n get,\n save,\n remove,\n all,\n};\n\nexport default module;\n","import type { ISession, ISessionActiveCallback } from '../interface/session';\n\ninterface ISessionActiveRecord {\n name: string;\n callback: ISessionActiveCallback;\n}\n\nlet activeSession: ISession | null = null;\nlet activeRecords: Array = [];\n\nconst active = () => activeSession;\n\nconst setActive = (sessionNew: ISession | null) => {\n activeSession = sessionNew;\n activeRecords.forEach(record => record.callback(sessionNew));\n};\n\nconst subscribeActiveChanged = (callback: ISessionActiveCallback, key?: string): void => {\n activeRecords.push({ name: key ?? `callback-${activeRecords.length}`, callback });\n};\n\nconst unsubscribeActiveChanged = (callback: ISessionActiveCallback): void => {\n activeRecords = activeRecords.filter(cb => cb.callback !== callback);\n};\n\nconst subscriber = (subscriberKey: string): ISessionActiveCallback | undefined =>\n activeRecords.filter(record => record.name === subscriberKey)[0]?.callback;\n\nconst module = {\n active,\n setActive,\n subscribeActiveChanged,\n unsubscribeActiveChanged,\n subscriber,\n};\n\nexport default module;\n","import type { IAuthManagerInstantiator } from '../../controller/interface/auth';\nimport type { IMediaManagerInstantiator } from '../../controller/interface/media';\nimport type { IUserStateInstantiator } from '../../controller/interface/userstate';\nimport type { IWorkspaceDBInstantiator } from '../../db/interface';\nimport { IConfigAPIRequired } from '../../interface/config';\nimport type { ISession, ISessionArgs } from '../interface/session';\nimport sessionDB from '../private/db';\nimport sessionBuilder from './session.build';\nimport sessionCache from './session.cache';\nimport sessionCallback from './session.callback';\n\nfunction open(\n configAPI: IConfigAPIRequired,\n authInst: IAuthManagerInstantiator,\n mediaInst: IMediaManagerInstantiator,\n userInst: IUserStateInstantiator,\n dbInst: IWorkspaceDBInstantiator,\n name: string,\n args?: ISessionArgs,\n): Promise {\n const existing = sessionCache.get(name);\n\n if (existing) {\n return Promise.resolve(existing);\n }\n\n return new Promise(async function (resolve, reject) {\n try {\n let sessionObj: ISession | null = null;\n\n if (args) {\n sessionObj = await sessionBuilder.buildFromArgs(\n configAPI,\n authInst,\n mediaInst,\n userInst,\n dbInst,\n name,\n args,\n );\n } else {\n /* ignore throw errors */\n const sessionData = await sessionDB.load(name).catch(() => undefined);\n\n if (sessionData) {\n sessionObj = await sessionBuilder.buildFromSessionData(\n authInst,\n mediaInst,\n userInst,\n dbInst,\n sessionData,\n );\n }\n }\n\n if (!sessionObj) {\n throw new Error(`Cannot find/load session: ${name}/${JSON.stringify(args)}`);\n }\n\n resolve(sessionObj);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction exists(name: string): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n /* ignore throw errors */\n const sessionData = await sessionDB.load(name).catch(() => undefined);\n const cached = sessionCache.get(name);\n\n resolve(cached || sessionData ? true : false);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n open,\n exists,\n ...sessionCallback,\n};\n\nexport default module;\n","import type { IConfigAPI } from '@monofe/util';\nimport {\n injectAuthManager,\n injectMediaManager,\n injectUserStateManager,\n} from '../../controller/interface/bind';\nimport { injectWorkspaceDB } from '../../db/interface/bind';\nimport { IConfigAPIRequired, injectConfigAPI } from '../../interface/config';\nimport type { IContainer } from '../../interface/container';\nimport type { ISessionArgs, ISessionInstantiator } from '../interface/session';\nimport sessionInst from './session';\n\nfunction _isConfigAPI(object: Partial | undefined): object is Required {\n return object &&\n object.url &&\n object.auth?.clientId &&\n object.auth?.clientSecret &&\n object.auth?.grantType &&\n object.auth?.password &&\n object.auth?.username &&\n object.extension?.auth &&\n object.extension?.media &&\n object.extension?.mediaDiff &&\n object.extension?.mediaWithAccessToken &&\n object.extension?.siteData\n ? true\n : false;\n}\n\nfunction _configAPI(container: IContainer): IConfigAPIRequired {\n const configAPI = injectConfigAPI(container);\n\n const config: IConfigAPIRequired | undefined = configAPI.filter(config =>\n _isConfigAPI(config),\n )[0] as IConfigAPIRequired | undefined;\n\n if (!config) {\n throw new Error(`No valid config-api found, ${JSON.stringify(configAPI)}`);\n }\n\n return config;\n}\n\nfunction session(container: IContainer): ISessionInstantiator {\n const authInst = injectAuthManager(container);\n const mediaInst = injectMediaManager(container);\n const userInst = injectUserStateManager(container);\n const dbInst = injectWorkspaceDB(container);\n const configAPI = _configAPI(container);\n\n const session: ISessionInstantiator = {\n ...sessionInst,\n open: (name: string, args?: ISessionArgs) =>\n sessionInst.open(configAPI, authInst, mediaInst, userInst, dbInst, name, args),\n exists: (name: string) => sessionInst.exists(name),\n };\n\n return session;\n}\n\nexport default session;\n","import { IContainer } from '../../interface/container';\nimport sessionInst from '../impl/session.bind';\nimport { bindAPISession, injectAPISession, unbindAPISession } from '../interface/bind';\n\nfunction bind(container: IContainer) {\n bindAPISession(sessionInst(container), container);\n}\n\nfunction unbind(container: IContainer) {\n unbindAPISession(container);\n}\n\nfunction expose(srcContainer: IContainer, dstContainer: IContainer) {\n bindAPISession(injectAPISession(srcContainer), dstContainer);\n}\n\nconst module = {\n bind,\n unbind,\n expose,\n};\n\nexport default module;\n","import type { MediumPathResolver } from './cache.source';\n\nconst CACHE_SEARCH_PARAMS = {\n ignoreMethod: true,\n ignoreSearch: true,\n};\n\nconst openCache = (name: string): Promise =>\n window.caches === undefined ? Promise.reject('No caches available') : caches.open(name);\n\nconst mediaRequestList = async (\n mediaId: string,\n urlResolver: MediumPathResolver,\n): Promise> => {\n const urlFetchList = await urlResolver(mediaId);\n const requestList = urlFetchList.map(urlFetch => new Request(urlFetch));\n return requestList;\n};\n\nconst cacheResponsesForRequests = async (\n requests: Array,\n cache: Cache,\n): Promise> => {\n const responses = await Promise.all(\n requests.map(request => cache.match(request, CACHE_SEARCH_PARAMS)),\n );\n return responses.filter(response => response !== undefined) as Array;\n};\n\nconst deleteMediaIdsFromCache = async (\n cache: Cache,\n mediaIds: string[],\n urlResolver: MediumPathResolver,\n): Promise => {\n const allRequests = await Promise.all(\n mediaIds.map(mediaId => {\n return mediaRequestList(mediaId, urlResolver);\n }),\n );\n\n return Promise.all(\n allRequests.flat().map(request => cache.delete(request, CACHE_SEARCH_PARAMS)),\n );\n};\n\nconst module = {\n openCache,\n mediaRequestList,\n cacheResponsesForRequests,\n deleteMediaIdsFromCache,\n};\n\nexport default module;\n","import type { IMediaURLResolverParameters, MediaBinaryStorageTypeMap } from '../interface/cache';\nimport cacheUtil from './cache.util';\n\nexport type CacheResolver = () => Promise;\n\n/* to save on effort on repeated slow-downs opening cache, save the output & re-use each time it is requested */\nconst cachedCacheResolver = (cacheName: string): CacheResolver => {\n let cacheHandle: Cache | null = null;\n\n const resolver = async () => {\n if (!cacheHandle) {\n cacheHandle = await cacheUtil.openCache(cacheName);\n }\n return cacheHandle;\n };\n\n return resolver;\n};\n\nfunction _isCachedItem(\n cacheResolver: CacheResolver,\n mediaId: string,\n urlResolver: MediumPathResolver,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const cache = await cacheResolver();\n\n const allRequests = await cacheUtil.mediaRequestList(mediaId, urlResolver);\n\n /* early exit when we get a hit */\n for (const request of allRequests) {\n const responses = await cacheUtil.cacheResponsesForRequests([request], cache);\n\n if (responses.length > 0) {\n resolve(true);\n return;\n }\n }\n\n resolve(false);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction _isCached(\n cacheResolver: CacheResolver,\n mediaIdArg: string | Array,\n urlResolver: MediumPathResolver,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const mediaIds = Array.isArray(mediaIdArg) ? mediaIdArg : [mediaIdArg];\n\n const cacheResponses = await Promise.all(\n mediaIds.map(mediaId => _isCachedItem(cacheResolver, mediaId, urlResolver)),\n );\n\n const missingCacheValues = cacheResponses.filter(isCached => !isCached).length > 0;\n\n const isAllCached = !missingCacheValues;\n\n resolve(isAllCached);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction _removeFromCache(\n cacheResolver: CacheResolver,\n mediaIdIArg: string | Array,\n urlResolver: MediumPathResolver,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const cache = await cacheResolver();\n\n const mediaIds = Array.isArray(mediaIdIArg) ? mediaIdIArg : [mediaIdIArg];\n\n await cacheUtil.deleteMediaIdsFromCache(cache, mediaIds, urlResolver);\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nasync function _addToCache(\n cacheResolver: CacheResolver,\n request: RequestInfo,\n response: Response,\n): Promise {\n const cache = await cacheResolver();\n\n await cache.put(request, response);\n}\n\nfunction _cachedResponse<\n T extends keyof MediaBinaryStorageTypeMap,\n U extends MediaBinaryStorageTypeMap[T],\n>(\n cacheResolver: CacheResolver,\n mediaId: string,\n urlResolver: MediumPathResolver,\n type: T,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const cache = await cacheResolver();\n\n const allRequests = await cacheUtil.mediaRequestList(mediaId, urlResolver);\n\n for (const request of allRequests) {\n const responseList = await cacheUtil.cacheResponsesForRequests([request], cache);\n\n const response = responseList.pop();\n\n if (!response) {\n continue;\n }\n\n switch (type) {\n case 'Blob':\n resolve((await response.blob()) as U);\n return;\n\n case 'ArrayBuffer':\n resolve((await response.arrayBuffer()) as U);\n return;\n\n case 'none':\n resolve(undefined as U);\n return;\n\n default:\n throw new Error(`Unknown type for cache search: ${type}`);\n }\n }\n\n reject(new Error(`Unable to find id: ${mediaId} in cache`));\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport interface IMediaCacheSource {\n cacheName: () => string;\n isCached: (mediaId: string | string[]) => Promise;\n removeFromCache: (mediaId: string) => Promise;\n addToCache: (request: RequestInfo, response: Response) => Promise;\n cachedResponse<\n T extends keyof MediaBinaryStorageTypeMap,\n U extends MediaBinaryStorageTypeMap[T],\n >(\n mediaId: string,\n type: T,\n ): Promise;\n}\n\nexport type MediumPathResolver = (\n mediaId: string,\n parameters?: IMediaURLResolverParameters,\n) => Array;\n\nfunction cacheSource(cacheName: string, mediaIdResolver: MediumPathResolver): IMediaCacheSource {\n const cacheResolver = cachedCacheResolver(cacheName);\n\n const controller: IMediaCacheSource = {\n cacheName: () => cacheName,\n isCached: (mediaId: string | string[]) =>\n _isCached(cacheResolver, mediaId, mediaIdResolver),\n removeFromCache: (mediaId: string) =>\n _removeFromCache(cacheResolver, mediaId, mediaIdResolver),\n addToCache: (request: RequestInfo, response: Response) =>\n _addToCache(cacheResolver, request, response),\n cachedResponse: <\n T extends keyof MediaBinaryStorageTypeMap,\n U extends MediaBinaryStorageTypeMap[T],\n >(\n mediaId: string,\n type: T,\n ) => _cachedResponse(cacheResolver, mediaId, mediaIdResolver, type) as Promise,\n };\n\n return controller;\n}\n\nexport default cacheSource;\n","import type {\n IMediaCacheController,\n IMediaURLResolver,\n MediaBinaryStorageTypeMap,\n} from '../interface/cache';\nimport cacheSource, { IMediaCacheSource } from './cache.source';\n\nasync function _isCachedMedium(\n mediaId: string,\n cacheList: Array,\n): Promise {\n for (const cc of cacheList) {\n const isCached = await cc.isCached(mediaId);\n if (isCached) {\n return true;\n }\n }\n\n return false;\n}\n\nasync function _isCachedMedia(\n mediaIds: Array,\n cacheList: Array,\n): Promise {\n for (const mediaId of mediaIds) {\n const isCached = await _isCachedMedium(mediaId, cacheList);\n if (!isCached) {\n return false;\n }\n }\n\n return true;\n}\n\nasync function _cachedResponseMedium<\n T extends keyof MediaBinaryStorageTypeMap,\n U extends MediaBinaryStorageTypeMap[T],\n>(mediaId: string, cacheList: Array, type: T): Promise {\n for (const cacheSource of cacheList) {\n const hasAsset = await cacheSource.isCached(mediaId);\n\n if (hasAsset) {\n return await cacheSource.cachedResponse(mediaId, type);\n }\n }\n\n throw new Error(`No media item found for id: ${mediaId}`);\n}\n\nfunction cacheController(): IMediaCacheController {\n let cacheList: Array = [];\n\n return {\n addCacheResolver: (id: string, resolver: IMediaURLResolver) => {\n cacheList.push(cacheSource(id, resolver));\n },\n removeCacheResolver: (id: string) => {\n const matchingControllers = cacheList.filter(\n cacheController => cacheController.cacheName() === id,\n );\n cacheList = cacheList.filter(cacheItem => !matchingControllers.includes(cacheItem));\n },\n isMediumCached: async (mediaId: string) => _isCachedMedium(mediaId, cacheList),\n isAllMediaCached: async (mediaIds: Array) => _isCachedMedia(mediaIds, cacheList),\n removeMediumCache: async (mediaId: string) => {\n await Promise.all(cacheList.map(cc => cc.removeFromCache(mediaId)));\n },\n cachedResponse: async <\n T extends keyof MediaBinaryStorageTypeMap,\n U extends MediaBinaryStorageTypeMap[T],\n >(\n mediaId: string,\n type: T,\n ): Promise => _cachedResponseMedium(mediaId, cacheList, type),\n };\n}\n\nexport default cacheController;\n","import type { IContainer } from '../../interface/container';\nimport type { IMediaCacheController } from '../interface/cache';\nimport cacheImpl from './cache';\n\nfunction bind(container: IContainer): IMediaCacheController {\n return cacheImpl();\n}\n\nexport default bind;\n","import type { IContainer } from '../../interface/container';\nimport cacheInst from '../impl/cache.bind';\nimport {\n bindMediaCacheController,\n injectMediaCacheController,\n unbindMediaCacheController,\n} from '../interface/bind';\n\nfunction bind(container: IContainer) {\n bindMediaCacheController(cacheInst(container), container);\n}\n\nfunction unbind(container: IContainer) {\n unbindMediaCacheController(container);\n}\n\nfunction expose(srcContainer: IContainer, dstContainer: IContainer) {\n bindMediaCacheController(injectMediaCacheController(srcContainer), dstContainer);\n}\n\nconst module = {\n bind,\n unbind,\n expose,\n};\n\nexport default module;\n","import { injectMediaAPI } from './api';\nimport bindApi from './api/private/bind';\nimport bindController from './controller/private/bind';\nimport bindDB from './db/private/bind';\nimport { IConfigCacheAssets, IConfigCacheName, IContainer, injectConfigCache } from './interface';\nimport bindJobs from './jobs/private/bind';\nimport bindModel from './model/private/bind';\nimport privateContainer from './private/container';\nimport bindSession from './session/private/bind';\nimport { IMediaURLResolverParameters, injectMediaCacheController } from './util/interface';\nimport bindUtil from './util/private/bind';\n\nexport interface IBinder {\n bind: (container: IContainer) => void;\n unbind: (container: IContainer) => void;\n expose: (srcContainer: IContainer, dstContainer: IContainer) => void;\n}\n\n/* list of binders sorted in order of installation */\nconst binders: Array<{ binder: IBinder; isPrivate?: boolean }> = [\n {\n binder: bindModel,\n },\n {\n isPrivate: true,\n binder: bindUtil,\n },\n {\n isPrivate: true,\n binder: bindApi,\n },\n {\n isPrivate: true,\n binder: bindDB,\n },\n {\n isPrivate: true,\n binder: bindController,\n },\n {\n binder: bindJobs,\n },\n {\n binder: bindSession,\n },\n];\n\nexport function bindAll(container: IContainer) {\n binders.forEach(binder => binder.binder.bind(container));\n}\n\nfunction _postPrivateBindSetup(privateContainer: IContainer) {\n /* Add ats-workspace.com cache resolver to MediaController. \n Late bind all uses of MediaAPI, as the size of the array may change at runtime, pull the latest definition on use */\n const mediaAPI = () => injectMediaAPI(privateContainer);\n const cacheController = injectMediaCacheController(privateContainer);\n\n const config = injectConfigCache(privateContainer);\n const configCache = config?.[IConfigCacheName.WorkspaceMedia] as IConfigCacheAssets | undefined;\n const apiCacheName = configCache?.cacheName ?? 'cache-apiMedia';\n const apiResolver = (mediaId: string, parameters?: IMediaURLResolverParameters) =>\n mediaAPI()\n .map(api => api.requestURL(mediaId))\n .flat(1);\n if (apiCacheName) {\n cacheController.addCacheResolver(apiCacheName, apiResolver);\n }\n}\n\nfunction setup(containerGlobal: IContainer) {\n const prvContainer = privateContainer(containerGlobal);\n\n /* bind all to private container */\n bindAll(prvContainer);\n\n /* expose (pre-bound instantiated values/objects) to parent global container from private\n container. This is to ensure both containers use the same object ref (if injectable is \n an instantiated value). */\n binders\n .filter(binder => !binder.isPrivate)\n .forEach(binder => binder.binder.expose(prvContainer, containerGlobal));\n\n _postPrivateBindSetup(prvContainer);\n}\n\nexport default setup;\n","import type { ISession } from '../session/interface/session';\n\ntype AssetResolver = (mediumId: string, workspace: ISession) => Promise;\n\nexport async function _cacheResolver(mediumId: string, workspace: ISession) {\n const isCached = await workspace.media.isMediumCached(mediumId);\n\n if (isCached) {\n /* let the service-worker resolve the cache hit, just return the original url */\n const blob = await workspace.media.downloadToBinary(mediumId, 'Blob', true);\n\n if (blob.size <= 0 || blob.type === '') {\n /* opaque response, we have the object from the service, worker. However we can't serve it. Let the service worker deal with it */\n const url = await workspace.media.resolveUrlWithToken(mediumId);\n return url;\n } else {\n const url = URL.createObjectURL(blob);\n return url;\n }\n } else {\n return Promise.reject(`Missing cache for asset`);\n }\n}\n\nasync function _urlWithTokenResolver(mediumId: string, workspace: ISession) {\n return workspace.media.resolveUrlWithToken(mediumId);\n}\n\nexport async function lazyUrlForAsset(\n mediumId: string,\n workspace: ISession,\n resolver: AssetResolver | AssetResolver[] = [],\n) {\n if (!mediumId || !workspace) {\n return '';\n }\n\n const resolvers: Array = [\n _cacheResolver,\n ...(Array.isArray(resolver) ? resolver : [resolver]),\n _urlWithTokenResolver,\n ];\n\n for (const resolver of resolvers) {\n const url = await resolver(mediumId, workspace).catch(() => undefined);\n if (url) {\n return url;\n }\n }\n\n throw new Error(`Unable to resolve lazyUrl for: ${mediumId}`);\n}\n","import type { ILanguageDto, ISiteDto } from '../../model/interface';\nimport type { IWorkspaceDB } from '../../db/interface';\n\nfunction SiteSupportedLanguages(db: IWorkspaceDB, site?: ISiteDto): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n const siteLookup = site ?? (await db.first('ISiteDto'));\n\n const siteSupportedLanguages = await db.all('ISiteSupportedLanguageDto');\n\n const languageIds = siteSupportedLanguages\n .filter(ssl => ssl.siteId === siteLookup.id)\n .map(ssl => ssl.languageId);\n\n const languages = await Promise.all(languageIds.map(id => db.get('ILanguageDto', id)));\n\n resolve(languages);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n SiteSupportedLanguages,\n};\n\nexport default module;\n","import type { ILanguageDto, ISiteDto, ITourDto } from '../../model/interface';\nimport type { IWorkspaceDB } from '../../db/interface';\n\nexport function ToursForLanguage(\n db: IWorkspaceDB,\n language: ILanguageDto,\n site?: ISiteDto,\n): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n /* to get the list of tours we can show based on the language selected we need ITourDto.tourSupportedLanguage.siteSupportedLanguage.language === language */\n const sslMatch = await db\n .all('ISiteSupportedLanguageDto')\n .then(ssl => ssl.filter(x => x.languageId === language.id));\n const sslMatchIds = sslMatch.map(x => x.id);\n\n const tslMatch = await db\n .all('ITourSupportedLanguageDto')\n .then(tsl =>\n tsl.filter(\n x =>\n sslMatchIds.includes(x.siteSupportedLanguageId) /* Workspace 1.0 */ ||\n x.languageId === language.id /* Workspace 2.0 */,\n ),\n );\n const tslMatchTourIds = tslMatch.map(x => x.tourId);\n\n const tours: ITourDto[] = await db\n .all('ITourDto')\n .then(tours => tours.filter(tour => tslMatchTourIds.includes(tour.id)));\n\n resolve(tours);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n ToursForLanguage,\n};\n\nexport default module;\n","export function invertResult(promise: Promise): Promise {\n const origPromise = promise;\n\n return new Promise(function (resolve, reject) {\n origPromise.then(val => resolve(!val)).catch(error => reject(error));\n });\n}\n\nconst module = {\n invertResult,\n};\n\nexport default module;\n","import languages from './languages';\nimport tours from './tours';\nimport array from './array';\nimport promise from './promise';\n\nconst module = {\n array,\n promise,\n languages,\n tours,\n};\n\nexport default module;\n","export function filterAsync(arr: T[], promiser: (val: T) => Promise): Promise {\n const arrayOrig = arr;\n\n return new Promise(async function (resolve, reject) {\n try {\n const newArray: T[] = [];\n\n for (let idx = 0; idx < arrayOrig.length; idx++) {\n const val = arrayOrig[idx];\n const shouldAdd = await promiser(val);\n if (shouldAdd) {\n newArray.push(val);\n }\n }\n\n resolve(newArray);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n filterAsync,\n};\n\nexport default module;\n","import type { IProgressPromise, IProgressPromiseGenerator } from '../../interface/promise';\nimport type { IFetcher, IFetchRequest } from '../../interface/util';\nimport type { MediaBinaryStorageTypeMap } from '../interface/media';\n\nconst DEFAULT_TIMEOUT = 300 * 1000; /* 5 mins */\nconst DEFAULT_RETRY_COUNT = 2;\n\nfunction download<\n K extends keyof MediaBinaryStorageTypeMap,\n V extends MediaBinaryStorageTypeMap[K],\n>(\n promiser: IProgressPromiseGenerator,\n fetcher: Promise,\n requests: Array,\n type: K,\n retryCount = DEFAULT_RETRY_COUNT,\n timeout = DEFAULT_TIMEOUT,\n): IProgressPromise {\n return promiser.promise(async function (resolve, reject, progressCb) {\n const fetchLoader = await fetcher;\n\n for (const request of requests) {\n const promise = fetchLoader(request, timeout, retryCount);\n\n promise.onProgress(function (data) {\n progressCb(data);\n });\n\n const response = await promise.catch(error => {\n console.error(`Failed to fetch media, error:${JSON.stringify(error)}`);\n return undefined;\n });\n\n if (!response) {\n console.error(`Request getMedia failed`);\n } else if (!response.payload) {\n console.error(`Missing payload from media response`);\n } else {\n resolve(response.payload as V);\n return;\n }\n }\n\n reject(new Error(`Failed to get response from requests: ${JSON.stringify(requests)}`));\n });\n}\n\nconst module = {\n download,\n};\n\nexport default module;\n","import type { IFetchRequest, ResponseTypes } from '../../interface/util';\nimport type { MediaBinaryStorageTypeMap } from '../interface/media';\n\nconst RESPONSETYPE_MAP: Record = {\n Blob: 'blob',\n ArrayBuffer: 'arraybuffer',\n none: 'blob',\n};\n\nexport const requestForURL = (\n url: string,\n type: keyof MediaBinaryStorageTypeMap,\n): IFetchRequest => ({\n url,\n method: 'GET',\n /* map our interface response type to Fetchers type */\n expectedResponseType: RESPONSETYPE_MAP[type],\n});\n\nconst module = {\n requestForURL,\n};\n\nexport default module;\n","import { IContainer, injectContainer } from '../../interface/container';\nimport type { IAuthAPI } from './auth';\nimport type { IMediaAPI } from './media';\nimport type { IMediaDiffAPI } from './mediaDiff';\nimport type { ISiteDataAPI } from './siteData';\n\nconst TYPES = {\n IMediaAPI: Symbol.for('IMediaAPI'),\n IAuthAPI: Symbol.for('IAuthAPI'),\n IMediaDiffAPI: Symbol.for('IMediaDiffAPI'),\n ISiteDataAPI: Symbol.for('ISiteDataAPI'),\n};\n\nexport function injectMediaAPI(container: IContainer = injectContainer()): Array {\n return container.get>(TYPES.IMediaAPI);\n}\n\nexport function bindMediaAPI(val: Array, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IMediaAPI, val);\n}\n\nexport function unbindMediaAPI(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IMediaAPI);\n}\n\nexport function injectAuthAPI(container: IContainer = injectContainer()): IAuthAPI {\n return container.get(TYPES.IAuthAPI);\n}\n\nexport function bindAuthAPI(val: IAuthAPI, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IAuthAPI, val);\n}\n\nexport function unbindAuthAPI(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IAuthAPI);\n}\n\nexport function injectMediaDiffAPI(container: IContainer = injectContainer()): IMediaDiffAPI {\n return container.get(TYPES.IMediaDiffAPI);\n}\n\nexport function bindMediaDiffAPI(val: IMediaDiffAPI, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IMediaDiffAPI, val);\n}\n\nexport function unbindMediaDiffAPI(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IMediaDiffAPI);\n}\n\nexport function injectSiteDataAPI(container: IContainer = injectContainer()): ISiteDataAPI {\n return container.get(TYPES.ISiteDataAPI);\n}\n\nexport function bindSiteDataAPI(val: ISiteDataAPI, container: IContainer = injectContainer()) {\n return container.bind(TYPES.ISiteDataAPI, val);\n}\n\nexport function unbindSiteDataAPI(container: IContainer = injectContainer()) {\n return container.remove(TYPES.ISiteDataAPI);\n}\n","export interface IMediumDiffRequestStatus {\n id: string;\n mediumHash: string;\n}\n\nexport interface IMediaDiffRequestInner {\n siteId: number;\n hash: string;\n requests: Array;\n}\n\nexport interface IMediaDiffRequest {\n requestDto: IMediaDiffRequestInner;\n}\n\nexport enum MediumStatus {\n UpToDate = 'UpToDate',\n New = 'New',\n Updated = 'Updated',\n Deleted = 'Delete',\n}\n\nexport interface IMediumDiffResponseStatus {\n id: string;\n fileHash: string;\n fileName: string;\n mimeType: string;\n mediumStatus: MediumStatus;\n}\n\nexport interface IMediaDiffResponse {\n value: Array;\n}\n\nexport interface IMediaDiffAPI {\n getMediaDiff: (\n authToken: string,\n siteId: number,\n siteHash?: string,\n existingMedia?: Array,\n ) => Promise;\n}\n","export enum IUserProperties {\n LanguageId = 'LanguageId',\n TourId = 'TourId',\n Grouping = 'Grouping',\n}\n\nexport type IUserStateCallback = (name: string, newValue: T) => void;\n\nexport interface IUserState {\n getProperty: (name: IUserProperties | string) => T | undefined;\n getPropertyWithDefault: (name: IUserProperties | string, defaultValue: T) => T | undefined;\n setProperty: (name: IUserProperties | string, value: any | undefined) => void;\n subscribeChanges: (\n name: IUserProperties | string,\n callback: IUserStateCallback,\n subscriberKey?: string,\n ) => void;\n unsubscribeChanges: (\n name: IUserProperties | string,\n callback: IUserStateCallback,\n ) => void;\n subscriber: (subscriberKey: string) => IUserStateCallback | undefined;\n flatten: () => string;\n}\n\nexport interface IUserStateInstantiator {\n open: (name: string) => IUserState;\n expand: (data: string) => IUserState;\n}\n","import { IContainer, injectContainer } from './container';\n\nexport interface IConfigAPI_Auth {\n clientId: string;\n clientSecret: string;\n grantType: string;\n username: string;\n password: string;\n}\n\nexport interface IConfigAPI {\n url: string;\n auth: Partial;\n extension: {\n auth?: string;\n siteData?: string;\n mediaDiff?: string;\n media?: string;\n mediaWithAccessToken?: string;\n };\n}\n\n/* Make all fields & nested required (recursive) */\nexport type DeepRequired = {\n [K in keyof T]: Required>;\n};\n\nexport type IConfigAPIRequired = DeepRequired;\n\nexport enum IConfigCacheName {\n Undef = 0,\n BuildAssets,\n PublicAssets,\n WorkspaceMedia,\n WorkspaceStream,\n AppToken,\n LastValue,\n}\n\nexport interface IConfigCacheAssets {\n cacheName: string;\n expiration: number;\n maxEntries: number;\n matcher: RegExp;\n}\n\nexport type IConfigCache = Partial>;\n\nexport enum IConfigRoutePath {\n Undef = 0,\n Launch = 1,\n LanguageSelect = 2,\n TourSelect = 3,\n Tour = 4,\n SiteObject = 5,\n FloorPlan = 6,\n LastValue = 7,\n}\n\nexport interface IRouteConfigSettings {\n pathPrefix: string;\n pathMatch: Array;\n}\n\nexport type IConfigRoute = Record;\n\nconst TYPES = {\n IConfigAPI: Symbol.for('IConfigAPI'),\n IConfigCache: Symbol.for('IConfigCache'),\n IConfigRoute: Symbol.for('IConfigRoute'),\n};\n\nexport function injectConfigAPI(\n container: IContainer = injectContainer(),\n): Array> {\n return container.get>>(TYPES.IConfigAPI);\n}\n\nexport function bindConfigAPI(\n val: Array>,\n container: IContainer = injectContainer(),\n) {\n return container.bind>>(TYPES.IConfigAPI, val);\n}\n\nexport function injectConfigCache(container: IContainer = injectContainer()): IConfigCache {\n return container.get(TYPES.IConfigCache);\n}\n\nexport function bindConfigCache(val: IConfigCache, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IConfigCache, val);\n}\n\nexport function injectConfigRoute(container: IContainer = injectContainer()): IConfigRoute {\n return container.get(TYPES.IConfigRoute);\n}\n\nexport function bindConfigRoute(val: IConfigRoute, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IConfigRoute, val);\n}\n","export interface IContainer {\n get: (key: symbol) => T;\n bind: (key: symbol, val: T) => void;\n remove: (key: symbol) => void;\n importBindings: (container: IContainer) => void;\n}\n\nexport type ILazyBinder = () => Promise;\n\n/* global container storage */\ntype ContainerMap = Record;\n\n/* eslint-disable no-restricted-globals */\nconst globalObject: any = typeof window === 'undefined' ? globalThis : window;\n/* eslint-enable no-restricted-globals */\n\nexport function injectContainer(name = 'default'): IContainer {\n let containers: ContainerMap | undefined = globalObject.containers;\n if (!containers) {\n console.warn('No containers found! Creating new');\n containers = {};\n globalObject.containers = containers;\n }\n\n const container = containers[name];\n return container;\n}\n\nexport function bindContainer(container: IContainer, name = 'default') {\n let containers: ContainerMap | undefined = globalObject.containers;\n if (!containers) {\n containers = {};\n globalObject.containers = containers;\n }\n\n if (containers[name]) {\n console.warn(`Overwriting container: ${name}`);\n }\n\n containers[name] = container;\n}\n\nexport function removeContainer(name = 'default') {\n const containers: ContainerMap | undefined = globalObject.containers;\n\n if (containers) {\n delete containers[name];\n }\n}\n","import { IContainer, injectContainer } from './container';\n\nexport type ProgressNotifier = (progress: number) => void;\n\nexport interface IProgressPromise extends Promise {\n readonly progress: number;\n onProgress(callback: ProgressNotifier): void;\n}\n\nexport interface IProgressPromiseGenerator {\n promise: (\n executor: (\n resolve: (value?: ValueType | PromiseLike) => void,\n reject: (reason?: unknown) => void,\n progress: ProgressNotifier,\n ) => void,\n ) => IProgressPromise;\n}\n\nconst TYPES = {\n IProgressPromiseGenerator: Symbol.for('IProgressPromiseGenerator'),\n};\n\nexport function injectProgressPromise(\n container: IContainer = injectContainer(),\n): IProgressPromiseGenerator {\n return container.get(TYPES.IProgressPromiseGenerator);\n}\n\nexport function bindProgressPromise(\n val: IProgressPromiseGenerator,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IProgressPromiseGenerator, val);\n}\n","import type { TYPES_FIELD_NAME as TYPES_LANGUAGE_CODE } from '../model/impl/LanguageDto.private';\nimport { IContainer, ILazyBinder, injectContainer } from './container';\nimport type { IProgressPromise } from './promise';\n\nexport interface IEnv {\n getValue: (envName: string) => T | null;\n getValueWithDefault: (envName: string, defaultValue: T) => T;\n getNumber: (name: string, defaultValue?: number) => number;\n getBoolean: (name: string, defaultValue?: boolean) => boolean;\n getString: (name: string, defaultValue?: string) => string;\n}\n\nexport interface IFetchHeader {\n name: string;\n value: string;\n}\n\nexport type Method = 'HEAD' | 'GET' | 'PUT' | 'PATCH' | 'POST' | 'DELETE' | 'OPTIONS';\nexport type ResponseTypes = 'json' | 'text' | 'blob' | 'arraybuffer' | 'void' | 'opaque';\n\nexport interface IFetchRequest {\n url: string;\n method?: Method;\n headers?: Array;\n body?: string;\n expectedResponseType?: ResponseTypes;\n expectedResponseSize?: number;\n}\n\nexport interface IFetchResponse {\n request: IFetchRequest;\n statusCode: number;\n isStatusOk: boolean;\n error?: Error;\n payload: T | null;\n}\n\n/**\n * IFetcher external resource resolver\n *\n * @param {string} requestPayload - Request payload contains url, method?, headers?, body? etc\n * @param {string} [timeout] - Time to wait before giving up (Milliseconds)\n * @param {string} [retryCount] - A optional string param\n * @return {IProgressPromise>} Promise with resource response\n */\nexport type IFetcher = (\n requestPayload: IFetchRequest,\n timeout?: number,\n retryCount?: number,\n) => IProgressPromise>;\n\nexport interface ILog {\n milestone: (msg: string) => void;\n verbose: (msg: string) => void;\n trace: (msg: string) => void;\n info: (msg: string) => void;\n warn: (msg: string) => void;\n warning: (msg: string) => void;\n error: (msg: string) => void;\n fatal: (msg: string) => void;\n assert: (condition: boolean | string | number, msg: string | undefined) => void;\n}\n\nexport interface IQueryURL {\n parse: (queryString: string) => {};\n assemble: (queryArgs: {}) => string;\n}\n\ninterface IUnzipEntry {\n versionMadeBy: number;\n versionNeededToExtract: number;\n generalPurposeBitFlag: number;\n compressionMethod: number;\n lastModTime: number;\n lastModDate: number;\n crc32: number;\n compressedSize: number;\n uncompressedSize: number;\n internalAttributes: number;\n externalAttributes: number;\n localHeaderOffset: number;\n name: string;\n comment: string;\n extraFields: object[];\n}\n\ntype IUnzipReadEntriesCallback = (err: Error, entries: IUnzipEntry[]) => void;\ntype IUnzipReadEntryDataCallback = (err: Error, readStream: IZipReadStream) => void;\n\ninterface IUnzipFile {\n readEntries: (callback: IUnzipReadEntriesCallback) => void;\n readEntryData: (\n entry: IUnzipEntry,\n checkCrc: boolean,\n callback: IUnzipReadEntryDataCallback,\n ) => void;\n}\n\ntype IReadStreamCallback = (value: any) => void;\ntype IReadStreamEvent = 'data' | 'error' | 'end';\n\ninterface IZipReadStream {\n on: (event: IReadStreamEvent, callback: IReadStreamCallback) => void;\n}\n\nexport type ZipBinaryStorageType = Blob | ArrayBuffer;\n\nexport interface IZip {\n unzipFile: (blobData: T, fileName: string) => Promise;\n unzipAll: (\n blobData: T,\n destDirectoryPrefix: string,\n ) => Promise>;\n listings: (blobData: ZipBinaryStorageType) => Promise>;\n}\n\nexport interface IKVStorage {\n getItem: (key: any) => Promise;\n setItem: (key: any, value: any) => Promise;\n removeItem: (key: any) => Promise;\n clear: () => Promise;\n length: () => Promise;\n}\n\nexport enum IBrowserPlatform {\n Unknown = 0,\n MobileiOS = 1,\n MobileAndroid = 2,\n}\n\nexport interface IBrowser {\n platform: IBrowserPlatform;\n isMobile: boolean;\n isInstalled: boolean;\n}\n\nexport interface ICache {\n add: (key: string | symbol, value: any) => void;\n get: (key: string | symbol) => any;\n}\n\nexport interface ICacheController {\n getAssociatedCache: (associatedObject: any) => ICache | null;\n getGlobalCache: () => ICache;\n}\n\nexport interface ITranslationStorage {\n translation: (\n language: TYPES_LANGUAGE_CODE,\n key: string,\n parameters?: Array,\n fallback?: string,\n ) => string;\n}\n\nconst TYPES = {\n IEnv: Symbol.for('IEnv'),\n IFetch: Symbol.for('IFetch'),\n ILog: Symbol.for('ILog'),\n IQueryURL: Symbol.for('IQueryURL'),\n IZip: Symbol.for('IZip'),\n IKVStorage: Symbol.for('IKVStorage'),\n IBrowser: Symbol.for('IBrowser'),\n ICache: Symbol.for('ICache'),\n ICacheController: Symbol.for('ICacheController'),\n ITranslationStorage: Symbol.for('ITranslationStorage'),\n};\n\nexport function injectENV(container: IContainer = injectContainer()): IEnv {\n return container.get(TYPES.IEnv);\n}\n\nexport function bindENV(val: IEnv, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IEnv, val);\n}\n\nexport function injectFetch(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IFetch)();\n}\n\nexport function bindFetch(val: ILazyBinder, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IFetch, val);\n}\n\nexport function injectLog(container: IContainer = injectContainer()): ILog {\n return container.get(TYPES.ILog);\n}\n\nexport function bindLog(val: ILog, container: IContainer = injectContainer()) {\n return container.bind(TYPES.ILog, val);\n}\n\nexport function injectQueryURL(container: IContainer = injectContainer()): IQueryURL {\n return container.get(TYPES.IQueryURL);\n}\n\nexport function bindQueryURL(val: IQueryURL, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IQueryURL, val);\n}\n\nexport function injectZip(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IZip)();\n}\n\nexport function bindZip(val: ILazyBinder, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IZip, val);\n}\n\nexport function injectKVStorage(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IKVStorage)();\n}\n\nexport function bindKVStorage(\n val: ILazyBinder,\n container: IContainer = injectContainer(),\n) {\n return container.bind>(TYPES.IKVStorage, val);\n}\n\nexport function injectBrowser(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IBrowser)();\n}\n\nexport function bindBrowser(val: ILazyBinder, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IBrowser, val);\n}\n\nexport function injectCache(container: IContainer = injectContainer()): ICache {\n return container.get(TYPES.ICache);\n}\n\nexport function bindCache(val: ICache, container: IContainer = injectContainer()) {\n return container.bind(TYPES.ICache, val);\n}\n\nexport function injectCacheController(container: IContainer = injectContainer()): ICacheController {\n return container.get(TYPES.ICacheController);\n}\n\nexport function bindCacheController(\n val: ICacheController,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.ICacheController, val);\n}\n\nexport function injectTranslationStorage(\n container: IContainer = injectContainer(),\n): Promise {\n return container.get>(TYPES.ITranslationStorage)();\n}\n\nexport function bindTranslationStorage(\n val: ILazyBinder,\n container: IContainer = injectContainer(),\n) {\n return container.bind>(TYPES.ITranslationStorage, val);\n}\n","import { buildContainer } from '@monofe/util';\nimport { bindContainer, IContainer, injectContainer } from '../interface';\n\nconst CONTAINER_KEY = 'apiservice';\n\nexport default function container(parentContainer?: IContainer): IContainer {\n const container = injectContainer(CONTAINER_KEY);\n\n if (container) {\n return container;\n }\n\n const newContainer = buildContainer(parentContainer ? [parentContainer] : []);\n bindContainer(newContainer, CONTAINER_KEY);\n\n return newContainer;\n}\n","import type { ISessionInstantiator } from './session';\nimport { IContainer, injectContainer } from '../../interface/container';\n\nconst TYPES = {\n ISessionInstantiator: Symbol.for('ISessionInstantiator'),\n};\n\nexport function injectAPISession(container: IContainer = injectContainer()): ISessionInstantiator {\n return container.get(TYPES.ISessionInstantiator);\n}\n\nexport function bindAPISession(\n val: ISessionInstantiator,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.ISessionInstantiator, val);\n}\n\nexport function unbindAPISession(container: IContainer = injectContainer()) {\n return container.remove(TYPES.ISessionInstantiator);\n}\n","import { useEffect, useState } from 'react';\nimport type { ILanguageDto, ITourDto } from '../../model/interface';\nimport { IUserProperties } from '../../controller/interface/userstate';\nimport { injectAPISession, ISession } from '../interface';\n\nfunction useActiveSession(): ISession | null {\n const sessionFetcher = injectAPISession();\n\n const [session, setSession] = useState(sessionFetcher.active);\n\n useEffect(() => {\n const callback = (newValue: ISession | null) => {\n setSession(newValue);\n };\n\n sessionFetcher.subscribeActiveChanged(callback);\n\n return () => {\n sessionFetcher.unsubscribeActiveChanged(callback);\n };\n }, [sessionFetcher]);\n\n return session;\n}\n\nfunction _useActiveSessionUserStateValue(\n session: ISession | null,\n key: string,\n defaultValue: T,\n): T {\n const [saveVal, setSaveVal] = useState(\n session?.state?.getPropertyWithDefault(key, defaultValue) ?? defaultValue,\n );\n\n useEffect(() => {\n const callback = (name: string, newValue: T) => {\n setSaveVal(newValue);\n };\n\n session?.state?.subscribeChanges(key, callback);\n\n return () => {\n session?.state.unsubscribeChanges(key, callback);\n };\n }, [session, key]);\n\n return saveVal;\n}\n\nfunction useActiveSessionLanguageId(): number {\n return _useActiveSessionUserStateValue(useActiveSession(), IUserProperties.LanguageId, -1);\n}\n\nfunction useActiveSessionTourId(): number {\n return _useActiveSessionUserStateValue(useActiveSession(), IUserProperties.TourId, -1);\n}\n\nfunction useActiveSessionLanguage(): ILanguageDto | null {\n const [saveVal, setSaveVal] = useState(null);\n\n const session = useActiveSession();\n const languageId = _useActiveSessionUserStateValue(session, IUserProperties.LanguageId, -1);\n\n useEffect(() => {\n if (session && languageId && languageId > 0) {\n session.db\n .open()\n .then(db => db.get('ILanguageDto', languageId))\n .then(language => {\n setSaveVal(language);\n session.db.close();\n })\n .catch(error => {\n throw error;\n });\n }\n }, [session, languageId]);\n\n return saveVal;\n}\n\nfunction useActiveSessionTour(): ITourDto | null {\n const [saveVal, setSaveVal] = useState(null);\n\n const session = useActiveSession();\n const tourId = _useActiveSessionUserStateValue(session, IUserProperties.TourId, -1);\n\n useEffect(() => {\n if (session && tourId && tourId > 0) {\n session.db\n .open()\n .then(db => db.get('ITourDto', tourId))\n .then(tour => {\n setSaveVal(tour);\n session.db.close();\n })\n .catch(error => {\n throw error;\n });\n }\n }, [session, tourId]);\n\n return saveVal;\n}\n\nconst module = {\n useActiveSession,\n useActiveSessionLanguageId,\n useActiveSessionTourId,\n useActiveSessionLanguage,\n useActiveSessionTour,\n};\n\nexport default module;\n","import { IContainer, injectContainer } from '../../interface/container';\nimport type { IMediaCacheController } from './cache';\n\nconst TYPES = {\n IMediaCacheController: Symbol.for('IMediaCacheController'),\n};\n\nexport function injectMediaCacheController(\n container: IContainer = injectContainer(),\n): IMediaCacheController {\n return container.get(TYPES.IMediaCacheController);\n}\n\nexport function bindMediaCacheController(\n val: IMediaCacheController,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IMediaCacheController, val);\n}\n\nexport function unbindMediaCacheController(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IMediaCacheController);\n}\n","import React from 'react';\nimport type { CSSProperties } from 'react';\n\nexport interface IIconProps {\n className?: string;\n style?: CSSProperties;\n}\n\nfunction IconExclamation(props: IIconProps): JSX.Element {\n return (\n \n \n \n );\n}\n\nexport default IconExclamation;\n","import React from 'react';\nimport type { CSSProperties } from 'react';\n\nexport interface IIconProps {\n className?: string;\n style?: CSSProperties;\n}\n\nfunction IconInfo(props: IIconProps): JSX.Element {\n return (\n \n \n \n );\n}\n\nexport default IconInfo;\n","import React from 'react';\nimport type { CSSProperties } from 'react';\n\nexport interface IIconProps {\n className?: string;\n style?: CSSProperties;\n}\n\nfunction IconQuestionMark(props: IIconProps): JSX.Element {\n return (\n \n \n \n );\n}\n\nexport default IconQuestionMark;\n","import React from 'react';\nimport type { CSSProperties } from 'react';\n\nexport interface IIconProps {\n className?: string;\n style?: CSSProperties;\n}\n\nfunction IconTick(props: IIconProps): JSX.Element {\n return (\n \n \n \n );\n}\n\nexport default IconTick;\n","import React, { ReactNode, CSSProperties, UIEvent } from 'react';\nimport { m } from 'framer-motion';\n\nexport interface IFadeTransition {\n className: string;\n style: CSSProperties;\n children?: ReactNode;\n onClick?: (event: UIEvent) => void;\n}\n\nconst TRANSITION = { ease: 'easeIn', duration: 0.2 };\nconst MINOPACITY = { opacity: 0, transition: TRANSITION };\nconst MAXOPACITY = { opacity: 1, transition: TRANSITION };\n\nfunction FadeTransition(props: IFadeTransition): JSX.Element {\n return (\n \n {props.children}\n \n );\n}\n\nexport default FadeTransition;\n","// extracted by mini-css-extract-plugin\nexport default {\"Container\":\"Loading_Container__E4y2+\",\"Text\":\"Loading_Text__68hJA\",\"ShowOpacity\":\"Loading_ShowOpacity__KR7uP\"};","import React, { CSSProperties, createRef, useEffect, useState } from 'react';\nimport styles from './Loading.module.css';\nimport FadeTransition from '@monofe/ui-common/transition/FadeTransition';\n\nexport interface ILoadingProps {\n styleOverrides?: CSSProperties;\n}\n\nenum StyleElem {\n Container = 'Container',\n Text = 'Text',\n}\n\nconst DEFAULTS: Record = {\n [StyleElem.Container]: {},\n [StyleElem.Text]: {},\n};\n\nconst PROPS_APPLICATOR: Record CSSProperties> = {\n [StyleElem.Container]: (props: ILoadingProps) => ({\n ...props.styleOverrides,\n }),\n [StyleElem.Text]: (props: ILoadingProps) => ({}),\n};\n\nexport function classNameForElement(element: StyleElem, props: ILoadingProps): string {\n const name = element.toString();\n const classLoad = styles[name];\n return classLoad ?? '';\n}\n\nexport function styleForElement(elem: StyleElem, props: ILoadingProps): CSSProperties {\n const style = Object.assign({}, DEFAULTS[elem], PROPS_APPLICATOR[elem](props));\n\n return style;\n}\n\nfunction _LoadingText(index: number) {\n let text = 'Loading';\n\n for (let i = 0; i < index; i++) {\n text += '.';\n }\n\n return text;\n}\n\nfunction Loading(props: ILoadingProps): JSX.Element {\n const style = (elem: StyleElem) => styleForElement(elem, props);\n const className = (elem: StyleElem) => classNameForElement(elem, props);\n const [loadCounter, setLoadCounter] = useState(0);\n\n const ref = createRef();\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n setLoadCounter(val => (val > 8 ? 0 : val + 1));\n }, 800);\n\n return () => clearTimeout(timeout);\n });\n return (\n \n \n {_LoadingText(loadCounter)}\n \n \n );\n}\n\nexport default Loading;\n","// extracted by mini-css-extract-plugin\nexport default {\"Container\":\"Toast_Container__PxgpP\",\"Icon\":\"Toast_Icon__E0KJM\",\"Text\":\"Toast_Text__x6qSe\"};","import type { CSSProperties } from 'react';\nimport { IToastIcon, IToastProps } from './Toast';\nimport styles from './Toast.module.css';\n\nexport enum StyleElem {\n Container = 'Container',\n Icon = 'Icon',\n Text = 'Text',\n}\n\nconst DEFAULTS: Record = {\n [StyleElem.Container]: {},\n [StyleElem.Icon]: {},\n [StyleElem.Text]: {},\n};\n\nconst PROPS_APPLICATOR: Record CSSProperties> = {\n [StyleElem.Container]: (props: IToastProps) => ({\n backgroundColor: MapBackgroundColor(props.icon),\n }),\n [StyleElem.Icon]: (props: IToastProps) => ({\n color: MapTextColor(props.icon),\n }),\n [StyleElem.Text]: (props: IToastProps) => ({\n color: MapTextColor(props.icon),\n }),\n};\n\nfunction MapBackgroundColor(inIcon: IToastIcon): string {\n switch (inIcon) {\n case IToastIcon.Error:\n return '#cc0000';\n\n case IToastIcon.Warning:\n return '#f0ad4e';\n\n case IToastIcon.Success:\n return '#339900';\n\n case IToastIcon.Information:\n return '#000';\n\n default:\n throw Error('Unrecognised type: ' + inIcon);\n }\n}\n\nfunction MapTextColor(inIcon: IToastIcon): string {\n switch (inIcon) {\n case IToastIcon.Error:\n return '#fff';\n\n case IToastIcon.Warning:\n return '#fff';\n\n case IToastIcon.Success:\n return '#fff';\n\n case IToastIcon.Information:\n return '#fff';\n\n default:\n throw Error('Unrecognised type: ' + inIcon);\n }\n}\n\nexport function classNameForElement(element: StyleElem, props: IToastProps): string {\n const name = element.toString();\n const classLoad = styles[name];\n return classLoad ?? '';\n}\n\nexport function styleForElement(element: StyleElem, props: IToastProps): CSSProperties {\n const style = Object.assign({}, DEFAULTS[element], PROPS_APPLICATOR[element](props));\n\n return style;\n}\n","import React, { CSSProperties, Suspense, lazy } from 'react';\nimport { classNameForElement, StyleElem, styleForElement } from './Toast.style';\nimport IconExclamation from '@monofe/ui-common/icon/IconExclamation';\nimport IconQuestionMark from '@monofe/ui-common/icon/IconQuestionMark';\nimport IconTick from '@monofe/ui-common/icon/IconTick';\nimport IconInfo from '@monofe/ui-common/icon/IconInfo';\n\nexport enum IToastIcon {\n Undef = 0,\n Information = 1,\n Success = 2,\n Warning = 3,\n Error = 4,\n LastValue = 5,\n}\n\nexport interface IToastProps {\n text: string;\n icon: IToastIcon;\n style?: CSSProperties;\n}\n\nfunction Toast(props: IToastProps): JSX.Element {\n const style = (elem: StyleElem) => styleForElement(elem, props);\n const className = (elem: StyleElem) => classNameForElement(elem, props);\n\n return (\n \n {props.icon === IToastIcon.Error && (\n }>\n \n \n )}\n {props.icon === IToastIcon.Success && (\n }>\n \n \n )}\n {props.icon === IToastIcon.Warning && (\n }>\n \n \n )}\n {props.icon === IToastIcon.Information && (\n }>\n \n \n )}\n \n {props.text}\n \n \n );\n}\n\nexport default Toast;\n","export interface ITextProps {\n text: string;\n fontFamily: string;\n fontSize: string;\n fontAlignment: 'center' | 'left' | 'right' | 'end' | 'justify';\n fontWeight: number;\n color: string;\n visible: boolean;\n}\n\nexport interface IInfoLabel extends ITextProps {\n backgroundColor: string;\n visible: boolean;\n}\nexport interface IImageProps {\n url: string;\n mode: 'contain' | 'cover';\n}\n\nexport enum ISiteObjectType {\n Undef = 0,\n Image = 1,\n Audio = 2,\n Video = 3,\n Html = 4,\n Rubaway = 5,\n LastValue = 6,\n}\n\nexport interface IAudioSiteObjectViewModel extends ISiteObjectViewModel {\n foregroundImage: IImageProps;\n foregroundImageBackgroundColor: string;\n audioDescription: ITextProps;\n audioDescriptionBackgroundColor: string;\n controlsColor: string;\n headphonesMissingViewEnabled: boolean;\n headphonesMissingVisible: boolean;\n speakerIconVisible: boolean;\n spinnerVisible: boolean;\n spinnerColor: string;\n audioUrl: string;\n}\n\nexport interface IVideoSiteObjectViewModel extends ISiteObjectViewModel {\n videoUrl: string;\n controlsColor: string;\n}\n\nexport interface IHTMLSiteObjectViewModel extends ISiteObjectViewModel {\n htmlUrl: string;\n}\n\nexport interface IRubawaySiteObjectViewModel extends ISiteObjectViewModel {\n rubawayImageUrl: string;\n infoLabel?: ITextProps;\n infoBackgroundColor: string;\n}\n\nexport interface IRubawayViewModel extends ISiteObjectViewModel {\n foregroundImageUrl: string;\n toolTipTitle: ITextProps;\n toolTipBackgroundColor: string;\n}\n\nexport interface ISiteObjectViewModel {\n title: ITextProps;\n backgroundColor: string;\n backgroundImage: IImageProps;\n backButton: {\n backgroundColor: string;\n strokeColor: string;\n strokeSize: string;\n arrowColor: string;\n visible: boolean;\n };\n data?: any;\n onLoad?: (update: (model: ISiteObjectViewModel) => void) => void;\n onRemove?: (model: ISiteObjectViewModel) => ISiteObjectViewModel;\n onComplete?: (model: ISiteObjectViewModel) => void;\n}\n\nexport interface ISiteObjectMainProps {\n model: T;\n}\n\nexport interface ISiteObjectIndexProps {\n model: ISiteObjectViewModel;\n type: ISiteObjectType;\n}\n","import { IContainer, injectContainer } from './container';\n\nexport enum IConfigLogLevel {\n Undef = 0,\n Milestone = 1,\n Trace = 2,\n Verbose = 3,\n Info = 4,\n Warn = 5,\n Error = 6,\n Fatal = 7,\n LastValue = 8,\n}\n\nexport enum IConfigLogDestination {\n Undef = 0,\n Console = 1,\n Remote_ApplicationInsights = 2,\n LocalStorage = 3,\n LastValue = 4,\n}\n\nexport interface IConfigLogSettings {\n authorizationKey?: string;\n name?: string;\n}\n\nexport interface IConfigLog {\n loggingLevelsEnabled: Array;\n outputDestinations: Array;\n outputConfiguration: Partial<\n Record<\n | IConfigLogDestination.Console\n | IConfigLogDestination.Remote_ApplicationInsights\n | IConfigLogDestination.LocalStorage,\n IConfigLogSettings\n >\n >;\n}\n\nexport interface IConfigAPI {\n url: string;\n auth: {\n clientId?: string;\n clientSecret?: string;\n grantType?: string;\n username?: string;\n password?: string;\n };\n extension: {\n auth?: string;\n siteData?: string;\n mediaDiff?: string;\n media?: string;\n mediaWithAccessToken?: string;\n };\n}\n\nexport interface IConfigManifest {\n short_name: string;\n name: string;\n description: string;\n icons: Array<{ src: string; sizes: string; type: string }>;\n start_url: string;\n display: string;\n theme_color: string;\n background_color: string;\n orientation: string;\n categories: Array;\n}\n\nexport enum IConfigCacheName {\n Undef = 0,\n BuildAssets = 1,\n PublicAssets = 2,\n WorkspaceMedia = 3,\n AppToken = 4,\n LastValue = 5,\n}\n\nexport interface IConfigCacheAssets {\n cacheName: string;\n expiration: number;\n maxEntries: number;\n matcher: RegExp;\n}\n\nexport interface IConfigCacheOAuthToken {\n tokenPath: string;\n}\n\nexport type IConfigCache = Partial<\n Record\n>;\n\nexport enum IConfigRoutePath {\n Undef = 0,\n Launch = 1,\n LanguageSelect = 2,\n TourSelect = 3,\n Tour = 4,\n SiteObject = 5,\n FloorPlan = 6,\n LastValue = 7,\n}\n\nexport interface IRouteConfigSettings {\n pathPrefix: string;\n pathMatch: Array;\n}\n\nexport type IConfigRoute = {\n basename: string;\n routes: Record<\n | IConfigRoutePath.Launch\n | IConfigRoutePath.LanguageSelect\n | IConfigRoutePath.TourSelect\n | IConfigRoutePath.Tour\n | IConfigRoutePath.SiteObject\n | IConfigRoutePath.FloorPlan,\n IRouteConfigSettings\n >;\n};\n\nconst TYPES = {\n IConfigLog: Symbol.for('IConfigLog'),\n IConfigAPI: Symbol.for('IConfigAPI'),\n IConfigManifest: Symbol.for('IConfigManifest'),\n IConfigCache: Symbol.for('IConfigCache'),\n IConfigRoute: Symbol.for('IConfigRoute'),\n};\n\nexport function injectConfigLog(container: IContainer = injectContainer()): IConfigLog {\n return container.get(TYPES.IConfigLog);\n}\n\nexport function bindConfigLog(val: IConfigLog, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IConfigLog, val);\n}\n\nexport function injectConfigAPI(\n container: IContainer = injectContainer(),\n): Array> {\n return container.get>>(TYPES.IConfigAPI);\n}\n\nexport function bindConfigAPI(\n val: Array>,\n container: IContainer = injectContainer(),\n) {\n return container.bind>>(TYPES.IConfigAPI, val);\n}\n\nexport function injectConfigManifest(container: IContainer = injectContainer()): IConfigManifest {\n return container.get(TYPES.IConfigManifest);\n}\n\nexport function bindConfigManifest(\n val: IConfigManifest,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IConfigManifest, val);\n}\n\nexport function injectConfigCache(container: IContainer = injectContainer()): IConfigCache {\n return container.get(TYPES.IConfigCache);\n}\n\nexport function bindConfigCache(val: IConfigCache, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IConfigCache, val);\n}\n\nexport function injectConfigRoute(container: IContainer = injectContainer()): IConfigRoute {\n return container.get(TYPES.IConfigRoute);\n}\n\nexport function bindConfigRoute(val: IConfigRoute, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IConfigRoute, val);\n}\n","import { IContainer, injectContainer } from './container';\n\nexport interface ICache {\n add: (key: string | symbol, value: any) => void;\n get: (key: string | symbol) => any;\n}\n\nexport interface ICacheController {\n getAssociatedCache: (associatedObject: any) => ICache | null;\n getGlobalCache: () => ICache;\n}\n\nconst TYPES = {\n ICache: Symbol.for('ICache'),\n ICacheController: Symbol.for('ICacheController'),\n};\n\nexport function injectCache(container: IContainer = injectContainer()): ICache {\n return container.get(TYPES.ICache);\n}\n\nexport function bindCache(val: ICache, container: IContainer = injectContainer()) {\n return container.bind(TYPES.ICache, val);\n}\n\nexport function injectCacheController(container: IContainer = injectContainer()): ICacheController {\n return container.get(TYPES.ICacheController);\n}\n\nexport function bindCacheController(\n val: ICacheController,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.ICacheController, val);\n}\n","import { IContainer, injectContainer } from './container';\n\nexport interface IEnv {\n getValue: (envName: string) => T | null;\n getValueWithDefault: (envName: string, defaultValue: T) => T;\n getNumber: (name: string, defaultValue?: number) => number;\n getBoolean: (name: string, defaultValue?: boolean) => boolean;\n getString: (name: string, defaultValue?: string) => string;\n}\n\nconst TYPES = {\n IEnv: Symbol.for('IEnv'),\n};\n\nexport function injectENV(container: IContainer = injectContainer()): IEnv {\n return container.get(TYPES.IEnv);\n}\n\nexport function bindENV(val: IEnv, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IEnv, val);\n}\n","import { IContainer, ILazyBinder, injectContainer } from './container';\nimport type { IProgressPromise } from './promise';\n\nexport interface IFetchHeader {\n name: string;\n value: string;\n}\n\nexport type Method = 'HEAD' | 'GET' | 'PUT' | 'PATCH' | 'POST' | 'DELETE' | 'OPTIONS';\nexport type ResponseTypes = 'json' | 'text' | 'blob' | 'arraybuffer' | 'void' | 'opaque';\n\nexport interface IFetchRequest {\n url: string;\n method?: Method;\n headers?: Array;\n body?: string;\n expectedResponseType?: ResponseTypes;\n expectedResponseSize?: number;\n}\n\nexport interface IFetchResponse {\n request: IFetchRequest;\n statusCode: number;\n isStatusOk: boolean;\n error?: Error;\n payload: T | null;\n}\n\n/**\n * IFetcher external resource resolver\n *\n * @param {string} requestPayload - Request payload contains url, method?, headers?, body? etc\n * @param {string} [timeout] - Time to wait before giving up (Milliseconds)\n * @param {string} [retryCount] - A optional string param\n * @return {IProgressPromise>} Promise with resource response\n */\nexport type IFetcher = (\n requestPayload: IFetchRequest,\n timeout?: number,\n retryCount?: number,\n) => IProgressPromise>;\n\nconst TYPES = {\n IFetch: Symbol.for('IFetch'),\n};\n\nexport function injectFetch(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IFetch)();\n}\n\nexport function bindFetch(val: ILazyBinder, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IFetch, val);\n}\n","import { IContainer, ILazyBinder, injectContainer } from './container';\n\nexport interface IKVStorage {\n getItem: (key: any) => Promise;\n setItem: (key: any, value: any) => Promise;\n removeItem: (key: any) => Promise;\n clear: () => Promise;\n length: () => Promise;\n}\n\nconst TYPES = {\n IKVStorage: Symbol.for('IKVStorage'),\n};\n\nexport function injectKVStorage(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IKVStorage)();\n}\n\nexport function bindKVStorage(\n val: ILazyBinder,\n container: IContainer = injectContainer(),\n) {\n return container.bind>(TYPES.IKVStorage, val);\n}\n","import { IContainer, ILazyBinder, injectContainer } from './container';\n\nexport type LANGUAGE_CODE =\n | 'cs'\n | 'de'\n | 'en'\n | 'es'\n | 'fr'\n | 'it'\n | 'ja'\n | 'ko'\n | 'pl'\n | 'pt'\n | 'ru'\n | 'zh'\n | 'nl'\n | 'ar'\n | 'bp'\n | 'ga'\n | 'gd';\n\nexport interface ITranslationStorage {\n translation: (\n language: LANGUAGE_CODE,\n key: string,\n parameters?: Array,\n fallback?: string,\n ) => string;\n}\n\nconst TYPES = {\n ITranslationStorage: Symbol.for('ITranslationStorage'),\n};\n\nexport function injectTranslationStorage(\n container: IContainer = injectContainer(),\n): Promise {\n return container.get>(TYPES.ITranslationStorage)();\n}\n\nexport function bindTranslationStorage(\n val: ILazyBinder,\n container: IContainer = injectContainer(),\n) {\n return container.bind>(TYPES.ITranslationStorage, val);\n}\n","import { IContainer, ILazyBinder, injectContainer } from './container';\n\nexport type ZipBinaryStorageType = Blob | ArrayBuffer;\n\nexport interface IZip {\n unzipFile: (blobData: T, fileName: string) => Promise;\n unzipAll: (blobData: T) => Promise>;\n listings: (blobData: ZipBinaryStorageType) => Promise>;\n}\n\nconst TYPES = {\n IZip: Symbol.for('IZip'),\n};\n\nexport function injectZip(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IZip)();\n}\n\nexport function bindZip(val: ILazyBinder, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IZip, val);\n}\n","import { useEffect, useState } from 'react';\nimport { IBrowser, injectBrowser } from './browser';\nimport { IContainer, injectContainer } from './container';\nimport { IFetcher, injectFetch } from './fetch';\nimport { IKVStorage, injectKVStorage } from './kvStorage';\nimport { injectTranslationStorage, ITranslationStorage } from './translationStorage';\nimport { injectZip, IZip } from './zip';\n\nfunction _useStateInjector(fetcher: Promise): T | null {\n const [item, setItem] = useState(null);\n\n useEffect(() => {\n if (item) {\n return;\n }\n fetcher\n .then(val => setItem(val))\n .catch(err => {\n throw err;\n });\n }, [setItem, fetcher]);\n\n return item;\n}\n\nexport function useFetch(container: IContainer = injectContainer()): IFetcher | null {\n return _useStateInjector(injectFetch(container));\n}\n\nexport function useZip(container: IContainer = injectContainer()): IZip | null {\n return _useStateInjector(injectZip(container));\n}\n\nexport function useKVStorage(container: IContainer = injectContainer()): IKVStorage | null {\n return _useStateInjector(injectKVStorage(container));\n}\n\nexport function useBrowser(container: IContainer = injectContainer()): IBrowser | null {\n return _useStateInjector(injectBrowser(container));\n}\n\nexport function useTranslationStorage(\n container: IContainer = injectContainer(),\n): ITranslationStorage | null {\n return _useStateInjector(injectTranslationStorage(container));\n}\n","import { IContainer, injectContainer } from './container';\n\nexport interface ILog {\n milestone: (msg: string) => void;\n verbose: (msg: string) => void;\n trace: (msg: string) => void;\n info: (msg: string) => void;\n warn: (msg: string) => void;\n warning: (msg: string) => void;\n error: (msg: string) => void;\n fatal: (msg: string) => void;\n assert: (condition: boolean | string | number, msg: string | undefined) => void;\n}\n\nconst TYPES = {\n ILog: Symbol.for('ILog'),\n};\n\nexport function injectLog(container: IContainer = injectContainer()): ILog {\n return container.get(TYPES.ILog);\n}\n\nexport function bindLog(val: ILog, container: IContainer = injectContainer()) {\n return container.bind(TYPES.ILog, val);\n}\n","import { IContainer, injectContainer } from './container';\n\nexport interface IMimeType {\n mimeTypeToFileExtension: (mimeType: string) => string | null;\n fileExtensionToMimeType: (fileExtension: string) => string | null;\n}\n\nconst TYPES = {\n IMimeType: Symbol.for('IMimeType'),\n};\n\nexport function injectMimeType(container: IContainer = injectContainer()): IMimeType {\n return container.get(TYPES.IMimeType);\n}\n\nexport function bindMimeType(val: IMimeType, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IMimeType, val);\n}\n","import { IContainer, injectContainer } from './container';\n\nexport type ProgressNotifier = (progress: number) => void;\n\nexport interface IProgressPromise extends Promise {\n readonly progress: number;\n onProgress(callback: ProgressNotifier): void;\n}\n\nexport type PromiseExecutor = (\n resolve: (value?: ValueType | PromiseLike) => void,\n reject: (reason?: unknown) => void,\n progress: ProgressNotifier,\n) => void;\n\nexport interface IProgressPromiseGenerator {\n promise: (executor: PromiseExecutor) => IProgressPromise;\n}\n\nconst TYPES = {\n IProgressPromiseGenerator: Symbol.for('IProgressPromiseGenerator'),\n};\n\nexport function injectProgressPromise(\n container: IContainer = injectContainer(),\n): IProgressPromiseGenerator {\n return container.get(TYPES.IProgressPromiseGenerator);\n}\n\nexport function bindProgressPromise(\n val: IProgressPromiseGenerator,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IProgressPromiseGenerator, val);\n}\n","import { IContainer, injectContainer } from './container';\n\nexport interface IQueryURL {\n parse: (queryString: string) => {};\n assemble: (queryArgs: {}) => string;\n}\n\nconst TYPES = {\n IQueryURL: Symbol.for('IQueryURL'),\n};\n\nexport function injectQueryURL(container: IContainer = injectContainer()): IQueryURL {\n return container.get(TYPES.IQueryURL);\n}\n\nexport function bindQueryURL(val: IQueryURL, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IQueryURL, val);\n}\n","import type { ComponentType } from 'react';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { History } from 'history';\nimport { IContainer, injectContainer } from './container';\n\nexport interface IRouteComponentProps {\n history: any;\n location: any;\n match: any;\n}\n\nexport interface IRouteActionResult {\n didLaunchAction: boolean;\n alternativeRouteRequested?: IRouteName;\n alternativeRoutePayload?: any;\n}\n\nexport interface IRoute {\n paths: string[];\n push: (history: History, props: T) => Promise;\n replace: (history: History, props: T) => Promise;\n component: ComponentType>;\n}\n\nexport interface IRouteComponentProps {\n history: any;\n location: any;\n match: any;\n}\n\nexport enum IRouteName {\n Launch = 'Launch',\n LanguageSelect = 'LanguageSelect',\n TourSelect = 'TourSelect',\n Tour = 'Tour',\n SiteObject = 'SiteObject',\n FloorPlan = 'FloorPlan',\n}\n\nexport interface IRouter {\n push: (name: IRouteName, history: any, args: any, options?: { replace?: boolean }) => void;\n popTo: (name: IRouteName, history: any, args: any) => boolean;\n pop: (history: any, args: any) => boolean;\n popCount: (num: number, history: any, args: any) => boolean;\n allRoutes: () => Array>;\n}\n\nconst TYPES = {\n IRouter: Symbol.for('IRouter'),\n};\n\nexport function injectRouter(container: IContainer = injectContainer()): IRouter {\n return container.get(TYPES.IRouter);\n}\n\nexport function bindRouter(router: IRouter, container: IContainer = injectContainer()) {\n container.bind(TYPES.IRouter, router);\n}\n","import { ICache } from '../interface/cache';\n\ninterface ICachePrv extends ICache {\n store: {};\n}\n\nfunction Cache(): ICache {\n const val: ICachePrv = {\n store: {},\n add: function (this: ICachePrv, key: string | symbol, value: any): void {\n (this.store as any)[key] = value;\n },\n get: function (this: ICachePrv, key: string | symbol): any {\n return (this.store as any)[key];\n },\n };\n\n return val as ICache;\n}\n\nexport default Cache;\n","import { ICache, ICacheController } from '../interface/cache';\nimport Cache from './cache';\n\nconst kCacheKey = '__cache';\n\nfunction _get(associatedObject: any): ICache | null {\n if (!Object.isExtensible(associatedObject)) {\n return null;\n }\n\n const keySearch: symbol = Symbol.for(kCacheKey);\n const cacheExisting = (associatedObject as any)[keySearch];\n const cache = cacheExisting || Cache();\n\n (associatedObject as any)[keySearch] = cache;\n\n return cache;\n}\n\nfunction CacheController(): ICacheController {\n const globalCacheObj = Cache();\n\n const controller: ICacheController = {\n getAssociatedCache: _get,\n getGlobalCache: () => globalCacheObj,\n };\n\n return controller;\n}\n\nexport default CacheController;\n","import { IContainer } from '../interface/container';\nimport { IEnv } from '../interface/env';\n\ntype IEnvStorage = Record | undefined;\n\nfunction _queryStorage(env: IEnvStorage, envName: string): T | null {\n const records = env ?? {};\n const value = records[envName] ?? null;\n return value as T | null;\n}\n\nfunction _getValue(envStorage: Array, envName: string): T | null {\n /* prefer Window env over process */\n let value: T | null = null;\n\n for (let idx = 0; idx < envStorage.length; idx++) {\n value = _queryStorage(envStorage[idx], envName);\n if (value) {\n break;\n }\n }\n\n return value;\n}\n\nfunction _getValueWithDefault(\n envStorage: Array,\n envName: string,\n defaultValue: T,\n): T {\n return _getValue(envStorage, envName) ?? defaultValue;\n}\n\nfunction _getNumber(envStorage: Array, name: string, defaultValue = -1): number {\n return _getValue(envStorage, name) ?? defaultValue;\n}\n\nfunction _getBoolean(envStorage: Array, name: string, defaultValue = false): boolean {\n return _getValue(envStorage, name) ?? defaultValue;\n}\n\nfunction _getString(envStorage: Array, name: string, defaultValue = ''): string {\n return _getValue(envStorage, name) ?? defaultValue;\n}\n\nfunction env(container: IContainer): IEnv {\n const isRunningOnNodeJS = typeof window === 'undefined';\n\n /* eslint-disable no-restricted-globals */\n const globalObject: any = isRunningOnNodeJS ? globalThis : window;\n /* eslint-enable no-restricted-globals */\n\n /* expose the process variables on the window */\n const processEnv = process?.env ?? {};\n\n const envStorage: Array = [\n globalObject?.env ?? globalObject?.ENV ?? {},\n processEnv,\n ];\n\n const module: IEnv = {\n getValue: (envName: string) => _getValue(envStorage, envName),\n getValueWithDefault: (envName: string, defaultValue: T) =>\n _getValueWithDefault(envStorage, envName, defaultValue),\n getNumber: (name: string, defaultValue?: number) =>\n _getNumber(envStorage, name, defaultValue ?? -1),\n getBoolean: (name: string, defaultValue?: boolean) =>\n _getBoolean(envStorage, name, defaultValue ?? false),\n getString: (name: string, defaultValue?: string) =>\n _getString(envStorage, name, defaultValue ?? ''),\n };\n\n return module;\n}\n\nexport default env;\n","export enum LOG_LEVEL {\n MILESTONE = 1,\n TRACE = 2,\n VERBOSE = 3,\n INFO = 4,\n WARN = 5,\n ERROR = 6,\n FATAL = 7,\n ASSERT = 8,\n}\n\nexport interface ILogger {\n assert: (condition: boolean | string | number, message: string) => void;\n log: (logLevel: LOG_LEVEL, message: string) => void;\n}\n","import { IConfigLogSettings } from '../interface/config';\nimport { ILogger, LOG_LEVEL } from './log.if';\n\nconst logMap: Record void> = {\n [LOG_LEVEL.MILESTONE]: message => console.info(message),\n [LOG_LEVEL.TRACE]: message => console.debug(message),\n [LOG_LEVEL.VERBOSE]: message => console.debug(message),\n [LOG_LEVEL.INFO]: message => console.info(message),\n [LOG_LEVEL.WARN]: message => console.warn(message),\n [LOG_LEVEL.ERROR]: message => console.error(message),\n [LOG_LEVEL.FATAL]: message => console.error(message),\n [LOG_LEVEL.ASSERT]: message => console.assert(true, message),\n};\n\nfunction _consoleLog(logLevel: LOG_LEVEL, message: string) {\n logMap[logLevel](message);\n}\n\nfunction logger(levels: Array, settings: IConfigLogSettings): ILogger {\n const logger: ILogger = {\n assert: (condition, message) => condition && _consoleLog(LOG_LEVEL.ASSERT, message),\n log: (level, msg) => _consoleLog(level, msg),\n };\n\n return logger;\n}\n\nexport default logger;\n","import { IApplicationInsights, SeverityLevel } from '@microsoft/applicationinsights-web';\nimport type { IConfigLogSettings } from '../interface/config';\nimport { LOG_LEVEL, ILogger } from './log.if';\n\nconst _levelToApplicationInsightsLevel: Record = {\n [LOG_LEVEL.MILESTONE]: SeverityLevel.Information,\n [LOG_LEVEL.TRACE]: SeverityLevel.Verbose,\n [LOG_LEVEL.VERBOSE]: SeverityLevel.Verbose,\n [LOG_LEVEL.INFO]: SeverityLevel.Information,\n [LOG_LEVEL.WARN]: SeverityLevel.Warning,\n [LOG_LEVEL.ERROR]: SeverityLevel.Error,\n [LOG_LEVEL.FATAL]: SeverityLevel.Critical,\n [LOG_LEVEL.ASSERT]: SeverityLevel.Critical,\n};\n\nfunction _applicationInsightsLog(\n logLevel: LOG_LEVEL,\n logger: IApplicationInsights | null,\n message: string,\n) {\n if (!logger) {\n return;\n }\n\n switch (logLevel) {\n case LOG_LEVEL.MILESTONE:\n case LOG_LEVEL.VERBOSE:\n case LOG_LEVEL.TRACE:\n case LOG_LEVEL.INFO:\n case LOG_LEVEL.WARN:\n logger.trackTrace({\n message,\n severityLevel: _levelToApplicationInsightsLevel[logLevel],\n });\n break;\n\n default:\n case LOG_LEVEL.ERROR:\n case LOG_LEVEL.FATAL:\n case LOG_LEVEL.ASSERT:\n logger.trackException({\n exception: new Error(message),\n severityLevel: _levelToApplicationInsightsLevel[logLevel],\n });\n break;\n }\n}\n\nfunction _setupAILogger(\n levels: Array,\n settings: IConfigLogSettings,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const debugLogEnabled =\n levels.includes(LOG_LEVEL.MILESTONE) ||\n levels.includes(LOG_LEVEL.VERBOSE) ||\n levels.includes(LOG_LEVEL.INFO);\n const warnLogEnabled = levels.includes(LOG_LEVEL.WARN);\n const loggingLevel =\n 1 + (debugLogEnabled || warnLogEnabled ? 1 : 0); /* 1=Critical, 2=Warn+Others */\n const aiPackage = await import('@microsoft/applicationinsights-web');\n\n const logger = new aiPackage.ApplicationInsights({\n config: {\n instrumentationKey: settings.authorizationKey,\n enableAutoRouteTracking: true,\n loggingLevelTelemetry: loggingLevel,\n loggingLevelConsole: loggingLevel,\n namePrefix: `${settings.name ?? 'ai-logger'}-`,\n ...settings,\n },\n });\n\n logger.loadAppInsights();\n\n resolve(logger);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction logger(levels: Array, settings: IConfigLogSettings): ILogger {\n let remoteAILogger: IApplicationInsights | null = null;\n\n _setupAILogger(levels, settings)\n .then(logger => (remoteAILogger = logger))\n .catch(error => console.error(`Failed to get AI logger: ${error}`));\n\n const logger: ILogger = {\n assert: (condition, msg) =>\n condition && _applicationInsightsLog(LOG_LEVEL.ASSERT, remoteAILogger, msg),\n log: (level, msg) => _applicationInsightsLog(level, remoteAILogger, msg),\n };\n\n return logger;\n}\n\nexport default logger;\n","import { IConfigLogSettings } from '../interface/config';\nimport { ILogger, LOG_LEVEL } from './log.if';\n\nconst LOG_PREFIX = `log`;\n\nlet collisionCounter = 0;\n\nconst ERROR_NAME_QUOTA_EXCEEDED = [\n 'QUOTA_EXCEEDED_ERR',\n 'NS_ERROR_DOM_QUOTA_REACHED',\n 'QuotaExceededError',\n 'W3CException_DOM_QUOTA_EXCEEDED_ERR',\n];\n\nfunction _hasExceededQuotaError(object: unknown) {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n const record: Partial> = object as Partial>;\n\n const name = record['name'] ?? '';\n\n const hasQuotaError = ERROR_NAME_QUOTA_EXCEEDED.includes(name);\n\n return hasQuotaError;\n}\n\nfunction _localStorageLog(logLevel: LOG_LEVEL, message: string) {\n const time = new Date().getTime();\n\n const saveItem = {\n time,\n message,\n level: logLevel,\n };\n\n let key = [LOG_PREFIX, time].join('-');\n\n const willCollide = localStorage.getItem(key) !== null;\n\n if (willCollide) {\n collisionCounter += 1;\n key = [LOG_PREFIX, time, collisionCounter].join('-');\n } else {\n collisionCounter = 1;\n }\n\n try {\n localStorage.setItem(key, JSON.stringify(saveItem));\n } catch (error: unknown) {\n if (_hasExceededQuotaError(error)) {\n console.error(`Storage exceeded for LocalStorage logger: ${JSON.stringify(error)}`);\n } else {\n console.error(`LocalStorage setItem failed: ${JSON.stringify(error)}`);\n }\n }\n}\n\nfunction logger(levels: Array, settings: IConfigLogSettings): ILogger {\n const logger: ILogger = {\n assert: (condition, message) => condition && _localStorageLog(LOG_LEVEL.ASSERT, message),\n log: (level, message) => _localStorageLog(level, message),\n };\n\n return logger;\n}\n\nexport default logger;\n","import {\n IConfigLog,\n IConfigLogDestination,\n IConfigLogLevel,\n injectConfigLog,\n} from '../interface/config';\nimport type { ILog } from '../interface/log';\nimport consoleLoggerInstantiator from './log.console';\nimport aiLoggerInstantiator from './log.ai';\nimport { ILogger, LOG_LEVEL } from './log.if';\nimport lsLoggerInstantiator from './log.ls';\nimport { IContainer } from '../interface/container';\n\nconst DEFAULT_CONFIGLOG: IConfigLog = {\n loggingLevelsEnabled: [],\n outputDestinations: [],\n outputConfiguration: {},\n};\n\n/* IConfigLogLevel & LOG_LEVEL have same enum values, just cast */\nconst LogLevelToConfigLogLevel = (level: LOG_LEVEL): IConfigLogLevel => {\n return level as number;\n};\nconst ConfigLogLevelsToLogLevels = (level: IConfigLogLevel[]): LOG_LEVEL[] => {\n return level as number[];\n};\n\nfunction _isLogLevelEnabled(\n config: IConfigLog | Array,\n logLevel: LOG_LEVEL,\n): boolean {\n if (Array.isArray(config)) {\n const configArr = config as Array;\n return configArr.includes(LogLevelToConfigLogLevel(logLevel));\n } else {\n const configObj = config as IConfigLog;\n return configObj.loggingLevelsEnabled.includes(LogLevelToConfigLogLevel(logLevel));\n }\n}\n\nfunction _buildLoggers(config: IConfigLog): Array {\n const loggers: Array = [];\n\n const consoleLogEnabled = config.outputDestinations.includes(IConfigLogDestination.Console);\n if (consoleLogEnabled) {\n const consoleConfig = config.outputConfiguration[IConfigLogDestination.Console] ?? {};\n loggers.push(\n consoleLoggerInstantiator(\n ConfigLogLevelsToLogLevels(config.loggingLevelsEnabled),\n consoleConfig,\n ),\n );\n }\n\n const remoteAIEnabled = config.outputDestinations.includes(\n IConfigLogDestination.Remote_ApplicationInsights,\n );\n if (remoteAIEnabled) {\n const remoteAIConfig =\n config.outputConfiguration[IConfigLogDestination.Remote_ApplicationInsights] ?? {};\n loggers.push(\n aiLoggerInstantiator(\n ConfigLogLevelsToLogLevels(config.loggingLevelsEnabled),\n remoteAIConfig,\n ),\n );\n }\n\n const localStorageEnabled = config.outputDestinations.includes(\n IConfigLogDestination.LocalStorage,\n );\n if (localStorageEnabled) {\n const localStorageConfig =\n config.outputConfiguration[IConfigLogDestination.Remote_ApplicationInsights] ?? {};\n loggers.push(\n lsLoggerInstantiator(\n ConfigLogLevelsToLogLevels(config.loggingLevelsEnabled),\n localStorageConfig,\n ),\n );\n }\n\n return loggers;\n}\n\nfunction logger(config: IConfigLog): ILog {\n const loggers = _buildLoggers(config);\n\n const logAll = (logLevel: LOG_LEVEL, message: string) => {\n for (let i = 0; i < loggers.length; i++) {\n loggers[i].log(logLevel, message);\n }\n };\n\n const assertAll = (condition: boolean | string | number, message: string) => {\n for (let i = 0; i < loggers.length; i++) {\n loggers[i].assert(condition, message);\n }\n };\n\n const milestone = (msg: string) => logAll(LOG_LEVEL.MILESTONE, msg);\n const verbose = (msg: string) => logAll(LOG_LEVEL.VERBOSE, msg);\n const trace = (msg: string) => logAll(LOG_LEVEL.TRACE, msg);\n const info = (msg: string) => logAll(LOG_LEVEL.INFO, msg);\n const warn = (msg: string) => logAll(LOG_LEVEL.WARN, msg);\n const warning = (msg: string) => logAll(LOG_LEVEL.WARN, msg);\n const error = (msg: string) => logAll(LOG_LEVEL.ERROR, msg);\n const fatal = (msg: string) => logAll(LOG_LEVEL.FATAL, msg);\n const assert = (condition: boolean | string | number, msg: string | undefined) =>\n assertAll(condition, msg ?? 'Assertion check failed');\n const noop = (_: string) => {\n /* noop */\n };\n const noopAssert = (_: boolean | string | number, __: string | undefined) => {\n /* noop */\n };\n\n const module: ILog = {\n milestone: _isLogLevelEnabled(config, LOG_LEVEL.MILESTONE) ? milestone : noop,\n verbose: _isLogLevelEnabled(config, LOG_LEVEL.VERBOSE) ? verbose : noop,\n trace: _isLogLevelEnabled(config, LOG_LEVEL.TRACE) ? trace : noop,\n info: _isLogLevelEnabled(config, LOG_LEVEL.INFO) ? info : noop,\n warn: _isLogLevelEnabled(config, LOG_LEVEL.WARN) ? warn : noop,\n warning: _isLogLevelEnabled(config, LOG_LEVEL.WARN) ? warning : noop,\n error: _isLogLevelEnabled(config, LOG_LEVEL.ERROR) ? error : noop,\n fatal: _isLogLevelEnabled(config, LOG_LEVEL.FATAL) ? fatal : noop,\n assert: _isLogLevelEnabled(config, LOG_LEVEL.ASSERT) ? assert : noopAssert,\n };\n\n return module;\n}\n\n/* At time of binding IConfigLog is not available, as the utils are bound first, before the config files. This should be refactored to remove the injectConfigLog() call below */\nfunction lazy_logger(container: IContainer): ILog {\n let log: ILog | null = null;\n\n function instantiateLogger() {\n if (!log) {\n const config = injectConfigLog(container) ?? DEFAULT_CONFIGLOG;\n log = logger(config);\n }\n }\n\n const milestone = (msg: string) => {\n instantiateLogger();\n log?.milestone?.(msg);\n };\n const verbose = (msg: string) => {\n instantiateLogger();\n log?.verbose(msg);\n };\n const trace = (msg: string) => {\n instantiateLogger();\n log?.trace(msg);\n };\n const info = (msg: string) => {\n instantiateLogger();\n log?.info(msg);\n };\n const warn = (msg: string) => {\n instantiateLogger();\n log?.warn(msg);\n };\n const warning = (msg: string) => {\n instantiateLogger();\n log?.warning(msg);\n };\n const error = (msg: string) => {\n instantiateLogger();\n log?.error(msg);\n };\n const fatal = (msg: string) => {\n instantiateLogger();\n log?.fatal(msg);\n };\n\n const assert = (condition: boolean | string | number, msg: string | undefined) => {\n instantiateLogger();\n log?.assert(condition, msg);\n };\n\n const module: ILog = {\n milestone,\n verbose,\n trace,\n info,\n warn,\n warning,\n error,\n fatal,\n assert,\n };\n\n return module;\n}\n\nexport default lazy_logger;\n","import { IQueryURL } from '../interface/query';\n\nfunction parse(queryString: string): Record {\n const query: Record = {};\n\n const pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');\n\n for (let i = 0; i < pairs.length; i++) {\n const pair = pairs[i].split('=');\n const k = decodeURIComponent(pair[0]);\n const v: any = decodeURIComponent(pair[1]) ?? '';\n query[k] = v;\n }\n return query;\n}\n\nfunction assemble(queryArgs: {}): string {\n const strPairs: Array = [];\n\n for (const key in queryArgs) {\n const value = (queryArgs as any)[key];\n const encodedStr = encodeURIComponent(key) + '=' + encodeURIComponent(value);\n strPairs.push(encodedStr);\n }\n\n return '?' + strPairs.join('&');\n}\n\nconst module: IQueryURL = {\n parse,\n assemble,\n};\n\nexport default module;\n","import os from 'os';\nimport escapeStringRegexp from 'escape-string-regexp';\n\nconst extractPathRegex = /\\s+at.*[(\\s](.*)\\)?/;\nconst pathRegex = /^(?:(?:(?:node|node:[\\w/]+|(?:(?:node:)?internal\\/[\\w/]*|.*node_modules\\/(?:babel-polyfill|pirates)\\/.*)?\\w+)(?:\\.js)?:\\d+:\\d+)|native)/;\nconst homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir().replace(/\\\\/g, '/');\n\nexport default function cleanStack(stack, {pretty = false, basePath} = {}) {\n\tconst basePathRegex = basePath && new RegExp(`(at | \\\\()${escapeStringRegexp(basePath.replace(/\\\\/g, '/'))}`, 'g');\n\n\tif (typeof stack !== 'string') {\n\t\treturn undefined;\n\t}\n\n\treturn stack.replace(/\\\\/g, '/')\n\t\t.split('\\n')\n\t\t.filter(line => {\n\t\t\tconst pathMatches = line.match(extractPathRegex);\n\t\t\tif (pathMatches === null || !pathMatches[1]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst match = pathMatches[1];\n\n\t\t\t// Electron\n\t\t\tif (\n\t\t\t\tmatch.includes('.app/Contents/Resources/electron.asar') ||\n\t\t\t\tmatch.includes('.app/Contents/Resources/default_app.asar')\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn !pathRegex.test(match);\n\t\t})\n\t\t.filter(line => line.trim() !== '')\n\t\t.map(line => {\n\t\t\tif (basePathRegex) {\n\t\t\t\tline = line.replace(basePathRegex, '$1');\n\t\t\t}\n\n\t\t\tif (pretty) {\n\t\t\t\tline = line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));\n\t\t\t}\n\n\t\t\treturn line;\n\t\t})\n\t\t.join('\\n');\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","import indentString from 'indent-string';\nimport cleanStack from 'clean-stack';\n\nconst cleanInternalStack = stack => stack.replace(/\\s+at .*aggregate-error\\/index.js:\\d+:\\d+\\)?/g, '');\n\nexport default class AggregateError extends Error {\n\t#errors;\n\n\tname = 'AggregateError';\n\n\tconstructor(errors) {\n\t\tif (!Array.isArray(errors)) {\n\t\t\tthrow new TypeError(`Expected input to be an Array, got ${typeof errors}`);\n\t\t}\n\n\t\terrors = errors.map(error => {\n\t\t\tif (error instanceof Error) {\n\t\t\t\treturn error;\n\t\t\t}\n\n\t\t\tif (error !== null && typeof error === 'object') {\n\t\t\t\t// Handle plain error objects with message property and/or possibly other metadata\n\t\t\t\treturn Object.assign(new Error(error.message), error);\n\t\t\t}\n\n\t\t\treturn new Error(error);\n\t\t});\n\n\t\tlet message = errors\n\t\t\t.map(error => {\n\t\t\t\t// The `stack` property is not standardized, so we can't assume it exists\n\t\t\t\treturn typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error);\n\t\t\t})\n\t\t\t.join('\\n');\n\t\tmessage = '\\n' + indentString(message, 4);\n\t\tsuper(message);\n\n\t\tthis.#errors = errors;\n\t}\n\n\tget errors() {\n\t\treturn this.#errors.slice();\n\t}\n}\n","export default function indentString(string, count = 1, options = {}) {\n\tconst {\n\t\tindent = ' ',\n\t\tincludeEmptyLines = false\n\t} = options;\n\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof string}\\``\n\t\t);\n\t}\n\n\tif (typeof count !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof count}\\``\n\t\t);\n\t}\n\n\tif (count < 0) {\n\t\tthrow new RangeError(\n\t\t\t`Expected \\`count\\` to be at least 0, got \\`${count}\\``\n\t\t);\n\t}\n\n\tif (typeof indent !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof indent}\\``\n\t\t);\n\t}\n\n\tif (count === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = includeEmptyLines ? /^/gm : /^(?!\\s*$)/gm;\n\n\treturn string.replace(regex, indent.repeat(count));\n}\n","import AggregateError from 'aggregate-error';\n\nexport default async function pMap(\n\titerable,\n\tmapper,\n\t{\n\t\tconcurrency = Number.POSITIVE_INFINITY,\n\t\tstopOnError = true\n\t} = {}\n) {\n\treturn new Promise((resolve, reject_) => { // eslint-disable-line promise/param-names\n\t\tif (iterable[Symbol.iterator] === undefined && iterable[Symbol.asyncIterator] === undefined) {\n\t\t\tthrow new TypeError(`Expected \\`input\\` to be either an \\`Iterable\\` or \\`AsyncIterable\\`, got (${typeof iterable})`);\n\t\t}\n\n\t\tif (typeof mapper !== 'function') {\n\t\t\tthrow new TypeError('Mapper function is required');\n\t\t}\n\n\t\tif (!((Number.isSafeInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency >= 1)) {\n\t\t\tthrow new TypeError(`Expected \\`concurrency\\` to be an integer from 1 and up or \\`Infinity\\`, got \\`${concurrency}\\` (${typeof concurrency})`);\n\t\t}\n\n\t\tconst result = [];\n\t\tconst errors = [];\n\t\tconst skippedIndexesMap = new Map();\n\t\tlet isRejected = false;\n\t\tlet isResolved = false;\n\t\tlet isIterableDone = false;\n\t\tlet resolvingCount = 0;\n\t\tlet currentIndex = 0;\n\t\tconst iterator = iterable[Symbol.iterator] === undefined ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator]();\n\n\t\tconst reject = reason => {\n\t\t\tisRejected = true;\n\t\t\tisResolved = true;\n\t\t\treject_(reason);\n\t\t};\n\n\t\tconst next = async () => {\n\t\t\tif (isResolved) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst nextItem = await iterator.next();\n\n\t\t\tconst index = currentIndex;\n\t\t\tcurrentIndex++;\n\n\t\t\t// Note: `iterator.next()` can be called many times in parallel.\n\t\t\t// This can cause multiple calls to this `next()` function to\n\t\t\t// receive a `nextItem` with `done === true`.\n\t\t\t// The shutdown logic that rejects/resolves must be protected\n\t\t\t// so it runs only one time as the `skippedIndex` logic is\n\t\t\t// non-idempotent.\n\t\t\tif (nextItem.done) {\n\t\t\t\tisIterableDone = true;\n\n\t\t\t\tif (resolvingCount === 0 && !isResolved) {\n\t\t\t\t\tif (!stopOnError && errors.length > 0) {\n\t\t\t\t\t\treject(new AggregateError(errors));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tisResolved = true;\n\n\t\t\t\t\tif (!skippedIndexesMap.size) {\n\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst pureResult = [];\n\n\t\t\t\t\t// Support multiple `pMapSkip`'s.\n\t\t\t\t\tfor (const [index, value] of result.entries()) {\n\t\t\t\t\t\tif (skippedIndexesMap.get(index) === pMapSkip) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tpureResult.push(value);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(pureResult);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolvingCount++;\n\n\t\t\t// Intentionally detached\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst element = await nextItem.value;\n\n\t\t\t\t\tif (isResolved) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst value = await mapper(element, index);\n\n\t\t\t\t\t// Use Map to stage the index of the element.\n\t\t\t\t\tif (value === pMapSkip) {\n\t\t\t\t\t\tskippedIndexesMap.set(index, value);\n\t\t\t\t\t}\n\n\t\t\t\t\tresult[index] = value;\n\n\t\t\t\t\tresolvingCount--;\n\t\t\t\t\tawait next();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (stopOnError) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors.push(error);\n\t\t\t\t\t\tresolvingCount--;\n\n\t\t\t\t\t\t// In that case we can't really continue regardless of `stopOnError` state\n\t\t\t\t\t\t// since an iterable is likely to continue throwing after it throws once.\n\t\t\t\t\t\t// If we continue calling `next()` indefinitely we will likely end up\n\t\t\t\t\t\t// in an infinite loop of failed iteration.\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait next();\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\treject(error);\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\n\t\t// Create the concurrent runners in a detached (non-awaited)\n\t\t// promise. We need this so we can await the `next()` calls\n\t\t// to stop creating runners before hitting the concurrency limit\n\t\t// if the iterable has already been marked as done.\n\t\t// NOTE: We *must* do this for async iterators otherwise we'll spin up\n\t\t// infinite `next()` calls by default and never start the event loop.\n\t\t(async () => {\n\t\t\tfor (let index = 0; index < concurrency; index++) {\n\t\t\t\ttry {\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tawait next();\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (isIterableDone || isRejected) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\t});\n}\n\nexport const pMapSkip = Symbol('skip');\n","import pMap from 'p-map';\n\nexport default function pTimes(count, mapper, options) {\n\treturn pMap(Array.from({length: count}).fill(), (_, index) => mapper(index), options);\n}\n","import pTimes from 'p-times';\n\nconst sum = iterable => {\n\tlet total = 0;\n\n\tfor (const value of iterable.values()) {\n\t\ttotal += value;\n\t}\n\n\treturn total;\n};\n\nexport class PProgress extends Promise {\n\tstatic all(promises, options) {\n\t\treturn pProgress(async progress => {\n\t\t\tif (\n\t\t\t\toptions && typeof options.concurrency === 'number'\n\t\t\t\t&& !(promises.every(promise => typeof promise === 'function'))\n\t\t\t) {\n\t\t\t\tthrow new TypeError('When `options.concurrency` is set, the first argument must be an Array of Promise-returning functions');\n\t\t\t}\n\n\t\t\tconst progressMap = new Map();\n\n\t\t\tconst reportProgress = () => {\n\t\t\t\tprogress(sum(progressMap) / promises.length);\n\t\t\t};\n\n\t\t\tconst mapper = async index => {\n\t\t\t\tconst nextValue = promises[index];\n\t\t\t\tconst promise = typeof nextValue === 'function' ? nextValue() : nextValue;\n\t\t\t\tprogressMap.set(promise, 0);\n\n\t\t\t\tif (promise instanceof PProgress) {\n\t\t\t\t\tpromise.onProgress(percentage => {\n\t\t\t\t\t\tprogressMap.set(promise, percentage);\n\t\t\t\t\t\treportProgress();\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst value = await promise;\n\t\t\t\tprogressMap.set(promise, 1);\n\t\t\t\treportProgress();\n\t\t\t\treturn value;\n\t\t\t};\n\n\t\t\treturn pTimes(promises.length, mapper, options);\n\t\t});\n\t}\n\n\tstatic allSettled(promises, {concurrency} = {}) {\n\t\treturn pProgress(async progress => {\n\t\t\tif (\n\t\t\t\ttypeof concurrency === 'number'\n\t\t\t\t&& !(promises.every(promise => typeof promise === 'function'))\n\t\t\t) {\n\t\t\t\tthrow new TypeError('When `options.concurrency` is set, the first argument must be an Array of Promise-returning functions');\n\t\t\t}\n\n\t\t\tconst progressMap = new Map();\n\n\t\t\tconst reportProgress = () => {\n\t\t\t\tprogress(sum(progressMap) / promises.length);\n\t\t\t};\n\n\t\t\tconst mapper = async index => {\n\t\t\t\tconst nextValue = promises[index];\n\t\t\t\tconst promise = typeof nextValue === 'function' ? nextValue() : nextValue;\n\t\t\t\tprogressMap.set(promise, 0);\n\n\t\t\t\tif (promise instanceof PProgress) {\n\t\t\t\t\tpromise.onProgress(percentage => {\n\t\t\t\t\t\tprogressMap.set(promise, percentage);\n\t\t\t\t\t\treportProgress();\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstatus: 'fulfilled',\n\t\t\t\t\t\tvalue: await promise,\n\t\t\t\t\t};\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstatus: 'rejected',\n\t\t\t\t\t\treason: error,\n\t\t\t\t\t};\n\t\t\t\t} finally {\n\t\t\t\t\tprogressMap.set(promise, 1);\n\t\t\t\t\treportProgress();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn pTimes(promises.length, mapper, {\n\t\t\t\tconcurrency,\n\t\t\t});\n\t\t});\n\t}\n\n\tconstructor(executor) {\n\t\tconst setProgress = progress => {\n\t\t\tif (progress > 1 || progress < 0) {\n\t\t\t\tthrow new TypeError('The progress percentage should be a number between 0 and 1');\n\t\t\t}\n\n\t\t\t(async () => {\n\t\t\t\t// We wait for the next microtask tick so `super` is called before we use `this`\n\t\t\t\tawait Promise.resolve();\n\n\t\t\t\t// Note: we don't really have guarantees over\n\t\t\t\t// the order in which async operations are evaluated,\n\t\t\t\t// so if we get an out-of-order progress, we'll just discard it.\n\t\t\t\tif (progress <= this._progress) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis._progress = progress;\n\n\t\t\t\tfor (const listener of this._listeners) {\n\t\t\t\t\tlistener(progress);\n\t\t\t\t}\n\t\t\t})();\n\t\t};\n\n\t\tsuper((resolve, reject) => {\n\t\t\texecutor(\n\t\t\t\tvalue => {\n\t\t\t\t\tsetProgress(1);\n\t\t\t\t\tresolve(value);\n\t\t\t\t},\n\t\t\t\treject,\n\t\t\t\tprogress => {\n\t\t\t\t\tif (progress !== 1) {\n\t\t\t\t\t\tsetProgress(progress);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\n\t\tthis._listeners = new Set();\n\t\tthis._setProgress = setProgress;\n\t\tthis._progress = 0;\n\t}\n\n\tget progress() {\n\t\treturn this._progress;\n\t}\n\n\tonProgress(callback) {\n\t\tif (typeof callback !== 'function') {\n\t\t\tthrow new TypeError(`Expected a \\`Function\\`, got \\`${typeof callback}\\``);\n\t\t}\n\n\t\tthis._listeners.add(callback);\n\t\treturn this;\n\t}\n\n\tthen(onFulfilled, onRejected) {\n\t\tconst child = super.then(onFulfilled, onRejected);\n\t\tthis._listeners.add(progress => {\n\t\t\tchild._setProgress(progress);\n\t\t});\n\t\treturn child;\n\t}\n}\n\nexport default function pProgress(input) {\n\treturn new PProgress(async (resolve, reject, progress) => {\n\t\ttry {\n\t\t\tresolve(await input(progress));\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\t});\n}\n","import { PProgress } from 'p-progress';\nimport { IProgressPromise, IProgressPromiseGenerator, PromiseExecutor } from '../interface/promise';\n\nfunction Promise(executor: PromiseExecutor): IProgressPromise {\n return new PProgress(executor);\n}\n\nconst module: IProgressPromiseGenerator = {\n promise: Promise,\n};\n\nexport default module;\n","const MIME_MAP: Record = {\n 'Application/xml': 'vcproj',\n 'application/PowerShell': 'psc1',\n 'application/atom+xml': 'atom',\n 'application/directx': 'x',\n 'application/envoy': 'evy',\n 'application/etl': 'etl',\n 'application/fractals': 'fif',\n 'application/fsharp-script': 'fsx',\n 'application/futuresplash': 'spl',\n 'application/hta': 'hta',\n 'application/internet-property-stream': 'acx',\n 'application/java-archive': 'jar',\n 'application/json': 'json',\n 'application/liquidmotion': 'jcz',\n 'application/mac-binhex40': 'hqx',\n 'application/ms-vsi': 'vsi',\n 'application/msaccess': 'mde',\n 'application/msaccess.addin': 'accda',\n 'application/msaccess.cab': 'accdc',\n 'application/msaccess.ftemplate': 'accft',\n 'application/msaccess.runtime': 'accdr',\n 'application/msaccess.webapplication': 'accdw',\n 'application/msword': 'wiz',\n 'application/octet-stream': 'xtp',\n 'application/oda': 'oda',\n 'application/oleobject': 'ods',\n 'application/olescript': 'axs',\n 'application/onenote': 'onepkg',\n 'application/opensearchdescription+xml': 'osdx',\n 'application/pdf': 'pdf',\n 'application/pics-rules': 'prf',\n 'application/pkcs10': 'p10',\n 'application/pkcs7-mime': 'p7c',\n 'application/pkcs7-signature': 'p7s',\n 'application/pkix-crl': 'crl',\n 'application/postscript': 'ps',\n 'application/rat-file': 'rat',\n 'application/rtf': 'rtf',\n 'application/sdp': 'sdp',\n 'application/set-payment-initiation': 'setpay',\n 'application/set-registration-initiation': 'setreg',\n 'application/streamingmedia': 'ssm',\n 'application/vnd.adobe.air-application-installer-package+zip': 'air',\n 'application/vnd.fdf': 'fdf',\n 'application/vnd.ms-excel': 'xlm',\n 'application/vnd.ms-excel.addin.macroEnabled.12': 'xlam',\n 'application/vnd.ms-excel.sheet.binary.macroEnabled.12': 'xlsb',\n 'application/vnd.ms-excel.sheet.macroEnabled.12': 'xlsm',\n 'application/vnd.ms-excel.template.macroEnabled.12': 'xltm',\n 'application/vnd.ms-mediapackage': 'mpf',\n 'application/vnd.ms-office.calx': 'calx',\n 'application/vnd.ms-officetheme': 'thmx',\n 'application/vnd.ms-pki.certstore': 'sst',\n 'application/vnd.ms-pki.pko': 'pko',\n 'application/vnd.ms-pki.seccat': 'cat',\n 'application/vnd.ms-pki.stl': 'stl',\n 'application/vnd.ms-powerpoint': 'pot',\n 'application/vnd.ms-powerpoint.addin.macroEnabled.12': 'ppam',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12': 'pptm',\n 'application/vnd.ms-powerpoint.slide.macroEnabled.12': 'sldm',\n 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12': 'ppsm',\n 'application/vnd.ms-powerpoint.template.macroEnabled.12': 'potm',\n 'application/vnd.ms-project': 'mpp',\n 'application/vnd.ms-visio.viewer': 'vdx',\n 'application/vnd.ms-word.document.macroEnabled.12': 'docm',\n 'application/vnd.ms-word.template.macroEnabled.12': 'dotm',\n 'application/vnd.ms-works': 'wdb',\n 'application/vnd.ms-wpl': 'wpl',\n 'application/vnd.ms-xpsdocument': 'xps',\n 'application/vnd.oasis.opendocument.presentation': 'odp',\n 'application/vnd.oasis.opendocument.text': 'odt',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'pptx',\n 'application/vnd.openxmlformats-officedocument.presentationml.slide': 'sldx',\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow': 'ppsx',\n 'application/vnd.openxmlformats-officedocument.presentationml.template': 'potx',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template': 'xltx',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template': 'dotx',\n 'application/vnd.rn-realmedia': 'rm',\n 'application/vnd.rn-rn_music_package': 'rmp',\n 'application/vnd.visio': 'vtx',\n 'application/vnd.wap.wmlc': 'wmlc',\n 'application/vnd.wap.wmlscriptc': 'wmlsc',\n 'application/vsix': 'vsix',\n 'application/windows-library+xml': 'librar-ms',\n 'application/windows-search-connector+xml': 'searchConnecto-ms',\n 'application/winhlp': 'hlp',\n 'application/wlmoviemaker': 'WLMP',\n 'application/x-7z-compressed': '7z',\n 'application/x-bcpio': 'bcpio',\n 'application/x-bridge-url': 'adobebridge',\n 'application/x-cdf': 'cdf',\n 'application/x-compress': 'z',\n 'application/x-compressed': 'tgz',\n 'application/x-cpio': 'cpio',\n 'application/x-csh': 'csh',\n 'application/x-director': 'dir',\n 'application/x-dvi': 'dvi',\n 'application/x-gtar': 'gtar',\n 'application/x-hdf': 'hdf',\n 'application/x-internet-signup': 'isp',\n 'application/x-iphone': 'iii',\n 'application/x-itunes-ipa': 'ipa',\n 'application/x-itunes-ipg': 'ipg',\n 'application/x-itunes-ipsw': 'ipsw',\n 'application/x-itunes-ite': 'ite',\n 'application/x-itunes-itlp': 'itlp',\n 'application/x-itunes-itms': 'itms',\n 'application/x-itunes-itpc': 'itpc',\n 'application/x-java-applet': 'class',\n 'application/x-java-jnlp-file': 'jnlp',\n 'application/x-javascript': 'js',\n 'application/x-latex': 'latex',\n 'application/x-miva-compiled': 'mvc',\n 'application/x-mmxp': 'mxp',\n 'application/x-mpeg': 'amc',\n 'application/x-ms-application': 'application',\n 'application/x-ms-license': 'slupk-ms',\n 'application/x-ms-manifest': 'manifest',\n 'application/x-ms-reader': 'lit',\n 'application/x-ms-vsto': 'vsto',\n 'application/x-ms-wmd': 'wmd',\n 'application/x-ms-xbap': 'xbap',\n 'application/x-msaccess': 'mdb',\n 'application/x-mscardfile': 'crd',\n 'application/x-msclip': 'clp',\n 'application/x-msdownload': 'dll',\n 'application/x-msmediaview': 'mvb',\n 'application/x-msmetafile': 'wmf',\n 'application/x-mspublisher': 'pub',\n 'application/x-msterminal': 'trm',\n 'application/x-mswrite': 'wri',\n 'application/x-netcdf': 'nc',\n 'application/x-oleobject': 'hhc',\n 'application/x-perfmon': 'pmw',\n 'application/x-pkcs12': 'pfx',\n 'application/x-pkcs7-certificates': 'spc',\n 'application/x-pkcs7-certreqresp': 'p7r',\n 'application/x-podcast': 'pcast',\n 'application/x-quicktimeplayer': 'qtl',\n 'application/x-safari-safariextz': 'safariextz',\n 'application/x-safari-webarchive': 'webarchive',\n 'application/x-sgimb': 'sgimb',\n 'application/x-sh': 'sh',\n 'application/x-shar': 'shar',\n 'application/x-shockwave-flash': 'swf',\n 'application/x-silverlight-app': 'xap',\n 'application/x-smaf': 'mmf',\n 'application/x-stuffit': 'sit',\n 'application/x-sv4cpio': 'sv4cpio',\n 'application/x-sv4crc': 'sv4crc',\n 'application/x-tar': 'tar',\n 'application/x-tcl': 'tcl',\n 'application/x-tex': 'tex',\n 'application/x-texinfo': 'texi',\n 'application/x-troff': 'roff',\n 'application/x-troff-man': 'man',\n 'application/x-troff-me': 'me',\n 'application/x-troff-ms': 'ms',\n 'application/x-ustar': 'ustar',\n 'application/x-wais-source': 'src',\n 'application/x-wlpg-detect': 'wlpginstall',\n 'application/x-wlpg3-detect': 'wlpginstall3',\n 'application/x-x509-ca-cert': 'der',\n 'application/x-zip-compressed': 'zip',\n 'application/xaml+xml': 'xaml',\n 'application/xhtml+xml': 'xht',\n 'application/xml': 'xml',\n 'application/zip': 'zip',\n 'audio/aac': 'aac',\n 'audio/ac3': 'ac3',\n 'audio/aiff': 'cdda',\n 'audio/audible': 'aa',\n 'audio/basic': 'snd',\n 'audio/m4a': 'm4a',\n 'audio/m4b': 'm4b',\n 'audio/m4p': 'm4p',\n 'audio/mid': 'midi',\n 'audio/scpls': 'pls',\n 'audio/vnd.audible.aax': 'aax',\n 'audio/vnd.dlna.adts': 'ADT',\n 'audio/wav': 'wav',\n 'audio/x-aiff': 'aif',\n 'audio/x-caf': 'caf',\n 'audio/x-gsm': 'gsm',\n 'audio/x-m4r': 'm4r',\n 'audio/x-mpegurl': 'm3u',\n 'audio/x-ms-wax': 'wax',\n 'audio/x-pn-realaudio': 'ra',\n 'audio/x-pn-realaudio-plugin': 'rpm',\n 'audio/x-sd2': 'sd2',\n 'audio/x-smd': 'smz',\n 'drawing/x-dwf': 'dwf',\n 'application/x-gzip': 'gz',\n 'image/bmp': 'bmp',\n 'image/cis-cod': 'cod',\n 'image/gif': 'gif',\n 'image/ief': 'ief',\n 'image/jpeg': 'jpeg',\n 'image/jpg': 'jpeg',\n 'image/pict': 'pct',\n 'image/pjpeg': 'jfif',\n 'image/png': 'png',\n 'image/tiff': 'tiff',\n 'image/vnd.ms-photo': 'wdp',\n 'image/vnd.rn-realflash': 'rf',\n 'image/vnd.wap.wbmp': 'wbmp',\n 'image/x-cmu-raster': 'ras',\n 'image/x-cmx': 'cmx',\n 'image/x-icon': 'ico',\n 'image/x-jg': 'art',\n 'image/x-macpaint': 'pntg',\n 'image/x-portable-anymap': 'pnm',\n 'image/x-portable-bitmap': 'pbm',\n 'image/x-portable-graymap': 'pgm',\n 'image/x-portable-pixmap': 'ppm',\n 'image/x-quicktime': 'qti',\n 'image/x-rgb': 'rgb',\n 'image/x-xbitmap': 'xbm',\n 'image/x-xpixmap': 'xpm',\n 'image/x-xwindowdump': 'xwd',\n 'message/rfc822': 'nws',\n 'application/x-msmoney': 'mny',\n 'video/mpeg': 'mpeg',\n 'audio/mpeg': 'mp3',\n 'video/mp4': 'mp4',\n 'application/x-msschedule': 'scd',\n 'text/scriptlet': 'sct',\n 'text/css': 'css',\n 'text/csv': 'csv',\n 'text/dlm': 'dlm',\n 'text/h323': '323',\n 'text/html': 'htm',\n 'text/iuls': 'uls',\n 'text/jscript': 'jsx',\n 'text/plain': 'odl',\n 'text/richtext': 'rtx',\n 'text/sgml': 'sgml',\n 'text/tab-separated-values': 'tsv',\n 'text/vbscript': 'vbs',\n 'text/vnd.wap.wmlscript': 'wmls',\n 'text/webviewhtml': 'htt',\n 'text/x-component': 'htc',\n 'text/x-hdml': 'hdml',\n 'text/x-html-insertion': 'qht',\n 'text/x-ms-contact': 'contact',\n 'text/x-ms-group': 'group',\n 'text/x-ms-iqy': 'iqy',\n 'text/x-ms-odc': 'odc',\n 'text/x-ms-rqy': 'rqy',\n 'text/x-setext': 'etx',\n 'text/x-vcard': 'vcf',\n 'text/xml': 'vssettings',\n 'video/vnd.dlna.mpeg-tts': 'tts',\n 'video/3gpp': '3gp',\n 'video/3gpp2': '3g2',\n 'video/quicktime': 'qt',\n 'video/x-dv': 'dif',\n 'video/x-flv': 'flv',\n 'video/x-ivf': 'IVF',\n 'video/x-la-asf': 'lsf',\n 'video/x-m4v': 'm4v',\n 'video/x-ms-asf': 'asr',\n 'video/x-ms-wm': 'wm',\n 'video/x-ms-wmv': 'wmv',\n 'video/x-ms-wvx': 'wvx',\n 'video/x-msvideo': 'avi',\n 'video/x-sgi-movie': 'movie',\n 'audio/x-ms-wma': 'wma',\n 'text/vnd.wap.wml': 'wml',\n 'video/x-ms-wmp': 'wmp',\n 'video/x-ms-wmx': 'wmx',\n 'application/x-ms-wmz': 'wmz',\n 'x-world/x-vrml': 'flr',\n};\n\nfunction mimeTypeToFileExtension(mime: string): string | null {\n return MIME_MAP[mime] ?? null;\n}\n\nfunction fileExtensionToMimeType(fileExtension: string): string | null {\n let fileExtSearch = fileExtension.toLowerCase();\n if (fileExtSearch.charAt(0) === '.') {\n fileExtSearch = fileExtSearch.substring(1);\n }\n\n for (const mimeType in Object.keys(MIME_MAP)) {\n const fileExtCmp = MIME_MAP[mimeType];\n if (fileExtCmp === fileExtension) {\n return mimeType;\n }\n }\n\n return null;\n}\n\nfunction mimeType() {\n return {\n fileExtensionToMimeType,\n mimeTypeToFileExtension,\n };\n}\n\nexport default mimeType;\n","import { injectConfigManifest } from '../interface/config';\nimport type { IContainer } from '../interface/container';\n\n/* static-imports, no code-splitting */\nimport cache from '../impl/cache';\nimport cacheController from '../impl/cachecontroller';\nimport env from '../impl/env';\nimport log from '../impl/log';\nimport query from '../impl/querystring';\nimport promiser from '../impl/promise';\nimport mimeType from '../impl/mimeType';\nimport { bindProgressPromise, injectProgressPromise } from '../interface/promise';\nimport { bindENV, injectENV } from '../interface/env';\nimport { bindFetch, IFetcher, IFetchRequest } from '../interface/fetch';\nimport { bindLog, injectLog } from '../interface/log';\nimport { bindQueryURL } from '../interface/query';\nimport { bindZip, IZip } from '../interface/zip';\nimport { bindKVStorage, IKVStorage } from '../interface/kvStorage';\nimport { bindBrowser, IBrowser } from '../interface/browser';\nimport { bindCache, bindCacheController } from '../interface/cache';\nimport { bindTranslationStorage, ITranslationStorage } from '../interface/translationStorage';\nimport { bindMimeType } from '../interface/mimeType';\n\nfunction _bindENV(container: IContainer) {\n bindENV(env(container), container);\n}\n\nfunction _bindFetch(container: IContainer) {\n let val: IFetcher | null = null;\n\n const resolver = () => {\n return new Promise(async function (resolve, reject) {\n let rejection = null;\n\n const progressPromiser = injectProgressPromise(container);\n\n try {\n if (!val) {\n const fetcher = (await import('../impl/fetch')).default;\n val = (requestPayload: IFetchRequest, timeout?: number) => {\n return fetcher(progressPromiser, requestPayload, timeout);\n };\n }\n } catch (error) {\n rejection = error;\n }\n\n if (val) {\n resolve(val);\n } else {\n console.error('Fetch failed');\n reject(rejection || 'Import failed for fetcher');\n }\n });\n };\n\n bindFetch(resolver, container);\n}\n\nfunction _bindLog(container: IContainer) {\n bindLog(log(container), container);\n}\n\nfunction _bindQueryString(container: IContainer) {\n bindQueryURL(query, container);\n}\n\nfunction _bindZip(container: IContainer) {\n let val: IZip | null = null;\n\n const resolver = () => {\n return new Promise(async function (resolve, reject) {\n let rejection = null;\n\n try {\n if (!val) {\n val = (await import('../impl/zip')).default;\n }\n } catch (error) {\n rejection = error;\n }\n\n if (val) {\n resolve(val);\n } else {\n reject(rejection || 'Import failed for zip');\n }\n });\n };\n\n bindZip(resolver, container);\n}\n\nfunction _bindKVStorage(container: IContainer) {\n let val: IKVStorage | null = null;\n\n const resolver = () => {\n return new Promise(async function (resolve, reject) {\n let rejection = null;\n\n const dbName = `${injectConfigManifest(container).short_name ?? 'site'}-util-storage`;\n const storeName = 'keyvaluepairs';\n const version = 1;\n const logger = injectLog(container);\n\n try {\n if (!val) {\n val = (await import('../impl/kvstorage')).default(\n dbName,\n storeName,\n version,\n logger,\n );\n }\n } catch (error) {\n rejection = error;\n }\n\n if (val) {\n resolve(val);\n } else {\n reject(rejection || 'Import failed for kvstorage');\n }\n });\n };\n\n bindKVStorage(resolver, container);\n}\n\nfunction _bindBrowser(container: IContainer) {\n let val: IBrowser | null = null;\n\n const resolver = () => {\n return new Promise(async function (resolve, reject) {\n let rejection = null;\n\n try {\n if (!val) {\n val = (await import('../impl/browser')).default();\n }\n } catch (error) {\n rejection = error;\n }\n\n if (val) {\n resolve(val);\n } else {\n reject(rejection || 'Import failed for browser');\n }\n });\n };\n\n bindBrowser(resolver, container);\n}\n\nfunction _bindCache(container: IContainer) {\n bindCache(cache(), container);\n}\n\nfunction _bindCacheController(container: IContainer) {\n bindCacheController(cacheController(), container);\n}\n\nfunction _bindMimeType(container: IContainer) {\n bindMimeType(mimeType());\n}\n\nfunction _bindPromise(container: IContainer) {\n bindProgressPromise(promiser, container);\n}\n\nfunction _bindTranslationStorage(container: IContainer) {\n let val: ITranslationStorage | null = null;\n\n const resolver = () => {\n return new Promise(async function (resolve, reject) {\n let rejection = null;\n\n try {\n if (!val) {\n const envLoad = injectENV(container);\n val = (await import('../impl/translationstorage')).default(envLoad);\n }\n } catch (error) {\n rejection = error;\n }\n\n if (val) {\n resolve(val);\n } else {\n reject(rejection || 'Import failed for translation-storage');\n }\n });\n };\n\n bindTranslationStorage(resolver, container);\n}\n\nexport function bind(container: IContainer): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const binders = [\n _bindENV,\n _bindPromise,\n _bindFetch,\n _bindLog,\n _bindQueryString,\n _bindZip,\n _bindKVStorage,\n _bindBrowser,\n _bindCache,\n _bindCacheController,\n _bindTranslationStorage,\n _bindMimeType,\n ];\n\n for (const binder of binders) {\n binder.call(null, container);\n }\n\n resolve();\n } catch (error) {\n reject(error || 'Unknown error binding utils');\n }\n });\n}\n","import { IContainer } from '../interface/container';\n\nexport interface IContainerPrv extends IContainer {\n _map: Map;\n _parents: Array;\n}\n\nexport default function Container(parents: Array = []): IContainer {\n const container: IContainerPrv = {\n _map: new Map(),\n _parents: parents,\n get: function (this: IContainerPrv, key: symbol): T {\n return (this._map.get(key) ??\n this._parents.find(container => container.get(key))?.get(key)) as T;\n },\n bind: function (this: IContainerPrv, key: symbol, value: any) {\n this._map.set(key, value);\n },\n importBindings: function (this: IContainerPrv, container: IContainer) {\n this._parents.unshift(container);\n },\n remove: function (this: IContainerPrv, key: symbol) {\n this._map.delete(key);\n },\n };\n\n return container as IContainer;\n}\n","function isArrayBuffer(object: unknown): object is ArrayBuffer {\n try {\n return object instanceof ArrayBuffer || object instanceof Buffer;\n } catch (error) {\n /* Buffer|ArrayBuffer definitions missing (running in Browser?) */\n return false;\n }\n}\n\nfunction arrayBufferToString(buffer: ArrayBuffer): string {\n const result = new TextDecoder().decode(buffer);\n return result;\n}\n\nfunction stringToArrayBuffer(str: string): ArrayBuffer {\n const byteArray = new TextEncoder().encode(str);\n const buffer = byteArray.buffer;\n return buffer;\n}\n\nconst module = {\n arrayBufferToString,\n stringToArrayBuffer,\n isArrayBuffer,\n};\n\nexport default module;\n","/** Try fn & args & return null on catch */\nfunction TryNull(fn: (...args: any[]) => T, ...args: any[]): T | null {\n try {\n return fn(...args);\n } catch (e) {\n return null;\n }\n}\n\n/** Try Async fn & args & return null on catch */\nasync function AsyncTryNull(promise: Promise): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n console.error(error);\n resolve(null);\n }\n });\n}\n\n/** get first non null item of property from #props array & return, otherwise return #U */\nfunction getPropFallback(object: any, props: Array, fallback: U): U {\n for (let idx = 0; idx < props.length; idx++) {\n const keySearch = props[idx];\n\n const val: U | null = (object as any)[keySearch];\n if (val) {\n return val;\n }\n }\n\n return fallback;\n}\n\n/** get first non null item from list & return */\nfunction getFirstFallback(...items: Array): T | null {\n for (let idx = 0; idx < items.length; idx++) {\n const val = items[idx];\n\n if (val) {\n return val;\n }\n }\n\n return null;\n}\n\nconst module = {\n TryNull,\n AsyncTryNull,\n getPropFallback,\n getFirstFallback,\n};\n\nexport default module;\n","import { IContainer, ILazyBinder, injectContainer } from './container';\n\nexport enum IBrowserPlatform {\n Unknown = 0,\n MobileiOS = 1,\n MobileAndroid = 2,\n}\n\nexport interface IBrowser {\n platform: IBrowserPlatform;\n isMobile: boolean;\n isInstalled: boolean;\n}\n\nconst TYPES = {\n IBrowser: Symbol.for('IBrowser'),\n};\n\nexport function injectBrowser(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IBrowser)();\n}\n\nexport function bindBrowser(val: ILazyBinder, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IBrowser, val);\n}\n","export interface IContainer {\n get: (key: symbol) => T;\n bind: (key: symbol, val: T) => void;\n remove: (key: symbol) => void;\n importBindings: (container: IContainer) => void;\n}\n\nexport type ILazyBinder = () => Promise;\n\n/* global container storage */\ntype ContainerMap = Record;\n\n/* eslint-disable no-restricted-globals */\nconst globalObject: any = typeof window === 'undefined' ? globalThis : window;\n/* eslint-enable no-restricted-globals */\n\nexport function injectContainer(name = 'default'): IContainer {\n let containers: ContainerMap | undefined = globalObject.containers;\n if (!containers) {\n console.warn('No containers found! Creating new');\n containers = {};\n globalObject.containers = containers;\n }\n\n const container = containers[name];\n return container;\n}\n\nexport function bindContainer(container: IContainer, name = 'default') {\n let containers: ContainerMap | undefined = globalObject.containers;\n if (!containers) {\n containers = {};\n globalObject.containers = containers;\n }\n\n if (containers[name]) {\n console.warn(`Overwriting container: ${name}`);\n }\n\n containers[name] = container;\n}\n\nexport function removeContainer(name = 'default') {\n const containers: ContainerMap | undefined = globalObject.containers;\n\n if (containers) {\n delete containers[name];\n }\n}\n","import { IContainer, injectContainer } from '../../interface/container';\n\nexport enum IChannelStatus {\n Undef = 0,\n Active = 1,\n Expired = 2,\n LastValue = 3,\n}\n\nexport interface IChannelEventMap {\n Error: (error: Error) => void;\n NewMessage: (message: unknown) => void;\n StatusChanged: (newStatus: IChannelStatus) => void;\n}\n\nexport interface IChannelPort {\n postMessage: (key: string, message: unknown) => void;\n postMessageRequest: (callback: (key: string, message: unknown) => void) => void;\n onMessageResponse: (callback: (key: string, message: unknown) => void) => void;\n}\n\nexport type IChannelID = string;\n\nexport interface IChannel {\n id: () => IChannelID;\n status: () => IChannelStatus;\n postMessage: (message: unknown) => void;\n addEventListener: <\n Event extends keyof IChannelEventMap,\n Callback extends IChannelEventMap[Event],\n >(\n key: string,\n event: Event,\n callback: Callback,\n ) => void;\n removeListener: (key: string, event: Event) => void;\n terminate: () => void;\n}\n\nexport interface IChannelController {\n channel: (key: IChannelID) => IChannel;\n all: () => Array;\n}\n\nconst TYPES = {\n IChannelController: Symbol.for('IChannelController'),\n};\n\nexport function injectChannelController(\n container: IContainer = injectContainer(),\n): IChannelController {\n return container.get(TYPES.IChannelController);\n}\n\nexport function bindChannelController(\n val: IChannelController,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IChannelController, val);\n}\n\nexport function unbindChannelController(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IChannelController);\n}\n","export interface IContainer {\n get: (key: symbol) => T;\n bind: (key: symbol, val: T) => void;\n remove: (key: symbol) => void;\n importBindings: (container: IContainer) => void;\n}\n\nexport type ILazyBinder = () => Promise;\n\nconst TYPES = {\n IContainer: Symbol.for('IContainer'),\n};\n\n/* global container storage */\ntype ContainerMap = Record;\n\n/* eslint-disable no-restricted-globals */\nconst globals =\n typeof globalThis !== 'undefined' ? globalThis : typeof global !== 'undefined' ? global : self;\n/* eslint-enable no-restricted-globals */\n\nexport function injectContainer(name = 'default'): IContainer {\n let containers: ContainerMap | undefined = (globals as any).containers;\n if (!containers) {\n console.warn('No containers found! Creating new');\n containers = {};\n (globals as any).containers = containers;\n }\n\n const container = containers[name];\n return container;\n}\n\nexport function bindContainer(container: IContainer, name = 'default') {\n let containers: ContainerMap | undefined = (globals as any).containers;\n if (!containers) {\n containers = {};\n (globals as any).containers = containers;\n }\n\n if (containers[name]) {\n console.warn(`Overwriting container: ${name}`);\n }\n\n containers[name] = container;\n}\n","import { IContainer, injectContainer } from './container';\n\nexport enum IConfigLogLevel {\n Undef = 0,\n Milestone = 1,\n Trace = 2,\n Verbose = 3,\n Info = 4,\n Warn = 5,\n Error = 6,\n Fatal = 7,\n LastValue = 8,\n}\n\nexport enum IConfigLogDestination {\n Undef = 0,\n Console = 1,\n Remote_ApplicationInsights = 2,\n LastValue = 3,\n}\n\nexport interface IConfigLogSettings {\n authorizationKey?: string;\n name?: string;\n}\n\nexport interface IConfigLog {\n loggingLevelsEnabled: Array;\n outputDestinations: Array;\n outputConfiguration: Record<\n IConfigLogDestination.Console | IConfigLogDestination.Remote_ApplicationInsights,\n IConfigLogSettings\n >;\n}\n\nexport interface IConfigAPI {\n url: string;\n auth: {\n clientId?: string;\n clientSecret?: string;\n grantType?: string;\n username?: string;\n password?: string;\n };\n extension: {\n auth?: string;\n siteData?: string;\n mediaDiff?: string;\n media?: string;\n mediaWithAccessToken?: string;\n };\n}\n\nexport interface IConfigManifest {\n short_name: string;\n name: string;\n description: string;\n icons: Array<{ src: string; sizes: string; type: string }>;\n start_url: string;\n display: string;\n theme_color: string;\n background_color: string;\n orientation: string;\n categories: Array;\n}\n\nexport enum IConfigCacheName {\n Undef = 0,\n BuildAssets,\n PublicAssets,\n WorkspaceMedia,\n WorkspaceStream,\n AppToken,\n LastValue,\n}\n\nexport interface IConfigCacheAssets {\n cacheName: string;\n expiration: number;\n maxEntries: number;\n matcher: RegExp;\n ignoreSearch?: boolean;\n fetchOptions?: Partial;\n}\n\nexport interface IConfigCacheOAuthToken {\n tokenPath: string;\n}\n\nexport type IConfigCache = Partial<\n Record\n>;\n\nexport enum IConfigRoutePath {\n Undef = 0,\n Launch = 1,\n LanguageSelect = 2,\n TourSelect = 3,\n Tour = 4,\n SiteObject = 5,\n FloorPlan = 6,\n LastValue = 7,\n}\n\nexport interface IRouteConfigSettings {\n pathPrefix: string;\n pathMatch: Array;\n}\n\nexport type IConfigRoute = {\n basename: string;\n routes: Record<\n | IConfigRoutePath.Launch\n | IConfigRoutePath.LanguageSelect\n | IConfigRoutePath.TourSelect\n | IConfigRoutePath.Tour\n | IConfigRoutePath.SiteObject\n | IConfigRoutePath.FloorPlan,\n IRouteConfigSettings\n >;\n};\n\nconst TYPES = {\n IConfigLog: Symbol.for('IConfigLog'),\n IConfigAPI: Symbol.for('IConfigAPI'),\n IConfigManifest: Symbol.for('IConfigManifest'),\n IConfigCache: Symbol.for('IConfigCache'),\n IConfigRoute: Symbol.for('IConfigRoute'),\n};\n\nexport function injectConfigLog(container: IContainer = injectContainer()): IConfigLog {\n return container.get(TYPES.IConfigLog);\n}\n\nexport function bindConfigLog(val: IConfigLog, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IConfigLog, val);\n}\n\nexport function injectConfigAPI(\n container: IContainer = injectContainer(),\n): Array> {\n return container.get>>(TYPES.IConfigAPI);\n}\n\nexport function bindConfigAPI(\n val: Array>,\n container: IContainer = injectContainer(),\n) {\n return container.bind>>(TYPES.IConfigAPI, val);\n}\n\nexport function injectConfigManifest(container: IContainer = injectContainer()): IConfigManifest {\n return container.get(TYPES.IConfigManifest);\n}\n\nexport function bindConfigManifest(\n val: IConfigManifest,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IConfigManifest, val);\n}\n\nexport function injectConfigCache(container: IContainer = injectContainer()): IConfigCache {\n return container.get(TYPES.IConfigCache);\n}\n\nexport function bindConfigCache(val: IConfigCache, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IConfigCache, val);\n}\n\nexport function injectConfigRoute(container: IContainer = injectContainer()): IConfigRoute {\n return container.get(TYPES.IConfigRoute);\n}\n\nexport function bindConfigRoute(val: IConfigRoute, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IConfigRoute, val);\n}\n","import { IContainer, ILazyBinder, injectContainer } from './container';\nimport type { IProgressPromise } from './promise';\n\nexport interface IFetchHeader {\n name: string;\n value: string;\n}\n\nexport type Method = 'HEAD' | 'GET' | 'PUT' | 'PATCH' | 'POST' | 'DELETE' | 'OPTIONS';\nexport type ResponseTypes = 'json' | 'text' | 'blob' | 'arraybuffer' | 'void' | 'opaque';\n\nexport interface IFetchRequest {\n url: string;\n method?: Method;\n headers?: Array;\n body?: string;\n expectedResponseType?: ResponseTypes;\n expectedResponseSize?: number;\n}\n\nexport interface IFetchResponse {\n request: IFetchRequest;\n statusCode: number;\n isStatusOk: boolean;\n error?: Error;\n payload: T | null;\n}\n\n/**\n * IFetcher external resource resolver\n *\n * @param {string} requestPayload - Request payload contains url, method?, headers?, body? etc\n * @param {string} [timeout] - Time to wait before giving up (Milliseconds)\n * @param {string} [retryCount] - A optional string param\n * @return {IProgressPromise>} Promise with resource response\n */\nexport type IFetcher = (\n requestPayload: IFetchRequest,\n timeout?: number,\n retryCount?: number,\n) => IProgressPromise>;\n\nconst TYPES = {\n IFetch: Symbol.for('IFetch'),\n};\n\nexport function injectFetch(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IFetch)();\n}\n\nexport function bindFetch(val: ILazyBinder, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IFetch, val);\n}\n","import { IContainer, injectContainer } from './container';\n\nexport interface ILog {\n milestone: (msg: string) => void;\n verbose: (msg: string) => void;\n trace: (msg: string) => void;\n info: (msg: string) => void;\n warn: (msg: string) => void;\n warning: (msg: string) => void;\n error: (msg: string) => void;\n fatal: (msg: string) => void;\n assert: (condition: boolean | string | number, msg: string | undefined) => void;\n}\n\nconst TYPES = {\n ILog: Symbol.for('ILog'),\n};\n\nexport function injectLog(container: IContainer = injectContainer()): ILog {\n return container.get(TYPES.ILog);\n}\n\nexport function bindLog(val: ILog, container: IContainer = injectContainer()) {\n return container.bind(TYPES.ILog, val);\n}\n\nexport function unbindLog(container: IContainer = injectContainer()) {\n return container.remove(TYPES.ILog);\n}\n","import { IContainer, injectContainer } from './container';\n\nexport type ProgressNotifier = (progress: number) => void;\n\nexport interface IProgressPromise extends Promise {\n readonly progress: number;\n onProgress(callback: ProgressNotifier): void;\n}\n\nexport type PromiseExecutor = (\n resolve: (value?: ValueType | PromiseLike) => void,\n reject: (reason?: unknown) => void,\n progress: ProgressNotifier,\n) => void;\n\nexport interface IProgressPromiseGenerator {\n promise: (executor: PromiseExecutor) => IProgressPromise;\n}\n\nconst TYPES = {\n IProgressPromiseGenerator: Symbol.for('IProgressPromiseGenerator'),\n};\n\nexport function injectProgressPromise(\n container: IContainer = injectContainer(),\n): IProgressPromiseGenerator {\n return container.get(TYPES.IProgressPromiseGenerator);\n}\n\nexport function bindProgressPromise(\n val: IProgressPromiseGenerator,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IProgressPromiseGenerator, val);\n}\n","import type { IProgressPromise } from './promise';\nimport type { IFetchRequest } from './fetch';\n\nexport enum IServiceWorkerStatus {\n Off = 0 /* unset */,\n Idle = 1 /* initializing */,\n Starting = 2 /* registering for interception */,\n Ready = 3 /* initialized, but not intercepting requests */,\n Running = 4 /* running & intercepting requests */,\n Stopped = 5,\n}\n\nexport type IServiceWorkerCallback = (worker: IServiceWorker) => void;\n\nexport interface IServiceWorker {\n status: IServiceWorkerStatus;\n start: () => void;\n stop: () => void;\n\n subscribeStatusChange: (callback: IServiceWorkerCallback) => void;\n unsubscribeStatusChange: (callback: IServiceWorkerCallback) => void;\n\n isInterceptingNetworkRequests: () => boolean;\n\n addCacheFirst: (matcher: RegExp, maxAge: number, maxEntries: number, cacheName: string) => void;\n addOAuthTokenCache: (pathSuffix: string) => void;\n addZipPathFetchResponder: (zipPath: string, relativeRespondPath: string) => void;\n addHeader: (matcher: RegExp, headerKey: string, headerVal: string, expiration: Date) => void;\n\n isRequestCached: (request: IFetchRequest, cacheName?: string) => Promise;\n addRequestsToCache: (\n requests: Array,\n cacheName: string,\n ) => IProgressPromise;\n}\n","import { IContainer, injectContainer } from '../../interface/container';\nimport cacheFirstResponder from '../impl/cacheFirst';\nimport oAuthTokenResponder from '../impl/cacheOAuth';\nimport fetchToCacheResponder from '../impl/fetchToCache';\nimport headerAppendResponder from '../impl/headerAppend';\nimport logDiagnosticsResponder from '../impl/logDiagnostics';\nimport preCacheResponder from '../impl/preCache';\nimport keepAliveResponder from '../impl/keepAlive';\nimport zipRelativePathResponder from '../impl/zipPathRelative';\n\nexport interface MESSAGE_INTERFACES {\n AddCacheFirst: typeof cacheFirstResponder;\n AddHeader: typeof headerAppendResponder;\n AddOAuthTokenCache: typeof oAuthTokenResponder;\n AddPreCache: typeof preCacheResponder;\n AddZipPathRelativeResponder: typeof zipRelativePathResponder;\n AddKeepAliveMessageResponder: typeof keepAliveResponder;\n LogDiagnostics: typeof logDiagnosticsResponder;\n FetchToCache: typeof fetchToCacheResponder;\n}\n\nexport interface IMessageInstantiator {\n allInterfaces: () => Array;\n message: (name: K) => V;\n}\n\nconst TYPES = {\n IMessageInstantiator: Symbol.for('IMessageInstantiator'),\n};\n\nexport function injectMessageInstantiator(\n container: IContainer = injectContainer(),\n): IMessageInstantiator {\n return container.get(TYPES.IMessageInstantiator);\n}\n\nexport function bindMessageInstantiator(\n val: IMessageInstantiator,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IMessageInstantiator, val);\n}\n\nexport function unbindMessageInstantiator(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IMessageInstantiator);\n}\n","import { IContainer, injectContainer } from '../../interface/container';\n\nexport interface ICacheStorage {\n open: (name: string) => Promise;\n insert: (cache: Cache, request: Request, response: Response) => Promise;\n exists: (cache: Cache, request: Request) => Promise;\n}\n\nconst TYPES = {\n ICacheStorage: Symbol.for('ICacheStorage'),\n};\n\nexport function injectCacheStorage(container: IContainer = injectContainer()): ICacheStorage {\n return container.get(TYPES.ICacheStorage);\n}\n\nexport function bindCacheStorage(val: ICacheStorage, container: IContainer = injectContainer()) {\n return container.bind(TYPES.ICacheStorage, val);\n}\n\nexport function unbindCacheStorage(container: IContainer = injectContainer()) {\n return container.remove(TYPES.ICacheStorage);\n}\n","import { IContainer, injectContainer } from '../../interface/container';\n\nexport interface IFetchHelper {\n fetchWithProgress: (\n request: Request,\n timeout?: number,\n callback?: (progress: number) => void,\n ) => Promise;\n}\n\nconst TYPES = {\n IFetchHelper: Symbol.for('IFetchHelper'),\n};\n\nexport function injectFetchHelper(container: IContainer = injectContainer()): IFetchHelper {\n return container.get(TYPES.IFetchHelper);\n}\n\nexport function bindFetchHelper(val: IFetchHelper, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IFetchHelper, val);\n}\n\nexport function unbindFetchHelper(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IFetchHelper);\n}\n","import { IContainer, injectContainer } from '../../interface/container';\n\nexport interface IRegexSerializer {\n stringify: (regex: RegExp) => string;\n parse: (regex: string) => RegExp;\n}\n\nconst TYPES = {\n IRegexSerializer: Symbol.for('IRegexSerializer'),\n};\n\nexport function injectRegexSerializer(container: IContainer = injectContainer()): IRegexSerializer {\n return container.get(TYPES.IRegexSerializer);\n}\n\nexport function bindRegexSerializer(\n val: IRegexSerializer,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IRegexSerializer, val);\n}\n\nexport function unbindRegexSerializer(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IRegexSerializer);\n}\n","import { IContainer, injectContainer } from '../../interface/container';\n\nexport interface IRequestSerialized {\n headers: any;\n url: string;\n method: string;\n mode: RequestMode | undefined;\n credentials: RequestCredentials | undefined;\n cache: RequestCache;\n redirect: RequestRedirect | undefined;\n referrer: string;\n referrerPolicy: ReferrerPolicy;\n isHistoryNavigation: boolean;\n isReloadNavigation: boolean;\n integrity: string;\n destination: string;\n body: string;\n}\n\nexport interface IRequestSerializer {\n serialize: (request: Request) => Promise;\n parse: (request: IRequestSerialized) => Request;\n}\n\nconst TYPES = {\n IRequestSerializer: Symbol.for('IRequestSerializer'),\n};\n\nexport function injectRequestSerializer(\n container: IContainer = injectContainer(),\n): IRequestSerializer {\n return container.get(TYPES.IRequestSerializer);\n}\n\nexport function bindRequestSerializer(\n val: IRequestSerializer,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IRequestSerializer, val);\n}\n\nexport function unbindRequestSerializer(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IRequestSerializer);\n}\n","import { IContainer, injectContainer } from '../../interface/container';\n\nexport interface IResponseSerialized {\n headers: any;\n status: number;\n statusText: string;\n body: string;\n}\n\nexport interface IResponseSerializer {\n serialize: (request: Response) => Promise;\n parse: (request: IResponseSerialized) => Response;\n}\n\nconst TYPES = {\n IResponseSerializer: Symbol.for('IResponseSerializer'),\n};\n\nexport function injectResponseSerializer(\n container: IContainer = injectContainer(),\n): IResponseSerializer {\n return container.get(TYPES.IResponseSerializer);\n}\n\nexport function bindResponseSerializer(\n val: IResponseSerializer,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.IResponseSerializer, val);\n}\n\nexport function unbindResponseSerializer(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IResponseSerializer);\n}\n","import { IContainer, injectContainer } from '../../interface/container';\n\nexport type ISettingsKey = number | string | Date;\n\nexport interface ISettingsStorage {\n get: (key: ISettingsKey) => Promise;\n set: (key: ISettingsKey, val: unknown) => Promise;\n delete: (key: ISettingsKey) => Promise;\n clear: () => Promise;\n keys: () => Promise>;\n}\n\nconst TYPES = {\n ISettingsStorage: Symbol.for('ISettingsStorage'),\n};\n\nexport function injectSettingsStorage(container: IContainer = injectContainer()): ISettingsStorage {\n return container.get(TYPES.ISettingsStorage);\n}\n\nexport function bindSettingsStorage(\n val: ISettingsStorage,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.ISettingsStorage, val);\n}\n\nexport function unbindSettingsStorage(container: IContainer = injectContainer()) {\n return container.remove(TYPES.ISettingsStorage);\n}\n","import type { Route } from 'workbox-routing';\nimport type { Strategy } from 'workbox-strategies';\nimport { IContainer, injectContainer } from '../../interface/container';\n\nexport interface IWorkboxUtils {\n findResponderStrategy: (urlFetch: string, event?: ExtendableEvent) => Strategy | null;\n routes: () => Array;\n}\n\nconst TYPES = {\n IWorkboxUtils: Symbol.for('IWorkboxUtils'),\n};\n\nexport function injectWorkboxUtils(container: IContainer = injectContainer()): IWorkboxUtils {\n return container.get(TYPES.IWorkboxUtils);\n}\n\nexport function bindWorkboxUtils(val: IWorkboxUtils, container: IContainer = injectContainer()) {\n return container.bind(TYPES.IWorkboxUtils, val);\n}\n\nexport function unbindWorkboxUtils(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IWorkboxUtils);\n}\n","import { IContainer, ILazyBinder, injectContainer } from '../../interface/container';\n\nexport type ZipBinaryStorageType = Blob | ArrayBuffer;\n\nexport interface IZip {\n unzipFile: (blobData: T, fileName: string) => Promise;\n unzipAll: (blobData: T) => Promise>;\n listings: (blobData: ZipBinaryStorageType) => Promise>;\n}\n\nconst TYPES = {\n IZip: Symbol.for('IZip'),\n};\n\nexport function injectZip(container: IContainer = injectContainer()): Promise {\n return container.get>(TYPES.IZip)();\n}\n\nexport function bindZip(val: ILazyBinder, container: IContainer = injectContainer()) {\n return container.bind>(TYPES.IZip, val);\n}\n\nexport function unbindZip(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IZip);\n}\n","import type { IFetchRequest } from '../../interface/fetch';\nimport type { IProgressPromise } from '../../interface/promise';\n\nexport enum IServiceWorkerStatus {\n Off = 0 /* unset */,\n Idle = 1 /* initializing */,\n Starting = 2 /* registering for interception */,\n Ready = 3 /* initialized, but not intercepting requests */,\n Running = 4 /* running & intercepting requests */,\n Stopped = 5,\n}\n\nexport type IServiceWorkerCallback = (worker: IServiceWorkerClient) => void;\n\nexport interface IServiceWorkerClient {\n status: IServiceWorkerStatus;\n start: () => void;\n stop: () => void;\n\n subscribeStatusChange: (callback: IServiceWorkerCallback) => void;\n unsubscribeStatusChange: (callback: IServiceWorkerCallback) => void;\n\n isInterceptingNetworkRequests: () => boolean;\n\n addCacheFirst: (matcher: RegExp, maxAge: number, maxEntries: number, cacheName: string) => void;\n addOAuthTokenCache: (pathSuffix: string) => void;\n addZipPathFetchResponder: (zipPath: string, relativeRespondPath: string) => void;\n addHeader: (matcher: RegExp, headerKey: string, headerVal: string, expiration: Date) => void;\n\n isRequestCached: (request: IFetchRequest, cacheName?: string) => Promise;\n addRequestsToCache: (\n requests: Array,\n options?: {\n cacheName?: string /* when missing attempt to find a match based on installed MessageResponders */;\n },\n ) => IProgressPromise;\n}\n","import type { IFetchRequest, ILog } from '../../interface';\nimport type { IMessageInstantiator } from '../../message/interface/instantiator';\nimport type { IRegexSerializer } from '../../util';\nimport { IChannelID } from '../../util/interface/channel';\n\nfunction addCacheFirst(\n dependencies: {\n log: ILog;\n regexParser: IRegexSerializer;\n message: IMessageInstantiator;\n worker: ServiceWorker;\n },\n matcher: RegExp,\n maxAge: number,\n maxEntries: number,\n cacheName: string,\n ignoreSearch?: boolean,\n fetchOptions?: Partial,\n) {\n dependencies.log.info(`Registering cache-first: ${cacheName}`);\n\n const message = dependencies.message.message('AddCacheFirst').construct(\n {\n matcher,\n maxAge,\n maxEntries,\n cacheName,\n ignoreSearch,\n fetchOptions,\n },\n {\n regexParser: dependencies.regexParser,\n },\n );\n\n dependencies.worker.postMessage(message);\n}\n\nfunction addOAuthTokenCache(\n dependencies: {\n log: ILog;\n regexParser: IRegexSerializer;\n message: IMessageInstantiator;\n worker: ServiceWorker;\n },\n pathSuffix: string,\n) {\n dependencies.log.info(`Registering oauthTokenCache: ${pathSuffix}`);\n\n const message = dependencies.message.message('AddOAuthTokenCache').construct(\n {\n pathSuffix,\n },\n {},\n );\n\n dependencies.worker.postMessage(message);\n}\n\nfunction addZipPathFetchResponder(\n dependencies: {\n log: ILog;\n regexParser: IRegexSerializer;\n message: IMessageInstantiator;\n worker: ServiceWorker;\n },\n zipPath: string,\n relativeRespondPath: string,\n) {\n dependencies.log.info(`Registering zipPathResponder: ${zipPath}`);\n\n const message = dependencies.message.message('AddZipPathRelativeResponder').construct(\n {\n zipPath,\n relativeRespondPath,\n },\n {},\n );\n\n dependencies.worker.postMessage(message);\n}\n\nfunction addHeader(\n dependencies: {\n log: ILog;\n regexParser: IRegexSerializer;\n message: IMessageInstantiator;\n worker: ServiceWorker;\n },\n matcher: RegExp,\n headerKey: string,\n headerVal: string,\n expiration: Date,\n) {\n dependencies.log.info(`Registering addHeader: ${headerKey}:${headerVal}`);\n\n const message = dependencies.message.message('AddHeader').construct(\n {\n matcher,\n headerKey,\n headerVal,\n expiration,\n },\n {\n regexParser: dependencies.regexParser,\n },\n );\n\n dependencies.worker.postMessage(message);\n}\n\nfunction fetchToCache(\n dependencies: {\n log: ILog;\n regexParser: IRegexSerializer;\n message: IMessageInstantiator;\n worker: ServiceWorker;\n },\n requests: Array,\n cacheName?: string,\n port?: IChannelID,\n) {\n dependencies.log.verbose(\n `Request fetch to cache download: ${JSON.stringify(requests.map(req => req.url))}`,\n );\n\n const message = dependencies.message.message('FetchToCache').construct(\n {\n requests,\n cacheName,\n callbackChannel: port,\n },\n {},\n );\n\n dependencies.worker.postMessage(message);\n}\n\nfunction keepAlive(dependencies: {\n log: ILog;\n regexParser: IRegexSerializer;\n message: IMessageInstantiator;\n worker: ServiceWorker;\n}) {\n const message = dependencies.message.message('AddKeepAliveMessageResponder').construct({}, {});\n\n dependencies.worker.postMessage(message);\n}\nconst module = {\n addCacheFirst,\n addOAuthTokenCache,\n addZipPathFetchResponder,\n addHeader,\n fetchToCache,\n keepAlive,\n};\n\nexport default module;\n","function isLocalHost(): boolean {\n const hostName = window?.location?.hostname ?? '';\n\n if (hostName === 'localhost') {\n return true;\n }\n\n if (hostName === '[::1]') {\n return true;\n }\n\n if (hostName.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)) {\n return true;\n }\n\n return false;\n}\n\nconst module = {\n isLocalHost,\n};\n\nexport default module;\n","import type { ILog } from '../../interface/log';\nimport host from './host';\n\nexport interface IRegistrationConfig {\n scope?: string;\n onRegister?: (registration: ServiceWorkerRegistration) => void;\n onReady?: (worker: ServiceWorker) => void;\n onInstall?: (worker: ServiceWorker) => void;\n}\n\nconst _hasServiceWorker = () => 'serviceWorker' in navigator;\n\nconst _fetchServiceWorker = (swUrl: string) => {\n return fetch(swUrl, {\n headers: {\n 'Service-Worker': 'script',\n },\n });\n};\n\ninterface IServiceWorkerRegisterable {\n isValid: boolean;\n description: string;\n}\nfunction _checkValidServiceWorker(swUrl: string): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const response = await _fetchServiceWorker(swUrl);\n\n const didFindFile = response?.status >= 200 && response?.status <= 299;\n const isJavascriptFile =\n (response?.headers?.get('content-type')?.indexOf('javascript') ?? -1) !== -1;\n\n const result: IServiceWorkerRegisterable = {\n isValid: false,\n description: '',\n };\n\n if (!didFindFile) {\n result.description = 'Unable to find service worker file';\n } else if (!isJavascriptFile) {\n result.description =\n 'Service worker has wrong mime type: ' +\n response?.headers?.get('content-type') || 'unknown';\n } else {\n result.isValid = true;\n }\n\n resolve(result);\n } catch (error) {\n resolve({\n isValid: false,\n description: 'No internet connection found. App is running in offline mode.',\n });\n }\n });\n}\n\nfunction _canRegister(swUrl: string): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n let canRegister = false;\n\n if (host.isLocalHost()) {\n /* This is running on localhost. Let's check if a service worker still exists or not. */\n const { isValid } = await _checkValidServiceWorker(swUrl);\n canRegister = isValid;\n } else {\n /* Is not localhost. Just register service worker */\n canRegister = true;\n }\n\n resolve(canRegister);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction _registerWorker(\n log: ILog,\n swUrl: string,\n config?: IRegistrationConfig,\n): Promise {\n const scope = config?.scope || '.';\n\n log.info(`Registering worker url:'${swUrl}' to scope:'${scope}'`);\n\n return navigator.serviceWorker.register(swUrl, { scope });\n}\n\nfunction _addRegistrationCallbacks(\n log: ILog,\n registration: ServiceWorkerRegistration,\n config?: IRegistrationConfig,\n) {\n log.info('Registration completed, awaiting SW installed/activated status');\n\n function _processState(this: ServiceWorker) {\n switch (this.state) {\n case 'installing':\n case 'installed':\n log.info(`Worker is install(ed), ${this.state}`);\n config?.onInstall?.(this);\n break;\n\n case 'activating':\n case 'activated':\n log.info(`Worker is up and running, ${this.state}`);\n config?.onReady?.(this);\n break;\n\n default:\n log.info(`Worker state updated to: ${this.state}`);\n break;\n }\n }\n\n const onRegistrationUpdate = () => {\n const newWorker = registration.installing;\n\n if (newWorker) {\n newWorker.onstatechange = _processState;\n }\n };\n\n registration.onupdatefound = onRegistrationUpdate;\n\n if (registration.waiting) {\n registration.waiting.onstatechange = _processState;\n }\n\n if (registration.installing) {\n registration.installing.onstatechange = _processState;\n }\n\n if (registration.active) {\n registration.active.onstatechange = _processState;\n registration\n .update()\n .then(_ => log.verbose('Registration updated'))\n .catch(error => log.error(`Update failed: ${error}`));\n\n _processState.call(registration.active);\n }\n\n /* run through now, incase we are already in final state */\n}\n\nasync function start(log: ILog, swUrl: string, config?: IRegistrationConfig) {\n if (!_hasServiceWorker()) {\n log.error('Unable to register, no service worker');\n return;\n }\n\n const _registerCb = async function () {\n if (await _canRegister(swUrl)) {\n log.info(`Starting SW ${swUrl} registration`);\n _registerWorker(log, swUrl, config)\n .then(reg => {\n config?.onRegister?.(reg);\n _addRegistrationCallbacks(log, reg, config);\n })\n .catch(error =>\n log.error(`Registering new worker failed: ${JSON.stringify(error)}`),\n );\n } else {\n log.warn(\n 'No service worker found, Probably a different app. Will reload the page on SW unregister',\n );\n navigator.serviceWorker.ready\n .then(registration => registration.unregister())\n .then(_ => window.location.reload())\n .catch(error => log.error('Failed to unregister SW: ' + error));\n }\n };\n\n const hasDOMLoaded = document.readyState === 'complete';\n\n /* Delay, registration. Don't degrade the first visit experience. */\n hasDOMLoaded\n ? _registerCb().catch(error =>\n log.error(`Failed to register onload: ${JSON.stringify(error)}`),\n )\n : window.addEventListener('load', _registerCb);\n}\n\nfunction stop(log: ILog, registration: ServiceWorkerRegistration) {\n registration\n .unregister()\n .catch(error => log.error(`Failed to register onload: ${JSON.stringify(error)}`));\n}\n\nconst module = {\n start,\n stop,\n};\n\nexport default module;\n","import type {\n IConfigCache,\n IConfigCacheAssets,\n IConfigCacheOAuthToken,\n} from '../../interface/config';\nimport type { ILog } from '../../interface/log';\nimport type { IMessageInstantiator } from '../../message/interface/instantiator';\nimport type { IRegexSerializer } from '../../util';\nimport bridge from './dispatch';\n\nfunction _isConfigToken(object: unknown): object is IConfigCacheOAuthToken {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return !isNullOrUndefined(record?.tokenPath);\n}\n\nfunction _isConfigAsset(object: unknown): object is IConfigCacheAssets {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record?.cacheName) &&\n !isNullOrUndefined(record?.expiration) &&\n !isNullOrUndefined(record?.maxEntries) &&\n !isNullOrUndefined(record?.matcher)\n );\n}\n\nfunction _tokenConfigs(config: IConfigCache): Array {\n const arr: Array = [];\n\n for (const settings of Object.values(config)) {\n if (!_isConfigToken(settings)) {\n continue;\n }\n arr.push(settings);\n }\n\n return arr;\n}\n\nfunction _assetConfigs(config: IConfigCache): Array {\n const arr: Array = [];\n\n for (const settings of Object.values(config)) {\n if (!_isConfigAsset(settings)) {\n continue;\n }\n arr.push(settings);\n }\n\n return arr;\n}\n\nfunction setupSWRules(\n log: ILog,\n regexParser: IRegexSerializer,\n message: IMessageInstantiator,\n worker: ServiceWorker,\n config: IConfigCache,\n): void {\n log.info('SW-Rules, Adding Cache First');\n\n const deps = {\n log,\n regexParser,\n message,\n worker,\n config,\n };\n\n for (const settings of _assetConfigs(config)) {\n log.info(\n `SW-Rules, Registering cache-first: ${settings.cacheName}, ${JSON.stringify(settings)}`,\n );\n bridge.addCacheFirst(\n deps,\n /* matcher: */ settings.matcher,\n /* maxAge: */ settings.expiration,\n /* maxEntries: */ settings.maxEntries,\n /* cacheName */ settings.cacheName,\n /* ignore-search */ settings.ignoreSearch ?? false,\n /* fetch overrides */ settings.fetchOptions ?? {},\n );\n }\n\n for (const settings of _tokenConfigs(config)) {\n log.info(`SW-Rules, Adding OAuth Token Cache: %{settings.tokenPath}`);\n bridge.addOAuthTokenCache(deps, settings.tokenPath);\n }\n}\n\nexport default setupSWRules;\n","import type { IConfigCache } from '../../interface/config';\nimport type { IFetcher, IFetchRequest } from '../../interface/fetch';\nimport type { ILog } from '../../interface/log';\nimport type { IProgressPromiseGenerator } from '../../interface/promise';\nimport type { IRegexSerializer } from '../../interface/regex';\nimport { ICallbackMessage } from '../../message/interface/fetchToCache';\nimport { IMessageInstantiator } from '../../message/interface/instantiator';\nimport { IChannelController, IChannelStatus } from '../../util/interface/channel';\nimport {\n IServiceWorkerCallback,\n IServiceWorkerClient,\n IServiceWorkerStatus,\n} from '../interface/worker';\nimport dispatch from './dispatch';\nimport registration from './registration';\nimport rules from './rules';\n\ninterface IServiceWorkerPrivate extends IServiceWorkerClient {\n registration: ServiceWorkerRegistration | null;\n worker: ServiceWorker | null;\n statusChangeCallbacks: Array;\n}\n\nfunction _requestInNamedCache(request: Request, cacheName: string): Promise {\n return new Promise(function (resolve, reject) {\n caches\n .open(cacheName)\n .then(function (cache) {\n return cache.match(request, {\n ignoreMethod: true,\n ignoreSearch: true,\n });\n })\n .then(function (response) {\n const hasCachedValue = response !== undefined;\n resolve(hasCachedValue);\n })\n .catch(error => reject(error));\n });\n}\n\nconst _notifyCallbacksOfStatusChange = (worker: IServiceWorkerPrivate) => {\n for (const callback of worker.statusChangeCallbacks) {\n callback(worker as IServiceWorkerClient);\n }\n};\n\nconst _obtainScreenLock = async () =>\n 'wakeLock' in navigator\n ? await navigator.wakeLock.request('screen')\n : {\n release: () => {\n /* noop */\n },\n };\n\nfunction ServiceWorker(\n dependencies: {\n log: ILog;\n fetcher: IFetcher;\n promiser: IProgressPromiseGenerator;\n config: IConfigCache;\n regexParser: IRegexSerializer;\n message: IMessageInstantiator;\n channelController: IChannelController;\n },\n url: string,\n scope: string,\n): IServiceWorkerClient {\n const response: IServiceWorkerPrivate = {\n status: IServiceWorkerStatus.Idle,\n registration: null,\n worker: null,\n statusChangeCallbacks: [],\n\n isInterceptingNetworkRequests: function (this: IServiceWorkerPrivate) {\n return navigator?.serviceWorker?.controller !== null;\n },\n\n start: function (this: IServiceWorkerPrivate) {\n const _that = this;\n\n let hasInstalledRules = false;\n\n const _installRules = (worker: ServiceWorker) => {\n if (hasInstalledRules) {\n return;\n }\n hasInstalledRules = true;\n\n rules(\n dependencies.log,\n dependencies.regexParser,\n dependencies.message,\n worker,\n dependencies.config,\n );\n };\n\n const _onReady = (worker: ServiceWorker) => {\n _that.worker = worker;\n\n _that.status = IServiceWorkerStatus.Ready;\n _notifyCallbacksOfStatusChange(_that);\n\n _installRules(worker);\n\n const checkControllerStatus = () => {\n _that.status = _that.isInterceptingNetworkRequests()\n ? IServiceWorkerStatus.Running\n : IServiceWorkerStatus.Ready;\n _notifyCallbacksOfStatusChange(_that);\n };\n\n navigator?.serviceWorker?.addEventListener(\n 'controllerchange',\n checkControllerStatus,\n );\n\n checkControllerStatus();\n\n /* cleanup: unsubscribe & remove event listener when we are no longer in ready state */\n const statusChangeCb = (swCallback: IServiceWorkerClient) => {\n const shouldUnsubscribe =\n swCallback.status !== IServiceWorkerStatus.Ready &&\n swCallback.status !== IServiceWorkerStatus.Running;\n\n if (shouldUnsubscribe) {\n navigator?.serviceWorker?.removeEventListener(\n 'controllerchange',\n checkControllerStatus,\n );\n _that.unsubscribeStatusChange(statusChangeCb);\n }\n };\n\n _that.subscribeStatusChange(statusChangeCb);\n };\n\n const _onInstall = (worker: ServiceWorker) => {\n _installRules(worker);\n _that.worker = worker;\n };\n\n registration\n .start(dependencies.log, url, {\n scope,\n onInstall: _onInstall,\n onReady: _onReady,\n onRegister: reg => {\n _that.registration = reg;\n },\n })\n .catch(error =>\n dependencies.log.error(\n `Failed to start registration: ${JSON.stringify(error)}`,\n ),\n );\n\n dependencies.log.info('Starting service-worker');\n this.status = IServiceWorkerStatus.Starting;\n _notifyCallbacksOfStatusChange(this);\n },\n\n subscribeStatusChange: function (\n this: IServiceWorkerPrivate,\n callback: IServiceWorkerCallback,\n ) {\n this.statusChangeCallbacks.push(callback);\n },\n\n unsubscribeStatusChange: function (\n this: IServiceWorkerPrivate,\n callback: IServiceWorkerCallback,\n ) {\n this.statusChangeCallbacks = this.statusChangeCallbacks.filter(cb => cb !== callback);\n },\n\n stop: function (this: IServiceWorkerPrivate) {\n if (!this.registration) {\n dependencies.log.error('Worker not registered, skipping stop');\n return;\n }\n this.status = IServiceWorkerStatus.Stopped;\n _notifyCallbacksOfStatusChange(this);\n\n registration.stop(dependencies.log, this.registration);\n },\n\n addCacheFirst: function (\n this: IServiceWorkerPrivate,\n matcher: RegExp,\n maxAge: number,\n maxEntries: number,\n cacheName: string,\n ) {\n if (!this.worker) {\n dependencies.log.error('Worker not registered!, Skipping addCacheFirst');\n return;\n }\n dependencies.log.info(`Registering cache-first: ${cacheName}`);\n dispatch.addCacheFirst(\n { ...dependencies, worker: this.worker },\n matcher,\n maxAge,\n maxEntries,\n cacheName,\n );\n },\n\n addOAuthTokenCache: function (this: IServiceWorkerPrivate, pathSuffix: string) {\n if (!this.worker) {\n dependencies.log.error('Worker not registered!, Skipping addOAuthCache');\n return;\n }\n dependencies.log.info(`Registering oauthTokenCache: ${pathSuffix}`);\n dispatch.addOAuthTokenCache({ ...dependencies, worker: this.worker }, pathSuffix);\n },\n\n addZipPathFetchResponder: function (\n this: IServiceWorkerPrivate,\n zipPath: string,\n relativeRespondPath: string,\n ) {\n if (!this.worker) {\n dependencies.log.error('Worker not registered!, Skipping addZipPathFetchResponder');\n return;\n }\n dependencies.log.info(`Registering zipPathResponder: ${zipPath}`);\n dispatch.addZipPathFetchResponder(\n { ...dependencies, worker: this.worker },\n zipPath,\n relativeRespondPath,\n );\n },\n\n addHeader: function (\n this: IServiceWorkerPrivate,\n matcher: RegExp,\n headerKey: string,\n headerVal: string,\n expiration: Date,\n ) {\n if (!this.worker) {\n dependencies.log.error('Worker not registered!, Skipping addHeader');\n return;\n }\n dependencies.log.info(`Registering addHeader: ${headerKey}:${headerVal}`);\n dispatch.addHeader(\n { ...dependencies, worker: this.worker },\n matcher,\n headerKey,\n headerVal,\n expiration,\n );\n },\n\n isRequestCached: function (\n this: IServiceWorkerPrivate,\n request: IFetchRequest,\n cacheName?: string,\n ): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n if (window.caches === undefined) {\n reject('No caches found');\n return;\n }\n\n const cacheNames = [cacheName];\n const reqCheck = new Request(request.url, {\n method: request.method,\n body: request.body,\n });\n\n const results = await Promise.all(\n cacheNames.map(name => _requestInNamedCache(reqCheck, cacheName ?? '')),\n );\n const anyCacheHits = results.reduce((prev, cur) => prev || cur);\n\n resolve(anyCacheHits);\n } catch (error) {\n reject(error);\n }\n });\n },\n\n addRequestsToCache: function (\n this: IServiceWorkerPrivate,\n requests: Array,\n options?: {\n cacheName?: string;\n },\n ) {\n const worker = this.worker;\n if (!worker) {\n throw new Error(`No service-worker running, aborting request to cache`);\n }\n\n return dependencies.promiser.promise(async function (resolve, reject, progress) {\n const screenLock = await _obtainScreenLock().catch(error => undefined);\n\n const channelID = requests[requests.length - 1].url;\n\n const channel = dependencies.channelController.channel(channelID);\n\n const subKey = 'client-callback';\n\n const fetchDeps = { ...dependencies, worker };\n\n /* Service Workers are hunted down & killed shortly after being dispatched to. \n To keep this from happening, we *must* periodically send a message to the service worker, \n this will prevent Chrome (Safari is OK) from pausing execution. \n It becomes apparent on larger downloads on Android-Chrome I.e. Orkney-Mainland\n Attaching Chrome DevTools will *prevent* this issue from occurring too.\n https://stackoverflow.com/questions/42733835/service-worker-termination-by-a-timeout-timer-was-canceled-because-devtools-is-a \n */\n const keepAliveTimer = setInterval(() => dispatch.keepAlive(fetchDeps), 5000);\n\n const cleanup = () => {\n channel?.removeListener(subKey, 'NewMessage');\n channel?.removeListener(subKey, 'Error');\n channel?.removeListener(subKey, 'StatusChanged');\n\n screenLock?.release?.();\n\n clearInterval(keepAliveTimer);\n };\n\n channel?.addEventListener('client-callback', 'NewMessage', message => {\n const payload = message as ICallbackMessage;\n if (payload.error) {\n cleanup();\n reject(payload.error);\n } else if (payload.done || payload.progress >= 1) {\n cleanup();\n resolve();\n } else if (payload.progress < 1) {\n progress(payload.progress);\n }\n });\n\n channel?.addEventListener(subKey, 'Error', error => {\n dependencies.log.error(`FetchToCache message failed: ${JSON.stringify(error)}`);\n cleanup();\n reject(error);\n });\n\n channel?.addEventListener(subKey, 'StatusChanged', status => {\n if (status === IChannelStatus.Expired) {\n const message = `Message channel expired`;\n dependencies.log.error(message);\n cleanup();\n reject(new Error(message));\n }\n });\n\n dispatch.fetchToCache(fetchDeps, requests, options?.cacheName, channelID);\n });\n },\n };\n\n return response;\n}\n\nexport default ServiceWorker;\n","import { injectChannelController } from '@monofe/worker/util/interface/channel';\nimport {\n IContainer,\n injectConfigCache,\n injectFetch,\n injectLog,\n injectProgressPromise,\n} from '../../interface';\nimport { injectMessageInstantiator } from '../../message/interface/instantiator';\nimport { injectRegexSerializer } from '../../util';\nimport type { IServiceWorkerClient } from '../interface';\nimport type { IServiceWorkerController } from '../interface/controller';\nimport ServiceWorker from './worker';\n\nasync function controller(container: IContainer): Promise {\n const deps = {\n log: injectLog(container),\n fetcher: await injectFetch(container),\n promiser: injectProgressPromise(container),\n config: await injectConfigCache(container),\n regexParser: injectRegexSerializer(container),\n message: injectMessageInstantiator(container),\n channelController: injectChannelController(container),\n };\n\n let activeWorker: IServiceWorkerClient | undefined;\n\n return {\n start: (url: string, scope: string) => {\n activeWorker?.stop();\n activeWorker = ServiceWorker(deps, url, scope);\n activeWorker.start();\n return activeWorker;\n },\n active: () => activeWorker,\n terminate: () => {\n activeWorker?.stop();\n activeWorker = undefined;\n },\n };\n}\n\nexport default controller;\n","import { IContainer, ILazyBinder, injectContainer } from '../../interface/container';\nimport type { IServiceWorkerClient } from './worker';\n\nexport interface IServiceWorkerController {\n start: (url: string, scope: string) => IServiceWorkerClient;\n active: () => IServiceWorkerClient | undefined;\n terminate: () => void;\n}\n\nconst TYPES = {\n IServiceWorkerController: Symbol.for('IServiceWorkerController'),\n};\n\nexport function injectServiceWorkerController(\n container: IContainer = injectContainer(),\n): Promise {\n return container.get>(TYPES.IServiceWorkerController)();\n}\n\nexport function bindServiceWorkerController(\n val: ILazyBinder,\n container: IContainer = injectContainer(),\n) {\n return container.bind>(\n TYPES.IServiceWorkerController,\n val,\n );\n}\n\nexport function unbindServiceWorkerController(container: IContainer = injectContainer()) {\n return container.remove(TYPES.IServiceWorkerController);\n}\n","import type { IContainer } from '../interface/container';\nimport builder from './impl/controller';\nimport {\n bindServiceWorkerController,\n injectServiceWorkerController,\n unbindServiceWorkerController,\n} from './interface';\n\nconst bindJobs: Array<{\n bind: (container: IContainer) => void;\n remove: (container: IContainer) => void;\n expose: (srcContainer: IContainer, dstContainer: IContainer) => void;\n}> = [\n {\n bind: (container: IContainer) => {\n /* must initialized before, otherwise each call to injectServiceWorkerController, will result in a separate instance */\n const result = builder(container);\n bindServiceWorkerController(() => result, container);\n },\n remove: (container: IContainer) => unbindServiceWorkerController(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindServiceWorkerController(\n () => injectServiceWorkerController(srcContainer),\n dstContainer,\n ),\n },\n];\n\nconst module = {\n bind: (container: IContainer) => bindJobs.forEach(binder => binder.bind(container)),\n unbind: (container: IContainer) => bindJobs.forEach(binder => binder.remove(container)),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindJobs.forEach(binder => binder.expose(srcContainer, dstContainer)),\n};\n\nexport default module;\n","import type { IMessageBase } from './base';\n\nexport const MESSAGE_TYPE = 'ADDROUTE_CACHEFIRST';\n\nexport interface IMessageCacheFirstPayload extends IMessageBase {\n type: 'ADDROUTE_CACHEFIRST';\n payload: {\n matcher: string;\n maxAge: number;\n maxEntries: number;\n cacheName: string;\n ignoreSearch?: boolean;\n fetchOptions?: Partial;\n };\n}\n","import type { IMessageBase } from './base';\n\nexport const MESSAGE_TYPE = 'ADDROUTE_CACHEOAUTHTOKEN';\n\nexport interface IMessageOAuthTokenPayload extends IMessageBase {\n type: 'ADDROUTE_CACHEOAUTHTOKEN';\n payload: {\n pathSuffix: string;\n };\n}\n","import type { IFetchRequest } from '../../interface/fetch';\nimport type { IChannelID } from '../../util/interface/channel';\nimport type { IMessageBase } from './base';\n\nexport const MESSAGE_TYPE = 'CACHE_FETCH';\n\nexport interface ICallbackMessage {\n error?: string;\n progress: number;\n done: boolean;\n}\n\nexport interface IMessageFetchToCachePayload extends IMessageBase {\n type: 'CACHE_FETCH';\n payload: {\n requests: Array;\n cacheName?: string;\n callbackChannel?: IChannelID | undefined;\n };\n}\n","import type { IMessageBase } from './base';\n\nexport const MESSAGE_TYPE = 'ADDROUTE_HEADERAPPEND';\n\nexport interface IMessageHeaderAppendResponderPayload extends IMessageBase {\n type: 'ADDROUTE_HEADERAPPEND';\n payload: {\n matcher: string;\n key: string;\n val: string;\n expiration: number;\n };\n}\n","import type { IMessageBase } from './base';\n\nexport const MESSAGE_TYPE = 'LOG_DIAGNOSTICS';\n\nexport interface IMessageLogDiagnostics extends IMessageBase {\n type: 'LOG_DIAGNOSTICS';\n payload: Record;\n}\n","import type { IMessageBase } from './base';\n\nexport const MESSAGE_TYPE = 'ADDROUTE_PRECACHE';\n\nexport interface IMessagePreCachePayload extends IMessageBase {\n type: 'ADDROUTE_PRECACHE';\n payload: {\n paths: string[];\n };\n}\n","import type { IMessageBase } from './base';\n\nexport const MESSAGE_TYPE = 'KEEP_ALIVE';\n\nexport interface IMessageKeepAlive extends IMessageBase {\n type: 'KEEP_ALIVE';\n payload: {};\n}\n","import type { IMessageBase } from './base';\n\nexport const MESSAGE_TYPE = 'ADDROUTE_ZIPRELATIVEPATH';\n\nexport interface IMessageZipRelativePathResponderPayload extends IMessageBase {\n type: 'ADDROUTE_ZIPRELATIVEPATH';\n payload: {\n zipPath: string;\n relativeRespondPath: string;\n };\n}\n","import { IContainer } from '../../interface/container';\nimport cacheFirstResponder from '../impl/cacheFirst';\nimport oAuthTokenResponder from '../impl/cacheOAuth';\nimport fetchToCacheResponder from '../impl/fetchToCache';\nimport headerAppendResponder from '../impl/headerAppend';\nimport logDiagnosticsResponder from '../impl/logDiagnostics';\nimport preCacheResponder from '../impl/preCache';\nimport keepAliveResponder from '../impl/keepAlive';\nimport zipRelativePathResponder from '../impl/zipPathRelative';\nimport { IMessageInstantiator, MESSAGE_INTERFACES } from '../interface/instantiator';\n\nconst InstantiateMap: MESSAGE_INTERFACES = {\n AddCacheFirst: cacheFirstResponder,\n AddHeader: headerAppendResponder,\n AddOAuthTokenCache: oAuthTokenResponder,\n AddPreCache: preCacheResponder,\n AddZipPathRelativeResponder: zipRelativePathResponder,\n AddKeepAliveMessageResponder: keepAliveResponder,\n LogDiagnostics: logDiagnosticsResponder,\n FetchToCache: fetchToCacheResponder,\n};\n\nfunction instantiator(container: IContainer): IMessageInstantiator {\n return {\n allInterfaces: () =>\n Object.keys(InstantiateMap) as Array,\n message: (name: K) =>\n InstantiateMap[name] as V,\n };\n}\n\nexport default instantiator;\n","import type { IRegexSerializer } from '../../util';\nimport type { IMessage } from '../interface/base';\nimport { IMessageCacheFirstPayload, MESSAGE_TYPE } from '../interface/cacheFirst';\n\nfunction construct(\n args: {\n matcher: RegExp;\n maxAge: number;\n maxEntries: number;\n cacheName: string;\n ignoreSearch?: boolean;\n fetchOptions?: Partial;\n },\n deps: { regexParser: IRegexSerializer },\n): IMessageCacheFirstPayload {\n return {\n type: MESSAGE_TYPE,\n payload: {\n matcher: deps.regexParser.stringify(\n args.matcher,\n ) /* Regex not serializable by JSON.stringify */,\n maxAge: args.maxAge,\n maxEntries: args.maxEntries,\n cacheName: args.cacheName,\n ignoreSearch: args.ignoreSearch,\n fetchOptions: args.fetchOptions,\n },\n };\n}\n\nfunction isMatch(object: unknown): object is IMessageCacheFirstPayload {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record?.type) &&\n !isNullOrUndefined(record?.payload) &&\n !isNullOrUndefined(record?.payload?.matcher) &&\n !isNullOrUndefined(record?.payload?.maxAge) &&\n !isNullOrUndefined(record?.payload?.maxEntries) &&\n !isNullOrUndefined(record?.payload?.cacheName) &&\n record.type === MESSAGE_TYPE\n );\n}\n\nconst controller: IMessage<\n IMessageCacheFirstPayload,\n Parameters[0],\n Parameters[1]\n> = {\n construct,\n isMatch,\n};\n\nexport default controller;\n","import type { IRegexSerializer } from '../../util';\nimport type { IMessage } from '../interface/base';\nimport { IMessageHeaderAppendResponderPayload, MESSAGE_TYPE } from '../interface/headerAppend';\n\nfunction construct(\n args: {\n matcher: RegExp;\n headerKey: string;\n headerVal: string;\n expiration: Date;\n },\n deps: { regexParser: IRegexSerializer },\n): IMessageHeaderAppendResponderPayload {\n return {\n type: MESSAGE_TYPE,\n payload: {\n matcher: deps.regexParser.stringify(args.matcher),\n key: args.headerKey,\n val: args.headerVal,\n expiration: args.expiration.getTime(),\n },\n };\n}\n\nfunction isMatch(object: unknown): object is IMessageHeaderAppendResponderPayload {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial =\n object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record?.type) &&\n !isNullOrUndefined(record?.payload) &&\n !isNullOrUndefined(record?.payload?.matcher) &&\n !isNullOrUndefined(record?.payload?.key) &&\n !isNullOrUndefined(record?.payload?.val) &&\n !isNullOrUndefined(record?.payload?.expiration) &&\n record.type === MESSAGE_TYPE\n );\n}\n\nconst controller: IMessage<\n IMessageHeaderAppendResponderPayload,\n Parameters[0],\n Parameters[1]\n> = {\n construct,\n isMatch,\n};\n\nexport default controller;\n","import type { IMessage } from '../interface/base';\nimport { IMessageOAuthTokenPayload, MESSAGE_TYPE } from '../interface/cacheOAuth';\n\nfunction construct(\n args: { pathSuffix: string },\n deps: Record,\n): IMessageOAuthTokenPayload {\n return {\n type: MESSAGE_TYPE,\n payload: {\n pathSuffix: args.pathSuffix,\n },\n };\n}\n\nfunction isMatch(object: unknown): object is IMessageOAuthTokenPayload {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record?.type) &&\n !isNullOrUndefined(record?.payload) &&\n !isNullOrUndefined(record?.payload?.pathSuffix) &&\n record.type === MESSAGE_TYPE\n );\n}\n\nconst controller: IMessage<\n IMessageOAuthTokenPayload,\n Parameters[0],\n Parameters[1]\n> = {\n construct,\n isMatch,\n};\n\nexport default controller;\n","import type { IMessage } from '../interface/base';\nimport { IMessagePreCachePayload, MESSAGE_TYPE } from '../interface/preCache';\n\nfunction construct(\n args: { paths: string[] },\n deps: Record,\n): IMessagePreCachePayload {\n return {\n type: MESSAGE_TYPE,\n payload: {\n paths: args.paths,\n },\n };\n}\n\nfunction isMatch(object: unknown): object is IMessagePreCachePayload {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record?.type) &&\n !isNullOrUndefined(record?.payload) &&\n !isNullOrUndefined(record?.payload?.paths) &&\n record.type === MESSAGE_TYPE\n );\n}\n\nconst controller: IMessage<\n IMessagePreCachePayload,\n Parameters[0],\n Parameters[1]\n> = {\n construct,\n isMatch,\n};\n\nexport default controller;\n","import type { IMessage } from '../interface/base';\nimport {\n IMessageZipRelativePathResponderPayload,\n MESSAGE_TYPE,\n} from '../interface/zipPathRelative';\n\nfunction isMatch(object: unknown): object is IMessageZipRelativePathResponderPayload {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial =\n object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record?.type) &&\n !isNullOrUndefined(record?.payload) &&\n !isNullOrUndefined(record?.payload?.zipPath) &&\n !isNullOrUndefined(record?.payload?.relativeRespondPath) &&\n record.type === MESSAGE_TYPE\n );\n}\n\nfunction construct(\n args: {\n zipPath: string;\n relativeRespondPath: string;\n },\n deps: Record,\n): IMessageZipRelativePathResponderPayload {\n return {\n type: MESSAGE_TYPE,\n payload: {\n zipPath: args.zipPath,\n relativeRespondPath: args.relativeRespondPath,\n },\n };\n}\n\nconst controller: IMessage<\n IMessageZipRelativePathResponderPayload,\n Parameters[0],\n Parameters[1]\n> = {\n construct,\n isMatch,\n};\n\nexport default controller;\n","import type { IMessage } from '../interface/base';\nimport { IMessageKeepAlive, MESSAGE_TYPE } from '../interface/keepAlive';\n\nfunction isMatch(object: unknown): object is IMessageKeepAlive {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record?.type) &&\n !isNullOrUndefined(record?.payload) &&\n record.type === MESSAGE_TYPE\n );\n}\n\nfunction construct(deps: Record, args: Record): IMessageKeepAlive {\n return {\n type: MESSAGE_TYPE,\n payload: {},\n };\n}\n\nconst controller: IMessage<\n IMessageKeepAlive,\n Parameters[0],\n Parameters[1]\n> = {\n construct,\n isMatch,\n};\n\nexport default controller;\n","import type { IMessage } from '../interface/base';\nimport { IMessageLogDiagnostics, MESSAGE_TYPE } from '../interface/logDiagnostics';\n\nfunction construct(\n args: Record,\n deps: Record,\n): IMessageLogDiagnostics {\n return {\n type: MESSAGE_TYPE,\n payload: {},\n };\n}\n\nfunction isMatch(object: unknown): object is IMessageLogDiagnostics {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return !isNullOrUndefined(record?.type) && record.type === MESSAGE_TYPE;\n}\n\nconst controller: IMessage<\n IMessageLogDiagnostics,\n Parameters[0],\n Parameters[1]\n> = {\n construct,\n isMatch,\n};\n\nexport default controller;\n","import type { IFetchRequest } from '../../interface';\nimport type { IChannelID } from '../../util/interface/channel';\nimport type { IMessage } from '../interface/base';\nimport { IMessageFetchToCachePayload, MESSAGE_TYPE } from '../interface/fetchToCache';\n\nfunction isMatch(object: unknown): object is IMessageFetchToCachePayload {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial =\n object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record?.type) &&\n !isNullOrUndefined(record?.payload) &&\n !isNullOrUndefined(record?.payload?.requests) &&\n record.type === MESSAGE_TYPE\n );\n}\n\nfunction construct(\n args: {\n requests: Array;\n cacheName?: string;\n callbackChannel?: IChannelID;\n },\n deps: Record,\n): IMessageFetchToCachePayload {\n return {\n type: MESSAGE_TYPE,\n payload: args,\n };\n}\n\nconst controller: IMessage<\n IMessageFetchToCachePayload,\n Parameters[0],\n Parameters[1]\n> = {\n construct,\n isMatch,\n};\n\nexport default controller;\n","import type { IContainer } from '../interface/container';\nimport {\n bindMessageInstantiator,\n injectMessageInstantiator,\n unbindMessageInstantiator,\n} from './interface/instantiator';\nimport instantiator from './util/instantiator';\n\nconst bindJobs: Array<{\n bind: (container: IContainer) => void;\n remove: (container: IContainer) => void;\n expose: (srcContainer: IContainer, dstContainer: IContainer) => void;\n}> = [\n {\n bind: (container: IContainer) =>\n bindMessageInstantiator(instantiator(container), container),\n remove: (container: IContainer) => unbindMessageInstantiator(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindMessageInstantiator(injectMessageInstantiator(srcContainer), dstContainer),\n },\n];\n\nconst module = {\n bind: (container: IContainer) => bindJobs.forEach(binder => binder.bind(container)),\n unbind: (container: IContainer) => bindJobs.forEach(binder => binder.remove(container)),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindJobs.forEach(binder => binder.expose(srcContainer, dstContainer)),\n};\n\nexport default module;\n","import { buildContainer } from '@monofe/util';\nimport { bindContainer, IContainer, injectContainer } from '../interface/container';\n\nconst CONTAINER_KEY = 'worker';\n\nexport default function container(parentContainer?: IContainer): IContainer {\n const container = injectContainer(CONTAINER_KEY);\n\n if (container) {\n return container;\n }\n\n const newContainer = buildContainer(parentContainer ? [parentContainer] : []);\n bindContainer(newContainer, CONTAINER_KEY);\n\n return newContainer;\n}\n","const CACHE_SEARCH_PARAMS = {\n ignoreMethod: true,\n ignoreSearch: true,\n};\n\nconst _openCache = (name: string): Promise =>\n caches === undefined ? Promise.reject('No caches available') : caches.open(name);\n\nconst _insertToCache = (cache: Cache, request: Request, response: Response): Promise =>\n cache.put(request, response);\n\nconst _isInCache = async (cache: Cache, request: Request): Promise => {\n const result = await caches.match(request, CACHE_SEARCH_PARAMS).catch(error => undefined);\n return result ? true : false;\n};\n\nconst module = {\n open: _openCache,\n insert: _insertToCache,\n exists: _isInCache,\n};\n\nexport default module;\n","import type { IContainer } from '../../interface/container';\nimport { ICallbackBuilder, ICallbackController } from '../interface/callback';\n\ninterface ICallbackRecord {\n name: string;\n callback: Callback;\n}\n\nfunction callbackRegistry(): ICallbackController {\n const state: Partial<{\n [Event in keyof CallbackMap]: Array>;\n }> = {};\n\n const controller: ICallbackController = {\n subscribe: (\n callback: Callback,\n event: Event,\n key?: string,\n ) => {\n const existingRecords = state[event] ?? [];\n state[event] = [\n ...existingRecords,\n { name: key ?? `callback-${existingRecords.length}`, callback },\n ];\n },\n unsubscribe: (\n callback: Callback,\n event: Event,\n ) => {\n const existingRecords = (state[event] ?? []).filter(cb => cb.callback !== callback);\n state[event] = existingRecords;\n },\n search: (\n subscriberKey: string,\n event: Event,\n ) =>\n (state[event] ?? [])\n .filter(record => record.name === subscriberKey)\n .map(record => record.callback) as Array,\n eventListeners: (\n event: Event,\n ) => (state[event] ?? []).map(record => record.callback) as Array,\n };\n\n return controller;\n}\n\nfunction callbackBuilder(container: IContainer): ICallbackBuilder {\n return {\n build: () => callbackRegistry(),\n };\n}\n\nexport default callbackBuilder;\n","/**\n * returns true if the given object is a promise\n */\nexport function isPromise(obj) {\n if (obj && typeof obj.then === 'function') {\n return true;\n } else {\n return false;\n }\n}\nexport var PROMISE_RESOLVED_FALSE = Promise.resolve(false);\nexport var PROMISE_RESOLVED_TRUE = Promise.resolve(true);\nexport var PROMISE_RESOLVED_VOID = Promise.resolve();\nexport function sleep(time, resolveWith) {\n if (!time) time = 0;\n return new Promise(function (res) {\n return setTimeout(function () {\n return res(resolveWith);\n }, time);\n });\n}\nexport function randomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n/**\n * https://stackoverflow.com/a/8084248\n */\n\nexport function randomToken() {\n return Math.random().toString(36).substring(2);\n}\nvar lastMs = 0;\nvar additional = 0;\n/**\n * returns the current time in micro-seconds,\n * WARNING: This is a pseudo-function\n * Performance.now is not reliable in webworkers, so we just make sure to never return the same time.\n * This is enough in browsers, and this function will not be used in nodejs.\n * The main reason for this hack is to ensure that BroadcastChannel behaves equal to production when it is used in fast-running unit tests.\n */\n\nexport function microSeconds() {\n var ms = new Date().getTime();\n\n if (ms === lastMs) {\n additional++;\n return ms * 1000 + additional;\n } else {\n lastMs = ms;\n additional = 0;\n return ms * 1000;\n }\n}\n/**\n * copied from the 'detect-node' npm module\n * We cannot use the module directly because it causes problems with rollup\n * @link https://github.com/iliakan/detect-node/blob/master/index.js\n */\n\nexport var isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';","import { microSeconds as micro, isNode, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'native';\nexport function create(channelName) {\n var state = {\n messagesCallback: null,\n bc: new BroadcastChannel(channelName),\n subFns: [] // subscriberFunctions\n\n };\n\n state.bc.onmessage = function (msg) {\n if (state.messagesCallback) {\n state.messagesCallback(msg.data);\n }\n };\n\n return state;\n}\nexport function close(channelState) {\n channelState.bc.close();\n channelState.subFns = [];\n}\nexport function postMessage(channelState, messageJson) {\n try {\n channelState.bc.postMessage(messageJson, false);\n return PROMISE_RESOLVED_VOID;\n } catch (err) {\n return Promise.reject(err);\n }\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n /**\n * in the electron-renderer, isNode will be true even if we are in browser-context\n * so we also check if window is undefined\n */\n if (isNode && typeof window === 'undefined') return false;\n\n if (typeof BroadcastChannel === 'function') {\n if (BroadcastChannel._pubkey) {\n throw new Error('BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill');\n }\n\n return true;\n } else return false;\n}\nexport function averageResponseTime() {\n return 150;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","\n/**\n * this is a set which automatically forgets\n * a given entry when a new entry is set and the ttl\n * of the old one is over\n */\nexport class ObliviousSet {\n public readonly map = new Map();\n\n /**\n * Creating calls to setTimeout() is expensive,\n * so we only do that if there is not timeout already open.\n */\n public _to: boolean = false;\n constructor(\n public readonly ttl: number\n ) { }\n\n has(value: T): boolean {\n return this.map.has(value);\n }\n\n add(value: T): void {\n this.map.set(value, now());\n\n /**\n * When a new value is added,\n * start the cleanup at the next tick\n * to not block the cpu for more important stuff\n * that might happen.\n */\n if (!this._to) {\n this._to = true;\n setTimeout(() => {\n this._to = false;\n removeTooOldValues(this);\n }, 0);\n }\n }\n\n clear() {\n this.map.clear();\n }\n}\n\n\n/**\n * Removes all entries from the set\n * where the TTL has expired\n */\nexport function removeTooOldValues(\n obliviousSet: ObliviousSet\n) {\n const olderThen = now() - obliviousSet.ttl;\n const iterator = obliviousSet.map[Symbol.iterator]();\n\n /**\n * Because we can assume the new values are added at the bottom,\n * we start from the top and stop as soon as we reach a non-too-old value.\n */\n while (true) {\n\n const next = iterator.next().value;\n\n if (!next) {\n return; // no more elements\n }\n const value = next[0];\n const time = next[1];\n if (time < olderThen) {\n obliviousSet.map.delete(value);\n } else {\n // We reached a value that is not old enough\n return;\n }\n }\n}\n\nexport function now(): number {\n return new Date().getTime();\n}\n\n\n","export function fillOptionsWithDefaults() {\n var originalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = JSON.parse(JSON.stringify(originalOptions)); // main\n\n if (typeof options.webWorkerSupport === 'undefined') options.webWorkerSupport = true; // indexed-db\n\n if (!options.idb) options.idb = {}; // after this time the messages get deleted\n\n if (!options.idb.ttl) options.idb.ttl = 1000 * 45;\n if (!options.idb.fallbackInterval) options.idb.fallbackInterval = 150; // handles abrupt db onclose events.\n\n if (originalOptions.idb && typeof originalOptions.idb.onclose === 'function') options.idb.onclose = originalOptions.idb.onclose; // localstorage\n\n if (!options.localstorage) options.localstorage = {};\n if (!options.localstorage.removeTimeout) options.localstorage.removeTimeout = 1000 * 60; // custom methods\n\n if (originalOptions.methods) options.methods = originalOptions.methods; // node\n\n if (!options.node) options.node = {};\n if (!options.node.ttl) options.node.ttl = 1000 * 60 * 2; // 2 minutes;\n\n /**\n * On linux use 'ulimit -Hn' to get the limit of open files.\n * On ubuntu this was 4096 for me, so we use half of that as maxParallelWrites default.\n */\n\n if (!options.node.maxParallelWrites) options.node.maxParallelWrites = 2048;\n if (typeof options.node.useFastPath === 'undefined') options.node.useFastPath = true;\n return options;\n}","/**\n * this method uses indexeddb to store the messages\n * There is currently no observerAPI for idb\n * @link https://github.com/w3c/IndexedDB/issues/51\n * \n * When working on this, ensure to use these performance optimizations:\n * @link https://rxdb.info/slow-indexeddb.html\n */\nimport { sleep, randomInt, randomToken, microSeconds as micro, isNode, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nvar DB_PREFIX = 'pubkey.broadcast-channel-0-';\nvar OBJECT_STORE_ID = 'messages';\n/**\n * Use relaxed durability for faster performance on all transactions.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\n\nexport var TRANSACTION_SETTINGS = {\n durability: 'relaxed'\n};\nexport var type = 'idb';\nexport function getIdb() {\n if (typeof indexedDB !== 'undefined') return indexedDB;\n\n if (typeof window !== 'undefined') {\n if (typeof window.mozIndexedDB !== 'undefined') return window.mozIndexedDB;\n if (typeof window.webkitIndexedDB !== 'undefined') return window.webkitIndexedDB;\n if (typeof window.msIndexedDB !== 'undefined') return window.msIndexedDB;\n }\n\n return false;\n}\n/**\n * If possible, we should explicitly commit IndexedDB transactions\n * for better performance.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\n\nexport function commitIndexedDBTransaction(tx) {\n if (tx.commit) {\n tx.commit();\n }\n}\nexport function createDatabase(channelName) {\n var IndexedDB = getIdb(); // create table\n\n var dbName = DB_PREFIX + channelName;\n /**\n * All IndexedDB databases are opened without version\n * because it is a bit faster, especially on firefox\n * @link http://nparashuram.com/IndexedDB/perf/#Open%20Database%20with%20version\n */\n\n var openRequest = IndexedDB.open(dbName);\n\n openRequest.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n db.createObjectStore(OBJECT_STORE_ID, {\n keyPath: 'id',\n autoIncrement: true\n });\n };\n\n var dbPromise = new Promise(function (res, rej) {\n openRequest.onerror = function (ev) {\n return rej(ev);\n };\n\n openRequest.onsuccess = function () {\n res(openRequest.result);\n };\n });\n return dbPromise;\n}\n/**\n * writes the new message to the database\n * so other readers can find it\n */\n\nexport function writeMessage(db, readerUuid, messageJson) {\n var time = new Date().getTime();\n var writeObject = {\n uuid: readerUuid,\n time: time,\n data: messageJson\n };\n var tx = db.transaction([OBJECT_STORE_ID], 'readwrite', TRANSACTION_SETTINGS);\n return new Promise(function (res, rej) {\n tx.oncomplete = function () {\n return res();\n };\n\n tx.onerror = function (ev) {\n return rej(ev);\n };\n\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n objectStore.add(writeObject);\n commitIndexedDBTransaction(tx);\n });\n}\nexport function getAllMessages(db) {\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n ret.push(cursor.value); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n };\n });\n}\nexport function getMessagesHigherThan(db, lastCursorId) {\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n var keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n /**\n * Optimization shortcut,\n * if getAll() can be used, do not use a cursor.\n * @link https://rxdb.info/slow-indexeddb.html\n */\n\n if (objectStore.getAll) {\n var getAllRequest = objectStore.getAll(keyRangeValue);\n return new Promise(function (res, rej) {\n getAllRequest.onerror = function (err) {\n return rej(err);\n };\n\n getAllRequest.onsuccess = function (e) {\n res(e.target.result);\n };\n });\n }\n\n function openCursor() {\n // Occasionally Safari will fail on IDBKeyRange.bound, this\n // catches that error, having it open the cursor to the first\n // item. When it gets data it will advance to the desired key.\n try {\n keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n return objectStore.openCursor(keyRangeValue);\n } catch (e) {\n return objectStore.openCursor();\n }\n }\n\n return new Promise(function (res, rej) {\n var openCursorRequest = openCursor();\n\n openCursorRequest.onerror = function (err) {\n return rej(err);\n };\n\n openCursorRequest.onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n if (cursor.value.id < lastCursorId + 1) {\n cursor[\"continue\"](lastCursorId + 1);\n } else {\n ret.push(cursor.value);\n cursor[\"continue\"]();\n }\n } else {\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n };\n });\n}\nexport function removeMessagesById(db, ids) {\n var tx = db.transaction([OBJECT_STORE_ID], 'readwrite', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n return Promise.all(ids.map(function (id) {\n var deleteRequest = objectStore[\"delete\"](id);\n return new Promise(function (res) {\n deleteRequest.onsuccess = function () {\n return res();\n };\n });\n }));\n}\nexport function getOldMessages(db, ttl) {\n var olderThen = new Date().getTime() - ttl;\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n var msgObk = cursor.value;\n\n if (msgObk.time < olderThen) {\n ret.push(msgObk); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n // no more old messages,\n commitIndexedDBTransaction(tx);\n res(ret);\n return;\n }\n } else {\n res(ret);\n }\n };\n });\n}\nexport function cleanOldMessages(db, ttl) {\n return getOldMessages(db, ttl).then(function (tooOld) {\n return removeMessagesById(db, tooOld.map(function (msg) {\n return msg.id;\n }));\n });\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n return createDatabase(channelName).then(function (db) {\n var state = {\n closed: false,\n lastCursorId: 0,\n channelName: channelName,\n options: options,\n uuid: randomToken(),\n\n /**\n * emittedMessagesIds\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n eMIs: new ObliviousSet(options.idb.ttl * 2),\n // ensures we do not read messages in parrallel\n writeBlockPromise: PROMISE_RESOLVED_VOID,\n messagesCallback: null,\n readQueuePromises: [],\n db: db\n };\n /**\n * Handle abrupt closes that do not originate from db.close().\n * This could happen, for example, if the underlying storage is\n * removed or if the user clears the database in the browser's\n * history preferences.\n */\n\n db.onclose = function () {\n state.closed = true;\n if (options.idb.onclose) options.idb.onclose();\n };\n /**\n * if service-workers are used,\n * we have no 'storage'-event if they post a message,\n * therefore we also have to set an interval\n */\n\n\n _readLoop(state);\n\n return state;\n });\n}\n\nfunction _readLoop(state) {\n if (state.closed) return;\n readNewMessages(state).then(function () {\n return sleep(state.options.idb.fallbackInterval);\n }).then(function () {\n return _readLoop(state);\n });\n}\n\nfunction _filterMessage(msgObj, state) {\n if (msgObj.uuid === state.uuid) return false; // send by own\n\n if (state.eMIs.has(msgObj.id)) return false; // already emitted\n\n if (msgObj.data.time < state.messagesCallbackTime) return false; // older then onMessageCallback\n\n return true;\n}\n/**\n * reads all new messages from the database and emits them\n */\n\n\nfunction readNewMessages(state) {\n // channel already closed\n if (state.closed) return PROMISE_RESOLVED_VOID; // if no one is listening, we do not need to scan for new messages\n\n if (!state.messagesCallback) return PROMISE_RESOLVED_VOID;\n return getMessagesHigherThan(state.db, state.lastCursorId).then(function (newerMessages) {\n var useMessages = newerMessages\n /**\n * there is a bug in iOS where the msgObj can be undefined some times\n * so we filter them out\n * @link https://github.com/pubkey/broadcast-channel/issues/19\n */\n .filter(function (msgObj) {\n return !!msgObj;\n }).map(function (msgObj) {\n if (msgObj.id > state.lastCursorId) {\n state.lastCursorId = msgObj.id;\n }\n\n return msgObj;\n }).filter(function (msgObj) {\n return _filterMessage(msgObj, state);\n }).sort(function (msgObjA, msgObjB) {\n return msgObjA.time - msgObjB.time;\n }); // sort by time\n\n useMessages.forEach(function (msgObj) {\n if (state.messagesCallback) {\n state.eMIs.add(msgObj.id);\n state.messagesCallback(msgObj.data);\n }\n });\n return PROMISE_RESOLVED_VOID;\n });\n}\n\nexport function close(channelState) {\n channelState.closed = true;\n channelState.db.close();\n}\nexport function postMessage(channelState, messageJson) {\n channelState.writeBlockPromise = channelState.writeBlockPromise.then(function () {\n return writeMessage(channelState.db, channelState.uuid, messageJson);\n }).then(function () {\n if (randomInt(0, 10) === 0) {\n /* await (do not await) */\n cleanOldMessages(channelState.db, channelState.options.idb.ttl);\n }\n });\n return channelState.writeBlockPromise;\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n readNewMessages(channelState);\n}\nexport function canBeUsed() {\n if (isNode) return false;\n var idb = getIdb();\n if (!idb) return false;\n return true;\n}\nexport function averageResponseTime(options) {\n return options.idb.fallbackInterval * 2;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","/**\n * A localStorage-only method which uses localstorage and its 'storage'-event\n * This does not work inside of webworkers because they have no access to locastorage\n * This is basically implemented to support IE9 or your grandmothers toaster.\n * @link https://caniuse.com/#feat=namevalue-storage\n * @link https://caniuse.com/#feat=indexeddb\n */\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nimport { sleep, randomToken, microSeconds as micro, isNode } from '../util.js';\nexport var microSeconds = micro;\nvar KEY_PREFIX = 'pubkey.broadcastChannel-';\nexport var type = 'localstorage';\n/**\n * copied from crosstab\n * @link https://github.com/tejacques/crosstab/blob/master/src/crosstab.js#L32\n */\n\nexport function getLocalStorage() {\n var localStorage;\n if (typeof window === 'undefined') return null;\n\n try {\n localStorage = window.localStorage;\n localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\n } catch (e) {// New versions of Firefox throw a Security exception\n // if cookies are disabled. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\n }\n\n return localStorage;\n}\nexport function storageKey(channelName) {\n return KEY_PREFIX + channelName;\n}\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\n\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n sleep().then(function () {\n var key = storageKey(channelState.channelName);\n var writeObj = {\n token: randomToken(),\n time: new Date().getTime(),\n data: messageJson,\n uuid: channelState.uuid\n };\n var value = JSON.stringify(writeObj);\n getLocalStorage().setItem(key, value);\n /**\n * StorageEvent does not fire the 'storage' event\n * in the window that changes the state of the local storage.\n * So we fire it manually\n */\n\n var ev = document.createEvent('Event');\n ev.initEvent('storage', true, true);\n ev.key = key;\n ev.newValue = value;\n window.dispatchEvent(ev);\n res();\n });\n });\n}\nexport function addStorageEventListener(channelName, fn) {\n var key = storageKey(channelName);\n\n var listener = function listener(ev) {\n if (ev.key === key) {\n fn(JSON.parse(ev.newValue));\n }\n };\n\n window.addEventListener('storage', listener);\n return listener;\n}\nexport function removeStorageEventListener(listener) {\n window.removeEventListener('storage', listener);\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n\n if (!canBeUsed()) {\n throw new Error('BroadcastChannel: localstorage cannot be used');\n }\n\n var uuid = randomToken();\n /**\n * eMIs\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n\n var eMIs = new ObliviousSet(options.localstorage.removeTimeout);\n var state = {\n channelName: channelName,\n uuid: uuid,\n eMIs: eMIs // emittedMessagesIds\n\n };\n state.listener = addStorageEventListener(channelName, function (msgObj) {\n if (!state.messagesCallback) return; // no listener\n\n if (msgObj.uuid === uuid) return; // own message\n\n if (!msgObj.token || eMIs.has(msgObj.token)) return; // already emitted\n\n if (msgObj.data.time && msgObj.data.time < state.messagesCallbackTime) return; // too old\n\n eMIs.add(msgObj.token);\n state.messagesCallback(msgObj.data);\n });\n return state;\n}\nexport function close(channelState) {\n removeStorageEventListener(channelState.listener);\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n if (isNode) return false;\n var ls = getLocalStorage();\n if (!ls) return false;\n\n try {\n var key = '__broadcastchannel_check';\n ls.setItem(key, 'works');\n ls.removeItem(key);\n } catch (e) {\n // Safari 10 in private mode will not allow write access to local\n // storage and fail with a QuotaExceededError. See\n // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API#Private_Browsing_Incognito_modes\n return false;\n }\n\n return true;\n}\nexport function averageResponseTime() {\n var defaultTime = 120;\n var userAgent = navigator.userAgent.toLowerCase();\n\n if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n // safari is much slower so this time is higher\n return defaultTime * 2;\n }\n\n return defaultTime;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import { microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'simulate';\nvar SIMULATE_CHANNELS = new Set();\nexport function create(channelName) {\n var state = {\n name: channelName,\n messagesCallback: null\n };\n SIMULATE_CHANNELS.add(state);\n return state;\n}\nexport function close(channelState) {\n SIMULATE_CHANNELS[\"delete\"](channelState);\n}\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n return setTimeout(function () {\n var channelArray = Array.from(SIMULATE_CHANNELS);\n channelArray.filter(function (channel) {\n return channel.name === channelState.name;\n }).filter(function (channel) {\n return channel !== channelState;\n }).filter(function (channel) {\n return !!channel.messagesCallback;\n }).forEach(function (channel) {\n return channel.messagesCallback(messageJson);\n });\n res();\n }, 5);\n });\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n return true;\n}\nexport function averageResponseTime() {\n return 5;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import NativeMethod from './methods/native.js';\nimport IndexeDbMethod from './methods/indexed-db.js';\nimport LocalstorageMethod from './methods/localstorage.js';\nimport SimulateMethod from './methods/simulate.js'; // the line below will be removed from es5/browser builds\n\n\nimport { isNode } from './util.js'; // order is important\n\nvar METHODS = [NativeMethod, // fastest\nIndexeDbMethod, LocalstorageMethod];\nexport function chooseMethod(options) {\n var chooseMethods = [].concat(options.methods, METHODS).filter(Boolean); // the line below will be removed from es5/browser builds\n\n\n\n if (options.type) {\n if (options.type === 'simulate') {\n // only use simulate-method if directly chosen\n return SimulateMethod;\n }\n\n var ret = chooseMethods.find(function (m) {\n return m.type === options.type;\n });\n if (!ret) throw new Error('method-type ' + options.type + ' not found');else return ret;\n }\n /**\n * if no webworker support is needed,\n * remove idb from the list so that localstorage is been chosen\n */\n\n\n if (!options.webWorkerSupport && !isNode) {\n chooseMethods = chooseMethods.filter(function (m) {\n return m.type !== 'idb';\n });\n }\n\n var useMethod = chooseMethods.find(function (method) {\n return method.canBeUsed();\n });\n if (!useMethod) throw new Error(\"No useable method found in \" + JSON.stringify(METHODS.map(function (m) {\n return m.type;\n })));else return useMethod;\n}","import { isPromise, PROMISE_RESOLVED_FALSE, PROMISE_RESOLVED_VOID } from './util.js';\nimport { chooseMethod } from './method-chooser.js';\nimport { fillOptionsWithDefaults } from './options.js';\n/**\n * Contains all open channels,\n * used in tests to ensure everything is closed.\n */\n\nexport var OPEN_BROADCAST_CHANNELS = new Set();\nvar lastId = 0;\nexport var BroadcastChannel = function BroadcastChannel(name, options) {\n // identifier of the channel to debug stuff\n this.id = lastId++;\n OPEN_BROADCAST_CHANNELS.add(this);\n this.name = name;\n\n if (ENFORCED_OPTIONS) {\n options = ENFORCED_OPTIONS;\n }\n\n this.options = fillOptionsWithDefaults(options);\n this.method = chooseMethod(this.options); // isListening\n\n this._iL = false;\n /**\n * _onMessageListener\n * setting onmessage twice,\n * will overwrite the first listener\n */\n\n this._onML = null;\n /**\n * _addEventListeners\n */\n\n this._addEL = {\n message: [],\n internal: []\n };\n /**\n * Unsend message promises\n * where the sending is still in progress\n * @type {Set}\n */\n\n this._uMP = new Set();\n /**\n * _beforeClose\n * array of promises that will be awaited\n * before the channel is closed\n */\n\n this._befC = [];\n /**\n * _preparePromise\n */\n\n this._prepP = null;\n\n _prepareChannel(this);\n}; // STATICS\n\n/**\n * used to identify if someone overwrites\n * window.BroadcastChannel with this\n * See methods/native.js\n */\n\nBroadcastChannel._pubkey = true;\n/**\n * clears the tmp-folder if is node\n * @return {Promise} true if has run, false if not node\n */\n\nexport function clearNodeFolder(options) {\n options = fillOptionsWithDefaults(options);\n var method = chooseMethod(options);\n\n if (method.type === 'node') {\n return method.clearNodeFolder().then(function () {\n return true;\n });\n } else {\n return PROMISE_RESOLVED_FALSE;\n }\n}\n/**\n * if set, this method is enforced,\n * no mather what the options are\n */\n\nvar ENFORCED_OPTIONS;\nexport function enforceOptions(options) {\n ENFORCED_OPTIONS = options;\n} // PROTOTYPE\n\nBroadcastChannel.prototype = {\n postMessage: function postMessage(msg) {\n if (this.closed) {\n throw new Error('BroadcastChannel.postMessage(): ' + 'Cannot post message after channel has closed ' +\n /**\n * In the past when this error appeared, it was realy hard to debug.\n * So now we log the msg together with the error so it at least\n * gives some clue about where in your application this happens.\n */\n JSON.stringify(msg));\n }\n\n return _post(this, 'message', msg);\n },\n postInternal: function postInternal(msg) {\n return _post(this, 'internal', msg);\n },\n\n set onmessage(fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n\n _removeListenerObject(this, 'message', this._onML);\n\n if (fn && typeof fn === 'function') {\n this._onML = listenObj;\n\n _addListenerObject(this, 'message', listenObj);\n } else {\n this._onML = null;\n }\n },\n\n addEventListener: function addEventListener(type, fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n\n _addListenerObject(this, type, listenObj);\n },\n removeEventListener: function removeEventListener(type, fn) {\n var obj = this._addEL[type].find(function (obj) {\n return obj.fn === fn;\n });\n\n _removeListenerObject(this, type, obj);\n },\n close: function close() {\n var _this = this;\n\n if (this.closed) {\n return;\n }\n\n OPEN_BROADCAST_CHANNELS[\"delete\"](this);\n this.closed = true;\n var awaitPrepare = this._prepP ? this._prepP : PROMISE_RESOLVED_VOID;\n this._onML = null;\n this._addEL.message = [];\n return awaitPrepare // wait until all current sending are processed\n .then(function () {\n return Promise.all(Array.from(_this._uMP));\n }) // run before-close hooks\n .then(function () {\n return Promise.all(_this._befC.map(function (fn) {\n return fn();\n }));\n }) // close the channel\n .then(function () {\n return _this.method.close(_this._state);\n });\n },\n\n get type() {\n return this.method.type;\n },\n\n get isClosed() {\n return this.closed;\n }\n\n};\n/**\n * Post a message over the channel\n * @returns {Promise} that resolved when the message sending is done\n */\n\nfunction _post(broadcastChannel, type, msg) {\n var time = broadcastChannel.method.microSeconds();\n var msgObj = {\n time: time,\n type: type,\n data: msg\n };\n var awaitPrepare = broadcastChannel._prepP ? broadcastChannel._prepP : PROMISE_RESOLVED_VOID;\n return awaitPrepare.then(function () {\n var sendPromise = broadcastChannel.method.postMessage(broadcastChannel._state, msgObj); // add/remove to unsend messages list\n\n broadcastChannel._uMP.add(sendPromise);\n\n sendPromise[\"catch\"]().then(function () {\n return broadcastChannel._uMP[\"delete\"](sendPromise);\n });\n return sendPromise;\n });\n}\n\nfunction _prepareChannel(channel) {\n var maybePromise = channel.method.create(channel.name, channel.options);\n\n if (isPromise(maybePromise)) {\n channel._prepP = maybePromise;\n maybePromise.then(function (s) {\n // used in tests to simulate slow runtime\n\n /*if (channel.options.prepareDelay) {\n await new Promise(res => setTimeout(res, this.options.prepareDelay));\n }*/\n channel._state = s;\n });\n } else {\n channel._state = maybePromise;\n }\n}\n\nfunction _hasMessageListeners(channel) {\n if (channel._addEL.message.length > 0) return true;\n if (channel._addEL.internal.length > 0) return true;\n return false;\n}\n\nfunction _addListenerObject(channel, type, obj) {\n channel._addEL[type].push(obj);\n\n _startListening(channel);\n}\n\nfunction _removeListenerObject(channel, type, obj) {\n channel._addEL[type] = channel._addEL[type].filter(function (o) {\n return o !== obj;\n });\n\n _stopListening(channel);\n}\n\nfunction _startListening(channel) {\n if (!channel._iL && _hasMessageListeners(channel)) {\n // someone is listening, start subscribing\n var listenerFn = function listenerFn(msgObj) {\n channel._addEL[msgObj.type].forEach(function (listenerObject) {\n /**\n * Getting the current time in JavaScript has no good precision.\n * So instead of only listening to events that happend 'after' the listener\n * was added, we also listen to events that happended 100ms before it.\n * This ensures that when another process, like a WebWorker, sends events\n * we do not miss them out because their timestamp is a bit off compared to the main process.\n * Not doing this would make messages missing when we send data directly after subscribing and awaiting a response.\n * @link https://johnresig.com/blog/accuracy-of-javascript-time/\n */\n var hundredMsInMicro = 100 * 1000;\n var minMessageTime = listenerObject.time - hundredMsInMicro;\n\n if (msgObj.time >= minMessageTime) {\n listenerObject.fn(msgObj.data);\n }\n });\n };\n\n var time = channel.method.microSeconds();\n\n if (channel._prepP) {\n channel._prepP.then(function () {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n });\n } else {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n }\n }\n}\n\nfunction _stopListening(channel) {\n if (channel._iL && !_hasMessageListeners(channel)) {\n // noone is listening, stop subscribing\n channel._iL = false;\n var time = channel.method.microSeconds();\n channel.method.onMessage(channel._state, null, time);\n }\n}","/* global WorkerGlobalScope */\nfunction add(fn) {\n if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {// this is run inside of a webworker\n } else {\n /**\n * if we are on react-native, there is no window.addEventListener\n * @link https://github.com/pubkey/unload/issues/6\n */\n if (typeof window.addEventListener !== 'function') return;\n /**\n * for normal browser-windows, we use the beforeunload-event\n */\n\n window.addEventListener('beforeunload', function () {\n fn();\n }, true);\n /**\n * for iframes, we have to use the unload-event\n * @link https://stackoverflow.com/q/47533670/3443137\n */\n\n window.addEventListener('unload', function () {\n fn();\n }, true);\n }\n /**\n * TODO add fallback for safari-mobile\n * @link https://stackoverflow.com/a/26193516/3443137\n */\n\n}\n\nexport default {\n add: add\n};","import isNode from 'detect-node';\nimport BrowserMethod from './browser.js';\nimport NodeMethod from './node.js';\nvar USE_METHOD = isNode ? NodeMethod : BrowserMethod;\nvar LISTENERS = new Set();\nvar startedListening = false;\n\nfunction startListening() {\n if (startedListening) return;\n startedListening = true;\n USE_METHOD.add(runAll);\n}\n\nexport function add(fn) {\n startListening();\n if (typeof fn !== 'function') throw new Error('Listener is no function');\n LISTENERS.add(fn);\n var addReturn = {\n remove: function remove() {\n return LISTENERS[\"delete\"](fn);\n },\n run: function run() {\n LISTENERS[\"delete\"](fn);\n return fn();\n }\n };\n return addReturn;\n}\nexport function runAll() {\n var promises = [];\n LISTENERS.forEach(function (fn) {\n promises.push(fn());\n LISTENERS[\"delete\"](fn);\n });\n return Promise.all(promises);\n}\nexport function removeAll() {\n LISTENERS.clear();\n}\nexport function getSize() {\n return LISTENERS.size;\n}","import { sleep, randomToken, PROMISE_RESOLVED_VOID, PROMISE_RESOLVED_TRUE } from './util.js';\nimport { add as unloadAdd } from 'unload';\n\nvar LeaderElection = function LeaderElection(broadcastChannel, options) {\n var _this = this;\n\n this.broadcastChannel = broadcastChannel;\n this._options = options;\n this.isLeader = false;\n this.hasLeader = false;\n this.isDead = false;\n this.token = randomToken();\n /**\n * Apply Queue,\n * used to ensure we do not run applyOnce()\n * in parallel.\n */\n\n this._aplQ = PROMISE_RESOLVED_VOID; // amount of unfinished applyOnce() calls\n\n this._aplQC = 0; // things to clean up\n\n this._unl = []; // _unloads\n\n this._lstns = []; // _listeners\n\n this._dpL = function () {}; // onduplicate listener\n\n\n this._dpLC = false; // true when onduplicate called\n\n /**\n * Even when the own instance is not applying,\n * we still listen to messages to ensure the hasLeader flag\n * is set correctly.\n */\n\n var hasLeaderListener = function hasLeaderListener(msg) {\n if (msg.context === 'leader') {\n if (msg.action === 'death') {\n _this.hasLeader = false;\n }\n\n if (msg.action === 'tell') {\n _this.hasLeader = true;\n }\n }\n };\n\n this.broadcastChannel.addEventListener('internal', hasLeaderListener);\n\n this._lstns.push(hasLeaderListener);\n};\n\nLeaderElection.prototype = {\n /**\n * Returns true if the instance is leader,\n * false if not.\n * @async\n */\n applyOnce: function applyOnce( // true if the applyOnce() call came from the fallbackInterval cycle\n isFromFallbackInterval) {\n var _this2 = this;\n\n if (this.isLeader) {\n return sleep(0, true);\n }\n\n if (this.isDead) {\n return sleep(0, false);\n }\n /**\n * Already applying more then once,\n * -> wait for the apply queue to be finished.\n */\n\n\n if (this._aplQC > 1) {\n return this._aplQ;\n }\n /**\n * Add a new apply-run\n */\n\n\n var applyRun = function applyRun() {\n /**\n * Optimization shortcuts.\n * Directly return if a previous run\n * has already elected a leader.\n */\n if (_this2.isLeader) {\n return PROMISE_RESOLVED_TRUE;\n }\n\n var stopCriteria = false;\n var stopCriteriaPromiseResolve;\n /**\n * Resolves when a stop criteria is reached.\n * Uses as a performance shortcut so we do not\n * have to await the responseTime when it is already clear\n * that the election failed.\n */\n\n var stopCriteriaPromise = new Promise(function (res) {\n stopCriteriaPromiseResolve = function stopCriteriaPromiseResolve() {\n stopCriteria = true;\n res();\n };\n });\n var recieved = [];\n\n var handleMessage = function handleMessage(msg) {\n if (msg.context === 'leader' && msg.token != _this2.token) {\n recieved.push(msg);\n\n if (msg.action === 'apply') {\n // other is applying\n if (msg.token > _this2.token) {\n /**\n * other has higher token\n * -> stop applying and let other become leader.\n */\n stopCriteriaPromiseResolve();\n }\n }\n\n if (msg.action === 'tell') {\n // other is already leader\n stopCriteriaPromiseResolve();\n _this2.hasLeader = true;\n }\n }\n };\n\n _this2.broadcastChannel.addEventListener('internal', handleMessage);\n /**\n * If the applyOnce() call came from the fallbackInterval,\n * we can assume that the election runs in the background and\n * not critical process is waiting for it.\n * When this is true, we give the other intances\n * more time to answer to messages in the election cycle.\n * This makes it less likely to elect duplicate leaders.\n * But also it takes longer which is not a problem because we anyway\n * run in the background.\n */\n\n\n var waitForAnswerTime = isFromFallbackInterval ? _this2._options.responseTime * 4 : _this2._options.responseTime;\n\n var applyPromise = _sendMessage(_this2, 'apply') // send out that this one is applying\n .then(function () {\n return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n return Promise.reject(new Error());\n })]);\n }) // send again in case another instance was just created\n .then(function () {\n return _sendMessage(_this2, 'apply');\n }) // let others time to respond\n .then(function () {\n return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n return Promise.reject(new Error());\n })]);\n })[\"catch\"](function () {}).then(function () {\n _this2.broadcastChannel.removeEventListener('internal', handleMessage);\n\n if (!stopCriteria) {\n // no stop criteria -> own is leader\n return beLeader(_this2).then(function () {\n return true;\n });\n } else {\n // other is leader\n return false;\n }\n });\n\n return applyPromise;\n };\n\n this._aplQC = this._aplQC + 1;\n this._aplQ = this._aplQ.then(function () {\n return applyRun();\n }).then(function () {\n _this2._aplQC = _this2._aplQC - 1;\n });\n return this._aplQ.then(function () {\n return _this2.isLeader;\n });\n },\n awaitLeadership: function awaitLeadership() {\n if (\n /* _awaitLeadershipPromise */\n !this._aLP) {\n this._aLP = _awaitLeadershipOnce(this);\n }\n\n return this._aLP;\n },\n\n set onduplicate(fn) {\n this._dpL = fn;\n },\n\n die: function die() {\n var _this3 = this;\n\n this._lstns.forEach(function (listener) {\n return _this3.broadcastChannel.removeEventListener('internal', listener);\n });\n\n this._lstns = [];\n\n this._unl.forEach(function (uFn) {\n return uFn.remove();\n });\n\n this._unl = [];\n\n if (this.isLeader) {\n this.hasLeader = false;\n this.isLeader = false;\n }\n\n this.isDead = true;\n return _sendMessage(this, 'death');\n }\n};\n/**\n * @param leaderElector {LeaderElector}\n */\n\nfunction _awaitLeadershipOnce(leaderElector) {\n if (leaderElector.isLeader) {\n return PROMISE_RESOLVED_VOID;\n }\n\n return new Promise(function (res) {\n var resolved = false;\n\n function finish() {\n if (resolved) {\n return;\n }\n\n resolved = true;\n leaderElector.broadcastChannel.removeEventListener('internal', whenDeathListener);\n res(true);\n } // try once now\n\n\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) {\n finish();\n }\n });\n /**\n * Try on fallbackInterval\n * @recursive\n */\n\n var tryOnFallBack = function tryOnFallBack() {\n return sleep(leaderElector._options.fallbackInterval).then(function () {\n if (leaderElector.isDead || resolved) {\n return;\n }\n\n if (leaderElector.isLeader) {\n finish();\n } else {\n return leaderElector.applyOnce(true).then(function () {\n if (leaderElector.isLeader) {\n finish();\n } else {\n tryOnFallBack();\n }\n });\n }\n });\n };\n\n tryOnFallBack(); // try when other leader dies\n\n var whenDeathListener = function whenDeathListener(msg) {\n if (msg.context === 'leader' && msg.action === 'death') {\n leaderElector.hasLeader = false;\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) {\n finish();\n }\n });\n }\n };\n\n leaderElector.broadcastChannel.addEventListener('internal', whenDeathListener);\n\n leaderElector._lstns.push(whenDeathListener);\n });\n}\n/**\n * sends and internal message over the broadcast-channel\n */\n\n\nfunction _sendMessage(leaderElector, action) {\n var msgJson = {\n context: 'leader',\n action: action,\n token: leaderElector.token\n };\n return leaderElector.broadcastChannel.postInternal(msgJson);\n}\n\nexport function beLeader(leaderElector) {\n leaderElector.isLeader = true;\n leaderElector.hasLeader = true;\n var unloadFn = unloadAdd(function () {\n return leaderElector.die();\n });\n\n leaderElector._unl.push(unloadFn);\n\n var isLeaderListener = function isLeaderListener(msg) {\n if (msg.context === 'leader' && msg.action === 'apply') {\n _sendMessage(leaderElector, 'tell');\n }\n\n if (msg.context === 'leader' && msg.action === 'tell' && !leaderElector._dpLC) {\n /**\n * another instance is also leader!\n * This can happen on rare events\n * like when the CPU is at 100% for long time\n * or the tabs are open very long and the browser throttles them.\n * @link https://github.com/pubkey/broadcast-channel/issues/414\n * @link https://github.com/pubkey/broadcast-channel/issues/385\n */\n leaderElector._dpLC = true;\n\n leaderElector._dpL(); // message the lib user so the app can handle the problem\n\n\n _sendMessage(leaderElector, 'tell'); // ensure other leader also knows the problem\n\n }\n };\n\n leaderElector.broadcastChannel.addEventListener('internal', isLeaderListener);\n\n leaderElector._lstns.push(isLeaderListener);\n\n return _sendMessage(leaderElector, 'tell');\n}\n\nfunction fillOptionsWithDefaults(options, channel) {\n if (!options) options = {};\n options = JSON.parse(JSON.stringify(options));\n\n if (!options.fallbackInterval) {\n options.fallbackInterval = 3000;\n }\n\n if (!options.responseTime) {\n options.responseTime = channel.method.averageResponseTime(channel.options);\n }\n\n return options;\n}\n\nexport function createLeaderElection(channel, options) {\n if (channel._leaderElector) {\n throw new Error('BroadcastChannel already has a leader-elector');\n }\n\n options = fillOptionsWithDefaults(options, channel);\n var elector = new LeaderElection(channel, options);\n\n channel._befC.push(function () {\n return elector.die();\n });\n\n channel._leaderElector = elector;\n return elector;\n}","import { IContainer, injectContainer } from '../../interface/container';\n\nexport interface ICallbackController {\n subscribe: (\n callback: Callback,\n event: Event,\n key?: string,\n ) => void;\n unsubscribe: (\n callback: Callback,\n event: Event,\n ) => void;\n search: (\n subscriberKey: string,\n event: Event,\n ) => Array | undefined;\n eventListeners: (\n event: Event,\n ) => Array;\n}\n\nexport interface ICallbackBuilder {\n build: () => ICallbackController;\n}\n\nconst TYPES = {\n ICallbackBuilder: Symbol.for('ICallbackBuilder'),\n};\n\nexport function injectCallbackBuilder(container: IContainer = injectContainer()): ICallbackBuilder {\n return container.get(TYPES.ICallbackBuilder);\n}\n\nexport function bindCallbackBuilder(\n val: ICallbackBuilder,\n container: IContainer = injectContainer(),\n) {\n return container.bind(TYPES.ICallbackBuilder, val);\n}\n\nexport function unbindCallbackBuilder(container: IContainer = injectContainer()) {\n return container.remove(TYPES.ICallbackBuilder);\n}\n","import { BroadcastChannel } from 'broadcast-channel';\nimport type { IContainer } from '../../interface/container';\nimport { ILog, injectLog } from '../../interface/log';\nimport { injectCallbackBuilder } from '../interface/callback';\nimport {\n IChannel,\n IChannelController,\n IChannelEventMap,\n IChannelID,\n IChannelStatus,\n} from '../interface/channel';\n\nfunction createChannel(container: IContainer, id: IChannelID, logger: ILog): IChannel {\n const callbackRegistry = injectCallbackBuilder(container).build();\n\n const handler = new BroadcastChannel(id, {\n type: 'idb',\n });\n\n handler.onmessage = (message: unknown) => {\n const callbacks = callbackRegistry.eventListeners('NewMessage');\n for (const callback of callbacks) {\n callback(message);\n }\n };\n\n const channel = {\n id: () => id,\n status: () => (handler.isClosed ? IChannelStatus.Expired : IChannelStatus.Active),\n postMessage: (message: unknown) => {\n handler.postMessage(message).catch(error => {\n logger.error(`Failed to post message, error: ${JSON.stringify(error)}`);\n });\n },\n addEventListener: <\n Event extends keyof IChannelEventMap,\n Callback extends IChannelEventMap[Event],\n >(\n key: string,\n event: Event,\n callback: Callback,\n ) => {\n callbackRegistry.subscribe(callback, event, key);\n },\n removeListener: <\n Event extends keyof IChannelEventMap,\n Callback extends IChannelEventMap[Event],\n >(\n key: string,\n event: Event,\n ) => {\n const callbacks = callbackRegistry.search(key, event) as Array;\n for (const callback of callbacks) {\n callback && callbackRegistry.unsubscribe(callback, event);\n }\n },\n terminate: () => {\n handler\n .close()\n .then(() => {\n const callbacks = callbackRegistry.eventListeners('StatusChanged');\n for (const callback of callbacks) {\n callback(IChannelStatus.Expired);\n }\n })\n .catch(error =>\n logger.error(`Failed to terminate connection: ${JSON.stringify(error)}`),\n );\n },\n };\n\n return channel;\n}\n\nfunction channel(container: IContainer): IChannelController {\n const logger = injectLog(container);\n\n const records: Record = {};\n\n const controller = {\n channel: (key: IChannelID) => {\n const channel = records[key] ?? createChannel(container, key, logger);\n records[key] = channel;\n return channel;\n },\n all: () => Object.values(records),\n };\n\n return controller;\n}\n\nexport default channel;\n","const _clamp = (value: number, min: number, max: number) => Math.max(Math.min(value, max), min);\n\nconst DEFAULT_FILE_SIZE = 1024 * 1024 * 50; /* 50MiB */\n\nconst _responseWithProgressCallbacks = async (\n response: Response & { body: ReadableStream },\n callback?: (progress: number) => void,\n): Promise => {\n const contentLength = parseInt(\n response.headers.get('Content-Length') ?? `${DEFAULT_FILE_SIZE}`,\n );\n\n const stream = new ReadableStream({\n start: async controller => {\n const reader = response.body.getReader();\n let readerIndex = 0;\n let lastProgress = 0;\n\n while (readerIndex < contentLength) {\n const { done, value } = await reader.read().catch(error => {\n controller.error(error);\n return { done: true, value: null };\n });\n\n readerIndex += value?.length ?? 0;\n\n if (done) {\n readerIndex = contentLength;\n }\n\n const newProgress = _clamp(readerIndex / contentLength, 0, 1);\n const progressDelta = newProgress - lastProgress;\n\n /* Message 1% delta min */\n if (callback && progressDelta > 0.1) {\n callback(newProgress);\n lastProgress = newProgress;\n }\n\n controller.enqueue(value);\n }\n\n controller.close();\n },\n });\n\n return new Response(stream, response);\n};\n\nconst fetchWithProgress = async (\n request: Request,\n timeout?: number,\n callback?: (progress: number) => void,\n): Promise => {\n const controller = new AbortController();\n\n const timeoutId = setTimeout(() => controller.abort(), timeout ?? 300 * 1000);\n\n /* https://github.com/GoogleChrome/workbox/issues/1796 */\n const response = await fetch(\n request,\n request.mode === 'navigate' ? undefined : { signal: controller.signal },\n );\n\n const hasProgressSupport = response.body !== null;\n const isNotCorsRequest =\n request.mode !==\n 'cors'; /* Cannot set `Response.type` in `new Response` hence CORS is not supported */\n\n const responseReturn =\n hasProgressSupport && !isNotCorsRequest\n ? _responseWithProgressCallbacks(\n response as Response & { body: ReadableStream },\n callback,\n )\n : response;\n\n clearTimeout(timeoutId);\n\n return responseReturn;\n};\n\nconst module = {\n fetchWithProgress,\n};\n\nexport default module;\n","export enum LOG_LEVEL {\n MILESTONE = 1,\n TRACE = 2,\n VERBOSE = 3,\n INFO = 4,\n WARN = 5,\n ERROR = 6,\n FATAL = 7,\n ASSERT = 8,\n}\n\nexport interface ILogger {\n assert: (condition: boolean | string | number, message: string) => void;\n log: (logLevel: LOG_LEVEL, message: string) => void;\n}\n","import { ILogger, LOG_LEVEL } from './log.if';\n\nconst logMap: Record void> = {\n [LOG_LEVEL.MILESTONE]: message => console.info(message),\n [LOG_LEVEL.TRACE]: message => console.debug(message),\n [LOG_LEVEL.VERBOSE]: message => console.debug(message),\n [LOG_LEVEL.INFO]: message => console.info(message),\n [LOG_LEVEL.WARN]: message => console.warn(message),\n [LOG_LEVEL.ERROR]: message => console.error(message),\n [LOG_LEVEL.FATAL]: message => console.error(message),\n [LOG_LEVEL.ASSERT]: message => console.assert(true, message),\n};\n\nfunction _consoleLog(logLevel: LOG_LEVEL, message: string) {\n logMap[logLevel](message);\n}\n\nfunction logger(levels: Array): ILogger {\n const logger: ILogger = {\n assert: (condition, message) => condition && _consoleLog(LOG_LEVEL.ASSERT, message),\n log: (level, msg) => _consoleLog(level, msg),\n };\n\n return logger;\n}\n\nexport default logger;\n","import type { ILog } from '../../interface/log';\nimport consoleLoggerInstantiator from './log.console';\nimport { ILogger, LOG_LEVEL } from './log.if';\n\nconst ENV_IS_DEVELOPMENT = process.env['NODE_ENV'] !== 'production';\n\nconst LOG_LEVEL_DEV = [\n LOG_LEVEL.MILESTONE,\n LOG_LEVEL.TRACE,\n LOG_LEVEL.VERBOSE,\n LOG_LEVEL.INFO,\n LOG_LEVEL.WARN,\n LOG_LEVEL.ERROR,\n LOG_LEVEL.FATAL,\n LOG_LEVEL.ASSERT,\n];\nconst LOG_LEVEL_PROD = [LOG_LEVEL.WARN, LOG_LEVEL.ERROR, LOG_LEVEL.FATAL, LOG_LEVEL.ASSERT];\n\nconst _logLevels = (): Array => (ENV_IS_DEVELOPMENT ? LOG_LEVEL_DEV : LOG_LEVEL_PROD);\n\nconst _buildLoggers = (logLevels: Array): Array => [\n consoleLoggerInstantiator(logLevels),\n];\n\nfunction logger(): ILog {\n const logLevels = _logLevels();\n const loggers: Array = _buildLoggers(logLevels);\n\n const isLogLevelEnabled = (logLevel: LOG_LEVEL) => logLevels.includes(logLevel);\n\n const logAll = (logLevel: LOG_LEVEL, message: string) => {\n for (let i = 0; i < loggers.length; i++) {\n loggers[i].log(logLevel, message);\n }\n };\n\n const assertAll = (condition: boolean | string | number, message: string) => {\n for (let i = 0; i < loggers.length; i++) {\n loggers[i].assert(condition, message);\n }\n };\n\n const logNoop = (_: string) => {\n /* noop */\n };\n\n const logAssertNoop = (_: boolean | string | number, __: string | undefined) => {\n /* noop */\n };\n\n const module: ILog = {\n milestone: isLogLevelEnabled(LOG_LEVEL.MILESTONE)\n ? (msg: string) => logAll(LOG_LEVEL.MILESTONE, msg)\n : logNoop,\n verbose: isLogLevelEnabled(LOG_LEVEL.VERBOSE)\n ? (msg: string) => logAll(LOG_LEVEL.VERBOSE, msg)\n : logNoop,\n trace: isLogLevelEnabled(LOG_LEVEL.TRACE)\n ? (msg: string) => logAll(LOG_LEVEL.TRACE, msg)\n : logNoop,\n info: isLogLevelEnabled(LOG_LEVEL.INFO)\n ? (msg: string) => logAll(LOG_LEVEL.INFO, msg)\n : logNoop,\n warn: isLogLevelEnabled(LOG_LEVEL.WARN)\n ? (msg: string) => logAll(LOG_LEVEL.WARN, msg)\n : logNoop,\n warning: isLogLevelEnabled(LOG_LEVEL.WARN)\n ? (msg: string) => logAll(LOG_LEVEL.WARN, msg)\n : logNoop,\n error: isLogLevelEnabled(LOG_LEVEL.ERROR)\n ? (msg: string) => logAll(LOG_LEVEL.ERROR, msg)\n : logNoop,\n fatal: isLogLevelEnabled(LOG_LEVEL.FATAL)\n ? (msg: string) => logAll(LOG_LEVEL.FATAL, msg)\n : logNoop,\n assert: isLogLevelEnabled(LOG_LEVEL.ASSERT)\n ? (condition: boolean | string | number, message: string | undefined) =>\n assertAll(condition, message ?? 'Assertion check failed')\n : logAssertNoop,\n };\n\n return module;\n}\n\nexport default logger;\n","import type { IRegexSerializer } from '../interface/regex';\n\nfunction _replacer(key: unknown, value: any) {\n if (value instanceof RegExp) return '__REGEXP ' + value.toString();\n else return value;\n}\n\nfunction _reviver(key: unknown, value: any) {\n if (value.toString().indexOf('__REGEXP ') === 0) {\n const m = value.split('__REGEXP ')[1].match(/\\/(.*)\\/(.*)?/);\n return new RegExp(m[1], m[2] || '');\n } else {\n return value;\n }\n}\n\nfunction stringify(regex: RegExp): string {\n return JSON.stringify(regex, _replacer, 2);\n}\n\nfunction parse(regex: string): RegExp {\n return JSON.parse(regex, _reviver);\n}\n\nconst module: IRegexSerializer = {\n stringify,\n parse,\n};\n\nexport default module;\n","import type { IRequestSerialized, IRequestSerializer } from '../interface/requestSerializer';\n\nfunction _serializeHeaders(headers: Headers): any {\n const serialized: Record = {};\n\n for (const pair of (headers as any).entries()) {\n const key = pair[0];\n const value = pair[1];\n serialized[key] = value;\n }\n\n return serialized;\n}\n\nfunction serializeRequest(request: Request): Promise {\n const serialized: IRequestSerialized = {\n url: request.url,\n headers: _serializeHeaders(request.headers),\n method: request.method,\n mode: request.mode,\n credentials: request.credentials,\n cache: request.cache,\n redirect: request.redirect,\n referrer: request.referrer,\n referrerPolicy: request.referrerPolicy,\n isHistoryNavigation:\n (request as unknown as IRequestSerialized)?.isHistoryNavigation || false,\n isReloadNavigation: (request as unknown as IRequestSerialized)?.isReloadNavigation || false,\n integrity: request.integrity,\n destination: request.destination,\n body: '',\n };\n\n /* Only if method is not `GET` or `HEAD` is the request allowed to have body. */\n if (request.method === 'GET') {\n return Promise.resolve(serialized);\n }\n if (request.method === 'HEAD') {\n return Promise.resolve(serialized);\n } else {\n return request\n .clone()\n .text()\n .then(function (body) {\n serialized.body = body;\n return Promise.resolve(serialized);\n });\n }\n}\n\nfunction deserializeRequest(requestIn: IRequestSerialized): Request {\n const request = new Request('', requestIn);\n return request;\n}\n\nfunction serializer(): IRequestSerializer {\n const val: IRequestSerializer = {\n serialize: serializeRequest,\n parse: deserializeRequest,\n };\n\n return val;\n}\n\nexport default serializer;\n","import type { IResponseSerialized, IResponseSerializer } from '../interface/responseSerializer';\n\nfunction _serializeHeaders(headers: Headers): any {\n const serialized: Record = {};\n\n headers.forEach((value, key) => {\n serialized[key] = value;\n });\n\n return serialized;\n}\n\nfunction serializeResponse(response: Response): Promise {\n const serialized = {\n headers: _serializeHeaders(response.headers),\n status: response.status,\n statusText: response.statusText,\n body: '',\n };\n\n return response\n .clone()\n .text()\n .then(function (body) {\n serialized.body = body;\n return Promise.resolve(serialized);\n });\n}\n\nfunction deserializeResponse(data: IResponseSerialized): Response {\n const response = new Response(data.body, data);\n return response;\n}\n\nfunction serializer(): IResponseSerializer {\n const val: IResponseSerializer = {\n serialize: serializeResponse,\n parse: deserializeResponse,\n };\n\n return val;\n}\n\nexport default serializer;\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 cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = 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 promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\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 // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\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 // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\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(cursorRequestMap.get(this));\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\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\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));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\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', () => blocked());\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\nexport { deleteDB, openDB };\n","import { openDB } from 'idb';\nimport type { IContainer } from '../../interface/container';\nimport { ISettingsKey, ISettingsStorage } from '../interface/settingsStorage';\n\nconst KEY_DB_NAME = 'worker-kv-storage';\nconst KEY_STORE_NAME = 'worker-storage';\n\nconst _dbOpen = openDB(KEY_DB_NAME, 1, {\n upgrade(db) {\n db.createObjectStore(KEY_STORE_NAME);\n },\n});\n\nfunction storage(container: IContainer): ISettingsStorage {\n return {\n get: async (key: ISettingsKey) => {\n const db = await _dbOpen;\n return db.get(KEY_STORE_NAME, key);\n },\n set: async (key: ISettingsKey, val: unknown) => {\n const db = await _dbOpen;\n await db.put(KEY_STORE_NAME, val, key);\n },\n delete: async (key: ISettingsKey) => (await _dbOpen).delete(KEY_STORE_NAME, key),\n clear: async () => (await _dbOpen).clear(KEY_STORE_NAME),\n keys: async () => {\n const db = await _dbOpen;\n const keys = await db.getAllKeys(KEY_STORE_NAME);\n return keys as ISettingsKey[];\n },\n };\n}\n\nexport default storage;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../../_version.js';\nexport const messages = {\n 'invalid-value': ({ paramName, validValueDescription, value }) => {\n if (!paramName || !validValueDescription) {\n throw new Error(`Unexpected input to 'invalid-value' error.`);\n }\n return (`The '${paramName}' parameter was given a value with an ` +\n `unexpected value. ${validValueDescription} Received a value of ` +\n `${JSON.stringify(value)}.`);\n },\n 'not-an-array': ({ moduleName, className, funcName, paramName }) => {\n if (!moduleName || !className || !funcName || !paramName) {\n throw new Error(`Unexpected input to 'not-an-array' error.`);\n }\n return (`The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className}.${funcName}()' must be an array.`);\n },\n 'incorrect-type': ({ expectedType, paramName, moduleName, className, funcName, }) => {\n if (!expectedType || !paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-type' error.`);\n }\n const classNameStr = className ? `${className}.` : '';\n return (`The parameter '${paramName}' passed into ` +\n `'${moduleName}.${classNameStr}` +\n `${funcName}()' must be of type ${expectedType}.`);\n },\n 'incorrect-class': ({ expectedClassName, paramName, moduleName, className, funcName, isReturnValueProblem, }) => {\n if (!expectedClassName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-class' error.`);\n }\n const classNameStr = className ? `${className}.` : '';\n if (isReturnValueProblem) {\n return (`The return value from ` +\n `'${moduleName}.${classNameStr}${funcName}()' ` +\n `must be an instance of class ${expectedClassName}.`);\n }\n return (`The parameter '${paramName}' passed into ` +\n `'${moduleName}.${classNameStr}${funcName}()' ` +\n `must be an instance of class ${expectedClassName}.`);\n },\n 'missing-a-method': ({ expectedMethod, paramName, moduleName, className, funcName, }) => {\n if (!expectedMethod ||\n !paramName ||\n !moduleName ||\n !className ||\n !funcName) {\n throw new Error(`Unexpected input to 'missing-a-method' error.`);\n }\n return (`${moduleName}.${className}.${funcName}() expected the ` +\n `'${paramName}' parameter to expose a '${expectedMethod}' method.`);\n },\n 'add-to-cache-list-unexpected-type': ({ entry }) => {\n return (`An unexpected entry was passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` +\n `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` +\n `strings with one or more characters, objects with a url property or ` +\n `Request objects.`);\n },\n 'add-to-cache-list-conflicting-entries': ({ firstEntry, secondEntry }) => {\n if (!firstEntry || !secondEntry) {\n throw new Error(`Unexpected input to ` + `'add-to-cache-list-duplicate-entries' error.`);\n }\n return (`Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${firstEntry} but different revision details. Workbox is ` +\n `unable to cache and version the asset correctly. Please remove one ` +\n `of the entries.`);\n },\n 'plugin-error-request-will-fetch': ({ thrownErrorMessage }) => {\n if (!thrownErrorMessage) {\n throw new Error(`Unexpected input to ` + `'plugin-error-request-will-fetch', error.`);\n }\n return (`An error was thrown by a plugins 'requestWillFetch()' method. ` +\n `The thrown error message was: '${thrownErrorMessage}'.`);\n },\n 'invalid-cache-name': ({ cacheNameId, value }) => {\n if (!cacheNameId) {\n throw new Error(`Expected a 'cacheNameId' for error 'invalid-cache-name'`);\n }\n return (`You must provide a name containing at least one character for ` +\n `setCacheDetails({${cacheNameId}: '...'}). Received a value of ` +\n `'${JSON.stringify(value)}'`);\n },\n 'unregister-route-but-not-found-with-method': ({ method }) => {\n if (!method) {\n throw new Error(`Unexpected input to ` +\n `'unregister-route-but-not-found-with-method' error.`);\n }\n return (`The route you're trying to unregister was not previously ` +\n `registered for the method type '${method}'.`);\n },\n 'unregister-route-route-not-registered': () => {\n return (`The route you're trying to unregister was not previously ` +\n `registered.`);\n },\n 'queue-replay-failed': ({ name }) => {\n return `Replaying the background sync queue '${name}' failed.`;\n },\n 'duplicate-queue-name': ({ name }) => {\n return (`The Queue name '${name}' is already being used. ` +\n `All instances of backgroundSync.Queue must be given unique names.`);\n },\n 'expired-test-without-max-age': ({ methodName, paramName }) => {\n return (`The '${methodName}()' method can only be used when the ` +\n `'${paramName}' is used in the constructor.`);\n },\n 'unsupported-route-type': ({ moduleName, className, funcName, paramName }) => {\n return (`The supplied '${paramName}' parameter was an unsupported type. ` +\n `Please check the docs for ${moduleName}.${className}.${funcName} for ` +\n `valid input types.`);\n },\n 'not-array-of-class': ({ value, expectedClass, moduleName, className, funcName, paramName, }) => {\n return (`The supplied '${paramName}' parameter must be an array of ` +\n `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` +\n `Please check the call to ${moduleName}.${className}.${funcName}() ` +\n `to fix the issue.`);\n },\n 'max-entries-or-age-required': ({ moduleName, className, funcName }) => {\n return (`You must define either config.maxEntries or config.maxAgeSeconds` +\n `in ${moduleName}.${className}.${funcName}`);\n },\n 'statuses-or-headers-required': ({ moduleName, className, funcName }) => {\n return (`You must define either config.statuses or config.headers` +\n `in ${moduleName}.${className}.${funcName}`);\n },\n 'invalid-string': ({ moduleName, funcName, paramName }) => {\n if (!paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'invalid-string' error.`);\n }\n return (`When using strings, the '${paramName}' parameter must start with ` +\n `'http' (for cross-origin matches) or '/' (for same-origin matches). ` +\n `Please see the docs for ${moduleName}.${funcName}() for ` +\n `more info.`);\n },\n 'channel-name-required': () => {\n return (`You must provide a channelName to construct a ` +\n `BroadcastCacheUpdate instance.`);\n },\n 'invalid-responses-are-same-args': () => {\n return (`The arguments passed into responsesAreSame() appear to be ` +\n `invalid. Please ensure valid Responses are used.`);\n },\n 'expire-custom-caches-only': () => {\n return (`You must provide a 'cacheName' property when using the ` +\n `expiration plugin with a runtime caching strategy.`);\n },\n 'unit-must-be-bytes': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`);\n }\n return (`The 'unit' portion of the Range header must be set to 'bytes'. ` +\n `The Range header provided was \"${normalizedRangeHeader}\"`);\n },\n 'single-range-only': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'single-range-only' error.`);\n }\n return (`Multiple ranges are not supported. Please use a single start ` +\n `value, and optional end value. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`);\n },\n 'invalid-range-values': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'invalid-range-values' error.`);\n }\n return (`The Range header is missing both start and end values. At least ` +\n `one of those values is needed. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`);\n },\n 'no-range-header': () => {\n return `No Range header was found in the Request provided.`;\n },\n 'range-not-satisfiable': ({ size, start, end }) => {\n return (`The start (${start}) and end (${end}) values in the Range are ` +\n `not satisfiable by the cached response, which is ${size} bytes.`);\n },\n 'attempt-to-cache-non-get-request': ({ url, method }) => {\n return (`Unable to cache '${url}' because it is a '${method}' request and ` +\n `only 'GET' requests can be cached.`);\n },\n 'cache-put-with-no-response': ({ url }) => {\n return (`There was an attempt to cache '${url}' but the response was not ` +\n `defined.`);\n },\n 'no-response': ({ url, error }) => {\n let message = `The strategy could not generate a response for '${url}'.`;\n if (error) {\n message += ` The underlying error is ${error}.`;\n }\n return message;\n },\n 'bad-precaching-response': ({ url, status }) => {\n return (`The precaching request for '${url}' failed` +\n (status ? ` with an HTTP status of ${status}.` : `.`));\n },\n 'non-precached-url': ({ url }) => {\n return (`createHandlerBoundToURL('${url}') was called, but that URL is ` +\n `not precached. Please pass in a URL that is precached instead.`);\n },\n 'add-to-cache-list-conflicting-integrities': ({ url }) => {\n return (`Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${url} with different integrity values. Please remove one of them.`);\n },\n 'missing-precache-entry': ({ cacheName, url }) => {\n return `Unable to find a precached response in ${cacheName} for ${url}.`;\n },\n 'cross-origin-copy-response': ({ origin }) => {\n return (`workbox-core.copyResponse() can only be used with same-origin ` +\n `responses. It was passed a response with origin ${origin}.`);\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = process.env.NODE_ENV === 'production' ? fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return { handle: handler };\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a FetchEvent through one or more\n * [Routes]{@link module:workbox-routing.Route} responding with a Request if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof module:workbox-routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n this._defaultHandlerMap = new Map();\n }\n /**\n * @return {Map>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n }));\n }\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n // event.data is type 'any'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (event.data && event.data.type === 'CACHE_URLS') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { payload } = event.data;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request, event });\n // TODO(philipwalton): TypeScript errors without this typecast for\n // some reason (probably a bug). The real type here should work but\n // doesn't: `Array | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n void requestPromises.then(() => event.ports[0].postMessage(true));\n }\n }\n }));\n }\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle.\n * @param {ExtendableEvent} options.event The event that triggered the\n * request.\n * @return {Promise|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({ request, event, }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n const url = new URL(request.url, location.href);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n const sameOrigin = url.origin === location.origin;\n const { params, route } = this.findMatchingRoute({\n event,\n request,\n sameOrigin,\n url,\n });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([`Found a route to handle this request:`, route]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`,\n params,\n ]);\n }\n }\n }\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n const method = request.method;\n if (!handler && this._defaultHandlerMap.has(method)) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler for ${method}.`);\n }\n handler = this._defaultHandlerMap.get(method);\n }\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n // Get route's catch handler, if it exists\n const catchHandler = route && route.catchHandler;\n if (responsePromise instanceof Promise &&\n (this._catchHandler || catchHandler)) {\n responsePromise = responsePromise.catch(async (err) => {\n // If there's a route catch handler, process that first\n if (catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n try {\n return await catchHandler.handle({ url, request, event, params });\n }\n catch (catchErr) {\n if (catchErr instanceof Error) {\n err = catchErr;\n }\n }\n }\n if (this._catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\n }\n throw err;\n });\n }\n return responsePromise;\n }\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {boolean} options.sameOrigin The result of comparing `url.origin`\n * against the current origin.\n * @param {Request} options.request The request to match.\n * @param {Event} options.event The corresponding event.\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({ url, sameOrigin, request, event, }) {\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n // route.match returns type any, not possible to change right now.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const matchResult = route.match({ url, sameOrigin, request, event });\n if (matchResult) {\n if (process.env.NODE_ENV !== 'production') {\n // Warn developers that using an async matchCallback is almost always\n // not the right thing to do.\n if (matchResult instanceof Promise) {\n logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +\n `matchCallback function was used. Please convert the ` +\n `following route to use a synchronous matchCallback function:`, route);\n }\n }\n // See https://github.com/GoogleChrome/workbox/issues/2079\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params = matchResult;\n if (Array.isArray(params) && params.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if (matchResult.constructor === Object && // eslint-disable-line\n Object.keys(matchResult).length === 0) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\n else if (typeof matchResult === 'boolean') {\n // For the boolean value true (rather than just something truth-y),\n // don't set params.\n // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n params = undefined;\n }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to associate with this\n * default handler. Each method has its own default.\n */\n setDefaultHandler(handler, method = defaultMethod) {\n this._defaultHandlerMap.set(method, normalizeHandler(handler));\n }\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n /**\n * Registers a route with the router.\n *\n * @param {module:workbox-routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n /**\n * Unregisters a route with the router.\n *\n * @param {module:workbox-routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError('unregister-route-but-not-found-with-method', {\n method: route.method,\n });\n }\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nlet defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","import { RouteHandlerObject } from 'workbox-core/types.js';\nimport { Route } from 'workbox-routing';\nimport { getOrCreateDefaultRouter } from 'workbox-routing/utils/getOrCreateDefaultRouter';\nimport { Strategy } from 'workbox-strategies';\n\ndeclare const self: ServiceWorkerGlobalScope;\n\nfunction _isRouteHandlerObject(object: unknown): object is RouteHandlerObject {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return !isNullOrUndefined(record?.handle) && typeof record?.handle === 'function';\n}\n\nfunction _isStrategy(object: unknown): object is Strategy {\n if (!_isRouteHandlerObject(object)) {\n return false;\n }\n\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return !isNullOrUndefined(record?.cacheName) && !isNullOrUndefined(record?.plugins);\n}\n\nfunction findResponderStrategy(urlFetch: string, event?: ExtendableEvent): Strategy | null {\n const router = getOrCreateDefaultRouter();\n\n const request = new Request(urlFetch);\n const url = new URL(urlFetch, self.location.href);\n const sameOrigin = url.origin === self.location.origin;\n\n const routeMatchOptions = {\n request,\n url,\n sameOrigin,\n event: event ?? new ExtendableEvent('fetch'),\n };\n\n const { route } = router.findMatchingRoute(routeMatchOptions);\n\n if (route?.handler && _isStrategy(route?.handler)) {\n return route.handler;\n }\n\n return null;\n}\n\nfunction routes(): Array {\n const router = getOrCreateDefaultRouter();\n\n const routes = Array.from(router.routes.entries()).flatMap(entry => entry[1]);\n\n return routes;\n}\n\nconst module = {\n findResponderStrategy,\n routes,\n};\n\nexport default module;\n","import { unzip, ZipEntry, ZipInfo } from 'unzipit';\nimport type { ZipBinaryStorageType } from '../interface/zip';\n\nfunction _zipFile(srcData: Blob | ArrayBuffer): Promise {\n return unzip(srcData);\n}\n\nfunction _isBlob(object: unknown): object is Blob {\n return (\n object instanceof Blob ||\n ['[object Blob]', '[object File]'].indexOf(Object.prototype.toString.call(object)) !== -1\n );\n}\n\nfunction _isArrayBuffer(object: unknown): object is ArrayBuffer {\n return object instanceof ArrayBuffer || object instanceof Buffer;\n}\n\nfunction _unzipEntry(srcData: T, entry: ZipEntry): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n if (_isBlob(srcData)) {\n const result = await entry.blob();\n resolve(result as T);\n } else if (_isArrayBuffer(srcData)) {\n const result = await entry.arrayBuffer();\n resolve(result as T);\n } else {\n reject(new Error(`unknown zip src-data type ${srcData}`));\n }\n } catch (error: any) {\n reject(error);\n }\n });\n}\n\nfunction _unzipFile(srcData: T, fileName: string): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const zipFile = await _zipFile(srcData);\n\n const matchedEntries = Object.entries(zipFile.entries)\n .filter(entry => entry[1].name === fileName)\n .map(val => val[1]);\n\n if (matchedEntries.length === 0) {\n reject('No matching files found');\n } else {\n const result = await _unzipEntry(srcData, matchedEntries[0]);\n resolve(result);\n }\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction _unzipAll(srcData: T): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n const zipFile = await _zipFile(srcData);\n\n const items: Record = {};\n\n Object.entries(zipFile.entries).forEach(async function (entry) {\n const data = await _unzipEntry(srcData, entry[1]);\n items[entry[1].name] = data;\n });\n\n resolve(items);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction _listings(blobData: ZipBinaryStorageType): Promise> {\n return new Promise(async function (resolve, reject) {\n try {\n const zipFile = await _zipFile(blobData);\n const entries = Object.entries(zipFile.entries).map(entry => entry[1].name);\n resolve(entries);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n unzipFile: _unzipFile,\n unzipAll: _unzipAll,\n listings: _listings,\n};\n\nexport default module;\n","import type { IContainer } from '../interface/container';\nimport { bindLog, injectLog, unbindLog } from '../interface/log';\nimport cache from './impl/cache';\nimport callback from './impl/callback';\nimport channel from './impl/channel';\nimport fetchHelper from './impl/fetch';\nimport logger from './impl/log';\nimport regexJSON from './impl/regex';\nimport requestJSON from './impl/requestJSON';\nimport responseJSON from './impl/responseJSON';\nimport kvStorage from './impl/settingsStorage';\nimport workboxUtils from './impl/workboxUtils';\nimport zip from './impl/zip';\nimport { bindCacheStorage, injectCacheStorage, unbindCacheStorage } from './interface/cache';\nimport {\n bindCallbackBuilder,\n injectCallbackBuilder,\n unbindCallbackBuilder,\n} from './interface/callback';\nimport {\n bindChannelController,\n injectChannelController,\n unbindChannelController,\n} from './interface/channel';\nimport { bindFetchHelper, injectFetchHelper, unbindFetchHelper } from './interface/fetch';\nimport {\n bindRegexSerializer,\n injectRegexSerializer,\n unbindRegexSerializer,\n} from './interface/regex';\nimport {\n bindRequestSerializer,\n injectRequestSerializer,\n unbindRequestSerializer,\n} from './interface/requestSerializer';\nimport {\n bindResponseSerializer,\n injectResponseSerializer,\n unbindResponseSerializer,\n} from './interface/responseSerializer';\nimport {\n bindSettingsStorage,\n injectSettingsStorage,\n unbindSettingsStorage,\n} from './interface/settingsStorage';\nimport { bindWorkboxUtils, injectWorkboxUtils, unbindWorkboxUtils } from './interface/workboxUtils';\nimport { bindZip, injectZip, IZip, unbindZip } from './interface/zip';\n\nconst bindJobs: Array<{\n bind: (container: IContainer) => void;\n remove: (container: IContainer) => void;\n expose: (srcContainer: IContainer, dstContainer: IContainer) => void;\n}> = [\n {\n bind: (container: IContainer) => bindCallbackBuilder(callback(container), container),\n remove: (container: IContainer) => unbindCallbackBuilder(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindCallbackBuilder(injectCallbackBuilder(srcContainer), dstContainer),\n },\n\n {\n bind: (container: IContainer) => bindChannelController(channel(container), container),\n remove: (container: IContainer) => unbindChannelController(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindChannelController(injectChannelController(srcContainer), dstContainer),\n },\n\n {\n bind: (container: IContainer) => bindCacheStorage(cache, container),\n remove: (container: IContainer) => unbindCacheStorage(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindCacheStorage(injectCacheStorage(srcContainer), dstContainer),\n },\n\n {\n bind: (container: IContainer) => bindFetchHelper(fetchHelper, container),\n remove: (container: IContainer) => unbindFetchHelper(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindFetchHelper(injectFetchHelper(srcContainer), dstContainer),\n },\n\n {\n bind: (container: IContainer) => bindSettingsStorage(kvStorage(container), container),\n remove: (container: IContainer) => unbindSettingsStorage(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindSettingsStorage(injectSettingsStorage(srcContainer), dstContainer),\n },\n\n {\n bind: (container: IContainer) => bindRegexSerializer(regexJSON, container),\n remove: (container: IContainer) => unbindRegexSerializer(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindRegexSerializer(injectRegexSerializer(srcContainer), dstContainer),\n },\n\n {\n bind: (container: IContainer) => bindRequestSerializer(requestJSON(), container),\n remove: (container: IContainer) => unbindRequestSerializer(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindRequestSerializer(injectRequestSerializer(srcContainer), dstContainer),\n },\n\n {\n bind: (container: IContainer) => bindResponseSerializer(responseJSON(), container),\n remove: (container: IContainer) => unbindResponseSerializer(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindResponseSerializer(injectResponseSerializer(srcContainer), dstContainer),\n },\n\n {\n bind: (container: IContainer) => bindLog(logger(), container),\n remove: (container: IContainer) => unbindLog(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindLog(injectLog(srcContainer), dstContainer),\n },\n\n {\n bind: (container: IContainer) => bindWorkboxUtils(workboxUtils, container),\n remove: (container: IContainer) => unbindWorkboxUtils(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindWorkboxUtils(injectWorkboxUtils(srcContainer), dstContainer),\n },\n\n {\n bind: (container: IContainer) => {\n let val: IZip | null = null;\n\n const resolver = () => {\n return new Promise(async function (resolve, reject) {\n let rejection = null;\n\n try {\n if (!val) {\n val = zip;\n }\n } catch (error) {\n rejection = error;\n }\n\n if (val) {\n resolve(val);\n } else {\n reject(rejection || 'Import failed for zip');\n }\n });\n };\n\n bindZip(resolver, container);\n },\n remove: (container: IContainer) => unbindZip(container),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindZip(() => injectZip(srcContainer), dstContainer),\n },\n];\n\nconst module = {\n bind: (container: IContainer) => bindJobs.forEach(binder => binder.bind(container)),\n unbind: (container: IContainer) => bindJobs.forEach(binder => binder.remove(container)),\n expose: (srcContainer: IContainer, dstContainer: IContainer) =>\n bindJobs.forEach(binder => binder.expose(srcContainer, dstContainer)),\n};\n\nexport default module;\n","import bindClient from './client/bind';\nimport { IContainer } from './interface/container';\nimport bindMessage from './message/bind';\nimport privateContainer from './private/container';\nimport bindUtil from './util/bind';\n\nexport interface IBinder {\n bind: (container: IContainer) => void;\n unbind: (container: IContainer) => void;\n expose: (srcContainer: IContainer, dstContainer: IContainer) => void;\n}\n\n/* list of binders sorted in order of installation */\nconst binders: Array<{ binder: IBinder; isPrivate: boolean }> = [\n {\n binder: bindClient,\n isPrivate: false,\n },\n {\n isPrivate: true,\n binder: bindUtil,\n },\n {\n isPrivate: true,\n binder: bindMessage,\n },\n];\n\nexport function bindAll(container: IContainer) {\n binders.forEach(binder => binder.binder.bind(container));\n}\n\nfunction setup(containerGlobal: IContainer) {\n const prvContainer = privateContainer(containerGlobal);\n\n /* bind all to private container */\n bindAll(prvContainer);\n\n /* expose (pre-bound instantiated values/objects) to parent global container from private\n container. This is to ensure both containers use the same object ref (if injectable is \n an instantiated value). */\n binders\n .filter(binder => !binder.isPrivate)\n .forEach(binder => binder.binder.expose(prvContainer, containerGlobal));\n}\n\nexport default setup;\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// THIS FILE WAS AUTOGENERATED\r\n/**\r\n * Defines the level of severity for the event.\r\n */\r\nexport var SeverityLevel;\r\n(function (SeverityLevel) {\r\n SeverityLevel[SeverityLevel[\"Verbose\"] = 0] = \"Verbose\";\r\n SeverityLevel[SeverityLevel[\"Information\"] = 1] = \"Information\";\r\n SeverityLevel[SeverityLevel[\"Warning\"] = 2] = \"Warning\";\r\n SeverityLevel[SeverityLevel[\"Error\"] = 3] = \"Error\";\r\n SeverityLevel[SeverityLevel[\"Critical\"] = 4] = \"Critical\";\r\n})(SeverityLevel || (SeverityLevel = {}));\r\n//# sourceMappingURL=SeverityLevel.js.map","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.delete(propOrOldValue)\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze(obj: T, deep?: boolean): T\nexport function freeze(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\trootState: ImmerState,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE],\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// Although the original test case doesn't seem valid anyway, so if this in the way we can turn the next line\n\t\t// back to each(result, ....)\n\t\teach(\n\t\t\tstate.type_ === ProxyType.Set ? new Set(result) : result,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\tif (scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\tstate.copy_![prop] === value &&\n\t\t\t// special case: NaN\n\t\t\ttypeof value !== \"number\" &&\n\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t(value !== undefined || prop in state.copy_)\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\treturn objectTraps.deleteProperty!.call(this, state[0], prop)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === NOTHING) return undefined\n\t\t\tif (result === undefined) result = base\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (\n\t\targ1: any,\n\t\targ2?: any,\n\t\targ3?: any\n\t): any => {\n\t\tif (typeof arg1 === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => arg1(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst nextState = this.produce(arg1, arg2, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\t\treturn [nextState, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft(value: T): Draft {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import type { Action, ActionCreator, StoreEnhancer } from 'redux'\r\nimport { compose } from 'redux'\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface EnhancerOptions {\r\n /**\r\n * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n */\r\n name?: string\r\n /**\r\n * action creators functions to be available in the Dispatcher.\r\n */\r\n actionCreators?: ActionCreator[] | { [key: string]: ActionCreator }\r\n /**\r\n * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n *\r\n * @default 500 ms.\r\n */\r\n latency?: number\r\n /**\r\n * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n *\r\n * @default 50\r\n */\r\n maxAge?: number\r\n /**\r\n * See detailed documentation at https://github.com/reduxjs/redux-devtools/blob/%40redux-devtools/extension%403.2.1/extension/docs/API/Arguments.md#serialize\r\n */\r\n serialize?:\r\n | boolean\r\n | {\r\n options?:\r\n | boolean\r\n | {\r\n date?: boolean\r\n regex?: boolean\r\n undefined?: boolean\r\n error?: boolean\r\n symbol?: boolean\r\n map?: boolean\r\n set?: boolean\r\n function?: boolean | Function\r\n }\r\n replacer?: (key: string, value: unknown) => unknown\r\n reviver?: (key: string, value: unknown) => unknown\r\n immutable?: unknown\r\n refs?: unknown[]\r\n }\r\n /**\r\n * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n */\r\n actionSanitizer?: (action: A, id: number) => A\r\n /**\r\n * function which takes `state` object and index as arguments, and should return `state` object back.\r\n */\r\n stateSanitizer?: (state: S, index: number) => S\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n */\r\n actionsBlacklist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n */\r\n actionsWhitelist?: string | string[]\r\n /**\r\n * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n * Use it as a more advanced version of `actionsBlacklist`/`actionsWhitelist` parameters.\r\n */\r\n predicate?: (state: S, action: A) => boolean\r\n /**\r\n * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n * Available only for Redux enhancer, for others use `autoPause`.\r\n *\r\n * @default true\r\n */\r\n shouldRecordChanges?: boolean\r\n /**\r\n * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n * If not specified, will commit when paused. Available only for Redux enhancer.\r\n *\r\n * @default \"@@PAUSED\"\"\r\n */\r\n pauseActionType?: string\r\n /**\r\n * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n *\r\n * @default false\r\n */\r\n autoPause?: boolean\r\n /**\r\n * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n * Available only for Redux enhancer.\r\n *\r\n * @default false\r\n */\r\n shouldStartLocked?: boolean\r\n /**\r\n * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n *\r\n * @default true\r\n */\r\n shouldHotReload?: boolean\r\n /**\r\n * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n *\r\n * @default false\r\n */\r\n shouldCatchErrors?: boolean\r\n /**\r\n * If you want to restrict the extension, specify the features you allow.\r\n * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n * Otherwise, you'll get/set the data right from the monitor part.\r\n */\r\n features?: {\r\n /**\r\n * start/pause recording of dispatched actions\r\n */\r\n pause?: boolean\r\n /**\r\n * lock/unlock dispatching actions and side effects\r\n */\r\n lock?: boolean\r\n /**\r\n * persist states on page reloading\r\n */\r\n persist?: boolean\r\n /**\r\n * export history of actions in a file\r\n */\r\n export?: boolean | 'custom'\r\n /**\r\n * import history of actions from a file\r\n */\r\n import?: boolean | 'custom'\r\n /**\r\n * jump back and forth (time travelling)\r\n */\r\n jump?: boolean\r\n /**\r\n * skip (cancel) actions\r\n */\r\n skip?: boolean\r\n /**\r\n * drag and drop actions in the history list\r\n */\r\n reorder?: boolean\r\n /**\r\n * dispatch custom actions or action creators\r\n */\r\n dispatch?: boolean\r\n /**\r\n * generate tests for the selected actions\r\n */\r\n test?: boolean\r\n }\r\n /**\r\n * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n * Defaults to false.\r\n */\r\n trace?: boolean | ((action: A) => string)\r\n /**\r\n * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n */\r\n traceLimit?: number\r\n}\r\n\r\ntype Compose = typeof compose\r\n\r\ninterface ComposeWithDevTools {\r\n (options: EnhancerOptions): Compose\r\n (...funcs: StoreEnhancer[]): StoreEnhancer\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const composeWithDevTools: ComposeWithDevTools =\r\n typeof window !== 'undefined' &&\r\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n : function () {\r\n if (arguments.length === 0) return undefined\r\n if (typeof arguments[0] === 'object') return compose\r\n return compose.apply(null, arguments as any as Function[])\r\n }\r\n\r\n/**\r\n * @public\r\n */\r\nexport const devToolsEnhancer: {\r\n (options: EnhancerOptions): StoreEnhancer\r\n} =\r\n typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n : function () {\r\n return function (noop) {\r\n return noop\r\n }\r\n }\r\n","/**\r\n * Returns true if the passed value is \"plain\" object, i.e. an object whose\r\n * prototype is the root `Object.prototype`. This includes objects created\r\n * using object literals, but not for instance for class instances.\r\n *\r\n * @param {any} value The value to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n *\r\n * @public\r\n */\r\nexport default function isPlainObject(value: unknown): value is object {\r\n if (typeof value !== 'object' || value === null) return false\r\n\r\n let proto = Object.getPrototypeOf(value)\r\n if (proto === null) return true\r\n\r\n let baseProto = proto\r\n while (Object.getPrototypeOf(baseProto) !== null) {\r\n baseProto = Object.getPrototypeOf(baseProto)\r\n }\r\n\r\n return proto === baseProto\r\n}\r\n","import type { Middleware } from 'redux'\r\n\r\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\r\n let elapsed = 0\r\n return {\r\n measureTime(fn: () => T): T {\r\n const started = Date.now()\r\n try {\r\n return fn()\r\n } finally {\r\n const finished = Date.now()\r\n elapsed += finished - started\r\n }\r\n },\r\n warnIfExceeded() {\r\n if (elapsed > maxDelay) {\r\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \r\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\r\nIt is disabled in production builds, so you don't need to worry about that.`)\r\n }\r\n },\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class MiddlewareArray<\r\n Middlewares extends Middleware[]\r\n> extends Array {\r\n constructor(...items: Middlewares)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, MiddlewareArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return MiddlewareArray as any\r\n }\r\n\r\n concat>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n\r\n concat>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new MiddlewareArray(...arr[0].concat(this))\r\n }\r\n return new MiddlewareArray(...arr.concat(this))\r\n }\r\n}\r\n","import type { Middleware, AnyAction } from 'redux'\r\nimport type { ThunkMiddleware } from 'redux-thunk'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware'\r\n/* PROD_START_REMOVE_UMD */\r\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware'\r\n/* PROD_STOP_REMOVE_UMD */\r\n\r\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware'\r\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware'\r\nimport type { ExcludeFromTuple } from './tsHelpers'\r\nimport { MiddlewareArray } from './utils'\r\n\r\nfunction isBoolean(x: any): x is boolean {\r\n return typeof x === 'boolean'\r\n}\r\n\r\ninterface ThunkOptions {\r\n extraArgument: E\r\n}\r\n\r\ninterface GetDefaultMiddlewareOptions {\r\n thunk?: boolean | ThunkOptions\r\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions\r\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions\r\n}\r\n\r\nexport type ThunkMiddlewareFor<\r\n S,\r\n O extends GetDefaultMiddlewareOptions = {}\r\n> = O extends {\r\n thunk: false\r\n}\r\n ? never\r\n : O extends { thunk: { extraArgument: infer E } }\r\n ? ThunkMiddleware\r\n : ThunkMiddleware\r\n\r\nexport type CurriedGetDefaultMiddleware = <\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n }\r\n>(\r\n options?: O\r\n) => MiddlewareArray], never>>\r\n\r\nexport function curryGetDefaultMiddleware<\r\n S = any\r\n>(): CurriedGetDefaultMiddleware {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options)\r\n }\r\n}\r\n\r\n/**\r\n * Returns any array containing the default middleware installed by\r\n * `configureStore()`. Useful if you want to configure your store with a custom\r\n * `middleware` array but still keep the default set.\r\n *\r\n * @return The default middleware used by `configureStore()`.\r\n *\r\n * @public\r\n *\r\n * @deprecated Prefer to use the callback notation for the `middleware` option in `configureStore`\r\n * to access a pre-typed `getDefaultMiddleware` instead.\r\n */\r\nexport function getDefaultMiddleware<\r\n S = any,\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n }\r\n>(\r\n options: O = {} as O\r\n): MiddlewareArray], never>> {\r\n const {\r\n thunk = true,\r\n immutableCheck = true,\r\n serializableCheck = true,\r\n } = options\r\n\r\n let middlewareArray = new MiddlewareArray()\r\n\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware)\r\n } else {\r\n middlewareArray.push(\r\n thunkMiddleware.withExtraArgument(thunk.extraArgument)\r\n )\r\n }\r\n }\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (immutableCheck) {\r\n /* PROD_START_REMOVE_UMD */\r\n let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createImmutableStateInvariantMiddleware(immutableOptions)\r\n )\r\n /* PROD_STOP_REMOVE_UMD */\r\n }\r\n\r\n if (serializableCheck) {\r\n let serializableOptions: SerializableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck\r\n }\r\n\r\n middlewareArray.push(\r\n createSerializableStateInvariantMiddleware(serializableOptions)\r\n )\r\n }\r\n }\r\n\r\n return middlewareArray as any\r\n}\r\n","import type {\r\n Reducer,\r\n ReducersMapObject,\r\n Middleware,\r\n Action,\r\n AnyAction,\r\n StoreEnhancer,\r\n Store,\r\n Dispatch,\r\n PreloadedState,\r\n CombinedState,\r\n} from 'redux'\r\nimport { createStore, compose, applyMiddleware, combineReducers } from 'redux'\r\nimport type { EnhancerOptions as DevToolsOptions } from './devtoolsExtension'\r\nimport { composeWithDevTools } from './devtoolsExtension'\r\n\r\nimport isPlainObject from './isPlainObject'\r\nimport type {\r\n ThunkMiddlewareFor,\r\n CurriedGetDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nimport { curryGetDefaultMiddleware } from './getDefaultMiddleware'\r\nimport type { NoInfer, ExtractDispatchExtensions } from './tsHelpers'\r\n\r\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production'\r\n\r\n/**\r\n * Callback function type, to be used in `ConfigureStoreOptions.enhancers`\r\n *\r\n * @public\r\n */\r\nexport type ConfigureEnhancersCallback = (\r\n defaultEnhancers: readonly StoreEnhancer[]\r\n) => StoreEnhancer[]\r\n\r\n/**\r\n * Options for `configureStore()`.\r\n *\r\n * @public\r\n */\r\nexport interface ConfigureStoreOptions<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares\r\n> {\r\n /**\r\n * A single reducer function that will be used as the root reducer, or an\r\n * object of slice reducers that will be passed to `combineReducers()`.\r\n */\r\n reducer: Reducer | ReducersMapObject\r\n\r\n /**\r\n * An array of Redux middleware to install. If not supplied, defaults to\r\n * the set of middleware returned by `getDefaultMiddleware()`.\r\n */\r\n middleware?: ((getDefaultMiddleware: CurriedGetDefaultMiddleware) => M) | M\r\n\r\n /**\r\n * Whether to enable Redux DevTools integration. Defaults to `true`.\r\n *\r\n * Additional configuration can be done by passing Redux DevTools options\r\n */\r\n devTools?: boolean | DevToolsOptions\r\n\r\n /**\r\n * The initial state, same as Redux's createStore.\r\n * You may optionally specify it to hydrate the state\r\n * from the server in universal apps, or to restore a previously serialized\r\n * user session. If you use `combineReducers()` to produce the root reducer\r\n * function (either directly or indirectly by passing an object as `reducer`),\r\n * this must be an object with the same shape as the reducer map keys.\r\n */\r\n /* \r\n Not 100% correct but the best approximation we can get:\r\n - if S is a `CombinedState` applying a second `CombinedState` on it does not change anything.\r\n - if it is not, there could be two cases:\r\n - `ReducersMapObject` is being passed in. In this case, we will call `combineReducers` on it and `CombinedState` is correct\r\n - `Reducer` is being passed in. In this case, actually `CombinedState` is wrong and `S` would be correct.\r\n As we cannot distinguish between those two cases without adding another generic paramter, \r\n we just make the pragmatic assumption that the latter almost never happens.\r\n */\r\n preloadedState?: PreloadedState>>\r\n\r\n /**\r\n * The store enhancers to apply. See Redux's `createStore()`.\r\n * All enhancers will be included before the DevTools Extension enhancer.\r\n * If you need to customize the order of enhancers, supply a callback\r\n * function that will receive the original array (ie, `[applyMiddleware]`),\r\n * and should return a new array (such as `[applyMiddleware, offline]`).\r\n * If you only need to add middleware, you can use the `middleware` parameter instead.\r\n */\r\n enhancers?: StoreEnhancer[] | ConfigureEnhancersCallback\r\n}\r\n\r\ntype Middlewares = ReadonlyArray>\r\n\r\n/**\r\n * A Redux store returned by `configureStore()`. Supports dispatching\r\n * side-effectful _thunks_ in addition to plain actions.\r\n *\r\n * @public\r\n */\r\nexport interface EnhancedStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares\r\n> extends Store {\r\n /**\r\n * The `dispatch` method of your store, enhanced by all its middlewares.\r\n *\r\n * @inheritdoc\r\n */\r\n dispatch: ExtractDispatchExtensions & Dispatch\r\n}\r\n\r\n/**\r\n * A friendly abstraction over the standard Redux `createStore()` function.\r\n *\r\n * @param config The store configuration.\r\n * @returns A configured Redux store.\r\n *\r\n * @public\r\n */\r\nexport function configureStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = [ThunkMiddlewareFor]\r\n>(options: ConfigureStoreOptions): EnhancedStore {\r\n const curriedGetDefaultMiddleware = curryGetDefaultMiddleware()\r\n\r\n const {\r\n reducer = undefined,\r\n middleware = curriedGetDefaultMiddleware(),\r\n devTools = true,\r\n preloadedState = undefined,\r\n enhancers = undefined,\r\n } = options || {}\r\n\r\n let rootReducer: Reducer\r\n\r\n if (typeof reducer === 'function') {\r\n rootReducer = reducer\r\n } else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer)\r\n } else {\r\n throw new Error(\r\n '\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'\r\n )\r\n }\r\n\r\n let finalMiddleware = middleware\r\n if (typeof finalMiddleware === 'function') {\r\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware)\r\n\r\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n throw new Error(\r\n 'when using a middleware builder function, an array of middleware must be returned'\r\n )\r\n }\r\n }\r\n if (\r\n !IS_PRODUCTION &&\r\n finalMiddleware.some((item: any) => typeof item !== 'function')\r\n ) {\r\n throw new Error(\r\n 'each middleware provided to configureStore must be a function'\r\n )\r\n }\r\n\r\n const middlewareEnhancer = applyMiddleware(...finalMiddleware)\r\n\r\n let finalCompose = compose\r\n\r\n if (devTools) {\r\n finalCompose = composeWithDevTools({\r\n // Enable capture of stack traces for dispatched Redux actions\r\n trace: !IS_PRODUCTION,\r\n ...(typeof devTools === 'object' && devTools),\r\n })\r\n }\r\n\r\n let storeEnhancers: StoreEnhancer[] = [middlewareEnhancer]\r\n\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = [middlewareEnhancer, ...enhancers]\r\n } else if (typeof enhancers === 'function') {\r\n storeEnhancers = enhancers(storeEnhancers)\r\n }\r\n\r\n const composedEnhancer = finalCompose(...storeEnhancers) as any\r\n\r\n return createStore(rootReducer, preloadedState, composedEnhancer)\r\n}\r\n","import type { Action } from 'redux'\r\nimport type {\r\n IsUnknownOrNonInferrable,\r\n IfMaybeUndefined,\r\n IfVoid,\r\n IsAny,\r\n} from './tsHelpers'\r\nimport isPlainObject from './isPlainObject'\r\n\r\n/**\r\n * An action with a string type and an associated payload. This is the\r\n * type of action returned by `createAction()` action creators.\r\n *\r\n * @template P The type of the action's payload.\r\n * @template T the type used for the action type.\r\n * @template M The type of the action's meta (optional)\r\n * @template E The type of the action's error (optional)\r\n *\r\n * @public\r\n */\r\nexport type PayloadAction<\r\n P = void,\r\n T extends string = string,\r\n M = never,\r\n E = never\r\n> = {\r\n payload: P\r\n type: T\r\n} & ([M] extends [never]\r\n ? {}\r\n : {\r\n meta: M\r\n }) &\r\n ([E] extends [never]\r\n ? {}\r\n : {\r\n error: E\r\n })\r\n\r\n/**\r\n * A \"prepare\" method to be used as the second parameter of `createAction`.\r\n * Takes any number of arguments and returns a Flux Standard Action without\r\n * type (will be added later) that *must* contain a payload (might be undefined).\r\n *\r\n * @public\r\n */\r\nexport type PrepareAction

=\r\n | ((...args: any[]) => { payload: P })\r\n | ((...args: any[]) => { payload: P; meta: any })\r\n | ((...args: any[]) => { payload: P; error: any })\r\n | ((...args: any[]) => { payload: P; meta: any; error: any })\r\n\r\n/**\r\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\r\n *\r\n * @internal\r\n */\r\nexport type _ActionCreatorWithPreparedPayload<\r\n PA extends PrepareAction | void,\r\n T extends string = string\r\n> = PA extends PrepareAction\r\n ? ActionCreatorWithPreparedPayload<\r\n Parameters,\r\n P,\r\n T,\r\n ReturnType extends {\r\n error: infer E\r\n }\r\n ? E\r\n : never,\r\n ReturnType extends {\r\n meta: infer M\r\n }\r\n ? M\r\n : never\r\n >\r\n : void\r\n\r\n/**\r\n * Basic type for all action creators.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n */\r\nexport interface BaseActionCreator {\r\n type: T\r\n match: (action: Action) => action is PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that takes multiple arguments that are passed\r\n * to a `PrepareAction` method to create the final Action.\r\n * @typeParam Args arguments for the action creator function\r\n * @typeParam P `payload` type\r\n * @typeParam T `type` name\r\n * @typeParam E optional `error` type\r\n * @typeParam M optional `meta` type\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPreparedPayload<\r\n Args extends unknown[],\r\n P,\r\n T extends string = string,\r\n E = never,\r\n M = never\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with `Args` will return\r\n * an Action with a payload of type `P` and (depending on the `PrepareAction`\r\n * method used) a `meta`- and `error` property of types `M` and `E` respectively.\r\n */\r\n (...args: Args): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes an optional payload of type `P`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithOptionalPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`.\r\n * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\r\n */\r\n (payload?: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes no payload.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithoutPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} will\r\n * return a {@link PayloadAction} of type `T` with a payload of `undefined`\r\n */\r\n (): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that requires a payload of type P.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`\r\n */\r\n (payload: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithNonInferrablePayload<\r\n T extends string = string\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload\r\n * of exactly the type of the argument.\r\n */\r\n (payload: PT): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that produces actions with a `payload` attribute.\r\n *\r\n * @typeParam P the `payload` type\r\n * @typeParam T the `type` of the resulting action\r\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\r\n *\r\n * @public\r\n */\r\nexport type PayloadActionCreator<\r\n P = void,\r\n T extends string = string,\r\n PA extends PrepareAction

| void = void\r\n> = IfPrepareActionMethodProvided<\r\n PA,\r\n _ActionCreatorWithPreparedPayload,\r\n // else\r\n IsAny<\r\n P,\r\n ActionCreatorWithPayload,\r\n IsUnknownOrNonInferrable<\r\n P,\r\n ActionCreatorWithNonInferrablePayload,\r\n // else\r\n IfVoid<\r\n P,\r\n ActionCreatorWithoutPayload,\r\n // else\r\n IfMaybeUndefined<\r\n P,\r\n ActionCreatorWithOptionalPayload,\r\n // else\r\n ActionCreatorWithPayload\r\n >\r\n >\r\n >\r\n >\r\n>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overriden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction

(\r\n type: T\r\n): PayloadActionCreator\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overriden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<\r\n PA extends PrepareAction,\r\n T extends string = string\r\n>(\r\n type: T,\r\n prepareAction: PA\r\n): PayloadActionCreator['payload'], T, PA>\r\n\r\nexport function createAction(type: string, prepareAction?: Function): any {\r\n function actionCreator(...args: any[]) {\r\n if (prepareAction) {\r\n let prepared = prepareAction(...args)\r\n if (!prepared) {\r\n throw new Error('prepareAction did not return an object')\r\n }\r\n\r\n return {\r\n type,\r\n payload: prepared.payload,\r\n ...('meta' in prepared && { meta: prepared.meta }),\r\n ...('error' in prepared && { error: prepared.error }),\r\n }\r\n }\r\n return { type, payload: args[0] }\r\n }\r\n\r\n actionCreator.toString = () => `${type}`\r\n\r\n actionCreator.type = type\r\n\r\n actionCreator.match = (action: Action): action is PayloadAction =>\r\n action.type === type\r\n\r\n return actionCreator\r\n}\r\n\r\nexport function isFSA(action: unknown): action is {\r\n type: string\r\n payload?: unknown\r\n error?: unknown\r\n meta?: unknown\r\n} {\r\n return (\r\n isPlainObject(action) &&\r\n typeof (action as any).type === 'string' &&\r\n Object.keys(action).every(isValidKey)\r\n )\r\n}\r\n\r\nfunction isValidKey(key: string) {\r\n return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1\r\n}\r\n\r\n/**\r\n * Returns the action type of the actions created by the passed\r\n * `createAction()`-generated action creator (arbitrary action creators\r\n * are not supported).\r\n *\r\n * @param action The action creator whose action type to get.\r\n * @returns The action type used by the action creator.\r\n *\r\n * @public\r\n */\r\nexport function getType(\r\n actionCreator: PayloadActionCreator\r\n): T {\r\n return `${actionCreator}` as T\r\n}\r\n\r\n// helper types for more readable typings\r\n\r\ntype IfPrepareActionMethodProvided<\r\n PA extends PrepareAction | void,\r\n True,\r\n False\r\n> = PA extends (...args: any[]) => any ? True : False\r\n","import type { Action, AnyAction } from 'redux'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n} from './createReducer'\r\nimport type { TypeGuard } from './tsHelpers'\r\n\r\nexport interface TypedActionCreator {\r\n (...args: any[]): Action\r\n type: Type\r\n}\r\n\r\n/**\r\n * A builder for an action <-> reducer map.\r\n *\r\n * @public\r\n */\r\nexport interface ActionReducerMapBuilder {\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase>(\r\n actionCreator: ActionCreator,\r\n reducer: CaseReducer>\r\n ): ActionReducerMapBuilder\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase>(\r\n type: Type,\r\n reducer: CaseReducer\r\n ): ActionReducerMapBuilder\r\n\r\n /**\r\n * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\r\n * @remarks\r\n * If multiple matcher reducers match, all of them will be executed in the order\r\n * they were defined in - even if a case reducer already matched.\r\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\r\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/advanced-types.html#using-type-predicates)\r\n * function\r\n * @param reducer - The actual case reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AsyncThunk,\r\n AnyAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\ntype GenericAsyncThunk = AsyncThunk;\r\n\r\ntype PendingAction = ReturnType;\r\ntype RejectedAction = ReturnType;\r\ntype FulfilledAction = ReturnType;\r\n\r\nconst initialState: Record = {};\r\nconst resetAction = createAction(\"reset-tracked-loading-state\");\r\n\r\nfunction isPendingAction(action: AnyAction): action is PendingAction {\r\n return action.type.endsWith(\"/pending\");\r\n}\r\n\r\nconst reducer = createReducer(initialState, (builder) => {\r\n builder\r\n .addCase(resetAction, () => initialState)\r\n // matcher can be defined outside as a type predicate function\r\n .addMatcher(isPendingAction, (state, action) => {\r\n state[action.meta.requestId] = \"pending\";\r\n })\r\n .addMatcher(\r\n // matcher can be defined inline as a type predicate function\r\n (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"rejected\";\r\n }\r\n )\r\n // matcher can just return boolean and the matcher can receive a generic argument\r\n .addMatcher(\r\n (action) => action.type.endsWith(\"/fulfilled\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"fulfilled\";\r\n }\r\n );\r\n});\r\n```\r\n */\r\n addMatcher(\r\n matcher: TypeGuard | ((action: any) => boolean),\r\n reducer: CaseReducer\r\n ): Omit, 'addCase'>\r\n\r\n /**\r\n * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n * @param reducer - The fallback \"default case\" reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport { createReducer } from '@reduxjs/toolkit'\r\nconst initialState = { otherActions: 0 }\r\nconst reducer = createReducer(initialState, builder => {\r\n builder\r\n // .addCase(...)\r\n // .addMatcher(...)\r\n .addDefaultCase((state, action) => {\r\n state.otherActions++\r\n })\r\n})\r\n```\r\n */\r\n addDefaultCase(reducer: CaseReducer): {}\r\n}\r\n\r\nexport function executeReducerBuilderCallback(\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): [\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n CaseReducer | undefined\r\n] {\r\n const actionsMap: CaseReducers = {}\r\n const actionMatchers: ActionMatcherDescriptionCollection = []\r\n let defaultCaseReducer: CaseReducer | undefined\r\n const builder = {\r\n addCase(\r\n typeOrActionCreator: string | TypedActionCreator,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n /*\r\n to keep the definition by the user in line with actual behavior, \r\n we enforce `addCase` to always be called before calling `addMatcher`\r\n as matching cases take precedence over matchers\r\n */\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addMatcher`'\r\n )\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n const type =\r\n typeof typeOrActionCreator === 'string'\r\n ? typeOrActionCreator\r\n : typeOrActionCreator.type\r\n if (type in actionsMap) {\r\n throw new Error(\r\n 'addCase cannot be called with two reducers for the same action type'\r\n )\r\n }\r\n actionsMap[type] = reducer\r\n return builder\r\n },\r\n addMatcher(\r\n matcher: TypeGuard,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n actionMatchers.push({ matcher, reducer })\r\n return builder\r\n },\r\n addDefaultCase(reducer: CaseReducer) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error('`builder.addDefaultCase` can only be called once')\r\n }\r\n }\r\n defaultCaseReducer = reducer\r\n return builder\r\n },\r\n }\r\n builderCallback(builder)\r\n return [actionsMap, actionMatchers, defaultCaseReducer]\r\n}\r\n","import type { AnyAction, Reducer } from 'redux'\r\nimport { createNextState } from '.'\r\nimport type {\r\n ActionCreatorWithoutPayload,\r\n PayloadAction,\r\n PayloadActionCreator,\r\n PrepareAction,\r\n _ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ReducerWithInitialState,\r\n} from './createReducer'\r\nimport { createReducer, NotFunction } from './createReducer'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\n\r\n/**\r\n * An action creator attached to a slice.\r\n *\r\n * @deprecated please use PayloadActionCreator directly\r\n *\r\n * @public\r\n */\r\nexport type SliceActionCreator

= PayloadActionCreator

\r\n\r\n/**\r\n * The return value of `createSlice`\r\n *\r\n * @public\r\n */\r\nexport interface Slice<\r\n State = any,\r\n CaseReducers extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice name.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The slice's reducer.\r\n */\r\n reducer: Reducer\r\n\r\n /**\r\n * Action creators for the types of actions that are handled by the slice\r\n * reducer.\r\n */\r\n actions: CaseReducerActions\r\n\r\n /**\r\n * The individual case reducer functions that were passed in the `reducers` parameter.\r\n * This enables reuse and testing if they were defined inline when calling `createSlice`.\r\n */\r\n caseReducers: SliceDefinedCaseReducers\r\n\r\n /**\r\n * Provides access to the initial state value given to the slice.\r\n * If a lazy state initializer was provided, it will be called and a fresh value returned.\r\n */\r\n getInitialState: () => State\r\n}\r\n\r\n/**\r\n * Options for `createSlice()`.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSliceOptions<\r\n State = any,\r\n CR extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice's name. Used to namespace the generated action types.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n */\r\n initialState: State | (() => State)\r\n\r\n /**\r\n * A mapping from action types to action-type-specific *case reducer*\r\n * functions. For every action type, a matching action creator will be\r\n * generated using `createAction()`.\r\n */\r\n reducers: ValidateSliceCaseReducers\r\n\r\n /**\r\n * A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * \r\n * Alternatively, a mapping from action types to action-type-specific *case reducer*\r\n * functions. These reducers should have existing action types used\r\n * as the keys, and action creators will _not_ be generated.\r\n * \r\n * @example\r\n```ts\r\nimport { createAction, createSlice, Action, AnyAction } from '@reduxjs/toolkit'\r\nconst incrementBy = createAction('incrementBy')\r\nconst decrement = createAction('decrement')\r\n\r\ninterface RejectedAction extends Action {\r\n error: Error\r\n}\r\n\r\nfunction isRejectedAction(action: AnyAction): action is RejectedAction {\r\n return action.type.endsWith('rejected')\r\n}\r\n\r\ncreateSlice({\r\n name: 'counter',\r\n initialState: 0,\r\n reducers: {},\r\n extraReducers: builder => {\r\n builder\r\n .addCase(incrementBy, (state, action) => {\r\n // action is inferred correctly here if using TS\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {})\r\n // You can match a range of action types\r\n .addMatcher(\r\n isRejectedAction,\r\n // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\r\n (state, action) => {}\r\n )\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {})\r\n }\r\n})\r\n```\r\n */\r\n extraReducers?:\r\n | CaseReducers, any>\r\n | ((builder: ActionReducerMapBuilder>) => void)\r\n}\r\n\r\n/**\r\n * A CaseReducer with a `prepare` method.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerWithPrepare = {\r\n reducer: CaseReducer\r\n prepare: PrepareAction\r\n}\r\n\r\n/**\r\n * The type describing a slice's `reducers` option.\r\n *\r\n * @public\r\n */\r\nexport type SliceCaseReducers = {\r\n [K: string]:\r\n | CaseReducer>\r\n | CaseReducerWithPrepare>\r\n}\r\n\r\n/**\r\n * Derives the slice's `actions` property from the `reducers` options\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerActions> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends { prepare: any }\r\n ? ActionCreatorForCaseReducerWithPrepare\r\n : ActionCreatorForCaseReducer\r\n}\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducerWithPrepare =\r\n _ActionCreatorWithPreparedPayload\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducer = CR extends (\r\n state: any,\r\n action: infer Action\r\n) => any\r\n ? Action extends { payload: infer P }\r\n ? PayloadActionCreator

\r\n : ActionCreatorWithoutPayload\r\n : ActionCreatorWithoutPayload\r\n\r\n/**\r\n * Extracts the CaseReducers out of a `reducers` object, even if they are\r\n * tested into a `CaseReducerWithPrepare`.\r\n *\r\n * @internal\r\n */\r\ntype SliceDefinedCaseReducers> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends {\r\n reducer: infer Reducer\r\n }\r\n ? Reducer\r\n : CaseReducers[Type]\r\n}\r\n\r\n/**\r\n * Used on a SliceCaseReducers object.\r\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\r\n * the `reducer` and the `prepare` function use the same type of `payload`.\r\n *\r\n * Might do additional such checks in the future.\r\n *\r\n * This type is only ever useful if you want to write your own wrapper around\r\n * `createSlice`. Please don't use it otherwise!\r\n *\r\n * @public\r\n */\r\nexport type ValidateSliceCaseReducers<\r\n S,\r\n ACR extends SliceCaseReducers\r\n> = ACR &\r\n {\r\n [T in keyof ACR]: ACR[T] extends {\r\n reducer(s: S, action?: infer A): any\r\n }\r\n ? {\r\n prepare(...a: never[]): Omit\r\n }\r\n : {}\r\n }\r\n\r\nfunction getType(slice: string, actionKey: string): string {\r\n return `${slice}/${actionKey}`\r\n}\r\n\r\n/**\r\n * A function that accepts an initial state, an object full of reducer\r\n * functions, and a \"slice name\", and automatically generates\r\n * action creators and action types that correspond to the\r\n * reducers and state.\r\n *\r\n * The `reducer` argument is passed to `createReducer()`.\r\n *\r\n * @public\r\n */\r\nexport function createSlice<\r\n State,\r\n CaseReducers extends SliceCaseReducers,\r\n Name extends string = string\r\n>(\r\n options: CreateSliceOptions\r\n): Slice {\r\n const { name } = options\r\n if (!name) {\r\n throw new Error('`name` is a required option for createSlice')\r\n }\r\n const initialState =\r\n typeof options.initialState == 'function'\r\n ? options.initialState\r\n : createNextState(options.initialState, () => {})\r\n\r\n const reducers = options.reducers || {}\r\n\r\n const reducerNames = Object.keys(reducers)\r\n\r\n const sliceCaseReducersByName: Record = {}\r\n const sliceCaseReducersByType: Record = {}\r\n const actionCreators: Record = {}\r\n\r\n reducerNames.forEach((reducerName) => {\r\n const maybeReducerWithPrepare = reducers[reducerName]\r\n const type = getType(name, reducerName)\r\n\r\n let caseReducer: CaseReducer\r\n let prepareCallback: PrepareAction | undefined\r\n\r\n if ('reducer' in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer\r\n prepareCallback = maybeReducerWithPrepare.prepare\r\n } else {\r\n caseReducer = maybeReducerWithPrepare\r\n }\r\n\r\n sliceCaseReducersByName[reducerName] = caseReducer\r\n sliceCaseReducersByType[type] = caseReducer\r\n actionCreators[reducerName] = prepareCallback\r\n ? createAction(type, prepareCallback)\r\n : createAction(type)\r\n })\r\n\r\n function buildReducer() {\r\n const [\r\n extraReducers = {},\r\n actionMatchers = [],\r\n defaultCaseReducer = undefined,\r\n ] =\r\n typeof options.extraReducers === 'function'\r\n ? executeReducerBuilderCallback(options.extraReducers)\r\n : [options.extraReducers]\r\n\r\n const finalCaseReducers = { ...extraReducers, ...sliceCaseReducersByType }\r\n return createReducer(\r\n initialState,\r\n finalCaseReducers as any,\r\n actionMatchers,\r\n defaultCaseReducer\r\n )\r\n }\r\n\r\n let _reducer: ReducerWithInitialState\r\n\r\n return {\r\n name,\r\n reducer(state, action) {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer(state, action)\r\n },\r\n actions: actionCreators as any,\r\n caseReducers: sliceCaseReducersByName as any,\r\n getInitialState() {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer.getInitialState()\r\n },\r\n }\r\n}\r\n","import type { Draft } from 'immer'\r\nimport createNextState, { isDraft, isDraftable } from 'immer'\r\nimport type { AnyAction, Action, Reducer } from 'redux'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\n\r\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n * inference purposes and should not have any further value.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type Actions = Record\r\n\r\n/**\r\n * @deprecated use `TypeGuard` instead\r\n */\r\nexport interface ActionMatcher {\r\n (action: AnyAction): action is A\r\n}\r\n\r\nexport type ActionMatcherDescription = {\r\n matcher: ActionMatcher\r\n reducer: CaseReducer>\r\n}\r\n\r\nexport type ReadonlyActionMatcherDescriptionCollection = ReadonlyArray<\r\n ActionMatcherDescription\r\n>\r\n\r\nexport type ActionMatcherDescriptionCollection = Array<\r\n ActionMatcherDescription\r\n>\r\n\r\n/**\r\n * An *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducer = (\r\n state: Draft,\r\n action: A\r\n) => S | void | Draft\r\n\r\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n * for internal inference purposes and using it manually\r\n * would lead to type erasure.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type CaseReducers = {\r\n [T in keyof AS]: AS[T] extends Action ? CaseReducer : void\r\n}\r\n\r\nexport type NotFunction = T extends Function ? never : T\r\n\r\nfunction isStateFunction(x: unknown): x is () => S {\r\n return typeof x === 'function'\r\n}\r\n\r\nexport type ReducerWithInitialState> = Reducer & {\r\n getInitialState: () => S\r\n}\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * @remarks\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @overloadSummary\r\n * This overload accepts a callback function that receives a `builder` object as its argument.\r\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\r\n * called to define what actions this reducer will handle.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AnyAction,\r\n PayloadAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\nconst increment = createAction(\"increment\");\r\nconst decrement = createAction(\"decrement\");\r\n\r\nfunction isActionWithNumberPayload(\r\n action: AnyAction\r\n): action is PayloadAction {\r\n return typeof action.payload === \"number\";\r\n}\r\n\r\nconst reducer = createReducer(\r\n {\r\n counter: 0,\r\n sumOfNumberPayloads: 0,\r\n unhandledActions: 0,\r\n },\r\n (builder) => {\r\n builder\r\n .addCase(increment, (state, action) => {\r\n // action is inferred correctly here\r\n state.counter += action.payload;\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {\r\n state.counter -= action.payload;\r\n })\r\n // You can apply a \"matcher function\" to incoming actions\r\n .addMatcher(isActionWithNumberPayload, (state, action) => {})\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {});\r\n }\r\n);\r\n```\r\n * @public\r\n */\r\nexport function createReducer>(\r\n initialState: S | (() => S),\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): ReducerWithInitialState\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n * \r\n * @overloadSummary\r\n * This overload accepts an object where the keys are string action types, and the values\r\n * are case reducer functions to handle those action types.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param actionsMap - An object mapping from action types to _case reducers_, each of which handles one specific action type.\r\n * @param actionMatchers - An array of matcher definitions in the form `{matcher, reducer}`.\r\n * All matching reducers will be executed in order, independently if a case reducer matched or not.\r\n * @param defaultCaseReducer - A \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n *\r\n * @example\r\n```js\r\nconst counterReducer = createReducer(0, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n\r\n// Alternately, use a \"lazy initializer\" to provide the initial state\r\n// (works with either form of createReducer)\r\nconst initialState = () => 0\r\nconst counterReducer = createReducer(initialState, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n```\r\n \r\n * Action creators that were generated using [`createAction`](./createAction) may be used directly as the keys here, using computed property syntax:\r\n\r\n```js\r\nconst increment = createAction('increment')\r\nconst decrement = createAction('decrement')\r\n\r\nconst counterReducer = createReducer(0, {\r\n [increment]: (state, action) => state + action.payload,\r\n [decrement.type]: (state, action) => state - action.payload\r\n})\r\n```\r\n * @public\r\n */\r\nexport function createReducer<\r\n S extends NotFunction,\r\n CR extends CaseReducers = CaseReducers\r\n>(\r\n initialState: S | (() => S),\r\n actionsMap: CR,\r\n actionMatchers?: ActionMatcherDescriptionCollection,\r\n defaultCaseReducer?: CaseReducer\r\n): ReducerWithInitialState\r\n\r\nexport function createReducer>(\r\n initialState: S | (() => S),\r\n mapOrBuilderCallback:\r\n | CaseReducers\r\n | ((builder: ActionReducerMapBuilder) => void),\r\n actionMatchers: ReadonlyActionMatcherDescriptionCollection = [],\r\n defaultCaseReducer?: CaseReducer\r\n): ReducerWithInitialState {\r\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] =\r\n typeof mapOrBuilderCallback === 'function'\r\n ? executeReducerBuilderCallback(mapOrBuilderCallback)\r\n : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer]\r\n\r\n // Ensure the initial state gets frozen either way\r\n let getInitialState: () => S\r\n if (isStateFunction(initialState)) {\r\n getInitialState = () => createNextState(initialState(), () => {})\r\n } else {\r\n const frozenInitialState = createNextState(initialState, () => {})\r\n getInitialState = () => frozenInitialState\r\n }\r\n\r\n function reducer(state = getInitialState(), action: any): S {\r\n let caseReducers = [\r\n actionsMap[action.type],\r\n ...finalActionMatchers\r\n .filter(({ matcher }) => matcher(action))\r\n .map(({ reducer }) => reducer),\r\n ]\r\n if (caseReducers.filter((cr) => !!cr).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer]\r\n }\r\n\r\n return caseReducers.reduce((previousState, caseReducer): S => {\r\n if (caseReducer) {\r\n if (isDraft(previousState)) {\r\n // If it's already a draft, we must already be inside a `createNextState` call,\r\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\r\n // inside an existing draft. It's safe to just pass the draft to the mutator.\r\n const draft = previousState as Draft // We can assume this is already a draft\r\n const result = caseReducer(draft, action)\r\n\r\n if (typeof result === 'undefined') {\r\n return previousState\r\n }\r\n\r\n return result as S\r\n } else if (!isDraftable(previousState)) {\r\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\r\n // return the caseReducer func and not wrap it with produce.\r\n const result = caseReducer(previousState as any, action)\r\n\r\n if (typeof result === 'undefined') {\r\n if (previousState === null) {\r\n return previousState\r\n }\r\n throw Error(\r\n 'A case reducer on a non-draftable value must not return undefined'\r\n )\r\n }\r\n\r\n return result as S\r\n } else {\r\n // @ts-ignore createNextState() produces an Immutable> rather\r\n // than an Immutable, and TypeScript cannot find out how to reconcile\r\n // these two types.\r\n return createNextState(previousState, (draft: Draft) => {\r\n return caseReducer(draft, action)\r\n })\r\n }\r\n }\r\n\r\n return previousState\r\n }, state)\r\n }\r\n\r\n reducer.getInitialState = getInitialState\r\n\r\n return reducer as ReducerWithInitialState\r\n}\r\n","// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\r\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\r\n// optimize the gzip compression for this alphabet.\r\nlet urlAlphabet =\r\n 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\r\n\r\n/**\r\n *\r\n * @public\r\n */\r\nexport let nanoid = (size = 21) => {\r\n let id = ''\r\n // A compact alternative for `for (var i = 0; i < step; i++)`.\r\n let i = size\r\n while (i--) {\r\n // `| 0` is more compact and faster than `Math.floor()`.\r\n id += urlAlphabet[(Math.random() * 64) | 0]\r\n }\r\n return id\r\n}\r\n","import type { AbortSignalWithReason } from './types'\r\n\r\nexport const assertFunction: (\r\n func: unknown,\r\n expected: string\r\n) => asserts func is (...args: unknown[]) => unknown = (\r\n func: unknown,\r\n expected: string\r\n) => {\r\n if (typeof func !== 'function') {\r\n throw new TypeError(`${expected} is not a function`)\r\n }\r\n}\r\n\r\nexport const noop = () => {}\r\n\r\nexport const catchRejection = (\r\n promise: Promise,\r\n onError = noop\r\n): Promise => {\r\n promise.catch(onError)\r\n\r\n return promise\r\n}\r\n\r\nexport const addAbortSignalListener = (\r\n abortSignal: AbortSignal,\r\n callback: (evt: Event) => void\r\n) => {\r\n abortSignal.addEventListener('abort', callback, { once: true })\r\n}\r\n\r\n/**\r\n * Calls `abortController.abort(reason)` and patches `signal.reason`.\r\n * if it is not supported.\r\n *\r\n * At the time of writing `signal.reason` is available in FF chrome, edge node 17 and deno.\r\n * @param abortController\r\n * @param reason\r\n * @returns\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/reason\r\n */\r\nexport const abortControllerWithReason = (\r\n abortController: AbortController,\r\n reason: T\r\n): void => {\r\n type Consumer = (val: T) => void\r\n\r\n const signal = abortController.signal as AbortSignalWithReason\r\n\r\n if (signal.aborted) {\r\n return\r\n }\r\n\r\n // Patch `reason` if necessary.\r\n // - We use defineProperty here because reason is a getter of `AbortSignal.__proto__`.\r\n // - We need to patch 'reason' before calling `.abort()` because listeners to the 'abort'\r\n // event are are notified immediately.\r\n if (!('reason' in signal)) {\r\n Object.defineProperty(signal, 'reason', {\r\n enumerable: true,\r\n value: reason,\r\n configurable: true,\r\n writable: true,\r\n })\r\n }\r\n\r\n ;(abortController.abort as Consumer)(reason)\r\n}\r\n","import type { SerializedError } from '@reduxjs/toolkit'\r\n\r\nconst task = 'task'\r\nconst listener = 'listener'\r\nconst completed = 'completed'\r\nconst cancelled = 'cancelled'\r\n\r\n/* TaskAbortError error codes */\r\nexport const taskCancelled = `task-${cancelled}` as const\r\nexport const taskCompleted = `task-${completed}` as const\r\nexport const listenerCancelled = `${listener}-${cancelled}` as const\r\nexport const listenerCompleted = `${listener}-${completed}` as const\r\n\r\nexport class TaskAbortError implements SerializedError {\r\n name = 'TaskAbortError'\r\n message: string\r\n constructor(public code: string | undefined) {\r\n this.message = `${task} ${cancelled} (reason: ${code})`\r\n }\r\n}\r\n","import { TaskAbortError } from './exceptions'\r\nimport type { AbortSignalWithReason, TaskResult } from './types'\r\nimport { addAbortSignalListener, catchRejection } from './utils'\r\n\r\n/**\r\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\r\n * @param signal\r\n * @param reason\r\n * @see {TaskAbortError}\r\n */\r\nexport const validateActive = (signal: AbortSignal): void => {\r\n if (signal.aborted) {\r\n throw new TaskAbortError((signal as AbortSignalWithReason).reason)\r\n }\r\n}\r\n\r\n/**\r\n * Returns a promise that will reject {@link TaskAbortError} if the task is cancelled.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const promisifyAbortSignal = (\r\n signal: AbortSignalWithReason\r\n): Promise => {\r\n return catchRejection(\r\n new Promise((_, reject) => {\r\n const notifyRejection = () => reject(new TaskAbortError(signal.reason))\r\n\r\n if (signal.aborted) {\r\n notifyRejection()\r\n } else {\r\n addAbortSignalListener(signal, notifyRejection)\r\n }\r\n })\r\n )\r\n}\r\n\r\n/**\r\n * Runs a task and returns promise that resolves to {@link TaskResult}.\r\n * Second argument is an optional `cleanUp` function that always runs after task.\r\n *\r\n * **Note:** `runTask` runs the executor in the next microtask.\r\n * @returns\r\n */\r\nexport const runTask = async (\r\n task: () => Promise,\r\n cleanUp?: () => void\r\n): Promise> => {\r\n try {\r\n await Promise.resolve()\r\n const value = await task()\r\n return {\r\n status: 'ok',\r\n value,\r\n }\r\n } catch (error: any) {\r\n return {\r\n status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\r\n error,\r\n }\r\n } finally {\r\n cleanUp?.()\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and a promise returns another promise that resolves\r\n * as soon the input promise is provided or rejects as soon as\r\n * `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createPause = (signal: AbortSignal) => {\r\n return (promise: Promise): Promise => {\r\n return catchRejection(\r\n Promise.race([promisifyAbortSignal(signal), promise]).then((output) => {\r\n validateActive(signal)\r\n return output\r\n })\r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\r\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createDelay = (signal: AbortSignal) => {\r\n const pause = createPause(signal)\r\n return (timeoutMs: number): Promise => {\r\n return pause(new Promise((resolve) => setTimeout(resolve, timeoutMs)))\r\n }\r\n}\r\n","import type { Dispatch, AnyAction, MiddlewareAPI } from 'redux'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport { createAction } from '../createAction'\r\nimport { nanoid } from '../nanoid'\r\n\r\nimport type {\r\n ListenerMiddleware,\r\n ListenerMiddlewareInstance,\r\n AddListenerOverloads,\r\n AnyListenerPredicate,\r\n CreateListenerMiddlewareOptions,\r\n TypedAddListener,\r\n TypedCreateListenerEntry,\r\n FallbackAddListenerOptions,\r\n ListenerEntry,\r\n ListenerErrorHandler,\r\n UnsubscribeListener,\r\n TakePattern,\r\n ListenerErrorInfo,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n TypedRemoveListener,\r\n TaskResult,\r\n AbortSignalWithReason,\r\n UnsubscribeListenerOptions,\r\n} from './types'\r\nimport {\r\n abortControllerWithReason,\r\n addAbortSignalListener,\r\n assertFunction,\r\n catchRejection,\r\n} from './utils'\r\nimport {\r\n listenerCancelled,\r\n listenerCompleted,\r\n TaskAbortError,\r\n taskCancelled,\r\n taskCompleted,\r\n} from './exceptions'\r\nimport {\r\n runTask,\r\n promisifyAbortSignal,\r\n validateActive,\r\n createPause,\r\n createDelay,\r\n} from './task'\r\nexport { TaskAbortError } from './exceptions'\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './types'\r\n\r\n//Overly-aggressive byte-shaving\r\nconst { assign } = Object\r\n/**\r\n * @internal\r\n */\r\nconst INTERNAL_NIL_TOKEN = {} as const\r\n\r\nconst alm = 'listenerMiddleware' as const\r\n\r\nconst createFork = (parentAbortSignal: AbortSignalWithReason) => {\r\n const linkControllers = (controller: AbortController) =>\r\n addAbortSignalListener(parentAbortSignal, () =>\r\n abortControllerWithReason(controller, parentAbortSignal.reason)\r\n )\r\n\r\n return (taskExecutor: ForkedTaskExecutor): ForkedTask => {\r\n assertFunction(taskExecutor, 'taskExecutor')\r\n const childAbortController = new AbortController()\r\n\r\n linkControllers(childAbortController)\r\n\r\n const result = runTask(\r\n async (): Promise => {\r\n validateActive(parentAbortSignal)\r\n validateActive(childAbortController.signal)\r\n const result = (await taskExecutor({\r\n pause: createPause(childAbortController.signal),\r\n delay: createDelay(childAbortController.signal),\r\n signal: childAbortController.signal,\r\n })) as T\r\n validateActive(childAbortController.signal)\r\n return result\r\n },\r\n () => abortControllerWithReason(childAbortController, taskCompleted)\r\n )\r\n\r\n return {\r\n result: createPause>(parentAbortSignal)(result),\r\n cancel() {\r\n abortControllerWithReason(childAbortController, taskCancelled)\r\n },\r\n }\r\n }\r\n}\r\n\r\nconst createTakePattern = (\r\n startListening: AddListenerOverloads<\r\n UnsubscribeListener,\r\n S,\r\n Dispatch\r\n >,\r\n signal: AbortSignal\r\n): TakePattern => {\r\n /**\r\n * A function that takes a ListenerPredicate and an optional timeout,\r\n * and resolves when either the predicate returns `true` based on an action\r\n * state combination or when the timeout expires.\r\n * If the parent listener is canceled while waiting, this will throw a\r\n * TaskAbortError.\r\n */\r\n const take = async

>(\r\n predicate: P,\r\n timeout: number | undefined\r\n ) => {\r\n validateActive(signal)\r\n\r\n // Placeholder unsubscribe function until the listener is added\r\n let unsubscribe: UnsubscribeListener = () => {}\r\n\r\n const tuplePromise = new Promise<[AnyAction, S, S]>((resolve) => {\r\n // Inside the Promise, we synchronously add the listener.\r\n unsubscribe = startListening({\r\n predicate: predicate as any,\r\n effect: (action, listenerApi): void => {\r\n // One-shot listener that cleans up as soon as the predicate passes\r\n listenerApi.unsubscribe()\r\n // Resolve the promise with the same arguments the predicate saw\r\n resolve([\r\n action,\r\n listenerApi.getState(),\r\n listenerApi.getOriginalState(),\r\n ])\r\n },\r\n })\r\n })\r\n\r\n const promises: (Promise | Promise<[AnyAction, S, S]>)[] = [\r\n promisifyAbortSignal(signal),\r\n tuplePromise,\r\n ]\r\n\r\n if (timeout != null) {\r\n promises.push(\r\n new Promise((resolve) => setTimeout(resolve, timeout, null))\r\n )\r\n }\r\n\r\n try {\r\n const output = await Promise.race(promises)\r\n\r\n validateActive(signal)\r\n return output\r\n } finally {\r\n // Always clean up the listener\r\n unsubscribe()\r\n }\r\n }\r\n\r\n return ((predicate: AnyListenerPredicate, timeout: number | undefined) =>\r\n catchRejection(take(predicate, timeout))) as TakePattern\r\n}\r\n\r\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\r\n let { type, actionCreator, matcher, predicate, effect } = options\r\n\r\n if (type) {\r\n predicate = createAction(type).match\r\n } else if (actionCreator) {\r\n type = actionCreator!.type\r\n predicate = actionCreator.match\r\n } else if (matcher) {\r\n predicate = matcher\r\n } else if (predicate) {\r\n // pass\r\n } else {\r\n throw new Error(\r\n 'Creating or removing a listener requires one of the known fields for matching an action'\r\n )\r\n }\r\n\r\n assertFunction(effect, 'options.listener')\r\n\r\n return { predicate, type, effect }\r\n}\r\n\r\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\r\nexport const createListenerEntry: TypedCreateListenerEntry = (\r\n options: FallbackAddListenerOptions\r\n) => {\r\n const { type, predicate, effect } = getListenerEntryPropsFrom(options)\r\n\r\n const id = nanoid()\r\n const entry: ListenerEntry = {\r\n id,\r\n effect,\r\n type,\r\n predicate,\r\n pending: new Set(),\r\n unsubscribe: () => {\r\n throw new Error('Unsubscribe not initialized')\r\n },\r\n }\r\n\r\n return entry\r\n}\r\n\r\nconst createClearListenerMiddleware = (\r\n listenerMap: Map\r\n) => {\r\n return () => {\r\n listenerMap.forEach(cancelActiveListeners)\r\n\r\n listenerMap.clear()\r\n }\r\n}\r\n\r\n/**\r\n * Safely reports errors to the `errorHandler` provided.\r\n * Errors that occur inside `errorHandler` are notified in a new task.\r\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\r\n * @param errorHandler\r\n * @param errorToNotify\r\n */\r\nconst safelyNotifyError = (\r\n errorHandler: ListenerErrorHandler,\r\n errorToNotify: unknown,\r\n errorInfo: ListenerErrorInfo\r\n): void => {\r\n try {\r\n errorHandler(errorToNotify, errorInfo)\r\n } catch (errorHandlerError) {\r\n // We cannot let an error raised here block the listener queue.\r\n // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\r\n setTimeout(() => {\r\n throw errorHandlerError\r\n }, 0)\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const addListener = createAction(\r\n `${alm}/add`\r\n) as TypedAddListener\r\n\r\n/**\r\n * @public\r\n */\r\nexport const clearAllListeners = createAction(`${alm}/removeAll`)\r\n\r\n/**\r\n * @public\r\n */\r\nexport const removeListener = createAction(\r\n `${alm}/remove`\r\n) as TypedRemoveListener\r\n\r\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\r\n console.error(`${alm}/error`, ...args)\r\n}\r\n\r\nconst cancelActiveListeners = (\r\n entry: ListenerEntry>\r\n) => {\r\n entry.pending.forEach((controller) => {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n })\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport function createListenerMiddleware<\r\n S = unknown,\r\n D extends Dispatch = ThunkDispatch,\r\n ExtraArgument = unknown\r\n>(middlewareOptions: CreateListenerMiddlewareOptions = {}) {\r\n const listenerMap = new Map()\r\n const { extra, onError = defaultErrorHandler } = middlewareOptions\r\n\r\n assertFunction(onError, 'onError')\r\n\r\n const insertEntry = (entry: ListenerEntry) => {\r\n entry.unsubscribe = () => listenerMap.delete(entry!.id)\r\n\r\n listenerMap.set(entry.id, entry)\r\n return (cancelOptions?: UnsubscribeListenerOptions) => {\r\n entry.unsubscribe()\r\n if (cancelOptions?.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n }\r\n\r\n const findListenerEntry = (\r\n comparator: (entry: ListenerEntry) => boolean\r\n ): ListenerEntry | undefined => {\r\n for (const entry of listenerMap.values()) {\r\n if (comparator(entry)) {\r\n return entry\r\n }\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n const startListening = (options: FallbackAddListenerOptions) => {\r\n let entry = findListenerEntry(\r\n (existingEntry) => existingEntry.effect === options.effect\r\n )\r\n\r\n if (!entry) {\r\n entry = createListenerEntry(options as any)\r\n }\r\n\r\n return insertEntry(entry)\r\n }\r\n\r\n const stopListening = (\r\n options: FallbackAddListenerOptions & UnsubscribeListenerOptions\r\n ): boolean => {\r\n const { type, effect, predicate } = getListenerEntryPropsFrom(options)\r\n\r\n const entry = findListenerEntry((entry) => {\r\n const matchPredicateOrType =\r\n typeof type === 'string'\r\n ? entry.type === type\r\n : entry.predicate === predicate\r\n\r\n return matchPredicateOrType && entry.effect === effect\r\n })\r\n\r\n if (entry) {\r\n entry.unsubscribe()\r\n if (options.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n\r\n return !!entry\r\n }\r\n\r\n const notifyListener = async (\r\n entry: ListenerEntry>,\r\n action: AnyAction,\r\n api: MiddlewareAPI,\r\n getOriginalState: () => S\r\n ) => {\r\n const internalTaskController = new AbortController()\r\n const take = createTakePattern(\r\n startListening,\r\n internalTaskController.signal\r\n )\r\n\r\n try {\r\n entry.pending.add(internalTaskController)\r\n await Promise.resolve(\r\n entry.effect(\r\n action,\r\n // Use assign() rather than ... to avoid extra helper functions added to bundle\r\n assign({}, api, {\r\n getOriginalState,\r\n condition: (\r\n predicate: AnyListenerPredicate,\r\n timeout?: number\r\n ) => take(predicate, timeout).then(Boolean),\r\n take,\r\n delay: createDelay(internalTaskController.signal),\r\n pause: createPause(internalTaskController.signal),\r\n extra,\r\n signal: internalTaskController.signal,\r\n fork: createFork(internalTaskController.signal),\r\n unsubscribe: entry.unsubscribe,\r\n subscribe: () => {\r\n listenerMap.set(entry.id, entry)\r\n },\r\n cancelActiveListeners: () => {\r\n entry.pending.forEach((controller, _, set) => {\r\n if (controller !== internalTaskController) {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n set.delete(controller)\r\n }\r\n })\r\n },\r\n })\r\n )\r\n )\r\n } catch (listenerError) {\r\n if (!(listenerError instanceof TaskAbortError)) {\r\n safelyNotifyError(onError, listenerError, {\r\n raisedBy: 'effect',\r\n })\r\n }\r\n } finally {\r\n abortControllerWithReason(internalTaskController, listenerCompleted) // Notify that the task has completed\r\n entry.pending.delete(internalTaskController)\r\n }\r\n }\r\n\r\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap)\r\n\r\n const middleware: ListenerMiddleware =\r\n (api) => (next) => (action) => {\r\n if (addListener.match(action)) {\r\n return startListening(action.payload)\r\n }\r\n\r\n if (clearAllListeners.match(action)) {\r\n clearListenerMiddleware()\r\n return\r\n }\r\n\r\n if (removeListener.match(action)) {\r\n return stopListening(action.payload)\r\n }\r\n\r\n // Need to get this state _before_ the reducer processes the action\r\n let originalState: S | typeof INTERNAL_NIL_TOKEN = api.getState()\r\n\r\n // `getOriginalState` can only be called synchronously.\r\n // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\r\n const getOriginalState = (): S => {\r\n if (originalState === INTERNAL_NIL_TOKEN) {\r\n throw new Error(\r\n `${alm}: getOriginalState can only be called synchronously`\r\n )\r\n }\r\n\r\n return originalState as S\r\n }\r\n\r\n let result: unknown\r\n\r\n try {\r\n // Actually forward the action to the reducer before we handle listeners\r\n result = next(action)\r\n\r\n if (listenerMap.size > 0) {\r\n let currentState = api.getState()\r\n // Work around ESBuild+TS transpilation issue\r\n const listenerEntries = Array.from(listenerMap.values())\r\n for (let entry of listenerEntries) {\r\n let runListener = false\r\n\r\n try {\r\n runListener = entry.predicate(action, currentState, originalState)\r\n } catch (predicateError) {\r\n runListener = false\r\n\r\n safelyNotifyError(onError, predicateError, {\r\n raisedBy: 'predicate',\r\n })\r\n }\r\n\r\n if (!runListener) {\r\n continue\r\n }\r\n\r\n notifyListener(entry, action, api, getOriginalState)\r\n }\r\n }\r\n } finally {\r\n // Remove `originalState` store from this scope.\r\n originalState = INTERNAL_NIL_TOKEN\r\n }\r\n\r\n return result\r\n }\r\n\r\n return {\r\n middleware,\r\n startListening,\r\n stopListening,\r\n clearListeners: clearListenerMiddleware,\r\n } as ListenerMiddlewareInstance\r\n}\r\n","import { enableES5 } from 'immer'\r\nexport * from 'redux'\r\nexport {\r\n default as createNextState,\r\n current,\r\n freeze,\r\n original,\r\n isDraft,\r\n} from 'immer'\r\nexport type { Draft } from 'immer'\r\nexport { createSelector } from 'reselect'\r\nexport type {\r\n Selector,\r\n OutputParametricSelector,\r\n OutputSelector,\r\n ParametricSelector,\r\n} from 'reselect'\r\nexport { createDraftSafeSelector } from './createDraftSafeSelector'\r\nexport type { ThunkAction, ThunkDispatch } from 'redux-thunk'\r\n\r\n// We deliberately enable Immer's ES5 support, on the grounds that\r\n// we assume RTK will be used with React Native and other Proxy-less\r\n// environments. In addition, that's how Immer 4 behaved, and since\r\n// we want to ship this in an RTK minor, we should keep the same behavior.\r\nenableES5()\r\n\r\nexport {\r\n // js\r\n configureStore,\r\n} from './configureStore'\r\nexport type {\r\n // types\r\n ConfigureEnhancersCallback,\r\n ConfigureStoreOptions,\r\n EnhancedStore,\r\n} from './configureStore'\r\nexport {\r\n // js\r\n createAction,\r\n getType,\r\n} from './createAction'\r\nexport type {\r\n // types\r\n PayloadAction,\r\n PayloadActionCreator,\r\n ActionCreatorWithNonInferrablePayload,\r\n ActionCreatorWithOptionalPayload,\r\n ActionCreatorWithPayload,\r\n ActionCreatorWithoutPayload,\r\n ActionCreatorWithPreparedPayload,\r\n PrepareAction,\r\n} from './createAction'\r\nexport {\r\n // js\r\n createReducer,\r\n} from './createReducer'\r\nexport type {\r\n // types\r\n Actions,\r\n CaseReducer,\r\n CaseReducers,\r\n} from './createReducer'\r\nexport {\r\n // js\r\n createSlice,\r\n} from './createSlice'\r\n\r\nexport type {\r\n // types\r\n CreateSliceOptions,\r\n Slice,\r\n CaseReducerActions,\r\n SliceCaseReducers,\r\n ValidateSliceCaseReducers,\r\n CaseReducerWithPrepare,\r\n SliceActionCreator,\r\n} from './createSlice'\r\nexport {\r\n // js\r\n createImmutableStateInvariantMiddleware,\r\n isImmutableDefault,\r\n} from './immutableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n ImmutableStateInvariantMiddlewareOptions,\r\n} from './immutableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n createSerializableStateInvariantMiddleware,\r\n findNonSerializableValue,\r\n isPlain,\r\n} from './serializableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n SerializableStateInvariantMiddlewareOptions,\r\n} from './serializableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n getDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nexport type {\r\n // types\r\n ActionReducerMapBuilder,\r\n} from './mapBuilders'\r\nexport { MiddlewareArray } from './utils'\r\n\r\nexport { createEntityAdapter } from './entities/create_adapter'\r\nexport type {\r\n Dictionary,\r\n EntityState,\r\n EntityAdapter,\r\n EntitySelectors,\r\n EntityStateAdapter,\r\n EntityId,\r\n Update,\r\n IdSelector,\r\n Comparer,\r\n} from './entities/models'\r\n\r\nexport {\r\n createAsyncThunk,\r\n unwrapResult,\r\n miniSerializeError,\r\n} from './createAsyncThunk'\r\nexport type {\r\n AsyncThunk,\r\n AsyncThunkOptions,\r\n AsyncThunkAction,\r\n AsyncThunkPayloadCreatorReturnValue,\r\n AsyncThunkPayloadCreator,\r\n SerializedError,\r\n} from './createAsyncThunk'\r\n\r\nexport {\r\n // js\r\n isAllOf,\r\n isAnyOf,\r\n isPending,\r\n isRejected,\r\n isFulfilled,\r\n isAsyncThunkAction,\r\n isRejectedWithValue,\r\n} from './matchers'\r\nexport type {\r\n // types\r\n ActionMatchingAllOf,\r\n ActionMatchingAnyOf,\r\n} from './matchers'\r\n\r\nexport { nanoid } from './nanoid'\r\n\r\nexport { default as isPlainObject } from './isPlainObject'\r\n\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './listenerMiddleware/index'\r\n\r\nexport {\r\n createListenerMiddleware,\r\n addListener,\r\n removeListener,\r\n clearAllListeners,\r\n TaskAbortError,\r\n} from './listenerMiddleware/index'\r\n","module.exports = false;\n\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @returns {any} the value of the `ReactReduxContext`\n *\n * @example\n *\n * import React from 'react'\n * import { useReduxContext } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const { store } = useReduxContext()\n * return

\n * }\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const dispatch = useDispatch()\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n * return (\n *
\n * {value}\n * \n *
\n * )\n * }\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return
{counter}
\n * }\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(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, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, 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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/* unzipit@1.4.0, license MIT */\n/* global SharedArrayBuffer, process */\n\nfunction readBlobAsArrayBuffer(blob) {\n if (blob.arrayBuffer) {\n return blob.arrayBuffer();\n }\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('loadend', () => {\n resolve(reader.result);\n });\n reader.addEventListener('error', reject);\n reader.readAsArrayBuffer(blob);\n });\n}\n\nasync function readBlobAsUint8Array(blob) {\n const arrayBuffer = await readBlobAsArrayBuffer(blob);\n return new Uint8Array(arrayBuffer);\n}\n\nfunction isBlob(v) {\n return typeof Blob !== 'undefined' && v instanceof Blob;\n}\n\nfunction isSharedArrayBuffer(b) {\n return typeof SharedArrayBuffer !== 'undefined' && b instanceof SharedArrayBuffer;\n}\n\nconst isNode =\n (typeof process !== 'undefined') &&\n process.versions &&\n (typeof process.versions.node !== 'undefined') &&\n (typeof process.versions.electron === 'undefined');\n\nfunction isTypedArraySameAsArrayBuffer(typedArray) {\n return typedArray.byteOffset === 0 && typedArray.byteLength === typedArray.buffer.byteLength;\n}\n\nclass ArrayBufferReader {\n constructor(arrayBufferOrView) {\n this.typedArray = (arrayBufferOrView instanceof ArrayBuffer || isSharedArrayBuffer(arrayBufferOrView))\n ? new Uint8Array(arrayBufferOrView)\n : new Uint8Array(arrayBufferOrView.buffer, arrayBufferOrView.byteOffset, arrayBufferOrView.byteLength);\n }\n async getLength() {\n return this.typedArray.byteLength;\n }\n async read(offset, length) {\n return new Uint8Array(this.typedArray.buffer, this.typedArray.byteOffset + offset, length);\n }\n}\n\nclass BlobReader {\n constructor(blob) {\n this.blob = blob;\n }\n async getLength() {\n return this.blob.size;\n }\n async read(offset, length) {\n const blob = this.blob.slice(offset, offset + length);\n const arrayBuffer = await readBlobAsArrayBuffer(blob);\n return new Uint8Array(arrayBuffer);\n }\n async sliceAsBlob(offset, length, type = '') {\n return this.blob.slice(offset, offset + length, type);\n }\n}\n\nclass HTTPRangeReader {\n constructor(url) {\n this.url = url;\n }\n async getLength() {\n if (this.length === undefined) {\n const req = await fetch(this.url, { method: 'HEAD' });\n if (!req.ok) {\n throw new Error(`failed http request ${this.url}, status: ${req.status}: ${req.statusText}`);\n }\n this.length = parseInt(req.headers.get('content-length'));\n if (Number.isNaN(this.length)) {\n throw Error('could not get length');\n }\n }\n return this.length;\n }\n async read(offset, size) {\n if (size === 0) {\n return new Uint8Array(0);\n }\n const req = await fetch(this.url, {\n headers: {\n Range: `bytes=${offset}-${offset + size - 1}`,\n },\n });\n if (!req.ok) {\n throw new Error(`failed http request ${this.url}, status: ${req.status} offset: ${offset} size: ${size}: ${req.statusText}`);\n }\n const buffer = await req.arrayBuffer();\n return new Uint8Array(buffer);\n }\n}\n\nfunction inflate(data, buf) {\n\tvar u8=Uint8Array;\n\tif(data[0]==3 && data[1]==0) return (buf ? buf : new u8(0));\n\tvar bitsF = _bitsF, bitsE = _bitsE, decodeTiny = _decodeTiny, get17 = _get17;\n\t\n\tvar noBuf = (buf==null);\n\tif(noBuf) buf = new u8((data.length>>>2)<<3);\n\t\n\tvar BFINAL=0, BTYPE=0, HLIT=0, HDIST=0, HCLEN=0, ML=0, MD=0; \t\n\tvar off = 0, pos = 0;\n\tvar lmap, dmap;\n\t\n\twhile(BFINAL==0) {\t\t\n\t\tBFINAL = bitsF(data, pos , 1);\n\t\tBTYPE = bitsF(data, pos+1, 2); pos+=3;\n\t\t//console.log(BFINAL, BTYPE);\n\t\t\n\t\tif(BTYPE==0) {\n\t\t\tif((pos&7)!=0) pos+=8-(pos&7);\n\t\t\tvar p8 = (pos>>>3)+4, len = data[p8-4]|(data[p8-3]<<8); //console.log(len);//bitsF(data, pos, 16), \n\t\t\tif(noBuf) buf=_check(buf, off+len);\n\t\t\tbuf.set(new u8(data.buffer, data.byteOffset+p8, len), off);\n\t\t\t//for(var i=0; itl)tl=l; } pos+=3*HCLEN; //console.log(itree);\n\t\t\tmakeCodes(U.itree, tl);\n\t\t\tcodes2map(U.itree, tl, U.imap);\n\t\t\t\n\t\t\tlmap = U.lmap; dmap = U.dmap;\n\t\t\t\n\t\t\tpos = decodeTiny(U.imap, (1<>>24))-1; pos+=(ml&0xffffff);\n\t\t\tmakeCodes(U.ltree, mx0);\n\t\t\tcodes2map(U.ltree, mx0, lmap);\n\t\t\t\n\t\t\t//var md = decodeTiny(U.imap, (1<>>24))-1; pos+=(md&0xffffff);\n\t\t\tmakeCodes(U.dtree, mx1);\n\t\t\tcodes2map(U.dtree, mx1, dmap);\n\t\t}\n\t\t//var ooff=off, opos=pos;\n\t\twhile(true) {\n\t\t\tvar code = lmap[get17(data, pos) & ML]; pos += code&15;\n\t\t\tvar lit = code>>>4; //U.lhst[lit]++; \n\t\t\tif((lit>>>8)==0) { buf[off++] = lit; }\n\t\t\telse if(lit==256) { break; }\n\t\t\telse {\n\t\t\t\tvar end = off+lit-254;\n\t\t\t\tif(lit>264) { var ebs = U.ldef[lit-257]; end = off + (ebs>>>3) + bitsE(data, pos, ebs&7); pos += ebs&7; }\n\t\t\t\t//dst[end-off]++;\n\t\t\t\t\n\t\t\t\tvar dcode = dmap[get17(data, pos) & MD]; pos += dcode&15;\n\t\t\t\tvar dlit = dcode>>>4;\n\t\t\t\tvar dbs = U.ddef[dlit], dst = (dbs>>>4) + bitsF(data, pos, dbs&15); pos += dbs&15;\n\t\t\t\t\n\t\t\t\t//var o0 = off-dst, stp = Math.min(end-off, dst);\n\t\t\t\t//if(stp>20) while(off>>3);\n\t}\n\t//console.log(dst);\n\t//console.log(tlen, dlen, off-tlen+tcnt);\n\treturn buf.length==off ? buf : buf.slice(0,off);\n}\nfunction _check(buf, len) {\n\tvar bl=buf.length; if(len<=bl) return buf;\n\tvar nbuf = new Uint8Array(Math.max(bl<<1,len)); nbuf.set(buf,0);\n\t//for(var i=0; i>>4; \n\t\tif(lit<=15) { tree[i]=lit; i++; }\n\t\telse {\n\t\t\tvar ll = 0, n = 0;\n\t\t\tif(lit==16) {\n\t\t\t\tn = (3 + bitsE(data, pos, 2)); pos += 2; ll = tree[i-1];\n\t\t\t}\n\t\t\telse if(lit==17) {\n\t\t\t\tn = (3 + bitsE(data, pos, 3)); pos += 3;\n\t\t\t}\n\t\t\telse if(lit==18) {\n\t\t\t\tn = (11 + bitsE(data, pos, 7)); pos += 7;\n\t\t\t}\n\t\t\tvar ni = i+n;\n\t\t\twhile(i>>1;\n\twhile(imx)mx=v; i++; }\n\twhile(i>1;\n\t\tvar cl = tree[i+1], val = (lit<<4)|cl; // : (0x8000 | (U.of0[lit-257]<<7) | (U.exb[lit-257]<<4) | cl);\n\t\tvar rest = (MAX_BITS-cl), i0 = tree[i]<>>(15-MAX_BITS);\n\t\twhile(i0!=i1) {\n\t\t\tvar p0 = r15[i0]>>>(15-MAX_BITS);\n\t\t\tmap[p0]=val; i0++;\n\t\t}\n\t}\n}\nfunction revCodes(tree, MAX_BITS) {\n\tvar r15 = U.rev15, imb = 15-MAX_BITS;\n\tfor(var i=0; i>>imb; }\n}\n\nfunction _bitsE(dt, pos, length) { return ((dt[pos>>>3] | (dt[(pos>>>3)+1]<<8) )>>>(pos&7))&((1<>>3] | (dt[(pos>>>3)+1]<<8) | (dt[(pos>>>3)+2]<<16))>>>(pos&7))&((1<>>3] | (dt[(pos>>>3)+1]<<8))>>>(pos&7))&511;\n} */\nfunction _get17(dt, pos) {\t// return at least 17 meaningful bytes\n\treturn (dt[pos>>>3] | (dt[(pos>>>3)+1]<<8) | (dt[(pos>>>3)+2]<<16) )>>>(pos&7);\n}\nconst U = function(){\n\tvar u16=Uint16Array, u32=Uint32Array;\n\treturn {\n\t\tnext_code : new u16(16),\n\t\tbl_count : new u16(16),\n\t\tordr : [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ],\n\t\tof0 : [3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],\n\t\texb : [0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0],\n\t\tldef : new u16(32),\n\t\tdf0 : [1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 65535, 65535],\n\t\tdxb : [0,0,0,0,1,1,2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0],\n\t\tddef : new u32(32),\n\t\tflmap: new u16( 512), fltree: [],\n\t\tfdmap: new u16( 32), fdtree: [],\n\t\tlmap : new u16(32768), ltree : [], ttree:[],\n\t\tdmap : new u16(32768), dtree : [],\n\t\timap : new u16( 512), itree : [],\n\t\t//rev9 : new u16( 512)\n\t\trev15: new u16(1<<15),\n\t\tlhst : new u32(286), dhst : new u32( 30), ihst : new u32(19),\n\t\tlits : new u32(15000),\n\t\tstrt : new u16(1<<16),\n\t\tprev : new u16(1<<15)\n\t}; \n} ();\n\n(function(){\t\n\tvar len = 1<<15;\n\tfor(var i=0; i>> 1) | ((x & 0x55555555) << 1));\n\t\tx = (((x & 0xcccccccc) >>> 2) | ((x & 0x33333333) << 2));\n\t\tx = (((x & 0xf0f0f0f0) >>> 4) | ((x & 0x0f0f0f0f) << 4));\n\t\tx = (((x & 0xff00ff00) >>> 8) | ((x & 0x00ff00ff) << 8));\n\t\tU.rev15[i] = (((x >>> 16) | (x << 16)))>>>17;\n\t}\n\t\n\tfunction pushV(tgt, n, sv) { while(n--!=0) tgt.push(0,sv); }\n\t\n\tfor(var i=0; i<32; i++) { U.ldef[i]=(U.of0[i]<<3)|U.exb[i]; U.ddef[i]=(U.df0[i]<<4)|U.dxb[i]; }\n\t\n\tpushV(U.fltree, 144, 8); pushV(U.fltree, 255-143, 9); pushV(U.fltree, 279-255, 7); pushV(U.fltree,287-279,8);\n\t/*\n\tvar i = 0;\n\tfor(; i<=143; i++) U.fltree.push(0,8);\n\tfor(; i<=255; i++) U.fltree.push(0,9);\n\tfor(; i<=279; i++) U.fltree.push(0,7);\n\tfor(; i<=287; i++) U.fltree.push(0,8);\n\t*/\n\tmakeCodes(U.fltree, 9);\n\tcodes2map(U.fltree, 9, U.flmap);\n\trevCodes (U.fltree, 9);\n\t\n\tpushV(U.fdtree,32,5);\n\t//for(i=0;i<32; i++) U.fdtree.push(0,5);\n\tmakeCodes(U.fdtree, 5);\n\tcodes2map(U.fdtree, 5, U.fdmap);\n\trevCodes (U.fdtree, 5);\n\t\n\tpushV(U.itree,19,0); pushV(U.ltree,286,0); pushV(U.dtree,30,0); pushV(U.ttree,320,0);\n\t/*\n\tfor(var i=0; i< 19; i++) U.itree.push(0,0);\n\tfor(var i=0; i<286; i++) U.ltree.push(0,0);\n\tfor(var i=0; i< 30; i++) U.dtree.push(0,0);\n\tfor(var i=0; i<320; i++) U.ttree.push(0,0);\n\t*/\n})();\n\nconst crc = {\r\n\ttable : ( function() {\r\n\t var tab = new Uint32Array(256);\r\n\t for (var n=0; n<256; n++) {\r\n\t\t\tvar c = n;\r\n\t\t\tfor (var k=0; k<8; k++) {\r\n\t\t\t\tif (c & 1) c = 0xedb88320 ^ (c >>> 1);\r\n\t\t\t\telse c = c >>> 1;\r\n\t\t\t}\r\n\t\t\ttab[n] = c; } \r\n\t\treturn tab; })(),\r\n\tupdate : function(c, buf, off, len) {\r\n\t\tfor (var i=0; i>> 8);\r\n\t\treturn c;\r\n\t},\r\n\tcrc : function(b,o,l) { return crc.update(0xffffffff,b,o,l) ^ 0xffffffff; }\r\n};\r\n\r\nfunction inflateRaw(file, buf) { return inflate(file, buf); }\n\n/* global module */\n\nconst config = {\n numWorkers: 1,\n workerURL: '',\n useWorkers: false,\n};\n\nlet nextId = 0;\n\n// Requests are put on a queue.\n// We don't send the request to the worker until the worker\n// is finished. This probably adds a small amount of latency\n// but the issue is imagine you have 2 workers. You give worker\n// A x seconds of work to do and worker B y seconds of work to\n// do. You don't know which will finish first. If you give\n// the worker with more work to do the request then you'll\n// waste time.\n\n// note: we can't check `workers.length` for deciding if\n// we've reached `config.numWorkers` because creation the worker\n// is async which means other requests to make workers might\n// come in before a worker gets added to `workers`\nlet numWorkers = 0;\nlet canUseWorkers = true; // gets set to false if we can't start a worker\nconst workers = [];\nconst availableWorkers = [];\nconst waitingForWorkerQueue = [];\nconst currentlyProcessingIdToRequestMap = new Map();\n\nfunction handleResult(e) {\n makeWorkerAvailable(e.target);\n const {id, error, data} = e.data;\n const request = currentlyProcessingIdToRequestMap.get(id);\n currentlyProcessingIdToRequestMap.delete(id);\n if (error) {\n request.reject(error);\n } else {\n request.resolve(data);\n }\n}\n\n// Because Firefox uses non-standard onerror to signal an error.\nfunction startWorker(url) {\n return new Promise((resolve, reject) => {\n const worker = new Worker(url);\n worker.onmessage = (e) => {\n if (e.data === 'start') {\n worker.onerror = undefined;\n worker.onmessage = undefined;\n resolve(worker);\n } else {\n reject(new Error(`unexpected message: ${e.data}`));\n }\n };\n worker.onerror = reject;\n });\n}\n\nfunction dynamicRequire(mod, request) {\n return mod.require(request);\n}\n\nconst workerHelper = (function() {\n if (isNode) {\n // We need to use `dynamicRequire` because `require` on it's own will be optimized by webpack.\n const {Worker} = dynamicRequire(module, 'worker_threads');\n return {\n async createWorker(url) {\n return new Worker(url);\n },\n addEventListener(worker, fn) {\n worker.on('message', (data) => {\n fn({target: worker, data});\n });\n },\n async terminate(worker) {\n await worker.terminate();\n },\n };\n } else {\n return {\n async createWorker(url) {\n // I don't understand this security issue\n // Apparently there is some iframe setting or http header\n // that prevents cross domain workers. But, I can manually\n // download the text and do it. I reported this to Chrome\n // and they said it was fine so ¯\\_(ツ)_/¯\n try {\n const worker = await startWorker(url);\n return worker;\n } catch (e) {\n console.warn('could not load worker:', url);\n }\n\n let text;\n try {\n const req = await fetch(url, {mode: 'cors'});\n if (!req.ok) {\n throw new Error(`could not load: ${url}`);\n }\n text = await req.text();\n url = URL.createObjectURL(new Blob([text], {type: 'application/javascript'}));\n const worker = await startWorker(url);\n config.workerURL = url; // this is a hack. What's a better way to structure this code?\n return worker;\n } catch (e) {\n console.warn('could not load worker via fetch:', url);\n }\n\n if (text !== undefined) {\n try {\n url = `data:application/javascript;base64,${btoa(text)}`;\n const worker = await startWorker(url);\n config.workerURL = url;\n return worker;\n } catch (e) {\n console.warn('could not load worker via dataURI');\n }\n }\n\n console.warn('workers will not be used');\n throw new Error('can not start workers');\n },\n addEventListener(worker, fn) {\n worker.addEventListener('message', fn);\n },\n async terminate(worker) {\n worker.terminate();\n },\n };\n }\n}());\n\nfunction makeWorkerAvailable(worker) {\n availableWorkers.push(worker);\n processWaitingForWorkerQueue();\n}\n\nasync function getAvailableWorker() {\n if (availableWorkers.length === 0 && numWorkers < config.numWorkers) {\n ++numWorkers; // see comment at numWorkers declaration\n try {\n const worker = await workerHelper.createWorker(config.workerURL);\n workers.push(worker);\n availableWorkers.push(worker);\n workerHelper.addEventListener(worker, handleResult);\n } catch (e) {\n // set this global out-of-band (needs refactor)\n canUseWorkers = false;\n }\n }\n return availableWorkers.pop();\n}\n\n// @param {Uint8Array} src\n// @param {number} uncompressedSize\n// @param {string} [type] mime-type\n// @returns {ArrayBuffer|Blob} ArrayBuffer if type is falsy or Blob otherwise.\nfunction inflateRawLocal(src, uncompressedSize, type, resolve) {\n const dst = new Uint8Array(uncompressedSize);\n inflateRaw(src, dst);\n resolve(type\n ? new Blob([dst], {type})\n : dst.buffer);\n}\n\nasync function processWaitingForWorkerQueue() {\n if (waitingForWorkerQueue.length === 0) {\n return;\n }\n\n if (config.useWorkers && canUseWorkers) {\n const worker = await getAvailableWorker();\n // canUseWorkers might have been set out-of-band (need refactor)\n if (canUseWorkers) {\n if (worker) {\n if (waitingForWorkerQueue.length === 0) {\n // the queue might be empty while we awaited for a worker.\n makeWorkerAvailable(worker);\n return;\n }\n const {id, src, uncompressedSize, type, resolve, reject} = waitingForWorkerQueue.shift();\n currentlyProcessingIdToRequestMap.set(id, {id, resolve, reject});\n const transferables = [];\n // NOTE: Originally I thought you could transfer an ArrayBuffer.\n // The code on this side is often using views into the entire file\n // which means if we transferred we'd lose the entire file. That sucks\n // because it means there's an expensive copy to send the uncompressed\n // data to the worker.\n //\n // Also originally I thought we could send a Blob but we'd need to refactor\n // the code in unzipit/readEntryData as currently it reads the uncompressed\n // bytes.\n //\n //if (!isBlob(src) && !isSharedArrayBuffer(src)) {\n // transferables.push(src);\n //}\n worker.postMessage({\n type: 'inflate',\n data: {\n id,\n type,\n src,\n uncompressedSize,\n },\n }, transferables);\n }\n return;\n }\n }\n\n // inflate locally\n // We loop here because what happens if many requests happen at once\n // the first N requests will try to async make a worker. Other requests\n // will then be on the queue. But if we fail to make workers then there\n // are pending requests.\n while (waitingForWorkerQueue.length) {\n const {src, uncompressedSize, type, resolve} = waitingForWorkerQueue.shift();\n let data = src;\n if (isBlob(src)) {\n data = await readBlobAsUint8Array(src);\n }\n inflateRawLocal(data, uncompressedSize, type, resolve);\n }\n}\n\nfunction setOptions(options) {\n config.workerURL = options.workerURL || config.workerURL;\n // there's no reason to set the workerURL if you're not going to use workers\n if (options.workerURL) {\n config.useWorkers = true;\n }\n config.useWorkers = options.useWorkers !== undefined ? options.useWorkers : config.useWorkers;\n config.numWorkers = options.numWorkers || config.numWorkers;\n}\n\n// It has to take non-zero time to put a large typed array in a Blob since the very\n// next instruction you could change the contents of the array. So, if you're reading\n// the zip file for images/video/audio then all you want is a Blob on which to get a URL.\n// so that operation of putting the data in a Blob should happen in the worker.\n//\n// Conversely if you want the data itself then you want an ArrayBuffer immediately\n// since the worker can transfer its ArrayBuffer zero copy.\n//\n// @param {Uint8Array|Blob} src\n// @param {number} uncompressedSize\n// @param {string} [type] falsy or mimeType string (eg: 'image/png')\n// @returns {ArrayBuffer|Blob} ArrayBuffer if type is falsy or Blob otherwise.\nfunction inflateRawAsync(src, uncompressedSize, type) {\n return new Promise((resolve, reject) => {\n // note: there is potential an expensive copy here. In order for the data\n // to make it into the worker we need to copy the data to the worker unless\n // it's a Blob or a SharedArrayBuffer.\n //\n // Solutions:\n //\n // 1. A minor enhancement, if `uncompressedSize` is small don't call the worker.\n //\n // might be a win period as their is overhead calling the worker\n //\n // 2. Move the entire library to the worker\n //\n // Good, Maybe faster if you pass a URL, Blob, or SharedArrayBuffer? Not sure about that\n // as those are also easy to transfer. Still slow if you pass an ArrayBuffer\n // as the ArrayBuffer has to be copied to the worker.\n //\n // I guess benchmarking is really the only thing to try.\n waitingForWorkerQueue.push({src, uncompressedSize, type, resolve, reject, id: nextId++});\n processWaitingForWorkerQueue();\n });\n}\n\nfunction clearArray(arr) {\n arr.splice(0, arr.length);\n}\n\nasync function cleanup() {\n for (const worker of workers) {\n await workerHelper.terminate(worker);\n }\n clearArray(workers);\n clearArray(availableWorkers);\n clearArray(waitingForWorkerQueue);\n currentlyProcessingIdToRequestMap.clear();\n numWorkers = 0;\n canUseWorkers = true;\n}\n\n/*\nclass Zip {\n constructor(reader) {\n comment, // the comment for this entry\n commentBytes, // the raw comment for this entry\n }\n}\n*/\n\nfunction dosDateTimeToDate(date, time) {\n const day = date & 0x1f; // 1-31\n const month = (date >> 5 & 0xf) - 1; // 1-12, 0-11\n const year = (date >> 9 & 0x7f) + 1980; // 0-128, 1980-2108\n\n const millisecond = 0;\n const second = (time & 0x1f) * 2; // 0-29, 0-58 (even numbers)\n const minute = time >> 5 & 0x3f; // 0-59\n const hour = time >> 11 & 0x1f; // 0-23\n\n return new Date(year, month, day, hour, minute, second, millisecond);\n}\n\nclass ZipEntry {\n constructor(reader, rawEntry) {\n this._reader = reader;\n this._rawEntry = rawEntry;\n this.name = rawEntry.name;\n this.nameBytes = rawEntry.nameBytes;\n this.size = rawEntry.uncompressedSize;\n this.compressedSize = rawEntry.compressedSize;\n this.comment = rawEntry.comment;\n this.commentBytes = rawEntry.commentBytes;\n this.compressionMethod = rawEntry.compressionMethod;\n this.lastModDate = dosDateTimeToDate(rawEntry.lastModFileDate, rawEntry.lastModFileTime);\n this.isDirectory = rawEntry.uncompressedSize === 0 && rawEntry.name.endsWith('/');\n this.encrypted = !!(rawEntry.generalPurposeBitFlag & 0x1);\n this.externalFileAttributes = rawEntry.externalFileAttributes;\n this.versionMadeBy = rawEntry.versionMadeBy;\n }\n // returns a promise that returns a Blob for this entry\n async blob(type = 'application/octet-stream') {\n return await readEntryDataAsBlob(this._reader, this._rawEntry, type);\n }\n // returns a promise that returns an ArrayBuffer for this entry\n async arrayBuffer() {\n return await readEntryDataAsArrayBuffer(this._reader, this._rawEntry);\n }\n // returns text, assumes the text is valid utf8. If you want more options decode arrayBuffer yourself\n async text() {\n const buffer = await this.arrayBuffer();\n return decodeBuffer(new Uint8Array(buffer));\n }\n // returns text with JSON.parse called on it. If you want more options decode arrayBuffer yourself\n async json() {\n const text = await this.text();\n return JSON.parse(text);\n }\n}\n\nconst EOCDR_WITHOUT_COMMENT_SIZE = 22;\nconst MAX_COMMENT_SIZE = 0xffff; // 2-byte size\nconst EOCDR_SIGNATURE = 0x06054b50;\nconst ZIP64_EOCDR_SIGNATURE = 0x06064b50;\n\nasync function readAs(reader, offset, length) {\n return await reader.read(offset, length);\n}\n\n// The point of this function is we want to be able to pass the data\n// to a worker as fast as possible so when decompressing if the data\n// is already a blob and we can get a blob then get a blob.\n//\n// I'm not sure what a better way to refactor this is. We've got examples\n// of multiple readers. Ideally, for every type of reader we could ask\n// it, \"give me a type that is zero copy both locally and when sent to a worker\".\n//\n// The problem is the worker would also have to know the how to handle this\n// opaque type. I suppose the correct solution is to register different\n// reader handlers in the worker so BlobReader would register some\n// `handleZeroCopyType`. At the moment I don't feel like\n// refactoring. As it is you just pass in an instance of the reader\n// but instead you'd have to register the reader and some how get the\n// source for the `handleZeroCopyType` handler function into the worker.\n// That sounds like a huge PITA, requiring you to put the implementation\n// in a separate file so the worker can load it or some other workaround\n// hack.\n//\n// For now this hack works even if it's not generic.\nasync function readAsBlobOrTypedArray(reader, offset, length, type) {\n if (reader.sliceAsBlob) {\n return await reader.sliceAsBlob(offset, length, type);\n }\n return await reader.read(offset, length);\n}\n\nconst crc$1 = {\n unsigned() {\n return 0;\n },\n};\n\nfunction getUint16LE(uint8View, offset) {\n return uint8View[offset ] +\n uint8View[offset + 1] * 0x100;\n}\n\nfunction getUint32LE(uint8View, offset) {\n return uint8View[offset ] +\n uint8View[offset + 1] * 0x100 +\n uint8View[offset + 2] * 0x10000 +\n uint8View[offset + 3] * 0x1000000;\n}\n\nfunction getUint64LE(uint8View, offset) {\n return getUint32LE(uint8View, offset) +\n getUint32LE(uint8View, offset + 4) * 0x100000000;\n}\n\n/* eslint-disable no-irregular-whitespace */\n// const decodeCP437 = (function() {\n// const cp437 = '\\u0000☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ';\n//\n// return function(uint8view) {\n// return Array.from(uint8view).map(v => cp437[v]).join('');\n// };\n// }());\n/* eslint-enable no-irregular-whitespace */\n\nconst utf8Decoder = new TextDecoder();\nfunction decodeBuffer(uint8View, isUTF8) { /* eslint-disable-line no-unused-vars */ /* lgtm [js/superfluous-trailing-arguments] */\n if (isSharedArrayBuffer(uint8View.buffer)) {\n uint8View = new Uint8Array(uint8View);\n }\n return utf8Decoder.decode(uint8View);\n /*\n AFAICT the UTF8 flat is not set so it's 100% up to the user\n to self decode if their file is not utf8 filenames\n return isUTF8\n ? utf8Decoder.decode(uint8View)\n : decodeCP437(uint8View);\n */\n}\n\nasync function findEndOfCentralDirector(reader, totalLength) {\n const size = Math.min(EOCDR_WITHOUT_COMMENT_SIZE + MAX_COMMENT_SIZE, totalLength);\n const readStart = totalLength - size;\n const data = await readAs(reader, readStart, size);\n for (let i = size - EOCDR_WITHOUT_COMMENT_SIZE; i >= 0; --i) {\n if (getUint32LE(data, i) !== EOCDR_SIGNATURE) {\n continue;\n }\n\n // 0 - End of central directory signature\n const eocdr = new Uint8Array(data.buffer, data.byteOffset + i, data.byteLength - i);\n // 4 - Number of this disk\n const diskNumber = getUint16LE(eocdr, 4);\n if (diskNumber !== 0) {\n throw new Error(`multi-volume zip files are not supported. This is volume: ${diskNumber}`);\n }\n\n // 6 - Disk where central directory starts\n // 8 - Number of central directory records on this disk\n // 10 - Total number of central directory records\n const entryCount = getUint16LE(eocdr, 10);\n // 12 - Size of central directory (bytes)\n const centralDirectorySize = getUint32LE(eocdr, 12);\n // 16 - Offset of start of central directory, relative to start of archive\n const centralDirectoryOffset = getUint32LE(eocdr, 16);\n // 20 - Comment length\n const commentLength = getUint16LE(eocdr, 20);\n const expectedCommentLength = eocdr.length - EOCDR_WITHOUT_COMMENT_SIZE;\n if (commentLength !== expectedCommentLength) {\n throw new Error(`invalid comment length. expected: ${expectedCommentLength}, actual: ${commentLength}`);\n }\n\n // 22 - Comment\n // the encoding is always cp437.\n const commentBytes = new Uint8Array(eocdr.buffer, eocdr.byteOffset + 22, commentLength);\n const comment = decodeBuffer(commentBytes);\n\n if (entryCount === 0xffff || centralDirectoryOffset === 0xffffffff) {\n return await readZip64CentralDirectory(reader, readStart + i, comment, commentBytes);\n } else {\n return await readEntries(reader, centralDirectoryOffset, centralDirectorySize, entryCount, comment, commentBytes);\n }\n }\n\n throw new Error('could not find end of central directory. maybe not zip file');\n}\n\nconst END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE = 0x07064b50;\n\nasync function readZip64CentralDirectory(reader, offset, comment, commentBytes) {\n // ZIP64 Zip64 end of central directory locator\n const zip64EocdlOffset = offset - 20;\n const eocdl = await readAs(reader, zip64EocdlOffset, 20);\n\n // 0 - zip64 end of central dir locator signature\n if (getUint32LE(eocdl, 0) !== END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE) {\n throw new Error('invalid zip64 end of central directory locator signature');\n }\n\n // 4 - number of the disk with the start of the zip64 end of central directory\n // 8 - relative offset of the zip64 end of central directory record\n const zip64EocdrOffset = getUint64LE(eocdl, 8);\n // 16 - total number of disks\n\n // ZIP64 end of central directory record\n const zip64Eocdr = await readAs(reader, zip64EocdrOffset, 56);\n\n // 0 - zip64 end of central dir signature 4 bytes (0x06064b50)\n if (getUint32LE(zip64Eocdr, 0) !== ZIP64_EOCDR_SIGNATURE) {\n throw new Error('invalid zip64 end of central directory record signature');\n }\n // 4 - size of zip64 end of central directory record 8 bytes\n // 12 - version made by 2 bytes\n // 14 - version needed to extract 2 bytes\n // 16 - number of this disk 4 bytes\n // 20 - number of the disk with the start of the central directory 4 bytes\n // 24 - total number of entries in the central directory on this disk 8 bytes\n // 32 - total number of entries in the central directory 8 bytes\n const entryCount = getUint64LE(zip64Eocdr, 32);\n // 40 - size of the central directory 8 bytes\n const centralDirectorySize = getUint64LE(zip64Eocdr, 40);\n // 48 - offset of start of central directory with respect to the starting disk number 8 bytes\n const centralDirectoryOffset = getUint64LE(zip64Eocdr, 48);\n // 56 - zip64 extensible data sector (variable size)\n return readEntries(reader, centralDirectoryOffset, centralDirectorySize, entryCount, comment, commentBytes);\n}\n\nconst CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE = 0x02014b50;\n\nasync function readEntries(reader, centralDirectoryOffset, centralDirectorySize, rawEntryCount, comment, commentBytes) {\n let readEntryCursor = 0;\n const allEntriesBuffer = await readAs(reader, centralDirectoryOffset, centralDirectorySize);\n const rawEntries = [];\n\n for (let e = 0; e < rawEntryCount; ++e) {\n const buffer = allEntriesBuffer.subarray(readEntryCursor, readEntryCursor + 46);\n // 0 - Central directory file header signature\n const signature = getUint32LE(buffer, 0);\n if (signature !== CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE) {\n throw new Error(`invalid central directory file header signature: 0x${signature.toString(16)}`);\n }\n const rawEntry = {\n // 4 - Version made by\n versionMadeBy: getUint16LE(buffer, 4),\n // 6 - Version needed to extract (minimum)\n versionNeededToExtract: getUint16LE(buffer, 6),\n // 8 - General purpose bit flag\n generalPurposeBitFlag: getUint16LE(buffer, 8),\n // 10 - Compression method\n compressionMethod: getUint16LE(buffer, 10),\n // 12 - File last modification time\n lastModFileTime: getUint16LE(buffer, 12),\n // 14 - File last modification date\n lastModFileDate: getUint16LE(buffer, 14),\n // 16 - CRC-32\n crc32: getUint32LE(buffer, 16),\n // 20 - Compressed size\n compressedSize: getUint32LE(buffer, 20),\n // 24 - Uncompressed size\n uncompressedSize: getUint32LE(buffer, 24),\n // 28 - File name length (n)\n fileNameLength: getUint16LE(buffer, 28),\n // 30 - Extra field length (m)\n extraFieldLength: getUint16LE(buffer, 30),\n // 32 - File comment length (k)\n fileCommentLength: getUint16LE(buffer, 32),\n // 34 - Disk number where file starts\n // 36 - Internal file attributes\n internalFileAttributes: getUint16LE(buffer, 36),\n // 38 - External file attributes\n externalFileAttributes: getUint32LE(buffer, 38),\n // 42 - Relative offset of local file header\n relativeOffsetOfLocalHeader: getUint32LE(buffer, 42),\n };\n\n if (rawEntry.generalPurposeBitFlag & 0x40) {\n throw new Error('strong encryption is not supported');\n }\n\n readEntryCursor += 46;\n\n const data = allEntriesBuffer.subarray(readEntryCursor, readEntryCursor + rawEntry.fileNameLength + rawEntry.extraFieldLength + rawEntry.fileCommentLength);\n rawEntry.nameBytes = data.slice(0, rawEntry.fileNameLength);\n rawEntry.name = decodeBuffer(rawEntry.nameBytes);\n\n // 46+n - Extra field\n const fileCommentStart = rawEntry.fileNameLength + rawEntry.extraFieldLength;\n const extraFieldBuffer = data.slice(rawEntry.fileNameLength, fileCommentStart);\n rawEntry.extraFields = [];\n let i = 0;\n while (i < extraFieldBuffer.length - 3) {\n const headerId = getUint16LE(extraFieldBuffer, i + 0);\n const dataSize = getUint16LE(extraFieldBuffer, i + 2);\n const dataStart = i + 4;\n const dataEnd = dataStart + dataSize;\n if (dataEnd > extraFieldBuffer.length) {\n throw new Error('extra field length exceeds extra field buffer size');\n }\n rawEntry.extraFields.push({\n id: headerId,\n data: extraFieldBuffer.slice(dataStart, dataEnd),\n });\n i = dataEnd;\n }\n\n // 46+n+m - File comment\n rawEntry.commentBytes = data.slice(fileCommentStart, fileCommentStart + rawEntry.fileCommentLength);\n rawEntry.comment = decodeBuffer(rawEntry.commentBytes);\n\n readEntryCursor += data.length;\n\n if (rawEntry.uncompressedSize === 0xffffffff ||\n rawEntry.compressedSize === 0xffffffff ||\n rawEntry.relativeOffsetOfLocalHeader === 0xffffffff) {\n // ZIP64 format\n // find the Zip64 Extended Information Extra Field\n const zip64ExtraField = rawEntry.extraFields.find(e => e.id === 0x0001);\n if (!zip64ExtraField) {\n throw new Error('expected zip64 extended information extra field');\n }\n const zip64EiefBuffer = zip64ExtraField.data;\n let index = 0;\n // 0 - Original Size 8 bytes\n if (rawEntry.uncompressedSize === 0xffffffff) {\n if (index + 8 > zip64EiefBuffer.length) {\n throw new Error('zip64 extended information extra field does not include uncompressed size');\n }\n rawEntry.uncompressedSize = getUint64LE(zip64EiefBuffer, index);\n index += 8;\n }\n // 8 - Compressed Size 8 bytes\n if (rawEntry.compressedSize === 0xffffffff) {\n if (index + 8 > zip64EiefBuffer.length) {\n throw new Error('zip64 extended information extra field does not include compressed size');\n }\n rawEntry.compressedSize = getUint64LE(zip64EiefBuffer, index);\n index += 8;\n }\n // 16 - Relative Header Offset 8 bytes\n if (rawEntry.relativeOffsetOfLocalHeader === 0xffffffff) {\n if (index + 8 > zip64EiefBuffer.length) {\n throw new Error('zip64 extended information extra field does not include relative header offset');\n }\n rawEntry.relativeOffsetOfLocalHeader = getUint64LE(zip64EiefBuffer, index);\n index += 8;\n }\n // 24 - Disk Start Number 4 bytes\n }\n\n // check for Info-ZIP Unicode Path Extra Field (0x7075)\n // see https://github.com/thejoshwolfe/yauzl/issues/33\n const nameField = rawEntry.extraFields.find(e =>\n e.id === 0x7075 &&\n e.data.length >= 6 && // too short to be meaningful\n e.data[0] === 1 && // Version 1 byte version of this extra field, currently 1\n getUint32LE(e.data, 1), crc$1.unsigned(rawEntry.nameBytes)); // NameCRC32 4 bytes File Name Field CRC32 Checksum\n // > If the CRC check fails, this UTF-8 Path Extra Field should be\n // > ignored and the File Name field in the header should be used instead.\n if (nameField) {\n // UnicodeName Variable UTF-8 version of the entry File Name\n rawEntry.fileName = decodeBuffer(nameField.data.slice(5));\n }\n\n // validate file size\n if (rawEntry.compressionMethod === 0) {\n let expectedCompressedSize = rawEntry.uncompressedSize;\n if ((rawEntry.generalPurposeBitFlag & 0x1) !== 0) {\n // traditional encryption prefixes the file data with a header\n expectedCompressedSize += 12;\n }\n if (rawEntry.compressedSize !== expectedCompressedSize) {\n throw new Error(`compressed size mismatch for stored file: ${rawEntry.compressedSize} != ${expectedCompressedSize}`);\n }\n }\n rawEntries.push(rawEntry);\n }\n const zip = {\n comment,\n commentBytes,\n };\n return {\n zip,\n entries: rawEntries.map(e => new ZipEntry(reader, e)),\n };\n}\n\nasync function readEntryDataHeader(reader, rawEntry) {\n if (rawEntry.generalPurposeBitFlag & 0x1) {\n throw new Error('encrypted entries not supported');\n }\n const buffer = await readAs(reader, rawEntry.relativeOffsetOfLocalHeader, 30);\n // note: maybe this should be passed in or cached on entry\n // as it's async so there will be at least one tick (not sure about that)\n const totalLength = await reader.getLength();\n\n // 0 - Local file header signature = 0x04034b50\n const signature = getUint32LE(buffer, 0);\n if (signature !== 0x04034b50) {\n throw new Error(`invalid local file header signature: 0x${signature.toString(16)}`);\n }\n\n // all this should be redundant\n // 4 - Version needed to extract (minimum)\n // 6 - General purpose bit flag\n // 8 - Compression method\n // 10 - File last modification time\n // 12 - File last modification date\n // 14 - CRC-32\n // 18 - Compressed size\n // 22 - Uncompressed size\n // 26 - File name length (n)\n const fileNameLength = getUint16LE(buffer, 26);\n // 28 - Extra field length (m)\n const extraFieldLength = getUint16LE(buffer, 28);\n // 30 - File name\n // 30+n - Extra field\n const localFileHeaderEnd = rawEntry.relativeOffsetOfLocalHeader + buffer.length + fileNameLength + extraFieldLength;\n let decompress;\n if (rawEntry.compressionMethod === 0) {\n // 0 - The file is stored (no compression)\n decompress = false;\n } else if (rawEntry.compressionMethod === 8) {\n // 8 - The file is Deflated\n decompress = true;\n } else {\n throw new Error(`unsupported compression method: ${rawEntry.compressionMethod}`);\n }\n const fileDataStart = localFileHeaderEnd;\n const fileDataEnd = fileDataStart + rawEntry.compressedSize;\n if (rawEntry.compressedSize !== 0) {\n // bounds check now, because the read streams will probably not complain loud enough.\n // since we're dealing with an unsigned offset plus an unsigned size,\n // we only have 1 thing to check for.\n if (fileDataEnd > totalLength) {\n throw new Error(`file data overflows file bounds: ${fileDataStart} + ${rawEntry.compressedSize} > ${totalLength}`);\n }\n }\n return {\n decompress,\n fileDataStart,\n };\n}\n\nasync function readEntryDataAsArrayBuffer(reader, rawEntry) {\n const {decompress, fileDataStart} = await readEntryDataHeader(reader, rawEntry);\n if (!decompress) {\n const dataView = await readAs(reader, fileDataStart, rawEntry.compressedSize);\n // make copy?\n //\n // 1. The source is a Blob/file. In this case we'll get back TypedArray we can just hand to the user\n // 2. The source is a TypedArray. In this case we'll get back TypedArray that is a view into a larger buffer\n // but because ultimately this is used to return an ArrayBuffer to `someEntry.arrayBuffer()`\n // we need to return copy since we need the `ArrayBuffer`, not the TypedArray to exactly match the data.\n // Note: We could add another API function `bytes()` or something that returned a `Uint8Array`\n // instead of an `ArrayBuffer`. This would let us skip a copy here. But this case only happens for uncompressed\n // data. That seems like a rare enough case that adding a new API is not worth it? Or is it? A zip of jpegs or mp3s\n // might not be compressed. For now that's a TBD.\n return isTypedArraySameAsArrayBuffer(dataView) ? dataView.buffer : dataView.slice().buffer;\n }\n // see comment in readEntryDateAsBlob\n const typedArrayOrBlob = await readAsBlobOrTypedArray(reader, fileDataStart, rawEntry.compressedSize);\n const result = await inflateRawAsync(typedArrayOrBlob, rawEntry.uncompressedSize);\n return result;\n}\n\nasync function readEntryDataAsBlob(reader, rawEntry, type) {\n const {decompress, fileDataStart} = await readEntryDataHeader(reader, rawEntry);\n if (!decompress) {\n const typedArrayOrBlob = await readAsBlobOrTypedArray(reader, fileDataStart, rawEntry.compressedSize, type);\n if (isBlob(typedArrayOrBlob)) {\n return typedArrayOrBlob;\n }\n return new Blob([isSharedArrayBuffer(typedArrayOrBlob.buffer) ? new Uint8Array(typedArrayOrBlob) : typedArrayOrBlob], {type});\n }\n // Here's the issue with this mess (should refactor?)\n // if the source is a blob then we really want to pass a blob to inflateRawAsync to avoid a large\n // copy if we're going to a worker.\n const typedArrayOrBlob = await readAsBlobOrTypedArray(reader, fileDataStart, rawEntry.compressedSize);\n const result = await inflateRawAsync(typedArrayOrBlob, rawEntry.uncompressedSize, type);\n return result;\n}\n\nfunction setOptions$1(options) {\n setOptions(options);\n}\n\nasync function unzipRaw(source) {\n let reader;\n if (typeof Blob !== 'undefined' && source instanceof Blob) {\n reader = new BlobReader(source);\n } else if (source instanceof ArrayBuffer || (source && source.buffer && source.buffer instanceof ArrayBuffer)) {\n reader = new ArrayBufferReader(source);\n } else if (isSharedArrayBuffer(source) || isSharedArrayBuffer(source.buffer)) {\n reader = new ArrayBufferReader(source);\n } else if (typeof source === 'string') {\n const req = await fetch(source);\n if (!req.ok) {\n throw new Error(`failed http request ${source}, status: ${req.status}: ${req.statusText}`);\n }\n const blob = await req.blob();\n reader = new BlobReader(blob);\n } else if (typeof source.getLength === 'function' && typeof source.read === 'function') {\n reader = source;\n } else {\n throw new Error('unsupported source type');\n }\n\n const totalLength = await reader.getLength();\n\n if (totalLength > Number.MAX_SAFE_INTEGER) {\n throw new Error(`file too large. size: ${totalLength}. Only file sizes up 4503599627370496 bytes are supported`);\n }\n\n return await findEndOfCentralDirector(reader, totalLength);\n}\n\n// If the names are not utf8 you should use unzipitRaw\nasync function unzip(source) {\n const {zip, entries} = await unzipRaw(source);\n return {\n zip,\n entries: Object.fromEntries(entries.map(v => [v.name, v])),\n };\n}\n\nfunction cleanup$1() {\n cleanup();\n}\n\nexport { HTTPRangeReader, cleanup$1 as cleanup, setOptions$1 as setOptions, unzip, unzipRaw };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:core:6.4.1'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:6.4.1'] && _();\n}\ncatch (e) { }\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function _defineProperty(obj, key, value) {\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\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","function isAnimationControls(v) {\n return typeof v === \"object\" && typeof v.start === \"function\";\n}\n\nexport { isAnimationControls };\n","var isKeyframesTarget = function (v) {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","import { __values } from 'tslib';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\n\nvar presenceId = 0;\nfunction getPresenceId() {\n var id = presenceId;\n presenceId++;\n return id;\n}\nvar PresenceChild = function (_a) {\n var children = _a.children, initial = _a.initial, isPresent = _a.isPresent, onExitComplete = _a.onExitComplete, custom = _a.custom, presenceAffectsLayout = _a.presenceAffectsLayout;\n var presenceChildren = useConstant(newChildrenMap);\n var id = useConstant(getPresenceId);\n var context = useMemo(function () { return ({\n id: id,\n initial: initial,\n isPresent: isPresent,\n custom: custom,\n onExitComplete: function (childId) {\n var e_1, _a;\n presenceChildren.set(childId, true);\n try {\n for (var _b = __values(presenceChildren.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var isComplete = _c.value;\n if (!isComplete)\n return; // can stop searching when any is incomplete\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 onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete();\n },\n register: function (childId) {\n presenceChildren.set(childId, false);\n return function () { return presenceChildren.delete(childId); };\n },\n }); }, \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout ? undefined : [isPresent]);\n useMemo(function () {\n presenceChildren.forEach(function (_, key) { return presenceChildren.set(key, false); });\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(function () {\n !isPresent && !presenceChildren.size && (onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete());\n }, [isPresent]);\n return (React.createElement(PresenceContext.Provider, { value: context }, children));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { __read, __spreadArray } from 'tslib';\nimport * as React from 'react';\nimport { useContext, useRef, useEffect, cloneElement, Children, isValidElement } from 'react';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\n\nfunction getChildKey(child) {\n return child.key || \"\";\n}\nfunction updateChildLookup(children, allChildren) {\n var seenChildren = process.env.NODE_ENV !== \"production\" ? new Set() : null;\n children.forEach(function (child) {\n var key = getChildKey(child);\n if (process.env.NODE_ENV !== \"production\" && seenChildren) {\n if (seenChildren.has(key)) {\n console.warn(\"Children of AnimatePresence require unique keys. \\\"\".concat(key, \"\\\" is a duplicate.\"));\n }\n seenChildren.add(key);\n }\n allChildren.set(key, child);\n });\n}\nfunction onlyElements(children) {\n var filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, function (child) {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * \n * {items.map(item => (\n * \n * ))}\n * \n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nvar AnimatePresence = function (_a) {\n var children = _a.children, custom = _a.custom, _b = _a.initial, initial = _b === void 0 ? true : _b, onExitComplete = _a.onExitComplete, exitBeforeEnter = _a.exitBeforeEnter, _c = _a.presenceAffectsLayout, presenceAffectsLayout = _c === void 0 ? true : _c;\n // We want to force a re-render once all exiting animations have finished. We\n // either use a local forceRender function, or one from a parent context if it exists.\n var _d = __read(useForceUpdate(), 1), forceRender = _d[0];\n var forceRenderLayoutGroup = useContext(LayoutGroupContext).forceRender;\n if (forceRenderLayoutGroup)\n forceRender = forceRenderLayoutGroup;\n var isInitialRender = useRef(true);\n var isMounted = useRef(true);\n useEffect(function () { return function () {\n isMounted.current = false;\n }; }, []);\n // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n var filteredChildren = onlyElements(children);\n // Keep a living record of the children we're actually rendering so we\n // can diff to figure out which are entering and exiting\n var presentChildren = useRef(filteredChildren);\n // A lookup table to quickly reference components by key\n var allChildren = useRef(new Map()).current;\n // A living record of all currently exiting components.\n var exiting = useRef(new Set()).current;\n updateChildLookup(filteredChildren, allChildren);\n // If this is the initial component render, just deal with logic surrounding whether\n // we play onMount animations or not.\n if (isInitialRender.current) {\n isInitialRender.current = false;\n return (React.createElement(React.Fragment, null, filteredChildren.map(function (child) { return (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout }, child)); })));\n }\n // If this is a subsequent render, deal with entering and exiting children\n var childrenToRender = __spreadArray([], __read(filteredChildren), false);\n // Diff the keys of the currently-present and target children to update our\n // exiting list.\n var presentKeys = presentChildren.current.map(getChildKey);\n var targetKeys = filteredChildren.map(getChildKey);\n // Diff the present children with our target children and mark those that are exiting\n var numPresent = presentKeys.length;\n for (var i = 0; i < numPresent; i++) {\n var key = presentKeys[i];\n if (targetKeys.indexOf(key) === -1) {\n exiting.add(key);\n }\n else {\n // In case this key has re-entered, remove from the exiting list\n exiting.delete(key);\n }\n }\n // If we currently have exiting children, and we're deferring rendering incoming children\n // until after all current children have exiting, empty the childrenToRender array\n if (exitBeforeEnter && exiting.size) {\n childrenToRender = [];\n }\n // Loop through all currently exiting components and clone them to overwrite `animate`\n // with any `exit` prop they might have defined.\n exiting.forEach(function (key) {\n // If this component is actually entering again, early return\n if (targetKeys.indexOf(key) !== -1)\n return;\n var child = allChildren.get(key);\n if (!child)\n return;\n var insertionIndex = presentKeys.indexOf(key);\n var onExit = function () {\n allChildren.delete(key);\n exiting.delete(key);\n // Remove this child from the present children\n var removeIndex = presentChildren.current.findIndex(function (presentChild) { return presentChild.key === key; });\n presentChildren.current.splice(removeIndex, 1);\n // Defer re-rendering until all exiting children have indeed left\n if (!exiting.size) {\n presentChildren.current = filteredChildren;\n if (isMounted.current === false) {\n return;\n }\n forceRender();\n onExitComplete && onExitComplete();\n }\n };\n childrenToRender.splice(insertionIndex, 0, React.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout }, child));\n });\n // Add `MotionContext` even to children that don't need it to ensure we're rendering\n // the same tree between renders\n childrenToRender = childrenToRender.map(function (child) {\n var key = child.key;\n return exiting.has(key) ? (child) : (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout: presenceAffectsLayout }, child));\n });\n presentChildren.current = childrenToRender;\n if (process.env.NODE_ENV !== \"production\" &&\n exitBeforeEnter &&\n childrenToRender.length > 1) {\n console.warn(\"You're attempting to animate multiple children within AnimatePresence, but its exitBeforeEnter prop is set to true. This will lead to odd visual behaviour.\");\n }\n return (React.createElement(React.Fragment, null, exiting.size\n ? childrenToRender\n : childrenToRender.map(function (child) { return cloneElement(child); })));\n};\n\nexport { AnimatePresence };\n","import { createContext } from 'react';\n\n/**\n * @internal\n */\nvar LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { createContext } from 'react';\n\nvar LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nvar PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","var createDefinition = function (propNames) { return ({\n isEnabled: function (props) { return propNames.some(function (name) { return !!props[name]; }); },\n}); };\nvar featureDefinitions = {\n measureLayout: createDefinition([\"layout\", \"layoutId\", \"drag\"]),\n animation: createDefinition([\n \"animate\",\n \"exit\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"whileFocus\",\n \"whileDrag\",\n \"whileInView\",\n ]),\n exit: createDefinition([\"exit\"]),\n drag: createDefinition([\"drag\", \"dragControls\"]),\n focus: createDefinition([\"whileFocus\"]),\n hover: createDefinition([\"whileHover\", \"onHoverStart\", \"onHoverEnd\"]),\n tap: createDefinition([\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"]),\n pan: createDefinition([\n \"onPan\",\n \"onPanStart\",\n \"onPanSessionStart\",\n \"onPanEnd\",\n ]),\n inView: createDefinition([\n \"whileInView\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n ]),\n};\nfunction loadFeatures(features) {\n for (var key in features) {\n if (features[key] === null)\n continue;\n if (key === \"projectionNodeConstructor\") {\n featureDefinitions.projectionNodeConstructor = features[key];\n }\n else {\n featureDefinitions[key].Component = features[key];\n }\n }\n}\n\nexport { featureDefinitions, loadFeatures };\n","var scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { isTransformProp, isTransformOriginProp } from '../../render/html/utils/transform.mjs';\n\nfunction isForcedMotionValue(key, _a) {\n var layout = _a.layout, layoutId = _a.layoutId;\n return (isTransformProp(key) ||\n isTransformOriginProp(key) ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","import { __assign } from 'tslib';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { featureDefinitions } from './definitions.mjs';\nimport { invariant } from 'hey-listen';\nimport { LazyContext } from '../../context/LazyContext.mjs';\n\nvar featureNames = Object.keys(featureDefinitions);\nvar numFeatures = featureNames.length;\n/**\n * Load features via renderless components based on the provided MotionProps.\n */\nfunction useFeatures(props, visualElement, preloadedFeatures) {\n var features = [];\n var lazyContext = useContext(LazyContext);\n if (!visualElement)\n return null;\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (process.env.NODE_ENV !== \"production\" &&\n preloadedFeatures &&\n lazyContext.strict) {\n invariant(false, \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\");\n }\n for (var i = 0; i < numFeatures; i++) {\n var name_1 = featureNames[i];\n var _a = featureDefinitions[name_1], isEnabled = _a.isEnabled, Component = _a.Component;\n /**\n * It might be possible in the future to use this moment to\n * dynamically request functionality. In initial tests this\n * was producing a lot of duplication amongst bundles.\n */\n if (isEnabled(props) && Component) {\n features.push(React.createElement(Component, __assign({ key: name_1 }, props, { visualElement: visualElement })));\n }\n }\n return features;\n}\n\nexport { useFeatures };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nvar MotionConfigContext = createContext({\n transformPagePoint: function (p) { return p; },\n isStatic: false,\n});\n\nexport { MotionConfigContext };\n","import { createContext, useContext } from 'react';\n\nvar MotionContext = createContext({});\nfunction useVisualElementContext() {\n return useContext(MotionContext).visualElement;\n}\n\nexport { MotionContext, useVisualElementContext };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import { useContext, useRef, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useVisualElementContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement) {\n var lazyContext = useContext(LazyContext);\n var parent = useVisualElementContext();\n var presenceContext = useContext(PresenceContext);\n var visualElementRef = useRef(undefined);\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n if (!createVisualElement)\n createVisualElement = lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState: visualState,\n parent: parent,\n props: props,\n presenceId: presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.id,\n blockInitialAnimation: (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false,\n });\n }\n var visualElement = visualElementRef.current;\n useIsomorphicLayoutEffect(function () {\n visualElement === null || visualElement === void 0 ? void 0 : visualElement.syncRender();\n });\n useEffect(function () {\n var _a;\n (_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.animationState) === null || _a === void 0 ? void 0 : _a.animateChanges();\n });\n useIsomorphicLayoutEffect(function () { return function () { return visualElement === null || visualElement === void 0 ? void 0 : visualElement.notifyUnmount(); }; }, []);\n return visualElement;\n}\n\nexport { useVisualElement };\n","function isRefObject(ref) {\n return (typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { useMemo, useContext } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n var _a = getCurrentTreeVariants(props, useContext(MotionContext)), initial = _a.initial, animate = _a.animate;\n return useMemo(function () { return ({ initial: initial, animate: animate }); }, [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","import { checkIfControllingVariants, isVariantLabel } from '../../render/utils/variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (checkIfControllingVariants(props)) {\n var initial = props.initial, animate = props.animate;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","import { __spreadArray, __read, __assign } from 'tslib';\nimport sync, { cancelSync, flushSync } from 'framesync';\nimport { mix } from 'popmotion';\nimport { animate } from '../../animation/animate.mjs';\nimport { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEquals, isDeltaZero } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale } from '../utils/has-transform.mjs';\nimport { transformAxes } from '../../render/html/utils/transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\n\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nvar animationTarget = 1000;\n/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nvar globalProjectionState = {\n /**\n * Global flag as to whether the tree has animated since the last time\n * we resized the window\n */\n hasAnimatedSinceResize: true,\n /**\n * We set this to true once, on the first update. Any nodes added to the tree beyond that\n * update will be given a `data-projection-id` attribute.\n */\n hasEverUpdated: false,\n};\nfunction createProjectionNode(_a) {\n var attachResizeListener = _a.attachResizeListener, defaultParent = _a.defaultParent, measureScroll = _a.measureScroll, resetTransform = _a.resetTransform;\n return /** @class */ (function () {\n function ProjectionNode(id, latestValues, parent) {\n var _this = this;\n if (latestValues === void 0) { latestValues = {}; }\n if (parent === void 0) { parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent(); }\n /**\n * A Set containing all this component's children. This is used to iterate\n * through the children.\n *\n * TODO: This could be faster to iterate as a flat array stored on the root node.\n */\n this.children = new Set();\n /**\n * Options for the node. We use this to configure what kind of layout animations\n * we should perform (if any).\n */\n this.options = {};\n /**\n * We use this to detect when its safe to shut down part of a projection tree.\n * We have to keep projecting children for scale correction and relative projection\n * until all their parents stop performing layout animations.\n */\n this.isTreeAnimating = false;\n this.isAnimationBlocked = false;\n /**\n * Flag to true if we think this layout has been changed. We can't always know this,\n * currently we set it to true every time a component renders, or if it has a layoutDependency\n * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n * and if one node is dirtied, they all are.\n */\n this.isLayoutDirty = false;\n /**\n * Block layout updates for instant layout transitions throughout the tree.\n */\n this.updateManuallyBlocked = false;\n this.updateBlockedByResize = false;\n /**\n * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n * call.\n */\n this.isUpdating = false;\n /**\n * If this is an SVG element we currently disable projection transforms\n */\n this.isSVG = false;\n /**\n * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n * its projection styles.\n */\n this.needsReset = false;\n /**\n * Flags whether this node should have its transform reset prior to measuring.\n */\n this.shouldResetTransform = false;\n /**\n * An object representing the calculated contextual/accumulated/tree scale.\n * This will be used to scale calculcated projection transforms, as these are\n * calculated in screen-space but need to be scaled for elements to actually\n * make it to their calculated destinations.\n *\n * TODO: Lazy-init\n */\n this.treeScale = { x: 1, y: 1 };\n /**\n *\n */\n this.eventHandlers = new Map();\n // Note: Currently only running on root node\n this.potentialNodes = new Map();\n this.checkUpdateFailed = function () {\n if (_this.isUpdating) {\n _this.isUpdating = false;\n _this.clearAllSnapshots();\n }\n };\n this.updateProjection = function () {\n _this.nodes.forEach(resolveTargetDelta);\n _this.nodes.forEach(calcProjection);\n };\n this.hasProjected = false;\n this.isVisible = true;\n /**\n * Animation\n */\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.id = id;\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? __spreadArray(__spreadArray([], __read(parent.path), false), [parent], false) : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n id && this.root.registerPotentialNode(id, this);\n for (var i = 0; i < this.path.length; i++) {\n this.path[i].shouldResetTransform = true;\n }\n if (this.root === this)\n this.nodes = new FlatTree();\n }\n ProjectionNode.prototype.addEventListener = function (name, handler) {\n if (!this.eventHandlers.has(name)) {\n this.eventHandlers.set(name, new SubscriptionManager());\n }\n return this.eventHandlers.get(name).add(handler);\n };\n ProjectionNode.prototype.notifyListeners = function (name) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager === null || subscriptionManager === void 0 ? void 0 : subscriptionManager.notify.apply(subscriptionManager, __spreadArray([], __read(args), false));\n };\n ProjectionNode.prototype.hasListeners = function (name) {\n return this.eventHandlers.has(name);\n };\n ProjectionNode.prototype.registerPotentialNode = function (id, node) {\n this.potentialNodes.set(id, node);\n };\n /**\n * Lifecycles\n */\n ProjectionNode.prototype.mount = function (instance, isLayoutDirty) {\n var _this = this;\n var _a;\n if (isLayoutDirty === void 0) { isLayoutDirty = false; }\n if (this.instance)\n return;\n this.isSVG =\n instance instanceof SVGElement && instance.tagName !== \"svg\";\n this.instance = instance;\n var _b = this.options, layoutId = _b.layoutId, layout = _b.layout, visualElement = _b.visualElement;\n if (visualElement && !visualElement.getInstance()) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children.add(this);\n this.id && this.root.potentialNodes.delete(this.id);\n if (isLayoutDirty && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n var unblockTimeout_1;\n var resizeUnblockUpdate_1 = function () {\n return (_this.root.updateBlockedByResize = false);\n };\n attachResizeListener(instance, function () {\n _this.root.updateBlockedByResize = true;\n clearTimeout(unblockTimeout_1);\n unblockTimeout_1 = setTimeout(resizeUnblockUpdate_1, 250);\n if (globalProjectionState.hasAnimatedSinceResize) {\n globalProjectionState.hasAnimatedSinceResize = false;\n _this.nodes.forEach(finishAnimation);\n }\n });\n }\n if (layoutId) {\n this.root.registerSharedNode(layoutId, this);\n }\n // Only register the handler if it requires layout animation\n if (this.options.animate !== false &&\n visualElement &&\n (layoutId || layout)) {\n this.addEventListener(\"didUpdate\", function (_a) {\n var _b, _c, _d, _e, _f;\n var delta = _a.delta, hasLayoutChanged = _a.hasLayoutChanged, hasRelativeTargetChanged = _a.hasRelativeTargetChanged, newLayout = _a.layout;\n if (_this.isTreeAnimationBlocked()) {\n _this.target = undefined;\n _this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n var layoutTransition = (_c = (_b = _this.options.transition) !== null && _b !== void 0 ? _b : visualElement.getDefaultTransition()) !== null && _c !== void 0 ? _c : defaultLayoutTransition;\n var onLayoutAnimationComplete = visualElement.getProps().onLayoutAnimationComplete;\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n var targetChanged = !_this.targetLayout ||\n !boxEquals(_this.targetLayout, newLayout) ||\n hasRelativeTargetChanged;\n /**\n * If the layout hasn't seemed to have changed, it might be that the\n * element is visually in the same place in the document but its position\n * relative to its parent has indeed changed. So here we check for that.\n */\n var hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n if (((_d = _this.resumeFrom) === null || _d === void 0 ? void 0 : _d.instance) ||\n hasOnlyRelativeTargetChanged ||\n (hasLayoutChanged &&\n (targetChanged || !_this.currentAnimation))) {\n if (_this.resumeFrom) {\n _this.resumingFrom = _this.resumeFrom;\n _this.resumingFrom.resumingFrom = undefined;\n }\n _this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n _this.startAnimation(__assign(__assign({}, getValueTransition(layoutTransition, \"layout\")), { onComplete: onLayoutAnimationComplete }));\n }\n else {\n _this.isLead() && ((_f = (_e = _this.options).onExitComplete) === null || _f === void 0 ? void 0 : _f.call(_e));\n }\n _this.targetLayout = newLayout;\n });\n }\n };\n ProjectionNode.prototype.unmount = function () {\n var _a, _b;\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.remove(this);\n (_b = this.parent) === null || _b === void 0 ? void 0 : _b.children.delete(this);\n this.instance = undefined;\n cancelSync.preRender(this.updateProjection);\n };\n // only on the root\n ProjectionNode.prototype.blockUpdate = function () {\n this.updateManuallyBlocked = true;\n };\n ProjectionNode.prototype.unblockUpdate = function () {\n this.updateManuallyBlocked = false;\n };\n ProjectionNode.prototype.isUpdateBlocked = function () {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n };\n ProjectionNode.prototype.isTreeAnimationBlocked = function () {\n var _a;\n return (this.isAnimationBlocked ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimationBlocked()) ||\n false);\n };\n // Note: currently only running on root node\n ProjectionNode.prototype.startUpdate = function () {\n var _a;\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n (_a = this.nodes) === null || _a === void 0 ? void 0 : _a.forEach(resetRotation);\n };\n ProjectionNode.prototype.willUpdate = function (shouldNotifyListeners) {\n var _a, _b, _c;\n if (shouldNotifyListeners === void 0) { shouldNotifyListeners = true; }\n if (this.root.isUpdateBlocked()) {\n (_b = (_a = this.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n return;\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (var i = 0; i < this.path.length; i++) {\n var node = this.path[i];\n node.shouldResetTransform = true;\n /**\n * TODO: Check we haven't updated the scroll\n * since the last didUpdate\n */\n node.updateScroll();\n }\n var _d = this.options, layoutId = _d.layoutId, layout = _d.layout;\n if (layoutId === undefined && !layout)\n return;\n var transformTemplate = (_c = this.options.visualElement) === null || _c === void 0 ? void 0 : _c.getProps().transformTemplate;\n this.prevTransformTemplateValue = transformTemplate === null || transformTemplate === void 0 ? void 0 : transformTemplate(this.latestValues, \"\");\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n };\n // Note: Currently only running on root node\n ProjectionNode.prototype.didUpdate = function () {\n var updateWasBlocked = this.isUpdateBlocked();\n // When doing an instant transition, we skip the layout update,\n // but should still clean up the measurements so that the next\n // snapshot could be taken correctly.\n if (updateWasBlocked) {\n this.unblockUpdate();\n this.clearAllSnapshots();\n this.nodes.forEach(clearMeasurements);\n return;\n }\n if (!this.isUpdating)\n return;\n this.isUpdating = false;\n /**\n * Search for and mount newly-added projection elements.\n *\n * TODO: Every time a new component is rendered we could search up the tree for\n * the closest mounted node and query from there rather than document.\n */\n if (this.potentialNodes.size) {\n this.potentialNodes.forEach(mountNodeEarly);\n this.potentialNodes.clear();\n }\n /**\n * Write\n */\n this.nodes.forEach(resetTransformStyle);\n /**\n * Read ==================\n */\n // Update layout measurements of updated children\n this.nodes.forEach(updateLayout);\n /**\n * Write\n */\n // Notify listeners that the layout is updated\n this.nodes.forEach(notifyLayoutUpdate);\n this.clearAllSnapshots();\n // Flush any scheduled updates\n flushSync.update();\n flushSync.preRender();\n flushSync.render();\n };\n ProjectionNode.prototype.clearAllSnapshots = function () {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n };\n ProjectionNode.prototype.scheduleUpdateProjection = function () {\n sync.preRender(this.updateProjection, false, true);\n };\n ProjectionNode.prototype.scheduleCheckAfterUnmount = function () {\n var _this = this;\n /**\n * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n * we manually call didUpdate to give a chance to the siblings to animate.\n * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n */\n sync.postRender(function () {\n if (_this.isLayoutDirty) {\n _this.root.didUpdate();\n }\n else {\n _this.root.checkUpdateFailed();\n }\n });\n };\n /**\n * Update measurements\n */\n ProjectionNode.prototype.updateSnapshot = function () {\n if (this.snapshot || !this.instance)\n return;\n var measured = this.measure();\n var layout = this.removeTransform(this.removeElementScroll(measured));\n roundBox(layout);\n this.snapshot = {\n measured: measured,\n layout: layout,\n latestValues: {},\n };\n };\n ProjectionNode.prototype.updateLayout = function () {\n var _a;\n if (!this.instance)\n return;\n // TODO: Incorporate into a forwarded scroll offset\n this.updateScroll();\n if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n !this.isLayoutDirty) {\n return;\n }\n /**\n * When a node is mounted, it simply resumes from the prevLead's\n * snapshot instead of taking a new one, but the ancestors scroll\n * might have updated while the prevLead is unmounted. We need to\n * update the scroll again to make sure the layout we measure is\n * up to date.\n */\n if (this.resumeFrom && !this.resumeFrom.instance) {\n for (var i = 0; i < this.path.length; i++) {\n var node = this.path[i];\n node.updateScroll();\n }\n }\n var measured = this.measure();\n roundBox(measured);\n var prevLayout = this.layout;\n this.layout = {\n measured: measured,\n actual: this.removeElementScroll(measured),\n };\n this.layoutCorrected = createBox();\n this.isLayoutDirty = false;\n this.projectionDelta = undefined;\n this.notifyListeners(\"measure\", this.layout.actual);\n (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.notifyLayoutMeasure(this.layout.actual, prevLayout === null || prevLayout === void 0 ? void 0 : prevLayout.actual);\n };\n ProjectionNode.prototype.updateScroll = function () {\n if (this.options.layoutScroll && this.instance) {\n this.scroll = measureScroll(this.instance);\n }\n };\n ProjectionNode.prototype.resetTransform = function () {\n var _a;\n if (!resetTransform)\n return;\n var isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\n var hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n var transformTemplate = (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n var transformTemplateValue = transformTemplate === null || transformTemplate === void 0 ? void 0 : transformTemplate(this.latestValues, \"\");\n var transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n if (isResetRequested &&\n (hasProjection ||\n hasTransform(this.latestValues) ||\n transformTemplateHasChanged)) {\n resetTransform(this.instance, transformTemplateValue);\n this.shouldResetTransform = false;\n this.scheduleRender();\n }\n };\n ProjectionNode.prototype.measure = function () {\n var visualElement = this.options.visualElement;\n if (!visualElement)\n return createBox();\n var box = visualElement.measureViewportBox();\n // Remove viewport scroll to give page-relative coordinates\n var scroll = this.root.scroll;\n if (scroll) {\n translateAxis(box.x, scroll.x);\n translateAxis(box.y, scroll.y);\n }\n return box;\n };\n ProjectionNode.prototype.removeElementScroll = function (box) {\n var boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\n /**\n * Performance TODO: Keep a cumulative scroll offset down the tree\n * rather than loop back up the path.\n */\n for (var i = 0; i < this.path.length; i++) {\n var node = this.path[i];\n var scroll_1 = node.scroll, options = node.options;\n if (node !== this.root && scroll_1 && options.layoutScroll) {\n translateAxis(boxWithoutScroll.x, scroll_1.x);\n translateAxis(boxWithoutScroll.y, scroll_1.y);\n }\n }\n return boxWithoutScroll;\n };\n ProjectionNode.prototype.applyTransform = function (box, transformOnly) {\n if (transformOnly === void 0) { transformOnly = false; }\n var withTransforms = createBox();\n copyBoxInto(withTransforms, box);\n for (var i = 0; i < this.path.length; i++) {\n var node = this.path[i];\n if (!transformOnly &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(withTransforms, {\n x: -node.scroll.x,\n y: -node.scroll.y,\n });\n }\n if (!hasTransform(node.latestValues))\n continue;\n transformBox(withTransforms, node.latestValues);\n }\n if (hasTransform(this.latestValues)) {\n transformBox(withTransforms, this.latestValues);\n }\n return withTransforms;\n };\n ProjectionNode.prototype.removeTransform = function (box) {\n var _a;\n var boxWithoutTransform = createBox();\n copyBoxInto(boxWithoutTransform, box);\n for (var i = 0; i < this.path.length; i++) {\n var node = this.path[i];\n if (!node.instance)\n continue;\n if (!hasTransform(node.latestValues))\n continue;\n hasScale(node.latestValues) && node.updateSnapshot();\n var sourceBox = createBox();\n var nodeBox = node.measure();\n copyBoxInto(sourceBox, nodeBox);\n removeBoxTransforms(boxWithoutTransform, node.latestValues, (_a = node.snapshot) === null || _a === void 0 ? void 0 : _a.layout, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n };\n /**\n *\n */\n ProjectionNode.prototype.setTargetDelta = function (delta) {\n this.targetDelta = delta;\n this.root.scheduleUpdateProjection();\n };\n ProjectionNode.prototype.setOptions = function (options) {\n var _a;\n this.options = __assign(__assign(__assign({}, this.options), options), { crossfade: (_a = options.crossfade) !== null && _a !== void 0 ? _a : true });\n };\n ProjectionNode.prototype.clearMeasurements = function () {\n this.scroll = undefined;\n this.layout = undefined;\n this.snapshot = undefined;\n this.prevTransformTemplateValue = undefined;\n this.targetDelta = undefined;\n this.target = undefined;\n this.isLayoutDirty = false;\n };\n /**\n * Frame calculations\n */\n ProjectionNode.prototype.resolveTargetDelta = function () {\n var _a;\n var _b = this.options, layout = _b.layout, layoutId = _b.layoutId;\n /**\n * If we have no layout, we can't perform projection, so early return\n */\n if (!this.layout || !(layout || layoutId))\n return;\n /**\n * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n * a relativeParent. This will allow a component to perform scale correction\n * even if no animation has started.\n */\n // TODO If this is unsuccessful this currently happens every frame\n if (!this.targetDelta && !this.relativeTarget) {\n // TODO: This is a semi-repetition of further down this function, make DRY\n this.relativeParent = this.getClosestProjectingParent();\n if (this.relativeParent && this.relativeParent.layout) {\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.layout.actual, this.relativeParent.layout.actual);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n }\n /**\n * If we have no relative target or no target delta our target isn't valid\n * for this frame.\n */\n if (!this.relativeTarget && !this.targetDelta)\n return;\n /**\n * Lazy-init target data structure\n */\n if (!this.target) {\n this.target = createBox();\n this.targetWithTransforms = createBox();\n }\n /**\n * If we've got a relative box for this component, resolve it into a target relative to the parent.\n */\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n ((_a = this.relativeParent) === null || _a === void 0 ? void 0 : _a.target)) {\n calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n /**\n * If we've only got a targetDelta, resolve it into a target\n */\n }\n else if (this.targetDelta) {\n if (Boolean(this.resumingFrom)) {\n // TODO: This is creating a new object every frame\n this.target = this.applyTransform(this.layout.actual);\n }\n else {\n copyBoxInto(this.target, this.layout.actual);\n }\n applyBoxDelta(this.target, this.targetDelta);\n }\n else {\n /**\n * If no target, use own layout as target\n */\n copyBoxInto(this.target, this.layout.actual);\n }\n /**\n * If we've been told to attempt to resolve a relative target, do so.\n */\n if (this.attemptToResolveRelativeTarget) {\n this.attemptToResolveRelativeTarget = false;\n this.relativeParent = this.getClosestProjectingParent();\n if (this.relativeParent &&\n Boolean(this.relativeParent.resumingFrom) ===\n Boolean(this.resumingFrom) &&\n !this.relativeParent.options.layoutScroll &&\n this.relativeParent.target) {\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.target, this.relativeParent.target);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n }\n };\n ProjectionNode.prototype.getClosestProjectingParent = function () {\n if (!this.parent || hasTransform(this.parent.latestValues))\n return undefined;\n if ((this.parent.relativeTarget || this.parent.targetDelta) &&\n this.parent.layout) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n };\n ProjectionNode.prototype.calcProjection = function () {\n var _a;\n var _b = this.options, layout = _b.layout, layoutId = _b.layoutId;\n /**\n * If this section of the tree isn't animating we can\n * delete our target sources for the following frame.\n */\n this.isTreeAnimating = Boolean(((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimating) ||\n this.currentAnimation ||\n this.pendingAnimation);\n if (!this.isTreeAnimating) {\n this.targetDelta = this.relativeTarget = undefined;\n }\n if (!this.layout || !(layout || layoutId))\n return;\n var lead = this.getLead();\n /**\n * Reset the corrected box with the latest values from box, as we're then going\n * to perform mutative operations on it.\n */\n copyBoxInto(this.layoutCorrected, this.layout.actual);\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, Boolean(this.resumingFrom) || this !== lead);\n var target = lead.target;\n if (!target)\n return;\n if (!this.projectionDelta) {\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n var prevTreeScaleX = this.treeScale.x;\n var prevTreeScaleY = this.treeScale.y;\n var prevProjectionTransform = this.projectionTransform;\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n this.projectionTransform = buildProjectionTransform(this.projectionDelta, this.treeScale);\n if (this.projectionTransform !== prevProjectionTransform ||\n this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n };\n ProjectionNode.prototype.hide = function () {\n this.isVisible = false;\n // TODO: Schedule render\n };\n ProjectionNode.prototype.show = function () {\n this.isVisible = true;\n // TODO: Schedule render\n };\n ProjectionNode.prototype.scheduleRender = function (notifyAll) {\n var _a, _b, _c;\n if (notifyAll === void 0) { notifyAll = true; }\n (_b = (_a = this.options).scheduleRender) === null || _b === void 0 ? void 0 : _b.call(_a);\n notifyAll && ((_c = this.getStack()) === null || _c === void 0 ? void 0 : _c.scheduleRender());\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n };\n ProjectionNode.prototype.setAnimationOrigin = function (delta, hasOnlyRelativeTargetChanged) {\n var _this = this;\n var _a;\n if (hasOnlyRelativeTargetChanged === void 0) { hasOnlyRelativeTargetChanged = false; }\n var snapshot = this.snapshot;\n var snapshotLatestValues = (snapshot === null || snapshot === void 0 ? void 0 : snapshot.latestValues) || {};\n var mixedValues = __assign({}, this.latestValues);\n var targetDelta = createDelta();\n this.relativeTarget = this.relativeTargetOrigin = undefined;\n this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n var relativeLayout = createBox();\n var isSharedLayoutAnimation = snapshot === null || snapshot === void 0 ? void 0 : snapshot.isShared;\n var isOnlyMember = (((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.members.length) || 0) <= 1;\n var shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.mixTargetDelta = function (latest) {\n var _a;\n var progress = latest / 1000;\n mixAxisDelta(targetDelta.x, delta.x, progress);\n mixAxisDelta(targetDelta.y, delta.y, progress);\n _this.setTargetDelta(targetDelta);\n if (_this.relativeTarget &&\n _this.relativeTargetOrigin &&\n _this.layout &&\n ((_a = _this.relativeParent) === null || _a === void 0 ? void 0 : _a.layout)) {\n calcRelativePosition(relativeLayout, _this.layout.actual, _this.relativeParent.layout.actual);\n mixBox(_this.relativeTarget, _this.relativeTargetOrigin, relativeLayout, progress);\n }\n if (isSharedLayoutAnimation) {\n _this.animationValues = mixedValues;\n mixValues(mixedValues, snapshotLatestValues, _this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n }\n _this.root.scheduleUpdateProjection();\n _this.scheduleRender();\n };\n this.mixTargetDelta(0);\n };\n ProjectionNode.prototype.startAnimation = function (options) {\n var _this = this;\n var _a, _b;\n (_a = this.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();\n if (this.resumingFrom) {\n (_b = this.resumingFrom.currentAnimation) === null || _b === void 0 ? void 0 : _b.stop();\n }\n if (this.pendingAnimation) {\n cancelSync.update(this.pendingAnimation);\n this.pendingAnimation = undefined;\n }\n /**\n * Start the animation in the next frame to have a frame with progress 0,\n * where the target is the same as when the animation started, so we can\n * calculate the relative positions correctly for instant transitions.\n */\n this.pendingAnimation = sync.update(function () {\n globalProjectionState.hasAnimatedSinceResize = true;\n _this.currentAnimation = animate(0, animationTarget, __assign(__assign({}, options), { onUpdate: function (latest) {\n var _a;\n _this.mixTargetDelta(latest);\n (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, latest);\n }, onComplete: function () {\n var _a;\n (_a = options.onComplete) === null || _a === void 0 ? void 0 : _a.call(options);\n _this.completeAnimation();\n } }));\n if (_this.resumingFrom) {\n _this.resumingFrom.currentAnimation = _this.currentAnimation;\n }\n _this.pendingAnimation = undefined;\n });\n };\n ProjectionNode.prototype.completeAnimation = function () {\n var _a;\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n };\n ProjectionNode.prototype.finishAnimation = function () {\n var _a;\n if (this.currentAnimation) {\n (_a = this.mixTargetDelta) === null || _a === void 0 ? void 0 : _a.call(this, animationTarget);\n this.currentAnimation.stop();\n }\n this.completeAnimation();\n };\n ProjectionNode.prototype.applyTransformsToTarget = function () {\n var _a = this.getLead(), targetWithTransforms = _a.targetWithTransforms, target = _a.target, layout = _a.layout, latestValues = _a.latestValues;\n if (!targetWithTransforms || !target || !layout)\n return;\n copyBoxInto(targetWithTransforms, target);\n /**\n * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n * This is the final box that we will then project into by calculating a transform delta and\n * applying it to the corrected box.\n */\n transformBox(targetWithTransforms, latestValues);\n /**\n * Update the delta between the corrected box and the final target box, after\n * user-set transforms are applied to it. This will be used by the renderer to\n * create a transform style that will reproject the element from its actual layout\n * into the desired bounding box.\n */\n calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n };\n ProjectionNode.prototype.registerSharedNode = function (layoutId, node) {\n var _a, _b, _c;\n if (!this.sharedNodes.has(layoutId)) {\n this.sharedNodes.set(layoutId, new NodeStack());\n }\n var stack = this.sharedNodes.get(layoutId);\n stack.add(node);\n node.promote({\n transition: (_a = node.options.initialPromotionConfig) === null || _a === void 0 ? void 0 : _a.transition,\n preserveFollowOpacity: (_c = (_b = node.options.initialPromotionConfig) === null || _b === void 0 ? void 0 : _b.shouldPreserveFollowOpacity) === null || _c === void 0 ? void 0 : _c.call(_b, node),\n });\n };\n ProjectionNode.prototype.isLead = function () {\n var stack = this.getStack();\n return stack ? stack.lead === this : true;\n };\n ProjectionNode.prototype.getLead = function () {\n var _a;\n var layoutId = this.options.layoutId;\n return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n };\n ProjectionNode.prototype.getPrevLead = function () {\n var _a;\n var layoutId = this.options.layoutId;\n return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n };\n ProjectionNode.prototype.getStack = function () {\n var layoutId = this.options.layoutId;\n if (layoutId)\n return this.root.sharedNodes.get(layoutId);\n };\n ProjectionNode.prototype.promote = function (_a) {\n var _b = _a === void 0 ? {} : _a, needsReset = _b.needsReset, transition = _b.transition, preserveFollowOpacity = _b.preserveFollowOpacity;\n var stack = this.getStack();\n if (stack)\n stack.promote(this, preserveFollowOpacity);\n if (needsReset) {\n this.projectionDelta = undefined;\n this.needsReset = true;\n }\n if (transition)\n this.setOptions({ transition: transition });\n };\n ProjectionNode.prototype.relegate = function () {\n var stack = this.getStack();\n if (stack) {\n return stack.relegate(this);\n }\n else {\n return false;\n }\n };\n ProjectionNode.prototype.resetRotation = function () {\n var visualElement = this.options.visualElement;\n if (!visualElement)\n return;\n // If there's no detected rotation values, we can early return without a forced render.\n var hasRotate = false;\n // Keep a record of all the values we've reset\n var resetValues = {};\n // Check the rotate value of all axes and reset to 0\n for (var i = 0; i < transformAxes.length; i++) {\n var axis = transformAxes[i];\n var key = \"rotate\" + axis;\n // If this rotation doesn't exist as a motion value, then we don't\n // need to reset it\n if (!visualElement.getStaticValue(key)) {\n continue;\n }\n hasRotate = true;\n // Record the rotation and then temporarily set it to 0\n resetValues[key] = visualElement.getStaticValue(key);\n visualElement.setStaticValue(key, 0);\n }\n // If there's no rotation values, we don't need to do any more.\n if (!hasRotate)\n return;\n // Force a render of this element to apply the transform with all rotations\n // set to 0.\n visualElement === null || visualElement === void 0 ? void 0 : visualElement.syncRender();\n // Put back all the values we reset\n for (var key in resetValues) {\n visualElement.setStaticValue(key, resetValues[key]);\n }\n // Schedule a render for the next frame. This ensures we won't visually\n // see the element with the reset rotate value applied.\n visualElement.scheduleRender();\n };\n ProjectionNode.prototype.getProjectionStyles = function (styleProp) {\n var _a, _b, _c, _d, _e, _f;\n if (styleProp === void 0) { styleProp = {}; }\n // TODO: Return lifecycle-persistent object\n var styles = {};\n if (!this.instance || this.isSVG)\n return styles;\n if (!this.isVisible) {\n return { visibility: \"hidden\" };\n }\n else {\n styles.visibility = \"\";\n }\n var transformTemplate = (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(styleProp.pointerEvents) || \"\";\n styles.transform = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : \"none\";\n return styles;\n }\n var lead = this.getLead();\n if (!this.projectionDelta || !this.layout || !lead.target) {\n var emptyStyles = {};\n if (this.options.layoutId) {\n emptyStyles.opacity = (_b = this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1;\n emptyStyles.pointerEvents =\n resolveMotionValue(styleProp.pointerEvents) || \"\";\n }\n if (this.hasProjected && !hasTransform(this.latestValues)) {\n emptyStyles.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n this.hasProjected = false;\n }\n return emptyStyles;\n }\n var valuesToRender = lead.animationValues || lead.latestValues;\n this.applyTransformsToTarget();\n styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n if (transformTemplate) {\n styles.transform = transformTemplate(valuesToRender, styles.transform);\n }\n var _g = this.projectionDelta, x = _g.x, y = _g.y;\n styles.transformOrigin = \"\".concat(x.origin * 100, \"% \").concat(y.origin * 100, \"% 0\");\n if (lead.animationValues) {\n /**\n * If the lead component is animating, assign this either the entering/leaving\n * opacity\n */\n styles.opacity =\n lead === this\n ? (_d = (_c = valuesToRender.opacity) !== null && _c !== void 0 ? _c : this.latestValues.opacity) !== null && _d !== void 0 ? _d : 1\n : this.preserveOpacity\n ? this.latestValues.opacity\n : valuesToRender.opacityExit;\n }\n else {\n /**\n * Or we're not animating at all, set the lead component to its actual\n * opacity and other components to hidden.\n */\n styles.opacity =\n lead === this\n ? (_e = valuesToRender.opacity) !== null && _e !== void 0 ? _e : \"\"\n : (_f = valuesToRender.opacityExit) !== null && _f !== void 0 ? _f : 0;\n }\n /**\n * Apply scale correction\n */\n for (var key in scaleCorrectors) {\n if (valuesToRender[key] === undefined)\n continue;\n var _h = scaleCorrectors[key], correct = _h.correct, applyTo = _h.applyTo;\n var corrected = correct(valuesToRender[key], lead);\n if (applyTo) {\n var num = applyTo.length;\n for (var i = 0; i < num; i++) {\n styles[applyTo[i]] = corrected;\n }\n }\n else {\n styles[key] = corrected;\n }\n }\n /**\n * Disable pointer events on follow components. This is to ensure\n * that if a follow component covers a lead component it doesn't block\n * pointer events on the lead.\n */\n if (this.options.layoutId) {\n styles.pointerEvents =\n lead === this\n ? resolveMotionValue(styleProp.pointerEvents) || \"\"\n : \"none\";\n }\n return styles;\n };\n ProjectionNode.prototype.clearSnapshot = function () {\n this.resumeFrom = this.snapshot = undefined;\n };\n // Only run on root\n ProjectionNode.prototype.resetTree = function () {\n this.root.nodes.forEach(function (node) { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n this.root.nodes.forEach(clearMeasurements);\n this.root.sharedNodes.clear();\n };\n return ProjectionNode;\n }());\n}\nfunction updateLayout(node) {\n node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n var _a, _b, _c, _d;\n var snapshot = (_b = (_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) !== null && _b !== void 0 ? _b : node.snapshot;\n if (node.isLead() &&\n node.layout &&\n snapshot &&\n node.hasListeners(\"didUpdate\")) {\n var _e = node.layout, layout_1 = _e.actual, measuredLayout = _e.measured;\n // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n // animations for instance if layout=\"size\" and an element has only changed position\n if (node.options.animationType === \"size\") {\n eachAxis(function (axis) {\n var axisSnapshot = snapshot.isShared\n ? snapshot.measured[axis]\n : snapshot.layout[axis];\n var length = calcLength(axisSnapshot);\n axisSnapshot.min = layout_1[axis].min;\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n else if (node.options.animationType === \"position\") {\n eachAxis(function (axis) {\n var axisSnapshot = snapshot.isShared\n ? snapshot.measured[axis]\n : snapshot.layout[axis];\n var length = calcLength(layout_1[axis]);\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n var layoutDelta = createDelta();\n calcBoxDelta(layoutDelta, layout_1, snapshot.layout);\n var visualDelta = createDelta();\n if (snapshot.isShared) {\n calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measured);\n }\n else {\n calcBoxDelta(visualDelta, layout_1, snapshot.layout);\n }\n var hasLayoutChanged = !isDeltaZero(layoutDelta);\n var hasRelativeTargetChanged = false;\n if (!node.resumeFrom) {\n node.relativeParent = node.getClosestProjectingParent();\n /**\n * If the relativeParent is itself resuming from a different element then\n * the relative snapshot is not relavent\n */\n if (node.relativeParent && !node.relativeParent.resumeFrom) {\n var _f = node.relativeParent, parentSnapshot = _f.snapshot, parentLayout = _f.layout;\n if (parentSnapshot && parentLayout) {\n var relativeSnapshot = createBox();\n calcRelativePosition(relativeSnapshot, snapshot.layout, parentSnapshot.layout);\n var relativeLayout = createBox();\n calcRelativePosition(relativeLayout, layout_1, parentLayout.actual);\n if (!boxEquals(relativeSnapshot, relativeLayout)) {\n hasRelativeTargetChanged = true;\n }\n }\n }\n }\n node.notifyListeners(\"didUpdate\", {\n layout: layout_1,\n snapshot: snapshot,\n delta: visualDelta,\n layoutDelta: layoutDelta,\n hasLayoutChanged: hasLayoutChanged,\n hasRelativeTargetChanged: hasRelativeTargetChanged,\n });\n }\n else if (node.isLead()) {\n (_d = (_c = node.options).onExitComplete) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n /**\n * Clearing transition\n * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n * and why we need it at all\n */\n node.options.transition = undefined;\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction resetTransformStyle(node) {\n node.resetTransform();\n}\nfunction finishAnimation(node) {\n node.finishAnimation();\n node.targetDelta = node.relativeTarget = node.target = undefined;\n}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetRotation(node) {\n node.resetRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mix(delta.translate, 0, p);\n output.scale = mix(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mix(from.min, to.min, p);\n output.max = mix(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n mixAxis(output.x, from.x, to.x, p);\n mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nvar defaultLayoutTransition = {\n duration: 0.45,\n ease: [0.4, 0, 0.1, 1],\n};\nfunction mountNodeEarly(node, id) {\n /**\n * Rather than searching the DOM from document we can search the\n * path for the deepest mounted ancestor and search from there\n */\n var searchNode = node.root;\n for (var i = node.path.length - 1; i >= 0; i--) {\n if (Boolean(node.path[i].instance)) {\n searchNode = node.path[i];\n break;\n }\n }\n var searchElement = searchNode && searchNode !== node.root ? searchNode.instance : document;\n var element = searchElement.querySelector(\"[data-projection-id=\\\"\".concat(id, \"\\\"]\"));\n if (element)\n node.mount(element, true);\n}\nfunction roundAxis(axis) {\n axis.min = Math.round(axis.min);\n axis.max = Math.round(axis.max);\n}\nfunction roundBox(box) {\n roundAxis(box.x);\n roundAxis(box.y);\n}\n\nexport { createProjectionNode, globalProjectionState, mixAxis, mixAxisDelta, mixBox };\n","import { useConstant } from '../../utils/use-constant.mjs';\nimport { globalProjectionState } from './create-projection-node.mjs';\n\nvar id = 1;\nfunction useProjectionId() {\n return useConstant(function () {\n if (globalProjectionState.hasEverUpdated) {\n return id++;\n }\n });\n}\n\nexport { useProjectionId };\n","import { createContext } from 'react';\n\n/**\n * @internal\n */\nvar SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","import { __extends } from 'tslib';\nimport React__default from 'react';\n\nvar VisualElementHandler = /** @class */ (function (_super) {\n __extends(VisualElementHandler, _super);\n function VisualElementHandler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Update visual element props as soon as we know this update is going to be commited.\n */\n VisualElementHandler.prototype.getSnapshotBeforeUpdate = function () {\n this.updateProps();\n return null;\n };\n VisualElementHandler.prototype.componentDidUpdate = function () { };\n VisualElementHandler.prototype.updateProps = function () {\n var _a = this.props, visualElement = _a.visualElement, props = _a.props;\n if (visualElement)\n visualElement.setProps(props);\n };\n VisualElementHandler.prototype.render = function () {\n return this.props.children;\n };\n return VisualElementHandler;\n}(React__default.Component));\n\nexport { VisualElementHandler };\n","import { __assign } from 'tslib';\nimport * as React from 'react';\nimport { forwardRef, useContext } from 'react';\nimport { useFeatures } from './features/use-features.mjs';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { loadFeatures, featureDefinitions } from './features/definitions.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { useProjectionId } from '../projection/node/id.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { useProjection } from './features/use-projection.mjs';\nimport { VisualElementHandler } from './utils/VisualElementHandler.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n *\n * @internal\n */\nfunction createMotionComponent(_a) {\n var preloadedFeatures = _a.preloadedFeatures, createVisualElement = _a.createVisualElement, projectionNodeConstructor = _a.projectionNodeConstructor, useRender = _a.useRender, useVisualState = _a.useVisualState, Component = _a.Component;\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n var layoutId = useLayoutId(props);\n props = __assign(__assign({}, props), { layoutId: layoutId });\n /**\n * If we're rendering in a static environment, we only visually update the component\n * as a result of a React-rerender rather than interactions or animations. This\n * means we don't need to load additional memory structures like VisualElement,\n * or any gesture/animation features.\n */\n var config = useContext(MotionConfigContext);\n var features = null;\n var context = useCreateMotionContext(props);\n /**\n * Create a unique projection ID for this component. If a new component is added\n * during a layout animation we'll use this to query the DOM and hydrate its ref early, allowing\n * us to measure it as soon as any layout effect flushes pending layout animations.\n *\n * Performance note: It'd be better not to have to search the DOM for these elements.\n * For newly-entering components it could be enough to only correct treeScale, in which\n * case we could mount in a scale-correction mode. This wouldn't be enough for\n * shared element transitions however. Perhaps for those we could revert to a root node\n * that gets forceRendered and layout animations are triggered on its layout effect.\n */\n var projectionId = config.isStatic ? undefined : useProjectionId();\n /**\n *\n */\n var visualState = useVisualState(props, config.isStatic);\n if (!config.isStatic && isBrowser) {\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, __assign(__assign({}, config), props), createVisualElement);\n useProjection(projectionId, props, context.visualElement, projectionNodeConstructor ||\n featureDefinitions.projectionNodeConstructor);\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n */\n features = useFeatures(props, context.visualElement, preloadedFeatures);\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (React.createElement(VisualElementHandler, { visualElement: context.visualElement, props: __assign(__assign({}, config), props) },\n features,\n React.createElement(MotionContext.Provider, { value: context }, useRender(Component, props, projectionId, useMotionRef(visualState, context.visualElement, externalRef), visualState, config.isStatic, context.visualElement))));\n }\n return forwardRef(MotionComponent);\n}\nfunction useLayoutId(_a) {\n var _b;\n var layoutId = _a.layoutId;\n var layoutGroupId = (_b = useContext(LayoutGroupContext)) === null || _b === void 0 ? void 0 : _b.id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\n\nexport { createMotionComponent };\n","import { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { useContext } from 'react';\nimport { SwitchLayoutGroupContext } from '../../context/SwitchLayoutGroupContext.mjs';\n\nfunction useProjection(projectionId, _a, visualElement, ProjectionNodeConstructor) {\n var _b;\n var layoutId = _a.layoutId, layout = _a.layout, drag = _a.drag, dragConstraints = _a.dragConstraints, layoutScroll = _a.layoutScroll;\n var initialPromotionConfig = useContext(SwitchLayoutGroupContext);\n if (!ProjectionNodeConstructor ||\n !visualElement ||\n (visualElement === null || visualElement === void 0 ? void 0 : visualElement.projection)) {\n return;\n }\n visualElement.projection = new ProjectionNodeConstructor(projectionId, visualElement.getLatestValues(), (_b = visualElement.parent) === null || _b === void 0 ? void 0 : _b.projection);\n visualElement.projection.setOptions({\n layoutId: layoutId,\n layout: layout,\n alwaysMeasureLayout: Boolean(drag) || (dragConstraints && isRefObject(dragConstraints)),\n visualElement: visualElement,\n scheduleRender: function () { return visualElement.scheduleRender(); },\n /**\n * TODO: Update options in an effect. This could be tricky as it'll be too late\n * to update by the time layout animations run.\n * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n * ensuring it gets called if there's no potential layout animations.\n *\n */\n animationType: typeof layout === \"string\" ? layout : \"both\",\n initialPromotionConfig: initialPromotionConfig,\n layoutScroll: layoutScroll,\n });\n}\n\nexport { useProjection };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback(function (instance) {\n var _a;\n instance && ((_a = visualState.mount) === null || _a === void 0 ? void 0 : _a.call(visualState, instance));\n if (visualElement) {\n instance\n ? visualElement.mount(instance)\n : visualElement.unmount();\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","var createHtmlRenderState = function () { return ({\n style: {},\n transform: {},\n transformKeys: [],\n transformOrigin: {},\n vars: {},\n}); };\n\nexport { createHtmlRenderState };\n","import { __assign } from 'tslib';\nimport { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n for (var key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues(_a, visualState, isStatic) {\n var transformTemplate = _a.transformTemplate;\n return useMemo(function () {\n var state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n var vars = state.vars, style = state.style;\n return __assign(__assign({}, vars), style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n var styleProp = props.style || {};\n var style = {};\n /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n if (props.transformValues) {\n style = props.transformValues(style);\n }\n return style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n // The `any` isn't ideal but it is the type of createElement props argument\n var htmlProps = {};\n var style = useStyle(props, visualState, isStatic);\n if (Boolean(props.drag) && props.dragListener !== false) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect =\n style.WebkitUserSelect =\n style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : \"pan-\".concat(props.drag === \"x\" ? \"y\" : \"x\");\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps, useStyle };\n","/**\n * A list of all valid MotionProps.\n *\n * @internalremarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nvar validMotionProps = new Set([\n \"initial\",\n \"animate\",\n \"exit\",\n \"style\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"transformValues\",\n \"custom\",\n \"inherit\",\n \"layout\",\n \"layoutId\",\n \"layoutDependency\",\n \"onLayoutAnimationComplete\",\n \"onLayoutMeasure\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"drag\",\n \"dragControls\",\n \"dragListener\",\n \"dragConstraints\",\n \"dragDirectionLock\",\n \"dragSnapToOrigin\",\n \"_dragX\",\n \"_dragY\",\n \"dragElastic\",\n \"dragMomentum\",\n \"dragPropagation\",\n \"dragTransition\",\n \"whileDrag\",\n \"onPan\",\n \"onPanStart\",\n \"onPanEnd\",\n \"onPanSessionStart\",\n \"onTap\",\n \"onTapStart\",\n \"onTapCancel\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"whileFocus\",\n \"whileTap\",\n \"whileHover\",\n \"whileInView\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"viewport\",\n \"layoutScroll\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return validMotionProps.has(key);\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nvar shouldForward = function (key) { return !isValidMotionProp(key); };\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n var emotionIsPropValid_1 = require(\"@emotion/is-prop-valid\").default;\n shouldForward = function (key) {\n // Handle events explicitly as Emotion validates them all as true\n if (key.startsWith(\"on\")) {\n return !isValidMotionProp(key);\n }\n else {\n return emotionIsPropValid_1(key);\n }\n };\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n var filteredProps = {};\n for (var key in props) {\n if (shouldForward(key) ||\n (forwardMotionProps === true && isValidMotionProp(key)) ||\n (!isDom && !isValidMotionProp(key)) ||\n // If trying to use native HTML drag events, forward drag listeners\n (props[\"draggable\"] && key.startsWith(\"onDrag\"))) {\n filteredProps[key] = props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps };\n","import { __assign } from 'tslib';\nimport { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nvar createSvgRenderState = function () { return (__assign(__assign({}, createHtmlRenderState()), { attrs: {} })); };\n\nexport { createSvgRenderState };\n","import { __assign } from 'tslib';\nimport { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\n\nfunction useSVGProps(props, visualState) {\n var visualProps = useMemo(function () {\n var state = createSvgRenderState();\n buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, props.transformTemplate);\n return __assign(__assign({}, state.attrs), { style: __assign({}, state.style) });\n }, [visualState]);\n if (props.style) {\n var rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = __assign(__assign({}, rawStyles), visualProps.style);\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { __assign } from 'tslib';\nimport { createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.mjs';\nimport { filterProps } from './utils/filter-props.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\nimport { useSVGProps } from '../svg/use-props.mjs';\n\nfunction createUseRender(forwardMotionProps) {\n if (forwardMotionProps === void 0) { forwardMotionProps = false; }\n var useRender = function (Component, props, projectionId, ref, _a, isStatic) {\n var latestValues = _a.latestValues;\n var useVisualProps = isSVGComponent(Component)\n ? useSVGProps\n : useHTMLProps;\n var visualProps = useVisualProps(props, latestValues, isStatic);\n var filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n var elementProps = __assign(__assign(__assign({}, filteredProps), visualProps), { ref: ref });\n if (projectionId) {\n elementProps[\"data-projection-id\"] = projectionId;\n }\n return createElement(Component, elementProps);\n };\n return useRender;\n}\n\nexport { createUseRender };\n","import { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n *\n * @internal\n */\nfunction resolveMotionValue(value) {\n var unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { __rest } from 'tslib';\nimport { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { checkIfControllingVariants, checkIfVariantNode, resolveVariantFromProps } from '../../render/utils/variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\n\nfunction makeState(_a, props, context, presenceContext) {\n var scrapeMotionValuesFromProps = _a.scrapeMotionValuesFromProps, createRenderState = _a.createRenderState, onMount = _a.onMount;\n var state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = function (instance) { return onMount(props, instance, state); };\n }\n return state;\n}\nvar makeUseVisualState = function (config) {\n return function (props, isStatic) {\n var context = useContext(MotionContext);\n var presenceContext = useContext(PresenceContext);\n return isStatic\n ? makeState(config, props, context, presenceContext)\n : useConstant(function () {\n return makeState(config, props, context, presenceContext);\n });\n };\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n var values = {};\n var blockInitialAnimation = (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false;\n var motionValues = scrapeMotionValues(props);\n for (var key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n var initial = props.initial, animate = props.animate;\n var isControllingVariants = checkIfControllingVariants(props);\n var isVariantNode = checkIfVariantNode(props);\n if (context &&\n isVariantNode &&\n !isControllingVariants &&\n props.inherit !== false) {\n initial !== null && initial !== void 0 ? initial : (initial = context.initial);\n animate !== null && animate !== void 0 ? animate : (animate = context.animate);\n }\n var initialAnimationIsBlocked = blockInitialAnimation || initial === false;\n var variantToSet = initialAnimationIsBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n var list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n list.forEach(function (definition) {\n var resolved = resolveVariantFromProps(props, definition);\n if (!resolved)\n return;\n var transitionEnd = resolved.transitionEnd; resolved.transition; var target = __rest(resolved, [\"transitionEnd\", \"transition\"]);\n for (var key in target) {\n var valueTarget = target[key];\n if (Array.isArray(valueTarget)) {\n /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n var index = initialAnimationIsBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (var key in transitionEnd)\n values[key] = transitionEnd[key];\n });\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\n\nvar svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: function (props, instance, _a) {\n var renderState = _a.renderState, latestValues = _a.latestValues;\n try {\n renderState.dimensions =\n typeof instance.getBBox ===\n \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, props.transformTemplate);\n // TODO: Replace with direct assignment\n renderSVG(instance, renderState);\n },\n }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nvar htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","import { createMotionProxy } from './motion-proxy.mjs';\nimport { createDomMotionConfig } from './utils/create-config.mjs';\n\n/**\n * @public\n */\nvar m = createMotionProxy(createDomMotionConfig);\n\nexport { m };\n","import { createMotionComponent } from '../../motion/index.mjs';\n\n/**\n * Convert any React component into a `motion` component. The provided component\n * **must** use `React.forwardRef` to the underlying DOM component you want to animate.\n *\n * ```jsx\n * const Component = React.forwardRef((props, ref) => {\n * return
\n * })\n *\n * const MotionComponent = motion(Component)\n * ```\n *\n * @public\n */\nfunction createMotionProxy(createConfig) {\n function custom(Component, customMotionComponentConfig) {\n if (customMotionComponentConfig === void 0) { customMotionComponentConfig = {}; }\n return createMotionComponent(createConfig(Component, customMotionComponentConfig));\n }\n if (typeof Proxy === \"undefined\") {\n return custom;\n }\n /**\n * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n * Rather than generating them anew every render.\n */\n var componentCache = new Map();\n return new Proxy(custom, {\n /**\n * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n * The prop name is passed through as `key` and we can use that to generate a `motion`\n * DOM component with that name.\n */\n get: function (_target, key) {\n /**\n * If this element doesn't exist in the component cache, create it and cache.\n */\n if (!componentCache.has(key)) {\n componentCache.set(key, custom(key));\n }\n return componentCache.get(key);\n },\n });\n}\n\nexport { createMotionProxy };\n","import { __assign } from 'tslib';\nimport { isSVGComponent } from './is-svg-component.mjs';\nimport { createUseRender } from '../use-render.mjs';\nimport { svgMotionConfig } from '../../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../../html/config-motion.mjs';\n\nfunction createDomMotionConfig(Component, _a, preloadedFeatures, createVisualElement, projectionNodeConstructor) {\n var _b = _a.forwardMotionProps, forwardMotionProps = _b === void 0 ? false : _b;\n var baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n return __assign(__assign({}, baseConfig), { preloadedFeatures: preloadedFeatures, useRender: createUseRender(forwardMotionProps), createVisualElement: createVisualElement, projectionNodeConstructor: projectionNodeConstructor, Component: Component });\n}\n\nexport { createDomMotionConfig };\n","var CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g;\nvar REPLACE_TEMPLATE = \"$1-$2\";\n/**\n * Convert camelCase to dash-case properties.\n */\nvar camelToDash = function (str) {\n return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase();\n};\n\nexport { camelToDash };\n","/**\n * Returns true if the provided key is a CSS variable\n */\nfunction isCSSVariable(key) {\n return key.startsWith(\"--\");\n}\n\nexport { isCSSVariable };\n","/**\n * We keep these listed seperately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nvar lowercaseSVGElements = [\n \"animate\",\n \"circle\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"g\",\n \"image\",\n \"line\",\n \"filter\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"rect\",\n \"stop\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n if (\n /**\n * If it's not a string, it's a custom React component. Currently we only support\n * HTML custom React components.\n */\n typeof Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","import { __assign } from 'tslib';\nimport { number } from 'style-value-types';\n\nvar int = __assign(__assign({}, number), { transform: Math.round });\n\nexport { int };\n","import { px, degrees, scale, alpha, progressPercentage } from 'style-value-types';\nimport { int } from './type-int.mjs';\n\nvar numberValueTypes = {\n // Border props\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n size: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n // Transform props\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale: scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n // Misc\n zIndex: int,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { sortTransformProps } from './transform.mjs';\n\nvar translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(_a, _b, transformIsDefault, transformTemplate) {\n var transform = _a.transform, transformKeys = _a.transformKeys;\n var _c = _b.enableHardwareAcceleration, enableHardwareAcceleration = _c === void 0 ? true : _c, _d = _b.allowTransformNone, allowTransformNone = _d === void 0 ? true : _d;\n // The transform string we're going to build into.\n var transformString = \"\";\n // Transform keys into their default order - this will determine the output order.\n transformKeys.sort(sortTransformProps);\n // Track whether the defined transform has a defined z so we don't add a\n // second to enable hardware acceleration\n var transformHasZ = false;\n // Loop over each transform and build them into transformString\n var numTransformKeys = transformKeys.length;\n for (var i = 0; i < numTransformKeys; i++) {\n var key = transformKeys[i];\n transformString += \"\".concat(translateAlias[key] || key, \"(\").concat(transform[key], \") \");\n if (key === \"z\")\n transformHasZ = true;\n }\n if (!transformHasZ && enableHardwareAcceleration) {\n transformString += \"translateZ(0)\";\n }\n else {\n transformString = transformString.trim();\n }\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n/**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\nfunction buildTransformOrigin(_a) {\n var _b = _a.originX, originX = _b === void 0 ? \"50%\" : _b, _c = _a.originY, originY = _c === void 0 ? \"50%\" : _c, _d = _a.originZ, originZ = _d === void 0 ? 0 : _d;\n return \"\".concat(originX, \" \").concat(originY, \" \").concat(originZ);\n}\n\nexport { buildTransform, buildTransformOrigin };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nvar getValueAsType = function (value, type) {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","import { buildTransform, buildTransformOrigin } from './build-transform.mjs';\nimport { isCSSVariable } from '../../dom/utils/is-css-variable.mjs';\nimport { isTransformProp, isTransformOriginProp } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n var _a;\n var style = state.style, vars = state.vars, transform = state.transform, transformKeys = state.transformKeys, transformOrigin = state.transformOrigin;\n // Empty the transformKeys array. As we're throwing out refs to its items\n // this might not be as cheap as suspected. Maybe using the array as a buffer\n // with a manual incrementation would be better.\n transformKeys.length = 0;\n // Track whether we encounter any transform or transformOrigin values.\n var hasTransform = false;\n var hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n var transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept seperately for further processing.\n */\n for (var key in latestValues) {\n var value = latestValues[key];\n /**\n * If this is a CSS variable we don't do any further processing.\n */\n if (isCSSVariable(key)) {\n vars[key] = value;\n continue;\n }\n // Convert the value to its default value type, ie 0 -> \"0px\"\n var valueType = numberValueTypes[key];\n var valueAsType = getValueAsType(value, valueType);\n if (isTransformProp(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n transformKeys.push(key);\n // If we already know we have a non-default transform, early return\n if (!transformIsNone)\n continue;\n // Otherwise check to see if this is a default transform\n if (value !== ((_a = valueType.default) !== null && _a !== void 0 ? _a : 0))\n transformIsNone = false;\n }\n else if (isTransformOriginProp(key)) {\n transformOrigin[key] = valueAsType;\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n }\n else {\n style[key] = valueAsType;\n }\n }\n if (hasTransform) {\n style.transform = buildTransform(state, options, transformIsNone, transformTemplate);\n }\n else if (transformTemplate) {\n style.transform = transformTemplate({}, \"\");\n }\n if (hasTransformOrigin) {\n style.transformOrigin = buildTransformOrigin(transformOrigin);\n }\n}\n\nexport { buildHTMLStyles };\n","function renderHTML(element, _a, styleProp, projection) {\n var style = _a.style, vars = _a.vars;\n Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n // Loop over any CSS variables and assign those.\n for (var key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props) {\n var style = props.style;\n var newValues = {};\n for (var key in style) {\n if (isMotionValue(style[key]) || isForcedMotionValue(key, props)) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","/**\n * A list of all transformable axes. We'll use this list to generated a version\n * of each axes for each transform.\n */\nvar transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\n/**\n * An ordered array of each transformable value. By default, transform values\n * will be sorted to this order.\n */\nvar order = [\"translate\", \"scale\", \"rotate\", \"skew\"];\n/**\n * Generate a list of every possible transform key.\n */\nvar transformProps = [\"transformPerspective\", \"x\", \"y\", \"z\"];\norder.forEach(function (operationKey) {\n return transformAxes.forEach(function (axesKey) {\n return transformProps.push(operationKey + axesKey);\n });\n});\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\nfunction sortTransformProps(a, b) {\n return transformProps.indexOf(a) - transformProps.indexOf(b);\n}\n/**\n * A quick lookup for transform props.\n */\nvar transformPropSet = new Set(transformProps);\nfunction isTransformProp(key) {\n return transformPropSet.has(key);\n}\n/**\n * A quick lookup for transform origin props\n */\nvar transformOriginProps = new Set([\"originX\", \"originY\", \"originZ\"]);\nfunction isTransformOriginProp(key) {\n return transformOriginProps.has(key);\n}\n\nexport { isTransformOriginProp, isTransformProp, sortTransformProps, transformAxes, transformProps };\n","import { px } from 'style-value-types';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n var pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n var pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return \"\".concat(pxOriginX, \" \").concat(pxOriginY);\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from 'style-value-types';\n\nvar dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nvar camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing, offset, useDashCase) {\n if (spacing === void 0) { spacing = 1; }\n if (offset === void 0) { offset = 0; }\n if (useDashCase === void 0) { useDashCase = true; }\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n var keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n var pathLength = px.transform(length);\n var pathSpacing = px.transform(spacing);\n attrs[keys.array] = \"\".concat(pathLength, \" \").concat(pathSpacing);\n}\n\nexport { buildSVGPath };\n","import { __rest } from 'tslib';\nimport { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, _a, options, transformTemplate) {\n var attrX = _a.attrX, attrY = _a.attrY, originX = _a.originX, originY = _a.originY, pathLength = _a.pathLength, _b = _a.pathSpacing, pathSpacing = _b === void 0 ? 1 : _b, _c = _a.pathOffset, pathOffset = _c === void 0 ? 0 : _c, \n // This is object creation, which we try to avoid per-frame.\n latest = __rest(_a, [\"attrX\", \"attrY\", \"originX\", \"originY\", \"pathLength\", \"pathSpacing\", \"pathOffset\"]);\n buildHTMLStyles(state, latest, options, transformTemplate);\n state.attrs = state.style;\n state.style = {};\n var attrs = state.attrs, style = state.style, dimensions = state.dimensions;\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Treat x/y not as shortcuts but as actual attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n // Build SVG path if one has been defined\n if (pathLength !== undefined) {\n buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\nexport { buildSVGAttrs };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nvar camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n \"gradientTransform\",\n \"pathLength\",\n]);\n\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState) {\n renderHTML(element, renderState);\n for (var key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\n\nfunction scrapeMotionValuesFromProps(props) {\n var newValues = scrapeMotionValuesFromProps$1(props);\n for (var key in props) {\n if (isMotionValue(props[key])) {\n var targetKey = key === \"x\" || key === \"y\" ? \"attr\" + key.toUpperCase() : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","/**\n * Decides if the supplied variable is an array of variant labels\n */\nfunction isVariantLabels(v) {\n return Array.isArray(v);\n}\n/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || isVariantLabels(v);\n}\n/**\n * Creates an object containing the latest state of every MotionValue on a VisualElement\n */\nfunction getCurrent(visualElement) {\n var current = {};\n visualElement.forEachValue(function (value, key) { return (current[key] = value.get()); });\n return current;\n}\n/**\n * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n */\nfunction getVelocity(visualElement) {\n var velocity = {};\n visualElement.forEachValue(function (value, key) { return (velocity[key] = value.getVelocity()); });\n return velocity;\n}\nfunction resolveVariantFromProps(props, definition, custom, currentValues, currentVelocity) {\n var _a;\n if (currentValues === void 0) { currentValues = {}; }\n if (currentVelocity === void 0) { currentVelocity = {}; }\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n }\n /**\n * If the variant definition is a variant label, or\n * the function returned a variant label, resolve.\n */\n if (typeof definition === \"string\") {\n definition = (_a = props.variants) === null || _a === void 0 ? void 0 : _a[definition];\n }\n /**\n * At this point we've resolved both functions and variant labels,\n * but the resolved variant label might itself have been a function.\n * If so, resolve. This can only have returned a valid target object.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n }\n return definition;\n}\nfunction resolveVariant(visualElement, definition, custom) {\n var props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== null && custom !== void 0 ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\nfunction checkIfControllingVariants(props) {\n var _a;\n return (typeof ((_a = props.animate) === null || _a === void 0 ? void 0 : _a.start) === \"function\" ||\n isVariantLabel(props.initial) ||\n isVariantLabel(props.animate) ||\n isVariantLabel(props.whileHover) ||\n isVariantLabel(props.whileDrag) ||\n isVariantLabel(props.whileTap) ||\n isVariantLabel(props.whileFocus) ||\n isVariantLabel(props.exit));\n}\nfunction checkIfVariantNode(props) {\n return Boolean(checkIfControllingVariants(props) || props.variants);\n}\n\nexport { checkIfControllingVariants, checkIfVariantNode, isVariantLabel, isVariantLabels, resolveVariant, resolveVariantFromProps };\n","var isBrowser = typeof window !== \"undefined\";\n\nexport { isBrowser };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nvar isCustomValue = function (v) {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nvar resolveFinalValueInKeyframes = function (v) {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n var ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","import { __read } from 'tslib';\nimport sync from 'framesync';\nimport { useRef, useState, useCallback } from 'react';\nimport { useUnmountEffect } from './use-unmount-effect.mjs';\n\nfunction useForceUpdate() {\n var isUnmountingRef = useRef(false);\n var _a = __read(useState(0), 2), forcedRenderCount = _a[0], setForcedRenderCount = _a[1];\n useUnmountEffect(function () { return (isUnmountingRef.current = true); });\n var forceRender = useCallback(function () {\n !isUnmountingRef.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n /**\n * Defer this to the end of the next animation frame in case there are multiple\n * synchronous calls.\n */\n var deferredForceRender = useCallback(function () { return sync.postRender(forceRender); }, [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(function () { return function () { return callback(); }; }, []);\n}\n\nexport { useUnmountEffect };\n","var isMotionValue = function (value) {\n return Boolean(value !== null && typeof value === \"object\" && value.getVelocity);\n};\n\nexport { isMotionValue };\n","const defaultTimestep = (1 / 60) * 1000;\nconst getCurrentTime = typeof performance !== \"undefined\"\n ? () => performance.now()\n : () => Date.now();\nconst onNextFrame = typeof window !== \"undefined\"\n ? (callback) => window.requestAnimationFrame(callback)\n : (callback) => setTimeout(() => callback(getCurrentTime()), defaultTimestep);\n\nexport { defaultTimestep, onNextFrame };\n","import { onNextFrame, defaultTimestep } from './on-next-frame.mjs';\nimport { createRenderStep } from './create-render-step.mjs';\n\nconst maxElapsed = 40;\nlet useDefaultElapsed = true;\nlet runNextFrame = false;\nlet isProcessing = false;\nconst frame = {\n delta: 0,\n timestamp: 0,\n};\nconst stepsOrder = [\n \"read\",\n \"update\",\n \"preRender\",\n \"render\",\n \"postRender\",\n];\nconst steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(() => (runNextFrame = true));\n return acc;\n}, {});\nconst sync = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n startLoop();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n}, {});\nconst cancelSync = stepsOrder.reduce((acc, key) => {\n acc[key] = steps[key].cancel;\n return acc;\n}, {});\nconst flushSync = stepsOrder.reduce((acc, key) => {\n acc[key] = () => steps[key].process(frame);\n return acc;\n}, {});\nconst processStep = (stepId) => steps[stepId].process(frame);\nconst processFrame = (timestamp) => {\n runNextFrame = false;\n frame.delta = useDefaultElapsed\n ? defaultTimestep\n : Math.max(Math.min(timestamp - frame.timestamp, maxElapsed), 1);\n frame.timestamp = timestamp;\n isProcessing = true;\n stepsOrder.forEach(processStep);\n isProcessing = false;\n if (runNextFrame) {\n useDefaultElapsed = false;\n onNextFrame(processFrame);\n }\n};\nconst startLoop = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!isProcessing)\n onNextFrame(processFrame);\n};\nconst getFrameData = () => frame;\n\nexport default sync;\nexport { cancelSync, flushSync, getFrameData };\n","function createRenderStep(runNextFrame) {\n let toRun = [];\n let toRunNextFrame = [];\n let numToRun = 0;\n let isProcessing = false;\n let flushNextFrame = false;\n const toKeepAlive = new WeakSet();\n const step = {\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const buffer = addToCurrentFrame ? toRun : toRunNextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n if (buffer.indexOf(callback) === -1) {\n buffer.push(callback);\n if (addToCurrentFrame && isProcessing)\n numToRun = toRun.length;\n }\n return callback;\n },\n cancel: (callback) => {\n const index = toRunNextFrame.indexOf(callback);\n if (index !== -1)\n toRunNextFrame.splice(index, 1);\n toKeepAlive.delete(callback);\n },\n process: (frameData) => {\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n [toRun, toRunNextFrame] = [toRunNextFrame, toRun];\n toRunNextFrame.length = 0;\n numToRun = toRun.length;\n if (numToRun) {\n for (let i = 0; i < numToRun; i++) {\n const callback = toRun[i];\n callback(frameData);\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n }\n }\n isProcessing = false;\n if (flushNextFrame) {\n flushNextFrame = false;\n step.process(frameData);\n }\n },\n };\n return step;\n}\n\nexport { createRenderStep };\n","import { clamp } from '../utils.mjs';\n\nconst number = {\n test: (v) => typeof v === 'number',\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = Object.assign(Object.assign({}, number), { transform: clamp(0, 1) });\nconst scale = Object.assign(Object.assign({}, number), { default: 1 });\n\nexport { alpha, number, scale };\n","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n test: (v) => isString(v) && v.endsWith(unit) && v.split(' ').length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType('deg');\nconst percent = createUnitType('%');\nconst px = createUnitType('px');\nconst vh = createUnitType('vh');\nconst vw = createUnitType('vw');\nconst progressPercentage = Object.assign(Object.assign({}, percent), { parse: (v) => percent.parse(v) / 100, transform: (v) => percent.transform(v * 100) });\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","const clamp = (min, max) => (v) => Math.max(Math.min(v, max), min);\nconst sanitize = (v) => (v % 1 ? Number(v.toFixed(5)) : v);\nconst floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nconst colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))/gi;\nconst singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))$/i;\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nexport { clamp, colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"212\":\"1acf6fc7\",\"359\":\"324460c1\",\"438\":\"f669dd9e\",\"706\":\"9cb25435\",\"1004\":\"ee4596a7\",\"1027\":\"baec9c4e\",\"1193\":\"630f6224\",\"1808\":\"f7b2e095\",\"1819\":\"9da907aa\",\"2098\":\"fdf46493\",\"2388\":\"fb25de73\",\"2960\":\"3c7f8e00\",\"3721\":\"1c417369\",\"3791\":\"621a9c3a\",\"3986\":\"dae75e21\",\"3998\":\"62fde423\",\"4213\":\"53756da3\",\"4316\":\"e67acd4f\",\"4336\":\"b23656a5\",\"4440\":\"dc1130d1\",\"4730\":\"96aa6381\",\"4858\":\"62e0462b\",\"4870\":\"2d2f174f\",\"4953\":\"38e7a2a2\",\"5045\":\"3a2f0a18\",\"5054\":\"32500d19\",\"5092\":\"3a97cc2b\",\"5369\":\"0b68d432\",\"5859\":\"5850281c\",\"5874\":\"d40ff91a\",\"6151\":\"8ed07584\",\"6207\":\"05b88e0a\",\"6268\":\"9760c797\",\"6270\":\"f03b99dd\",\"6584\":\"7acb04ef\",\"6590\":\"3430b65b\",\"6654\":\"c6b0449c\",\"6994\":\"174b6c1f\",\"7020\":\"09389a66\",\"7333\":\"324ec0c3\",\"7761\":\"63c540e8\",\"8089\":\"4c30f54c\",\"8112\":\"b57ac14b\",\"8285\":\"bff37573\",\"8348\":\"3e2f8ccb\",\"8615\":\"4272bfce\",\"8617\":\"27ca9974\",\"9219\":\"221d892f\",\"9552\":\"75a009bf\",\"9590\":\"84461067\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"212\":\"5ce19f2e\",\"706\":\"77073cfd\",\"1027\":\"8e47a587\",\"1193\":\"abcab0c3\",\"2098\":\"8faf8d27\",\"3998\":\"9f8fe44e\",\"4213\":\"b224b9ac\",\"4730\":\"eae1de04\",\"4953\":\"5275ae07\",\"5045\":\"a4e095ef\",\"5369\":\"69ea124b\",\"6151\":\"80cbe98e\",\"6207\":\"ed5aa871\",\"6270\":\"efc898f9\",\"6994\":\"e109cad4\",\"7761\":\"a3b80cbe\",\"8615\":\"a59d3648\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"pwa-csr:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"./\";","var createStylesheet = (chunkId, fullhref, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"212\":1,\"706\":1,\"1027\":1,\"1193\":1,\"2098\":1,\"3998\":1,\"4213\":1,\"4730\":1,\"4953\":1,\"5045\":1,\"5369\":1,\"6151\":1,\"6207\":1,\"6270\":1,\"6994\":1,\"7761\":1,\"8615\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpwa_csr\"] = self[\"webpackChunkpwa_csr\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import type { IMediaItemSchema, IMediaSchema } from '../interface';\n\nfunction newSchema(): IMediaSchema {\n return {\n version: 1,\n revision: 0,\n modifiedDate: new Date(),\n creationDate: new Date(),\n media: [],\n };\n}\n\nfunction _isIMediaSchema(object: unknown): object is IMediaSchema {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record.version) &&\n !isNullOrUndefined(record.revision) &&\n !isNullOrUndefined(record.modifiedDate) &&\n !isNullOrUndefined(record.creationDate)\n );\n}\n\nfunction _isIMediaItemSchema(object: unknown): object is IMediaItemSchema {\n if (!object || typeof object !== 'object') {\n return false;\n }\n const record: Partial = object as Partial;\n\n const isNullOrUndefined = (value: unknown) => value === null || value === undefined;\n\n return (\n !isNullOrUndefined(record.fileName) &&\n !isNullOrUndefined(record.sourceGuid) &&\n !isNullOrUndefined(record.sourceHash) &&\n !isNullOrUndefined(record.versions)\n );\n}\n\nfunction _expandMedium(obj: Partial): Record {\n return {\n ...obj,\n versions: (obj.versions ?? []).map(version => ({\n ...version,\n creationDate: new Date((version.creationDate as unknown as string) ?? '2020-01-01'),\n })),\n };\n}\n\nfunction expandSchema(text: string): IMediaSchema | null {\n const preExpand = JSON.parse(text);\n\n const media: Array> = preExpand['media'] ?? [];\n\n const obj: Partial = {\n ...preExpand,\n revision: preExpand?.revision ?? 0,\n media: media\n .filter(medium => _isIMediaItemSchema(medium))\n .map(medium => _expandMedium(medium as Record)),\n };\n\n return _isIMediaSchema(obj) ? obj : null;\n}\n\nfunction flattenSchema(schema: IMediaSchema): string {\n return JSON.stringify(schema);\n}\n\nconst module = {\n create: newSchema,\n expand: expandSchema,\n flatten: flattenSchema,\n};\n\nexport default module;\n","import type { IMediaSchema, IMediumAssetSchema } from '@monofe/streamlib';\nimport type { IProgressPromise, IProgressPromiseGenerator } from '../../interface/promise';\nimport type { IFetcher } from '../../interface/util';\nimport type { IMediaURLResolverParameters, MediaBinaryStorageTypeMap } from '../interface/media';\nimport mediaDownload from './media.download';\nimport mediaUtil from './media.util';\n\nconst MIME_TYPE_STREAM = ['application/x-mpegurl'];\n\nconst _isStream = (asset: IMediumAssetSchema) => MIME_TYPE_STREAM.includes(asset.mimeType);\nconst _isDownload = (asset: IMediumAssetSchema) => !_isStream(asset);\n\nfunction canResolveMedium(schema: IMediaSchema, mediaId: string): Promise {\n /* check if the mediaId lives in our schema */\n const matchingItems = schema.media.filter(medium => medium.sourceGuid === mediaId);\n\n return Promise.resolve(matchingItems.length > 0);\n}\nfunction requestURL(\n schema: IMediaSchema,\n urlPrefix: string,\n mediaId: string,\n parameters: IMediaURLResolverParameters = {},\n): Array {\n const matchingItems = schema.media.filter(medium => medium.sourceGuid === mediaId);\n\n /* prefer stream assets where possible */\n const streamVersions = matchingItems.flatMap(asset =>\n asset.versions.filter(version => _isStream(version)),\n );\n const downloadVersions = matchingItems.flatMap(asset =>\n asset.versions.filter(version => _isDownload(version)),\n );\n\n const matchingVersion = streamVersions.length > 0 ? streamVersions : downloadVersions;\n\n const urls = matchingVersion.map(version => `${urlPrefix}${version.path}`);\n\n return urls;\n}\n\nfunction getMedia<\n K extends keyof MediaBinaryStorageTypeMap,\n V extends MediaBinaryStorageTypeMap[K],\n>(\n promiser: IProgressPromiseGenerator,\n fetcher: Promise,\n schema: IMediaSchema,\n urlPrefix: string,\n type: K,\n mediaId: string,\n parameters: IMediaURLResolverParameters,\n): IProgressPromise {\n const urls = requestURL(schema, urlPrefix, mediaId, parameters);\n const requests = urls.map(url => mediaUtil.requestForURL(url, type));\n\n return mediaDownload.download(promiser, fetcher, requests, type);\n}\n\nconst module = {\n canResolveMedium,\n getMedia,\n requestURL,\n};\n\nexport default module;\n","import type { IMediaSchema } from '@monofe/streamlib';\nimport type { MediaBinaryStorageTypeMap } from '../../controller/interface/media';\nimport type { IContainer } from '../../interface/container';\nimport { injectProgressPromise, IProgressPromise } from '../../interface/promise';\nimport { injectFetch } from '../../interface/util';\nimport type { IMediaAPI, IMediaURLResolverParameters } from '../interface/media';\nimport mediaImpl from './mediaStream';\n\nfunction media(container: IContainer, schema: IMediaSchema, schemaURL: string) {\n const promiser = injectProgressPromise(container);\n const fetcher = injectFetch(container);\n\n const urlPrefix = schemaURL.replace('/media.json', '');\n\n const module: IMediaAPI = {\n getMedia: <\n T extends keyof MediaBinaryStorageTypeMap,\n U extends MediaBinaryStorageTypeMap[T],\n >(\n type: T,\n mediaId: string,\n parameters?: IMediaURLResolverParameters,\n ) =>\n mediaImpl.getMedia(\n promiser,\n fetcher,\n schema,\n urlPrefix,\n type,\n mediaId,\n parameters ?? {},\n ) as IProgressPromise,\n\n /* IMediaURLResolver */\n canResolveMedium: (mediaId: string) => mediaImpl.canResolveMedium(schema, mediaId),\n\n requestURL: (mediaId: string, parameters: IMediaURLResolverParameters = {}) =>\n mediaImpl.requestURL(schema, urlPrefix, mediaId, parameters),\n };\n\n return module;\n}\n\nexport default media;\n","import { IMediaSchema, media } from '@monofe/streamlib';\nimport { injectMediaAPI } from '../api';\nimport mediaStreamBinder from '../api/impl/mediaStream.bind';\nimport { bindMediaAPI } from '../api/interface/bind';\nimport { IConfigCacheAssets, IConfigCacheName, injectConfigCache } from '../interface';\nimport { IFetcher, injectFetch } from '../interface/util';\nimport privateContainer from '../private/container';\nimport { injectMediaCacheController } from './interface';\n\nconst _mediaSchemaFetcher = async (\n fetcher: Promise,\n schemaUrl: string,\n): Promise => {\n const fetchResolved = await fetcher;\n const fileContents = await fetchResolved({\n url: schemaUrl,\n expectedResponseType: 'json',\n });\n let mediaSchema = null;\n if (fileContents.payload) {\n mediaSchema = media.expand(JSON.stringify(fileContents.payload));\n }\n\n return mediaSchema;\n};\n\nasync function bind(schemaUrl: string): Promise {\n /* must load the private container, these assets are not global */\n const container = privateContainer();\n const fetcher = injectFetch(container);\n\n const schema = await _mediaSchemaFetcher(fetcher, schemaUrl);\n\n if (schema) {\n const mediaAPIs = injectMediaAPI(container) ?? [];\n const streamAPI = mediaStreamBinder(container, schema, schemaUrl);\n bindMediaAPI([streamAPI, ...mediaAPIs], container); /* make sure the streamAPI is first */\n\n const schemaPrefix = schemaUrl.replace('/media.json', '');\n\n const config = injectConfigCache(container);\n const configCache = config?.[IConfigCacheName.WorkspaceStream] as\n | IConfigCacheAssets\n | undefined;\n const streamCacheName = configCache?.cacheName ?? 'cache-streamMedia';\n\n const manager = injectMediaCacheController(container);\n manager.addCacheResolver(streamCacheName, (mediaId: string) => {\n const matchingItems = schema.media.filter(item => item.sourceGuid === mediaId);\n const urls = matchingItems.flatMap(item =>\n item.versions.map(version => `${schemaPrefix}${version.path}`),\n );\n return urls;\n });\n }\n\n return Promise.resolve();\n}\n\nexport default bind;\n","import { IEnv } from '../interface/util';\n\nexport enum IConfigLogLevel {\n Undef = 0,\n Milestone = 1,\n Trace = 2,\n Verbose = 3,\n Info = 4,\n Warn = 5,\n Error = 6,\n Fatal = 7,\n LastValue = 8,\n}\n\nexport enum IConfigLogDestination {\n Undef = 0,\n Console = 1,\n Remote_ApplicationInsights = 2,\n LastValue = 3,\n}\n\nexport interface IConfigLogSettings {\n authorizationKey?: string;\n}\n\nexport interface IConfigLog {\n loggingLevelsEnabled: Array;\n outputDestinations: Array;\n outputConfiguration: Record<\n IConfigLogDestination.Console | IConfigLogDestination.Remote_ApplicationInsights,\n IConfigLogSettings\n >;\n}\n\nconst DEFAULTS = {\n LOGGINGLEVELSENABLED: [\n IConfigLogLevel.Trace,\n IConfigLogLevel.Info,\n IConfigLogLevel.Warn,\n IConfigLogLevel.Error,\n IConfigLogLevel.Fatal,\n ],\n OUTPUTDESTINATIONS: [IConfigLogDestination.Console],\n OUTPUTCONFIGURATION: {\n [IConfigLogDestination.Console]: {},\n [IConfigLogDestination.Remote_ApplicationInsights]: {},\n },\n};\n\nfunction config(env: IEnv): IConfigLog {\n const config: IConfigLog = {\n loggingLevelsEnabled: env.getValueWithDefault>(\n 'REACT_APP_LOG_LEVELS',\n DEFAULTS.LOGGINGLEVELSENABLED,\n ),\n outputDestinations: env.getValueWithDefault>(\n 'REACT_APP_LOG_DESTINATIONS',\n DEFAULTS.OUTPUTDESTINATIONS,\n ),\n outputConfiguration: env.getValueWithDefault<\n Record<\n IConfigLogDestination.Console | IConfigLogDestination.Remote_ApplicationInsights,\n IConfigLogSettings\n >\n >('REACT_APP_LOG_SETTINGS', DEFAULTS.OUTPUTCONFIGURATION),\n };\n\n return config;\n}\n\nexport default config;\n","import { bindAssetFetcher } from '../interface/asset';\nimport {\n bindConfigAPI,\n bindConfigCache,\n bindConfigLog,\n bindConfigManifest,\n bindConfigRoute,\n injectConfigRoute,\n} from '../interface/config';\nimport { IContainer } from '../interface/container';\nimport { injectENV, injectFetch } from '../interface/util';\nimport api from './api';\nimport asset from './asset';\nimport cache from './cache';\nimport log from './log';\nimport manifest from './manifest';\nimport route from './routes';\n\nfunction _bindLog(container: IContainer): Promise {\n const env = injectENV(container);\n const config = log(env);\n bindConfigLog(config, container);\n return Promise.resolve();\n}\n\nfunction _bindAPI(container: IContainer): Promise {\n const env = injectENV(container);\n const config = api(env);\n bindConfigAPI([config], container);\n return Promise.resolve();\n}\n\nfunction _bindAsset(container: IContainer): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const val = await asset();\n bindAssetFetcher(val, container);\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction _bindConfig(container: IContainer): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const fetcher = await injectFetch(container);\n const routeConfig = injectConfigRoute(container);\n const val = await manifest(fetcher, routeConfig);\n bindConfigManifest(val, container);\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction _bindCache(container: IContainer): Promise {\n bindConfigCache(cache, container);\n return Promise.resolve();\n}\n\nfunction _bindRoute(container: IContainer): Promise {\n const env = injectENV(container);\n const bindVal = route(env);\n bindConfigRoute(bindVal, container);\n return Promise.resolve();\n}\n\nexport function bind(container: IContainer): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const binders: Array<(container: IContainer) => Promise> = [\n _bindLog,\n _bindAPI,\n _bindCache,\n _bindRoute,\n _bindAsset,\n _bindConfig,\n ];\n\n for (const binder of binders) {\n await binder(container);\n }\n\n resolve();\n } catch (error) {\n const errorLog = `bind error: ${[error]}`;\n console.error(errorLog);\n reject(errorLog);\n }\n });\n}\n","import { PayloadAction } from '@reduxjs/toolkit';\nimport { IToastMessage } from './interface';\nimport { IToastMessagePrv, ToastStorage } from './private';\n\nconst reset = (state: ToastStorage, action: PayloadAction) => [];\n\nconst displayMessage = (state: ToastStorage, action: PayloadAction) => {\n state.push(action.payload);\n};\n\nconst hideMessage = (state: ToastStorage, action: PayloadAction>) => {\n const matchingIndexes = action.payload.id\n ? state\n .map((item, index) => (item.id === action.payload.id ? index : -1))\n .filter(index => index >= 0)\n : state\n .map((item, index) => (item.text === action.payload.text ? index : -1))\n .filter(index => index >= 0);\n\n const newItems = state.filter((_, idx) => !matchingIndexes.includes(idx));\n return newItems;\n};\n\nconst module = {\n reset,\n displayMessage,\n hideMessage,\n};\n\nexport type NamedTypes = keyof typeof module;\n\nexport default module;\n","import { IToastMessage } from './interface';\n\nexport const STORE_NAME = 'ToastStore';\n\nexport interface IToastMessagePrv extends IToastMessage {\n id: string;\n}\n\nexport type ToastStorage = Array;\n","import { createSlice } from '@reduxjs/toolkit';\nimport reducers from './reducers';\nimport { STORE_NAME, ToastStorage } from './private';\n\nconst initialState: ToastStorage = [];\n\nexport const slice = createSlice({\n name: STORE_NAME,\n initialState,\n reducers,\n});\n\nexport default slice.actions;\n","import { AnyAction } from '@reduxjs/toolkit';\nimport { injectStoresData, injectStoresReducer } from '../../state';\nimport { slice } from './actions';\nimport { STORE_NAME, ToastStorage } from './private';\n\nexport function getStore(): ToastStorage {\n const globalStore = injectStoresData().store.getState();\n const data: ToastStorage | undefined = (globalStore as any)[STORE_NAME];\n return data ?? [];\n}\n\nexport function setupStore() {\n const reducerRegister = injectStoresReducer();\n reducerRegister.addSlice(slice);\n}\n\nexport function dispatchAction(action: AnyAction) {\n const store = injectStoresData();\n store.dispatch(action);\n}\n","import { CSSProperties, lazy, Suspense } from 'react';\nimport { m, AnimatePresence } from 'framer-motion';\nimport type { Variants } from 'framer-motion';\nimport { IToastMessagePrv } from './private';\nimport { TypeToIcon } from './util';\nconst ToastView = lazy(() => import('@monofe/ui-workspace/common/Toast'));\n\nconst SIZE_CONTAINERHEIGHT_VH = 13;\nconst SIZE_SHADOWHEIGHT_VH = 6;\n\nenum ANIMATION_STATES {\n initial = 'initial',\n enter = 'enter',\n exit = 'exit',\n}\n\nconst VARIANTS: Variants = {\n [ANIMATION_STATES.initial]: {\n top: `-${\n SIZE_CONTAINERHEIGHT_VH + SIZE_SHADOWHEIGHT_VH\n }vh` /* make sure the initial position also hides the shadow too */,\n },\n [ANIMATION_STATES.enter]: {\n top: '-1vh',\n },\n [ANIMATION_STATES.exit]: {\n top: `-${SIZE_CONTAINERHEIGHT_VH + SIZE_SHADOWHEIGHT_VH}vh`,\n },\n};\n\nconst STYLE_CONTAINER: CSSProperties = {\n zIndex: 10000,\n position: 'relative',\n top: `-${SIZE_CONTAINERHEIGHT_VH + SIZE_SHADOWHEIGHT_VH}vh`,\n width: '100vw',\n height: `${SIZE_CONTAINERHEIGHT_VH}vh`,\n};\n\nconst STYLE_VIEW: CSSProperties = {\n position: 'relative',\n width: '100%',\n height: '100%',\n};\n\nfunction ToastMessage(props: IToastMessagePrv): JSX.Element {\n return (\n \n \n \n \n \n \n \n );\n}\n\nexport default ToastMessage;\n","import { IToastIcon } from '@monofe/ui-workspace/common/Toast';\n\nexport type ToastType = 'success' | 'error' | 'warn' | 'info';\n\nconst MAP_TOAST_TYPE_ICON: Record = {\n error: IToastIcon.Error,\n warn: IToastIcon.Warning,\n info: IToastIcon.Information,\n success: IToastIcon.Success,\n};\n\nexport const TypeToIcon = (type: ToastType | undefined): IToastIcon =>\n MAP_TOAST_TYPE_ICON[type ?? 'error'];\n","import { CSSProperties, Fragment } from 'react';\nimport Message from './Message';\nimport { useToastMessages } from './hooks';\n\nconst ToastRootStyle: CSSProperties = {\n width: '100%',\n height: '100%',\n position: 'fixed',\n zIndex: 10,\n pointerEvents: 'none',\n};\n\nfunction ToastRender(): JSX.Element {\n const messages = useToastMessages();\n return (\n <>\n {messages.length > 0 && (\n
\n {messages.map(item => (\n \n ))}\n
\n )}\n \n );\n}\n\nfunction ToastView(props?: { children?: React.ReactNode }): JSX.Element {\n return (\n \n \n {props?.children}\n \n );\n}\n\nexport default ToastView;\n","import { useSelector } from 'react-redux';\nimport { STORE_NAME, ToastStorage } from './private';\n\nexport function useToastMessages(): ToastStorage {\n const messages = useSelector(globalState => (globalState as any)[STORE_NAME] ?? []);\n\n if (!messages) {\n throw new Error(`Missing ${STORE_NAME} value`);\n }\n\n return messages;\n}\n","import RootView from './RootView';\nimport type { IToast, IToastMessage } from './interface';\nimport { dispatchAction, getStore } from './store';\nimport actions from './actions';\nimport { nanoid } from '@reduxjs/toolkit';\n\nconst DEFAULT_DURATION = 5000;\n\nexport function isShowing(message: Partial) {\n const store = getStore();\n\n const results = message.id\n ? store.filter(item => (message.id && item.id ? message.id === item.id : true))\n : store.filter(item => item.text === message.text);\n\n return results.length > 0;\n}\n\nfunction toaster(): IToast {\n return {\n renderer: RootView,\n show: (message: IToastMessage, duration?: number) => {\n const actionMessage = {\n ...message,\n id: message.id ?? nanoid(),\n };\n dispatchAction(actions.displayMessage(actionMessage));\n\n setTimeout(\n () => dispatchAction(actions.hideMessage(actionMessage)),\n duration ?? DEFAULT_DURATION,\n );\n },\n hide: (message: Partial) => dispatchAction(actions.hideMessage(message)),\n message: (id: string) => getStore().filter(item => item.id === id)[0],\n isShowing,\n };\n}\n\nexport default toaster;\n","import { IContainer } from '../../interface/container';\nimport { bindToast } from './interface';\nimport { setupStore } from './store';\nimport toaster from './main';\n\nfunction binder(container: IContainer) {\n setupStore();\n bindToast(toaster(), container);\n}\n\nexport default binder;\n","import { IAlertMessage } from './interface';\n\nexport const STORE_NAME = 'AlertStore';\n\nexport type AlertStorage = Array;\n\nexport const MESSAGE_DEFAULTS: Omit, 'id'> = {\n title: '',\n show: false,\n textAccept: 'OK',\n textDecline: 'Cancel',\n onAccept: () => {\n /* noop */\n },\n onDecline: () => {\n /* noop */\n },\n options: { removeOnHide: true },\n};\n","import { nanoid } from '@reduxjs/toolkit';\nimport { IAlertMessage } from './interface';\nimport { MESSAGE_DEFAULTS } from './private';\n\nexport function constructMessage(\n message: Partial,\n defaults?: Partial,\n): IAlertMessage {\n const newItem: Required = {\n id: message.id ?? defaults?.id ?? nanoid(),\n show: message.show ?? defaults?.show ?? MESSAGE_DEFAULTS.show,\n title: message.title ?? defaults?.title ?? MESSAGE_DEFAULTS.title,\n textAccept: message.textAccept ?? defaults?.textAccept ?? MESSAGE_DEFAULTS.textAccept,\n textDecline: message.textDecline ?? defaults?.textDecline ?? MESSAGE_DEFAULTS.textDecline,\n onAccept: message.onAccept ?? defaults?.onAccept ?? MESSAGE_DEFAULTS.onAccept,\n onDecline: message.onDecline ?? defaults?.onDecline ?? MESSAGE_DEFAULTS.onDecline,\n options: message.options ?? defaults?.options ?? MESSAGE_DEFAULTS.options,\n };\n\n return newItem;\n}\n","import { PayloadAction } from '@reduxjs/toolkit';\nimport { IAlertMessage } from './interface';\nimport { AlertStorage } from './private';\nimport { constructMessage } from './util';\n\nconst reset = (state: AlertStorage, action: PayloadAction) => [];\n\nconst _indexesInStore = (state: AlertStorage, search: Partial): Array => {\n const matchingIndexes = state\n .map((item, index) => (item.id === search.id ? index : -1))\n .filter(index => index >= 0);\n return matchingIndexes;\n};\n\nconst _updateStore = (state: AlertStorage, newData: Partial): AlertStorage => {\n let stateReturn = [...state];\n\n const matchingIndexes = _indexesInStore(state, newData);\n\n if (matchingIndexes.length > 0) {\n stateReturn = stateReturn.map((item, index) =>\n matchingIndexes.includes(index) ? { ...stateReturn[index], ...newData } : item,\n );\n } else {\n stateReturn.push(constructMessage(newData));\n }\n\n return stateReturn;\n};\n\nconst showPopUp = (state: AlertStorage, action: PayloadAction>) => {\n return _updateStore(state, {\n ...action.payload,\n show: true,\n });\n};\n\nconst hidePopUp = (state: AlertStorage, action: PayloadAction>) => {\n return _updateStore(state, {\n ...action.payload,\n show: false,\n });\n};\n\nconst removePopUp = (state: AlertStorage, action: PayloadAction>) => {\n return _updateStore(state, {\n ...action.payload,\n show: false,\n });\n};\n\nconst updatePopUp = (state: AlertStorage, action: PayloadAction>) => {\n return _updateStore(state, action.payload);\n};\n\nconst module = {\n reset,\n showPopUp,\n hidePopUp,\n removePopUp,\n updatePopUp,\n};\n\nexport type NamedTypes = keyof typeof module;\n\nexport default module;\n","import { createSlice } from '@reduxjs/toolkit';\nimport reducers from './reducers';\nimport { STORE_NAME, AlertStorage } from './private';\n\nconst initialState: AlertStorage = [];\n\nexport const slice = createSlice({\n name: STORE_NAME,\n initialState,\n reducers,\n});\n\nexport default slice.actions;\n","import { AnyAction } from '@reduxjs/toolkit';\nimport { injectStoresData, injectStoresReducer } from '../../state';\nimport { slice } from './actions';\nimport { STORE_NAME, AlertStorage } from './private';\n\nexport function getStore(): AlertStorage {\n const globalStore = injectStoresData().store.getState();\n const data: AlertStorage | undefined = (globalStore as any)[STORE_NAME];\n return data ?? [];\n}\n\nexport function setupStore() {\n const reducerRegister = injectStoresReducer();\n reducerRegister.addSlice(slice);\n}\n\nexport function dispatchAction(action: AnyAction) {\n const store = injectStoresData();\n store.dispatch(action);\n}\n","import { useSelector } from 'react-redux';\nimport { IAlertMessage } from './interface';\nimport { AlertStorage, STORE_NAME } from './private';\n\nexport function useAlertMessages(): AlertStorage {\n const messages = useSelector(globalState => (globalState as any)[STORE_NAME] ?? []);\n\n if (!messages) {\n throw new Error(`Missing ${STORE_NAME} value`);\n }\n\n return messages;\n}\n\nexport function useAlertMessage(id: string): IAlertMessage | undefined {\n const messages = useAlertMessages();\n return messages.filter(item => item.id === id)[0];\n}\n","import { Fragment, Suspense, lazy } from 'react';\nimport actions from './actions';\nimport { useAlertMessages } from './hooks';\nimport { IAlertMessage } from './interface';\nimport { MESSAGE_DEFAULTS } from './private';\nimport { dispatchAction } from './store';\nconst PopUpView = lazy(() => import('@monofe/ui-common/alert/PopUpView'));\n\nfunction AlertRender(): JSX.Element {\n const messages = useAlertMessages();\n\n const onAccept = (item: IAlertMessage) => {\n return () => {\n const shouldDelete = item.options?.removeOnHide ?? true;\n dispatchAction(shouldDelete ? actions.removePopUp(item) : actions.hidePopUp(item));\n item.onAccept?.();\n };\n };\n\n const onDecline = (item: IAlertMessage) => {\n return () => {\n const shouldDelete = item.options?.removeOnHide ?? true;\n dispatchAction(shouldDelete ? actions.removePopUp(item) : actions.hidePopUp(item));\n item.onDecline?.();\n };\n };\n\n return (\n \n {messages\n .filter(item => item.show ?? false)\n .map(item => (\n \n ))}\n \n );\n}\n\nfunction AlertView(props?: { children?: React.ReactNode }): JSX.Element {\n return (\n \n \n {props?.children}\n \n );\n}\n\nexport default AlertView;\n","import { nanoid } from '@reduxjs/toolkit';\nimport RootView from './RootView';\nimport type { IAlertMessage, IUserAlert } from './interface';\nimport { dispatchAction, getStore } from './store';\nimport actions from './actions';\nimport { constructMessage } from './util';\n\nfunction alerter(): IUserAlert {\n const alert: IUserAlert = {\n renderer: RootView,\n show: function (this: IUserAlert, message: Partial) {\n const alertHider = this.hide;\n function _defaultAction(this: IAlertMessage) {\n alertHider(this);\n }\n\n const newItem = constructMessage(message, {\n onAccept: _defaultAction,\n onDecline: _defaultAction,\n });\n\n dispatchAction(actions.showPopUp(newItem));\n },\n hide: (message: Partial) => {\n dispatchAction(actions.hidePopUp(message));\n },\n isShowing: (message: Partial) => {\n const store = getStore();\n\n const results = store\n .filter(item => item.id === message.id)\n .filter(item => item.show ?? true);\n\n return results.length > 0;\n },\n alert: (id: string) => getStore().filter(item => item.id === id)[0],\n update: (message: Partial & Required<{ id: string }>) =>\n dispatchAction(actions.updatePopUp(message)),\n };\n\n return alert;\n}\n\nexport default alerter;\n","import { IContainer } from '../../interface/container';\nimport { bindUserAlert } from './interface';\nimport { setupStore } from './store';\nimport alert from './main';\n\nfunction binder(container: IContainer) {\n setupStore();\n bindUserAlert(alert(), container);\n}\n\nexport default binder;\n","import { IContainer } from '../interface/container';\nimport binderToast from './toast/binder';\nimport binderUserAlert from './useralert/binder';\n\nasync function binder(container: IContainer): Promise {\n binderToast(container);\n binderUserAlert(container);\n}\n\nexport default binder;\n","import type { ComponentType } from 'react';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { History } from 'history';\nimport { IContainer, injectContainer } from './container';\n\nexport interface IRouteComponentProps {\n history: any;\n location: any;\n match: any;\n}\n\nexport interface IRouteActionResult {\n didLaunchAction: boolean;\n alternativeRouteRequested?: IRouteName;\n alternativeRoutePayload?: any;\n}\n\nexport interface IRoute {\n paths: string[];\n push: (history: History, props: T) => Promise;\n replace: (history: History, props: T) => Promise;\n component: ComponentType>;\n}\n\nexport interface IRouteComponentProps {\n history: any;\n location: any;\n match: any;\n}\n\nexport enum IRouteName {\n Launch = 'Launch',\n LanguageSelect = 'LanguageSelect',\n TourSelect = 'TourSelect',\n Tour = 'Tour',\n SiteObject = 'SiteObject',\n FloorPlan = 'FloorPlan',\n}\n\nexport interface IRouter {\n push: (name: IRouteName, history: any, args: any, options?: { replace?: boolean }) => void;\n popTo: (name: IRouteName, history: any, args: any) => boolean;\n pop: (history: any, args: any) => boolean;\n popCount: (num: number, history: any, args: any) => boolean;\n allRoutes: () => Array>;\n}\n\nconst TYPES = {\n IRouter: Symbol.for('IRouter'),\n};\n\nexport function injectRouter(container: IContainer = injectContainer()): IRouter {\n return container.get(TYPES.IRouter);\n}\n\nexport function bindRouter(router: IRouter, container: IContainer = injectContainer()) {\n container.bind(TYPES.IRouter, router);\n}\n","import { ISession, IUserProperties } from '@monofe/apiservice';\n\nconst updateLanguageId = (session: ISession | null, languageId: number): void => {\n session?.state.setProperty(IUserProperties.LanguageId, languageId);\n};\n\nconst languageId = (session: ISession | null | undefined): number | null => {\n return session?.state.getProperty(IUserProperties.LanguageId) ?? null;\n};\n\nconst updateTourId = (session: ISession | null | undefined, tourId: number): void => {\n session?.state.setProperty(IUserProperties.TourId, tourId);\n};\n\nconst tourId = (session: ISession | null | undefined): number | null => {\n return session?.state.getProperty(IUserProperties.TourId) ?? null;\n};\n\nconst module = {\n languageId,\n updateLanguageId,\n tourId,\n updateTourId,\n};\n\nexport default module;\n","import { IConfigAPI } from '../../interface/config';\n\nconst usernameFromConfig = (configs: Array>): string | undefined =>\n configs.map(config => config?.auth?.username).filter(username => username)[0];\n\nconst module = {\n usernameFromConfig,\n};\n\nexport default module;\n","import { default as session } from './session';\nimport { default as config } from './config';\n\nconst module = {\n session,\n config,\n};\n\nexport default module;\n","import { RouteComponentProps } from 'react-router-dom';\nimport type { ISession } from '@monofe/apiservice';\nimport type { IRouteLaunchArguments } from '../../controllers/launch/interface';\nimport type { IQueryURL } from '../../interface/util';\nimport type { IConfigAPI } from '../../interface/config';\nimport type { IRouteLaunch } from './interface';\nimport util from '../util';\n\nexport function mapRouteToProps(\n props: RouteComponentProps<{}>,\n query: IQueryURL,\n session: ISession | null,\n configs: Array>,\n): IRouteLaunchArguments {\n const args: Partial = query.parse(props.location.search) ?? {};\n\n const authUsername = util.config.usernameFromConfig(configs);\n\n const route: IRouteLaunchArguments = {\n db: args?.db || authUsername || 'unknown',\n sessionName: session?.name || authUsername || 'unknown',\n };\n\n return route;\n}\n\nexport function equals(args1: IRouteLaunchArguments, args2: IRouteLaunchArguments): boolean {\n if (args1.db === args2.db) {\n return true;\n }\n if (args1.sessionName === args2.sessionName) {\n return true;\n }\n return false;\n}\n","import React, { useState, useEffect, useCallback, memo } from 'react';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { IRouteName, injectRouter } from '../../interface/route';\nimport Controller from '../../controllers/launch';\nimport { mapRouteToProps } from './arguments';\nimport { injectQueryURL } from '../../interface/util';\nimport { IRouteLaunchArguments } from '../../controllers/launch/interface';\nimport { injectConfigAPI } from '../../interface/config';\nimport { injectAPISession, sessionHook } from '@monofe/apiservice';\n\nfunction LaunchRoute(props: RouteComponentProps<{}>): JSX.Element {\n const query = injectQueryURL();\n const router = injectRouter();\n const configAPI = injectConfigAPI();\n const session = sessionHook.useActiveSession();\n\n const [route, setRoute] = useState(\n mapRouteToProps(props, query, session, configAPI),\n );\n\n const didRequestLanguageSelect = useCallback(() => {\n router.push(IRouteName.LanguageSelect, props.history, route, { replace: true });\n }, [props, router, route]);\n\n useEffect(() => {\n setRoute(mapRouteToProps(props, query, session, configAPI));\n }, [props, session, configAPI, query]);\n\n return (\n \n );\n}\n\nconst propsEqual = (prev: RouteComponentProps<{}>, next: RouteComponentProps<{}>) => {\n return (\n prev.location.search === next.location.search &&\n prev.location.pathname === next.location.pathname\n );\n};\n\nexport default memo(LaunchRoute, propsEqual);\n","import type { History } from 'history';\nimport { IRouteConfigSettings } from '../../interface/config';\nimport { IRouteLaunch } from './interface';\nimport { IQueryURL } from '../../interface/util';\nimport { IRouteActionResult, IRouteName } from '../../interface/route';\nimport type IController from '../../controllers/launch';\n\nconst loadController = (): Promise => {\n return new Promise(function (resolve, reject) {\n import('../../controllers/launch')\n .then(controller => resolve(controller.default))\n .catch(error => reject(error));\n });\n};\n\nfunction push(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteLaunch,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const controller = await loadController();\n const render = await controller.canRender(props);\n\n let result: IRouteActionResult = {\n didLaunchAction: false,\n };\n\n if (render.hasEnoughDataToRender) {\n history.push(settings.pathPrefix + query.assemble(props));\n result.didLaunchAction = true;\n } else {\n result.alternativeRoutePayload = {\n ...props,\n };\n\n result.alternativeRouteRequested = (render.suggestedAlternativeRoute ||\n 'LanguageSelect') as IRouteName;\n }\n\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction replace(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteLaunch,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const controller = await loadController();\n const render = await controller.canRender(props);\n\n let result: IRouteActionResult = {\n didLaunchAction: false,\n };\n\n if (render.hasEnoughDataToRender) {\n history.push(settings.pathPrefix + query.assemble(props));\n result.didLaunchAction = true;\n } else {\n result.alternativeRoutePayload = {\n ...props,\n id: render.additionalRouteDataNeeded.tour.id,\n };\n\n result.alternativeRouteRequested = (render.suggestedAlternativeRoute ||\n 'LanguageSelect') as IRouteName;\n }\n\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n push,\n replace,\n};\n\nexport default module;\n","import { IRouteConfigSettings } from '../../interface/config';\nimport { IRoute } from '../../interface/route';\nimport component from './component';\nimport { IRouteLaunch } from './interface';\nimport { IQueryURL } from '../../interface/util';\nimport coordinator from './coordinator';\n\nfunction route(settings: IRouteConfigSettings, query: IQueryURL): IRoute {\n const route: IRoute = {\n paths: [settings.pathPrefix, ...settings.pathMatch.splice(1)],\n push: (history, props) => coordinator.push(settings, query, history, props),\n replace: (history, props) => coordinator.replace(settings, query, history, props),\n component: component,\n };\n\n return route;\n}\n\nexport default route;\n","import { RouteComponentProps } from 'react-router-dom';\nimport type { ISession } from '@monofe/apiservice';\nimport type { IRouteLanguageSelectArguments } from '../../controllers/languageselect/interface';\nimport type { IQueryURL } from '../../interface/util';\nimport type { IConfigAPI } from '../../interface/config';\nimport type { IRouteLanguageSelect } from './interface';\nimport util from '../util';\n\nexport function mapRouteToProps(\n props: RouteComponentProps<{}>,\n query: IQueryURL,\n session: ISession | null,\n configs: Array>,\n): IRouteLanguageSelectArguments {\n const args: Partial = query.parse(props.location.search) ?? {};\n\n const authUsername = util.config.usernameFromConfig(configs);\n\n const route: IRouteLanguageSelectArguments = {\n db: args?.db || authUsername || 'unknown',\n sessionName: session?.name || authUsername || 'unknown',\n };\n\n return route;\n}\n\nexport function equals(\n args1: IRouteLanguageSelectArguments,\n args2: IRouteLanguageSelectArguments,\n): boolean {\n if (args1.db === args2.db) {\n return true;\n }\n if (args1.sessionName === args2.sessionName) {\n return true;\n }\n return false;\n}\n","import React, { useState, useEffect, useCallback, memo } from 'react';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { IRouteName, injectRouter } from '../../interface/route';\nimport Controller from '../../controllers/languageselect';\nimport { mapRouteToProps, equals as ArgsEquals } from './arguments';\nimport type { IRouteLanguageSelectArguments } from '../../controllers/languageselect/interface';\nimport { injectQueryURL } from '../../interface/util';\nimport { injectConfigAPI } from '../../interface/config';\nimport util from '../util';\nimport { sessionHook } from '@monofe/apiservice';\n\nfunction LanguageSelectRoute(props: RouteComponentProps<{}>): JSX.Element {\n const query = injectQueryURL();\n const router = injectRouter();\n const configAPI = injectConfigAPI();\n const session = sessionHook.useActiveSession();\n\n const [route, setRoute] = useState(\n mapRouteToProps(props, query, session, configAPI),\n );\n\n const didRequestTourSelect = useCallback(\n async (id: number) => {\n util.session.updateLanguageId(session, id);\n\n router.push(IRouteName.TourSelect, props.history, {\n ...route,\n languageId: id,\n });\n },\n [route, props, router],\n );\n\n const didRequestBack = useCallback(() => {\n util.session.updateLanguageId(session, -1);\n\n if (!router.pop(props.history, route)) {\n /* if we fail to go back, reset the app & go to Launch route */\n router.push(IRouteName.Launch, props.history, route, { replace: true });\n }\n }, [route, props, router]);\n\n useEffect(() => {\n const newRoute = mapRouteToProps(props, query, session, configAPI);\n if (ArgsEquals(newRoute, route)) {\n return;\n }\n setRoute(newRoute);\n }, [props]);\n\n useEffect(() => {\n util.session.updateLanguageId(session, -1);\n util.session.updateTourId(session, -1);\n }, [route]);\n\n /* no active session, /launch has not been triggered, force page reload & session initialization */\n if (!session) {\n props.history.replace('/');\n }\n\n return (\n \n );\n}\n\nconst propsEqual = (prev: RouteComponentProps<{}>, next: RouteComponentProps<{}>) => {\n return (\n prev.location.search === next.location.search &&\n prev.location.pathname === next.location.pathname\n );\n};\n\nexport default memo(LanguageSelectRoute, propsEqual);\n","import { injectAPISession } from '@monofe/apiservice';\nimport { IRouteActionResult, IRouteName } from '../../interface/route';\nimport { IRouteLanguageSelect } from './interface';\nimport type IController from '../../controllers/languageselect';\n\nconst loadController = (): Promise => {\n return new Promise(function (resolve, reject) {\n import('../../controllers/languageselect')\n .then(coordinator => resolve(coordinator.default))\n .catch(error => reject(error));\n });\n};\n\nfunction isRoutable(props: IRouteLanguageSelect): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const controller = await loadController();\n const renderResult = await controller.canRender(props);\n\n let result: IRouteActionResult = {\n didLaunchAction: false,\n };\n\n if (!injectAPISession().active()) {\n result.alternativeRouteRequested = IRouteName.Launch;\n } else if (renderResult.hasEnoughDataToRender) {\n result.didLaunchAction = true;\n } else {\n result.alternativeRoutePayload = {\n ...props,\n ...renderResult.additionalRouteDataNeeded,\n };\n\n result.alternativeRouteRequested = (renderResult.suggestedAlternativeRoute ||\n 'TourSelect') as IRouteName;\n }\n\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n isRoutable,\n};\n\nexport default module;\n","import type { History } from 'history';\nimport { IRouteConfigSettings } from '../../interface/config';\nimport { IRouteLanguageSelect } from './interface';\nimport { IQueryURL } from '../../interface/util';\nimport { IRouteActionResult } from '../../interface/route';\nimport util from './util';\n\nfunction push(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteLanguageSelect,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const isRoutable = await util.isRoutable(props);\n\n if (isRoutable.didLaunchAction) {\n history.push(settings.pathPrefix + query.assemble(props));\n }\n\n resolve(isRoutable);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction replace(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteLanguageSelect,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const isRoutable = await util.isRoutable(props);\n\n if (isRoutable.didLaunchAction) {\n history.push(settings.pathPrefix + query.assemble(props));\n }\n\n resolve(isRoutable);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n push,\n replace,\n};\n\nexport default module;\n","import { IRouteConfigSettings } from '../../interface/config';\nimport { IRoute } from '../../interface/route';\nimport { IQueryURL } from '../../interface/util';\nimport component from './component';\nimport { IRouteLanguageSelect } from './interface';\nimport coordinator from './coordinator';\n\nfunction route(settings: IRouteConfigSettings, query: IQueryURL): IRoute {\n const route: IRoute = {\n paths: [settings.pathPrefix, ...settings.pathMatch.splice(1)],\n push: (history, props) => coordinator.push(settings, query, history, props),\n replace: (history, props) => coordinator.replace(settings, query, history, props),\n component: component,\n };\n\n return route;\n}\n\nexport default route;\n","import { RouteComponentProps } from 'react-router-dom';\nimport type { ISession } from '@monofe/apiservice';\nimport type { IRouteTourSelectArguments } from '../../controllers/tourselect/interface';\nimport type { IQueryURL } from '../../interface/util';\nimport type { IConfigAPI } from '../../interface/config';\nimport type { IRouteTourSelect } from './interface';\nimport util from '../util';\n\nexport function mapRouteToProps(\n props: RouteComponentProps<{}>,\n query: IQueryURL,\n session: ISession | null,\n configs: Array>,\n): IRouteTourSelectArguments {\n const args: Partial = query.parse(props.location.search) ?? {};\n\n const authUsername = util.config.usernameFromConfig(configs);\n\n const route: IRouteTourSelectArguments = {\n db: args?.db || authUsername || 'unknown',\n sessionName: session?.name || authUsername || 'unknown',\n languageId:\n parseInt((args?.languageId ?? 0).toString()) || util.session.languageId(session) || -1,\n };\n\n return route;\n}\n\nexport function equals(\n args1: IRouteTourSelectArguments,\n args2: IRouteTourSelectArguments,\n): boolean {\n if (args1.db === args2.db) {\n return true;\n }\n if (args1.sessionName === args2.sessionName) {\n return true;\n }\n if (args1.languageId === args2.languageId) {\n return true;\n }\n return false;\n}\n","import React, { useState, useEffect, useCallback, memo } from 'react';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { IRouteName, injectRouter } from '../../interface/route';\nimport Controller from '../../controllers/tourselect';\nimport { mapRouteToProps, equals as ArgsEquals } from './arguments';\nimport { IRouteTourSelectArguments } from '../../controllers/tourselect/interface';\nimport { injectQueryURL } from '../../interface/util';\nimport { injectConfigAPI } from '../../interface/config';\nimport util from '../util';\nimport { injectAPISession, sessionHook } from '@monofe/apiservice';\n\nfunction TourSelectRoute(props: RouteComponentProps<{}>): JSX.Element {\n const query = injectQueryURL();\n const configAPI = injectConfigAPI();\n const router = injectRouter();\n const session = sessionHook.useActiveSession();\n\n const [route, setRoute] = useState(\n mapRouteToProps(props, query, session, configAPI),\n );\n\n const didRequestTour = useCallback(\n (id: number) => {\n router.push(IRouteName.Tour, props.history, {\n ...route,\n tourId: id,\n });\n },\n [route, props, router],\n );\n\n const didRequestBack = useCallback(() => {\n util.session.updateTourId(session, -1);\n\n if (!router.pop(props.history, route)) {\n /* if we fail to go back, reset the app & go to Launch route */\n router.push(IRouteName.Launch, props.history, route, { replace: true });\n }\n }, [route, props, router]);\n\n useEffect(() => {\n const newRoute = mapRouteToProps(props, query, session, configAPI);\n if (ArgsEquals(newRoute, route)) {\n return;\n }\n setRoute(newRoute);\n }, [props]);\n\n useEffect(() => {\n util.session.updateLanguageId(session, route.languageId);\n util.session.updateTourId(session, -1);\n }, [route]);\n\n /* no active session, /launch has not been triggered, force page reload & session initialization */\n if (!session) {\n props.history.replace('/');\n }\n\n return (\n \n );\n}\n\nconst propsEqual = (prev: RouteComponentProps<{}>, next: RouteComponentProps<{}>) => {\n return (\n prev.location.search === next.location.search &&\n prev.location.pathname === next.location.pathname\n );\n};\n\nexport default memo(TourSelectRoute, propsEqual);\n","import { injectAPISession } from '@monofe/apiservice';\nimport { IRouteActionResult, IRouteName } from '../../interface/route';\nimport { IRouteTourSelect } from './interface';\nimport type IController from '../../controllers/tourselect';\n\nconst loadController = (): Promise => {\n return new Promise(function (resolve, reject) {\n import('../../controllers/tourselect')\n .then(coordinator => resolve(coordinator.default))\n .catch(error => reject(error));\n });\n};\n\nfunction isRoutable(props: IRouteTourSelect): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const controller = await loadController();\n const renderResult = await controller.canRender(props);\n\n let result: IRouteActionResult = {\n didLaunchAction: false,\n };\n\n if (!injectAPISession().active()) {\n result.alternativeRouteRequested = IRouteName.Launch;\n } else if (renderResult.hasEnoughDataToRender) {\n result.didLaunchAction = true;\n } else {\n result.alternativeRoutePayload = {\n ...props,\n ...renderResult.additionalRouteDataNeeded,\n };\n\n result.alternativeRouteRequested = (renderResult.suggestedAlternativeRoute ||\n 'Tour') as IRouteName;\n }\n\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n isRoutable,\n};\n\nexport default module;\n","import type { History } from 'history';\nimport type { IRouteConfigSettings } from '../../interface/config';\nimport type { IRouteTourSelect } from './interface';\nimport type { IQueryURL } from '../../interface/util';\nimport { IRouteActionResult } from '../../interface/route';\nimport util from './util';\n\nfunction push(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteTourSelect,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const isRoutable = await util.isRoutable(props);\n\n if (isRoutable.didLaunchAction) {\n history.push(settings.pathPrefix + query.assemble(props));\n }\n\n resolve(isRoutable);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction replace(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteTourSelect,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const isRoutable = await util.isRoutable(props);\n\n if (isRoutable.didLaunchAction) {\n history.replace(settings.pathPrefix + query.assemble(props));\n }\n\n resolve(isRoutable);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n push,\n replace,\n};\n\nexport default module;\n","import { IRouteConfigSettings } from '../../interface/config';\nimport { IRoute } from '../../interface/route';\nimport { IQueryURL } from '../../interface/util';\nimport component from './component';\nimport { IRouteTourSelect } from './interface';\nimport coordinator from './coordinator';\n\nfunction route(settings: IRouteConfigSettings, query: IQueryURL): IRoute {\n const route: IRoute = {\n paths: [settings.pathPrefix, ...settings.pathMatch.splice(1)],\n push: (history, props) => coordinator.push(settings, query, history, props),\n replace: (history, props) => coordinator.replace(settings, query, history, props),\n component: component,\n };\n\n return route;\n}\n\nexport default route;\n","import { RouteComponentProps } from 'react-router-dom';\nimport type { ISession } from '@monofe/apiservice';\nimport type { IRouteTourArguments } from '../../controllers/tour/interface';\nimport type { IQueryURL } from '../../interface/util';\nimport type { IConfigAPI } from '../../interface/config';\nimport type { IRouteTour } from './interface';\nimport util from '../util';\n\nexport function mapRouteToProps(\n props: RouteComponentProps<{}>,\n query: IQueryURL,\n session: ISession | null,\n configs: Array>,\n): IRouteTourArguments {\n const args: Partial = query.parse(props.location.search) ?? {};\n\n const authUsername = util.config.usernameFromConfig(configs);\n\n const route: IRouteTourArguments = {\n db: args?.db || authUsername || 'unknown',\n sessionName: session?.name || authUsername || 'unknown',\n languageId:\n parseInt((args?.languageId ?? 0).toString()) || util.session.languageId(session) || -1,\n tourId: parseInt((args?.tourId ?? 0).toString()) || util.session.tourId(session) || -1,\n };\n\n return route;\n}\n\nexport function equals(args1: IRouteTourArguments, args2: IRouteTourArguments): boolean {\n if (args1.db === args2.db) {\n return true;\n }\n if (args1.languageId === args2.languageId) {\n return true;\n }\n if (args1.tourId === args2.tourId) {\n return true;\n }\n if (args1.sessionName === args2.sessionName) {\n return true;\n }\n return false;\n}\n","import React, { Fragment, Suspense, useState, useEffect, lazy, memo, useCallback } from 'react';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { IRouteName, injectRouter } from '../../interface/route';\nimport Controller from '../../controllers/tour';\nimport { mapRouteToProps, equals as ArgsEquals } from './arguments';\nimport { IRouteTourArguments } from '../../controllers/tour/interface';\nimport SiteObjectController from '../../controllers/siteobject';\nimport { injectLog, injectQueryURL } from '../../interface/util';\nimport { DataCheckResult } from '../../controllers/interface';\nimport { injectConfigAPI } from '../../interface/config';\nimport { injectAPISession, sessionHook } from '@monofe/apiservice';\nimport util from '../util';\nimport { injectToast } from '../../controllers/toast/interface';\n\nconst DISPLAY_TOAST_DURATION = 6000;\n\nfunction TourRoute(props: RouteComponentProps<{}>): JSX.Element {\n const query = injectQueryURL();\n const router = injectRouter();\n const configAPI = injectConfigAPI();\n const log = injectLog();\n const session = sessionHook.useActiveSession();\n\n const showToast = useCallback((text: string, type: 'success' | 'error') => {\n const toaster = injectToast();\n toaster.show({\n text,\n type,\n });\n }, []);\n\n const [route, setRoute] = useState(\n mapRouteToProps(props, query, session, configAPI),\n );\n\n const didRequestSiteObject = function (id: number) {\n const newRoute = {\n ...route,\n siteObjectId: id,\n };\n\n Promise.all([\n SiteObjectController.canLoad(newRoute),\n SiteObjectController.canRender(newRoute),\n ])\n .then(function ([canLoad, canRender]) {\n const canPush =\n navigator.onLine || canLoad === DataCheckResult.DataAvailableOffline;\n\n if (canPush && canRender) {\n router.push(IRouteName.SiteObject, props.history, newRoute);\n } else {\n showToast(\n !canPush\n ? 'Unable to launch without internet connection'\n : '`Unable to display content',\n 'error',\n );\n }\n })\n .catch(error => log.error(error.toString()));\n };\n\n const didRequestFloorPlan = function (id: number) {\n router.push(IRouteName.FloorPlan, props.history, {\n ...route,\n floorplanId: id,\n });\n };\n\n const didRequestLanguageSelect = function () {\n /* try to go back in our history to LanguageSelect, if we can't find it, fallback to PUSH */\n if (!router.popTo(IRouteName.LanguageSelect, props.history, route)) {\n router.push(IRouteName.LanguageSelect, props.history, route);\n }\n };\n\n const didRequestTourSelect = function () {\n /* try to go back in our history to LanguageSelect, if we can't find it, fallback to PUSH */\n if (!router.popTo(IRouteName.TourSelect, props.history, route)) {\n router.push(IRouteName.TourSelect, props.history, route);\n }\n };\n\n const didRequestBack = function () {\n if (!router.pop(props.history, route)) {\n /* if we fail to go back, reset the app & go to Launch route */\n router.push(IRouteName.Launch, props.history, route, { replace: true });\n }\n };\n\n useEffect(() => {\n const newRoute = mapRouteToProps(props, query, session, configAPI);\n if (ArgsEquals(newRoute, route)) {\n return;\n }\n setRoute(newRoute);\n }, [props]);\n\n useEffect(() => {\n util.session.updateLanguageId(session, route.languageId);\n util.session.updateTourId(session, route.tourId);\n }, [route]);\n\n /* no active session, /launch has not been triggered, force page reload & session initialization */\n if (!session) {\n props.history.replace('/');\n }\n\n return (\n \n \n \n );\n}\n\nconst propsEqual = (prev: RouteComponentProps<{}>, next: RouteComponentProps<{}>) => {\n return (\n prev.location.search === next.location.search &&\n prev.location.pathname === next.location.pathname\n );\n};\n\nexport default memo(TourRoute, propsEqual);\n","import { injectAPISession } from '@monofe/apiservice';\nimport { IRouteActionResult, IRouteName } from '../../interface/route';\nimport { IRouteTour } from './interface';\nimport type IController from '../../controllers/tour';\n\nconst loadController = (): Promise => {\n return new Promise(function (resolve, reject) {\n import('../../controllers/tour')\n .then(coordinator => resolve(coordinator.default))\n .catch(error => reject(error));\n });\n};\n\nfunction isRoutable(props: IRouteTour): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const controller = await loadController();\n const renderResult = await controller.canRender(props);\n\n let result: IRouteActionResult = {\n didLaunchAction: false,\n };\n\n if (!injectAPISession().active()) {\n result.alternativeRouteRequested = IRouteName.Launch;\n } else if (renderResult.hasEnoughDataToRender) {\n result.didLaunchAction = true;\n } else {\n result.alternativeRoutePayload = {\n ...props,\n ...renderResult.additionalRouteDataNeeded,\n };\n\n result.alternativeRouteRequested = (renderResult.suggestedAlternativeRoute ||\n 'TourSelect') as IRouteName;\n }\n\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n isRoutable,\n};\n\nexport default module;\n","import type { History } from 'history';\nimport type { IRouteConfigSettings } from '../../interface/config';\nimport type { IRouteTour } from './interface';\nimport type { IQueryURL } from '../../interface/util';\nimport { IRouteActionResult } from '../../interface/route';\nimport util from './util';\n\nfunction push(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteTour,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const isRoutable = await util.isRoutable(props);\n\n if (isRoutable.didLaunchAction) {\n history.push(settings.pathPrefix + query.assemble(props));\n }\n\n resolve(isRoutable);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction replace(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteTour,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const isRoutable = await util.isRoutable(props);\n\n if (isRoutable.didLaunchAction) {\n history.replace(settings.pathPrefix + query.assemble(props));\n }\n\n resolve(isRoutable);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n push,\n replace,\n};\n\nexport default module;\n","import { IRouteConfigSettings } from '../../interface/config';\nimport { IRoute } from '../../interface/route';\nimport { IQueryURL } from '../../interface/util';\nimport component from './component';\nimport { IRouteTour } from './interface';\nimport coordinator from './coordinator';\n\nfunction route(settings: IRouteConfigSettings, query: IQueryURL): IRoute {\n const route: IRoute = {\n paths: [settings.pathPrefix, ...settings.pathMatch.splice(1)],\n push: (history, props) => coordinator.push(settings, query, history, props),\n replace: (history, props) => coordinator.replace(settings, query, history, props),\n component: component,\n };\n\n return route;\n}\n\nexport default route;\n","import { RouteComponentProps } from 'react-router-dom';\nimport type { IRouteSiteObjectArguments } from '../../controllers/siteobject/interface';\nimport type { IQueryURL } from '../../interface/util';\nimport type { IConfigAPI } from '../../interface/config';\nimport type { IRouteSiteObject } from './interface';\nimport util from '../util';\n\nfunction args(\n props: RouteComponentProps<{}>,\n query: IQueryURL,\n configs: Array>,\n): IRouteSiteObjectArguments {\n const args: Partial = query.parse(props.location.search) ?? {};\n\n const authUsername = util.config.usernameFromConfig(configs);\n\n const route: IRouteSiteObjectArguments = {\n db: args?.db || authUsername || 'unknown',\n sessionName: args?.sessionName || authUsername || 'unknown',\n\n languageId: parseInt((args?.languageId ?? -1).toString()),\n tourId: parseInt((args?.tourId ?? -1).toString()),\n siteObjectId: parseInt((args?.siteObjectId ?? -1).toString()),\n };\n\n return route;\n}\n\nexport function equals(\n args1: IRouteSiteObjectArguments,\n args2: IRouteSiteObjectArguments,\n): boolean {\n if (args1.db === args2.db) {\n return true;\n }\n if (args1.languageId === args2.languageId) {\n return true;\n }\n if (args1.tourId === args2.tourId) {\n return true;\n }\n if (args1.siteObjectId === args2.siteObjectId) {\n return true;\n }\n if (args1.sessionName === args2.sessionName) {\n return true;\n }\n return false;\n}\n\nexport default args;\n","import React, { Fragment, useState, useEffect, memo, useCallback } from 'react';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { IRouteName, injectRouter } from '../../interface/route';\nimport Controller from '../../controllers/siteobject';\nimport args, { equals as ArgsEquals } from './arguments';\nimport type { ISiteObjectControllerProps } from '../../controllers/siteobject/interface';\nimport { injectLog, injectQueryURL } from '../../interface/util';\nimport { DataCheckResult } from '../../controllers/interface';\nimport { injectConfigAPI } from '../../interface/config';\nimport { sessionHook } from '@monofe/apiservice';\nimport util from '../util';\nimport { injectToast } from '../../controllers/toast/interface';\n\nconst DISPLAY_TOAST_DURATION = 6000;\n\nfunction SiteObjectRoute(props: RouteComponentProps<{}>): JSX.Element {\n const query = injectQueryURL();\n const router = injectRouter();\n const configAPI = injectConfigAPI();\n const log = injectLog();\n const session = sessionHook.useActiveSession();\n\n const showToast = useCallback((text: string, type: 'success' | 'error') => {\n const toaster = injectToast();\n toaster.show({\n text,\n type,\n });\n }, []);\n\n const [controller, setController] = useState({\n route: args(props, query, configAPI),\n didRequestSiteObject: function (this: ISiteObjectControllerProps, id: number) {\n const newRoute = {\n ...controller.route,\n siteObjectId: id,\n };\n\n Promise.all([Controller.canLoad(newRoute), Controller.canRender(newRoute)])\n .then(function ([canLoad, canRender]) {\n const canPush =\n navigator.onLine || canLoad === DataCheckResult.DataAvailableOffline;\n\n if (canPush && canRender) {\n router.push(IRouteName.SiteObject, props.history, newRoute);\n } else {\n showToast(\n !canPush\n ? 'Unable to launch without internet connection'\n : '`Unable to display content',\n 'error',\n );\n }\n })\n .catch(error => log.error(error.toString()));\n },\n didRequestBack: function (this: ISiteObjectControllerProps) {\n if (!router.pop(props.history, controller.route)) {\n /* if we fail to go back, reset the app & go to Launch route */\n router.push(IRouteName.Launch, props.history, controller.route, { replace: true });\n }\n },\n });\n\n useEffect(() => {\n const newRoute = args(props, query, configAPI);\n setController(controllerIn => ({ ...controllerIn, route: newRoute }));\n }, [props]);\n\n /* no active session, /launch has not been triggered, force page reload & session initialization */\n if (!session) {\n props.history.replace('/');\n }\n\n return (\n \n \n \n );\n}\n\nconst propsEqual = (prev: RouteComponentProps<{}>, next: RouteComponentProps<{}>) => {\n return (\n prev.location.search === next.location.search &&\n prev.location.pathname === next.location.pathname\n );\n};\n\nexport default memo(SiteObjectRoute, propsEqual);\n","import { History } from 'history';\nimport { IRouteConfigSettings } from '../../interface/config';\nimport { IRouteSiteObject } from './interface';\nimport { IQueryURL } from '../../interface/util';\nimport { IRouteActionResult, IRouteName } from '../../interface/route';\nimport type IController from '../../controllers/siteobject';\n\nconst loadController = (): Promise => {\n return new Promise(function (resolve, reject) {\n import('../../controllers/siteobject')\n .then(controller => resolve(controller.default))\n .catch(error => reject(error));\n });\n};\n\nfunction push(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteSiteObject,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const controller = await loadController();\n const render = await controller.canRender(props);\n\n let result: IRouteActionResult = {\n didLaunchAction: false,\n };\n\n if (render.hasEnoughDataToRender) {\n history.push(settings.pathPrefix + query.assemble(props));\n result.didLaunchAction = true;\n } else {\n result.alternativeRoutePayload = {\n ...props,\n id: render.additionalRouteDataNeeded.tour.id,\n };\n result.alternativeRouteRequested = (render.suggestedAlternativeRoute ||\n 'Tour') as IRouteName;\n }\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction replace(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteSiteObject,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const controller = await loadController();\n const render = await controller.canRender(props);\n\n let result: IRouteActionResult = {\n didLaunchAction: false,\n };\n\n if (render.hasEnoughDataToRender) {\n history.push(settings.pathPrefix + query.assemble(props));\n result.didLaunchAction = true;\n } else {\n result.alternativeRoutePayload = {\n ...props,\n id: render.additionalRouteDataNeeded.tour.id,\n };\n\n result.alternativeRouteRequested = (render.suggestedAlternativeRoute ||\n 'Tour') as IRouteName;\n }\n\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n push,\n replace,\n};\n\nexport default module;\n","import { IRouteConfigSettings } from '../../interface/config';\nimport { IRoute } from '../../interface/route';\nimport { IQueryURL } from '../../interface/util';\nimport component from './component';\nimport { IRouteSiteObject } from './interface';\nimport coordinator from './coordinator';\n\nfunction route(settings: IRouteConfigSettings, query: IQueryURL): IRoute {\n const route: IRoute = {\n paths: [settings.pathPrefix, ...settings.pathMatch.splice(1)],\n push: (history, props) => coordinator.push(settings, query, history, props),\n replace: (history, props) => coordinator.replace(settings, query, history, props),\n component: component,\n };\n\n return route;\n}\n\nexport default route;\n","import { RouteComponentProps } from 'react-router-dom';\nimport type { IQueryURL } from '../../interface/util';\nimport type { IConfigAPI } from '../../interface/config';\nimport type { IRouteFloorplanArguments } from '../../controllers/floorplan/interface';\nimport util from '../util';\n\nfunction _parseToInt(num: number | string | undefined): number | undefined {\n if (typeof num === 'number') {\n return num as number;\n } else if (typeof num === 'string') {\n return parseInt(num as string);\n } else {\n return 0;\n }\n}\n\nfunction args(\n props: RouteComponentProps<{}>,\n query: IQueryURL,\n configs: Array>,\n): IRouteFloorplanArguments {\n const args: Partial = query.parse(props.location.search) ?? {};\n\n const authUsername = util.config.usernameFromConfig(configs);\n\n const route: IRouteFloorplanArguments = {\n db: args?.db || authUsername || 'unknown',\n sessionName: args?.sessionName || authUsername || 'unknown',\n\n languageId: _parseToInt(args?.languageId) ?? -1,\n tourId: _parseToInt(args?.tourId) ?? -1,\n floorplanId: _parseToInt(args?.floorplanId) ?? -1,\n };\n\n return route;\n}\n\nexport function equals(args1: IRouteFloorplanArguments, args2: IRouteFloorplanArguments): boolean {\n if (args1.db === args2.db) {\n return true;\n }\n if (args1.sessionName === args2.sessionName) {\n return true;\n }\n if (args1.languageId === args2.languageId) {\n return true;\n }\n if (args1.tourId === args2.tourId) {\n return true;\n }\n if (args1.floorplanId === args2.floorplanId) {\n return true;\n }\n return false;\n}\n\nexport default args;\n","import React, { useState, memo } from 'react';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { injectRouter, IRouteName } from '../../interface/route';\nimport Controller from '../../controllers/floorplan';\nimport args from './arguments';\nimport { injectQueryURL } from '../../interface/util';\nimport { IFloorplanControllerProps } from '../../controllers/floorplan/interface';\nimport { injectConfigAPI } from '../../interface/config';\n\nfunction FloorplanRoute(props: RouteComponentProps<{}>): JSX.Element {\n const query = injectQueryURL();\n const router = injectRouter();\n const configAPI = injectConfigAPI();\n\n const [state, _] = useState({\n route: args(props, query, configAPI),\n onRequestSiteObject: function (this: IFloorplanControllerProps, id: number) {\n router.push(IRouteName.SiteObject, props.history, {\n ...state.route,\n siteObjectId: id,\n });\n },\n onRequestBack: function (this: IFloorplanControllerProps) {\n props.history.goBack();\n },\n });\n\n return ;\n}\n\nconst propsEqual = (prev: RouteComponentProps<{}>, next: RouteComponentProps<{}>) => {\n return (\n prev.location.search === next.location.search &&\n prev.location.pathname === next.location.pathname\n );\n};\n\nexport default memo(FloorplanRoute, propsEqual);\n","import type { History } from 'history';\nimport type { IRouteConfigSettings } from '../../interface/config';\nimport type { IRouteFloorplan } from './interface';\nimport type { IQueryURL } from '../../interface/util';\nimport type { IRouteActionResult, IRouteName } from '../../interface/route';\nimport type IController from '../../controllers/floorplan';\n\nconst loadController = (): Promise => {\n return new Promise(function (resolve, reject) {\n import('../../controllers/floorplan')\n .then(controller => resolve(controller.default))\n .catch(error => reject(error));\n });\n};\n\nfunction push(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteFloorplan,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const controller = await loadController();\n const render = await controller.canRender(props);\n\n let result: IRouteActionResult = {\n didLaunchAction: false,\n };\n\n if (render.hasEnoughDataToRender) {\n history.push(settings.pathPrefix + query.assemble(props));\n result.didLaunchAction = true;\n } else {\n result.alternativeRoutePayload = {\n ...props,\n id: render.additionalRouteDataNeeded.tour.id,\n };\n\n result.alternativeRouteRequested = (render.suggestedAlternativeRoute ||\n 'TourSelect') as IRouteName;\n }\n\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nfunction replace(\n settings: IRouteConfigSettings,\n query: IQueryURL,\n history: History,\n props: IRouteFloorplan,\n): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const controller = await loadController();\n const render = await controller.canRender(props);\n\n let result: IRouteActionResult = {\n didLaunchAction: false,\n };\n\n if (render.hasEnoughDataToRender) {\n history.push(settings.pathPrefix + query.assemble(props));\n result.didLaunchAction = true;\n } else {\n result.alternativeRoutePayload = {\n ...props,\n id: render.additionalRouteDataNeeded.tour.id,\n };\n\n result.alternativeRouteRequested = (render.suggestedAlternativeRoute ||\n 'TourSelect') as IRouteName;\n }\n\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nconst module = {\n push,\n replace,\n};\n\nexport default module;\n","import { IRouteConfigSettings } from '../../interface/config';\nimport { IRoute } from '../../interface/route';\nimport { IQueryURL } from '../../interface/util';\nimport component from './component';\nimport { IRouteFloorplan } from './interface';\nimport coordinator from './coordinator';\n\nfunction route(settings: IRouteConfigSettings, query: IQueryURL): IRoute {\n const route: IRoute = {\n paths: [settings.pathPrefix, ...settings.pathMatch.splice(1)],\n push: (history, props) => coordinator.push(settings, query, history, props),\n replace: (history, props) => coordinator.replace(settings, query, history, props),\n component: component,\n };\n\n return route;\n}\n\nexport default route;\n","import * as H from 'history';\n\nexport interface ILocationHistory {\n length: () => number;\n history: () => Array;\n findFirstPathPrefix: (pathPrefix: Array) => number;\n findPathPrefix: (pathPrefix: string) => number;\n}\n\nexport interface ILocationHistoryPrivate extends ILocationHistory {\n _history: Array;\n _controller: H.History;\n}\n\ntype HISTORY_ACTIONS = 'PUSH' | 'POP' | 'REPLACE';\n\nfunction LocationHistory(history: H.History): ILocationHistory {\n const val: ILocationHistoryPrivate = {\n length: function (this: ILocationHistoryPrivate) {\n return this._history.length;\n },\n _history: [],\n _controller: history,\n findFirstPathPrefix: function (this: ILocationHistoryPrivate, pathPrefixes: Array) {\n for (let idx = 0; idx < pathPrefixes.length; idx++) {\n const path = pathPrefixes[idx];\n const idxSearch = this.findPathPrefix(path);\n if (idxSearch >= 0) {\n return idxSearch;\n }\n }\n return -1;\n },\n findPathPrefix: function (this: ILocationHistoryPrivate, pathPrefix: string) {\n for (let idx = 0; idx < this._history.length; idx++) {\n const location = this._history[idx];\n if (location.pathname.startsWith(pathPrefix)) {\n return idx;\n }\n }\n return -1;\n },\n history: function (this: ILocationHistoryPrivate) {\n return this._history;\n },\n };\n\n history.listen(function (location: H.Location, action: HISTORY_ACTIONS) {\n switch (action) {\n case 'PUSH':\n val._history.push(location);\n break;\n\n case 'POP':\n val._history.splice(-1, 1);\n break;\n\n case 'REPLACE':\n val._history.splice(-1, 1, location);\n break;\n }\n });\n\n return val;\n}\n\nexport default LocationHistory;\n","import launch from './launch';\nimport languageSelect from './languageselect';\nimport tourSelect from './tourselect';\nimport tour from './tour';\nimport siteObject from './siteobject';\nimport floorPlan from './floorplan';\nimport { IRoute, IRouteName, IRouter } from '../interface/route';\nimport { IRouteLanguageSelect } from './languageselect/interface';\nimport { IRouteLaunch } from './launch/interface';\nimport { IRouteTourSelect } from './tourselect/interface';\nimport { IRouteTour } from './tour/interface';\nimport { IRouteSiteObject } from './siteobject/interface';\nimport { IRouteFloorplan } from './floorplan/interface';\nimport { IConfigRoutePath, IConfigRoute } from '../interface/config';\nimport { IQueryURL } from '../interface/util';\n\nimport LocationHistory, { ILocationHistory } from '../LocationHistory';\n\ninterface IRouterPrv extends IRouter {\n routes: {\n launch: IRoute;\n languageSelect: IRoute;\n tourSelect: IRoute;\n tour: IRoute;\n siteObject: IRoute;\n floorPlan: IRoute;\n };\n history?: ILocationHistory;\n}\n\nfunction _route(router: IRouterPrv, name: IRouteName): IRoute | null {\n let route: IRoute | null = null;\n switch (name) {\n case IRouteName.Launch:\n route = router.routes.launch;\n break;\n\n case IRouteName.LanguageSelect:\n route = router.routes.languageSelect;\n break;\n\n case IRouteName.TourSelect:\n route = router.routes.tourSelect;\n break;\n\n case IRouteName.Tour:\n route = router.routes.tour;\n break;\n\n case IRouteName.SiteObject:\n route = router.routes.siteObject;\n break;\n\n case IRouteName.FloorPlan:\n route = router.routes.floorPlan;\n break;\n\n default:\n throw Error(`Unknown router route: ${name}`);\n }\n return route;\n}\n\nfunction Router(config: IConfigRoute, query: IQueryURL): IRouter {\n const routes = config.routes;\n const router: IRouterPrv = {\n routes: {\n launch: launch(routes[IConfigRoutePath.Launch], query),\n languageSelect: languageSelect(routes[IConfigRoutePath.LanguageSelect], query),\n tourSelect: tourSelect(routes[IConfigRoutePath.TourSelect], query),\n tour: tour(routes[IConfigRoutePath.Tour], query),\n siteObject: siteObject(routes[IConfigRoutePath.SiteObject], query),\n floorPlan: floorPlan(routes[IConfigRoutePath.FloorPlan], query),\n },\n\n push: function (\n this: IRouterPrv,\n name: IRouteName,\n history: any,\n args: any,\n options?: { replace?: boolean },\n ) {\n if (!this.history) {\n this.history = LocationHistory(history);\n }\n\n const self = this;\n\n const route: IRoute | null = _route(this, name);\n\n if (!route) {\n return;\n }\n\n route\n .push(history, args)\n .then(function (result) {\n if (result.didLaunchAction && route) {\n /* done */\n } else if (result.alternativeRouteRequested) {\n self.push(\n result.alternativeRouteRequested,\n history,\n result.alternativeRoutePayload ?? {},\n );\n }\n })\n .catch(error => console.error(error));\n },\n\n popTo: function (this: IRouterPrv, name: IRouteName, history: any, args: any): boolean {\n if (!this.history) {\n this.history = LocationHistory(history);\n }\n\n const routeTarget: IRoute | null = _route(this, name);\n\n if (!routeTarget) {\n return false;\n }\n\n const curIdx = this.history?.findFirstPathPrefix(routeTarget.paths) ?? -1;\n\n if (curIdx >= 0) {\n const popCount = (this.history?.length() ?? -1) - curIdx - 1;\n history.go(-popCount);\n }\n\n const didPop = curIdx >= 0;\n return didPop;\n },\n\n pop: function (this: IRouterPrv, history: any, args: any): boolean {\n return this.popCount(1, history, args);\n },\n\n popCount: function (this: IRouterPrv, popCount: number, history: any, args: any): boolean {\n if (!this.history) {\n this.history = LocationHistory(history);\n }\n\n const canPop = popCount <= (this.history?.length() ?? -1);\n\n if (canPop) {\n history.go(-popCount);\n }\n\n return canPop;\n },\n\n allRoutes: function (this: IRouterPrv) {\n return Object.values(this.routes);\n },\n };\n\n return router as IRouter;\n}\n\nexport default Router;\n","import { bindRouter } from '../interface/route';\nimport { injectConfigRoute } from '../interface/config';\nimport { injectQueryURL } from '../interface/util';\nimport Router from './router';\nimport { IContainer } from '../interface/container';\n\nexport function bind(container: IContainer): Promise {\n return new Promise(async function (resolve, reject) {\n try {\n const settings = injectConfigRoute(container);\n const query = await injectQueryURL(container);\n const router = Router(settings, query);\n\n bindRouter(router, container);\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n","import { createListenerMiddleware } from '@reduxjs/toolkit';\n\nconst builderListenerMiddleware = () => {\n const listenerMiddleware = createListenerMiddleware();\n\n return listenerMiddleware;\n};\n\nexport default builderListenerMiddleware;\n","import { AnyAction, Dispatch, Middleware, MiddlewareAPI } from '@reduxjs/toolkit';\nimport { compose } from 'redux';\n\nexport interface IInterceptorMiddleware {\n all: () => Array;\n add: (mw: Middleware) => void;\n remove: (mw: Middleware) => void;\n middleware: () => Middleware;\n}\n\nconst builderInterceptorMiddleware = (): IInterceptorMiddleware => {\n const middlewares: Array = [];\n\n const interceptorMiddleware: Middleware =\n ({ getState, dispatch }: MiddlewareAPI) =>\n (next: Dispatch) =>\n (action: MiddlewareAPI>) => {\n const middlewareAPI: MiddlewareAPI> = {\n getState,\n dispatch,\n };\n\n const chain = middlewares.map(middleware => middleware(middlewareAPI));\n\n compose<(action: MiddlewareAPI>) => void>(...chain)(next)(action);\n };\n\n const middleware: IInterceptorMiddleware = {\n all: () => middlewares,\n add: (mw: Middleware) => middlewares.push(mw),\n remove: (mw: Middleware) => {\n const index = middlewares.indexOf(mw);\n if (index >= 0) {\n middlewares.splice(index);\n }\n },\n middleware: () => interceptorMiddleware,\n };\n\n return middleware;\n};\n\nexport default builderInterceptorMiddleware;\n","import { Dispatch, Middleware, MiddlewareAPI } from '@reduxjs/toolkit';\nimport type { ILog } from '../../interface/util';\n\nconst builderLoggerMiddleware = (logger: ILog) => {\n const loggerMiddleware: Middleware =\n ({ getState }: MiddlewareAPI) =>\n (next: Dispatch) =>\n action => {\n logger.verbose(`Dispatching ${action}`);\n\n const returnValue = next(action);\n\n logger.verbose(`State post dispatch ${getState()}`);\n\n return returnValue;\n };\n\n return loggerMiddleware;\n};\n\nexport default builderLoggerMiddleware;\n","import { Middleware } from '@reduxjs/toolkit';\nimport type { IEnv, ILog } from '../../interface/util';\nimport effect from './effect';\nimport interceptor from './interceptor';\nimport { IStoreMiddlewareMap, IStoreMiddlewares, IStoreMiddlewareType } from '../interface';\nimport logger from './logger';\n\nconst buildMiddlewares = (log: ILog, env: IEnv): IStoreMiddlewares => {\n const isProduction = env.getString('NODE_ENV', 'production') === 'production';\n\n const middlewareLogger = !isProduction ? logger(log) : null;\n const middlewareEffect = effect();\n\n const middlewareInterceptor = interceptor();\n\n if (middlewareLogger) {\n middlewareInterceptor.add(middlewareLogger);\n }\n\n middlewareInterceptor.add(middlewareEffect.middleware);\n\n const middlewares: IStoreMiddlewares = {\n get: (type: Type) => {\n switch (type) {\n case IStoreMiddlewareType.Logger:\n return middlewareLogger ?? undefined;\n\n case IStoreMiddlewareType.SideEffect:\n return (middlewareEffect as any) ?? undefined;\n\n default:\n return undefined;\n }\n },\n add: (middleware: Middleware) => middlewareInterceptor.add(middleware),\n remove: (middleware: Middleware) => middlewareInterceptor.remove(middleware),\n all: () => [middlewareInterceptor.middleware()],\n };\n\n return middlewares;\n};\n\nexport default buildMiddlewares;\n","import { IContainer } from '../../interface/container';\nimport { injectENV, injectLog } from '../../interface/util';\nimport { bindStoresMiddleware } from '../interface';\nimport buildMiddlewares from './builder';\n\nfunction binder(container: IContainer) {\n const logger = injectLog(container);\n const env = injectENV(container);\n\n const middlewares = buildMiddlewares(logger, env);\n\n bindStoresMiddleware(middlewares, container);\n}\n\nexport default binder;\n","import { Action, combineReducers } from '@reduxjs/toolkit';\nimport {\n IReducerRegister,\n ReducerManagerEventMap,\n ReducerSlice,\n ReducerUnknown,\n SubscriberList,\n} from '../interface';\n\nconst _defaultReducer: ReducerUnknown = (state, action) => state;\n\nexport default function registry(initialReducers?: Record) {\n /* Create an object which maps keys to reducers */\n const reducers: Record = { ...(initialReducers ?? {}) };\n\n const subscribers: SubscriberList = {\n SliceAdded: [],\n ReducersChanged: [],\n };\n\n /* Create the initial combinedReducer */\n let combinedReducer = initialReducers ? combineReducers(reducers) : _defaultReducer;\n\n /* An array which is used to delete state keys when reducers are removed */\n let keysToRemove: Array = [];\n\n const manager: IReducerRegister = {\n getReducerMap: () => ({ ...reducers }),\n\n /* The root reducer function exposed by this object\n This will be passed to the store */\n reduce: (state: any, action: Action) => {\n /* If any reducers have been removed, clean up their state first */\n if (keysToRemove.length > 0) {\n state = { ...state };\n for (let key of keysToRemove) {\n delete state[key];\n }\n keysToRemove = [];\n }\n\n /* Delegate to the combined reducer */\n return combinedReducer(state, action);\n },\n\n addSlice: (slice: ReducerSlice) => {\n if (!slice.name || reducers[slice.name]) {\n return;\n }\n\n reducers[slice.name] = slice.reducer;\n\n combinedReducer = combineReducers(reducers);\n\n subscribers['ReducersChanged']?.forEach(cb => cb());\n subscribers['SliceAdded']?.forEach(cb => cb(slice));\n },\n\n /* Adds a new reducer with the specified key */\n add: (key: string, reducer: ReducerUnknown) => {\n if (!key || reducers[key]) {\n return;\n }\n\n /* Add the reducer to the reducer mapping */\n reducers[key] = reducer;\n\n /* Generate a new combined reducer */\n combinedReducer = combineReducers(reducers);\n\n subscribers['ReducersChanged']?.forEach(cb => cb());\n },\n\n /* Removes a reducer with the specified key */\n remove: (key: string) => {\n if (!key || !reducers[key]) {\n return;\n }\n\n /* Remove it from the reducer mapping */\n delete reducers[key];\n\n /* Add the key to the list of keys to clean up */\n keysToRemove.push(key);\n\n /* Generate a new combined reducer */\n combinedReducer = combineReducers(reducers);\n\n subscribers['ReducersChanged']?.forEach(cb => cb());\n },\n\n subscribe: (\n event: K,\n callback: ReducerManagerEventMap[K],\n ) => {\n const callbacks = subscribers[event] as SubscriberList[K];\n callbacks.push(callback as any);\n subscribers[event] = callbacks;\n },\n\n unsubscribe: (\n event: K,\n callback: ReducerManagerEventMap[K],\n ) => {\n const callbacks = subscribers[event].filter(cb => cb !== callback);\n subscribers[event] = callbacks as any;\n },\n };\n\n return manager;\n}\n","import { IContainer } from '../../interface/container';\nimport { bindStoresReducer } from '../interface';\nimport register from './register';\n\nfunction binder(container: IContainer) {\n const registry = register();\n\n bindStoresReducer(registry, container);\n}\n\nexport default binder;\n","import { configureStore } from '@reduxjs/toolkit';\nimport { IReducerRegister, IStoreMiddlewares, IStoresData, ReducerSlice } from '../interface';\n\nfunction buildStore(\n reducerRegister: IReducerRegister,\n middlewares: IStoreMiddlewares,\n): IStoresData {\n const store = configureStore({\n reducer: reducerRegister.reduce,\n devTools: true,\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware({\n serializableCheck: false,\n }).concat(middlewares.all()),\n });\n\n const newSliceAdded = (slice: ReducerSlice) => {\n store.replaceReducer(reducerRegister.reduce);\n\n /* initialize slice-state */\n slice.actions.reset();\n };\n\n reducerRegister.subscribe('SliceAdded', newSliceAdded);\n\n const data: IStoresData = {\n store,\n dispatch: (action: any) => store.dispatch(action),\n };\n\n return data;\n}\n\nexport default buildStore;\n","import { IContainer } from '../../interface/container';\nimport { bindStoresData, injectStoresMiddleware, injectStoresReducer } from '../interface';\nimport store from './store';\n\nfunction binder(container: IContainer) {\n const registry = injectStoresReducer(container);\n const middleware = injectStoresMiddleware(container);\n const state = store(registry, middleware);\n\n bindStoresData(state, container);\n}\n\nexport default binder;\n","import { Provider } from 'react-redux';\nimport { IStoresData, IStoresRenderer } from '../interface';\n\nfunction renderer(store: IStoresData): IStoresRenderer {\n const StoreRender = (props: { children?: React.ReactNode }): JSX.Element => (\n {props.children}\n );\n\n const storeRender: IStoresRenderer = {\n render: StoreRender,\n };\n\n return storeRender;\n}\n\nexport default renderer;\n","import { IContainer } from '../../interface/container';\nimport { bindStoresRenderer, injectStoresData } from '../interface';\nimport renderer from './StoreRender';\n\nfunction binder(container: IContainer) {\n const stores = injectStoresData(container);\n\n const result = renderer(stores);\n\n bindStoresRenderer(result, container);\n}\n\nexport default binder;\n","import type { IContainer } from '../interface/container';\nimport binderMiddleware from './middleware/binder';\nimport binderReducer from './reducer/binder';\nimport binderStores from './store/binder';\nimport binderRenderer from './render/binder';\n\nasync function binder(container: IContainer): Promise {\n binderMiddleware(container);\n binderReducer(container);\n binderStores(container);\n binderRenderer(container);\n}\n\nexport default binder;\n","import { bind as bindApiService } from '@monofe/apiservice';\nimport streamAPIBinder from '@monofe/apiservice/util/stream';\nimport { bindAllTo as bindUtil, bindContainer, buildContainer } from '@monofe/util';\nimport { bind as bindWorker, injectServiceWorkerController } from '@monofe/worker';\nimport { lazy, StrictMode, Suspense } from 'react';\nimport { render as DOMrender } from 'react-dom';\nimport type { ReportHandler } from 'web-vitals';\nimport { bind as localBindConfig } from './config/bind';\nimport localBindController from './controllers/binder';\nimport { injectConfigRoute } from './interface/config';\nimport { IContainer } from './interface/container';\nimport { injectRouter } from './interface/route';\nimport { injectENV, injectLog } from './interface/util';\nimport { bind as localBindRouter } from './routes/bind';\nimport { injectStoresRenderer } from './state';\nimport localBindStores from './state/bind';\n\nconst PATH_SERVICE_WORKER = 'service-worker.js';\nconst SCOPE_SERVICE_WORKER_DEFAULT = '.';\n\nconst _isProduction = (container: IContainer) =>\n injectENV(container).getString(ENV_BUILDTYPE) === 'production';\nconst _isDevelopment = (container: IContainer) => !_isProduction(container);\n\nconst ID_ROOT_ELEMENT = 'root';\nconst LOADING_OUTER_CLASSNAME = 'OnBootCenterModal OnBootLoadingStyle';\nconst LOADING_INNER_CLASSNAME = 'OnBootSpinner';\nconst ENV_IS_SW_ENABLED = 'REACT_APP_SW_ENABLED';\nconst ENV_SW_OVERRIDE = 'REACT_APP_SWFORCE';\nconst ENV_BUILDTYPE = 'NODE_ENV';\n\nfunction LoadingView(): JSX.Element {\n return (\n
\n
\n
\n );\n}\n\nasync function loadContainerBindings(container: IContainer): Promise {\n const promiseWrapper = (\n binder: (container: IContainer) => void,\n ): ((container: IContainer) => Promise) => {\n return (targetContainer: IContainer) => {\n binder(container);\n return Promise.resolve();\n };\n };\n\n /* if there's a streaming media.json go find it & update the apiservice to use it */\n const bindStreamAPI = (container: IContainer) => {\n const env = injectENV(container);\n const schemaUrl = env.getString('REACT_APP_STREAMMEDIA_SCHEMAURL');\n\n return schemaUrl ? streamAPIBinder(schemaUrl) : Promise.resolve();\n };\n\n const binders: Array<(container: IContainer) => Promise> = [\n bindUtil,\n localBindConfig,\n promiseWrapper(bindApiService),\n promiseWrapper(bindWorker),\n bindStreamAPI,\n localBindRouter,\n /* bindMediaPlayer, \n placeholder, including path results in files bundled into static/js/main*.js increasing initial bundle size */\n () => Promise.resolve(),\n localBindStores,\n localBindController,\n ];\n\n for (const binder of binders) {\n await binder(container);\n }\n}\n\nasync function startServiceWorker(container: IContainer): Promise {\n const env = injectENV(container);\n const isProduction = env.getString(ENV_BUILDTYPE) === 'production';\n /* for testing, run `yarn startsw` to force the Service Worker to run in development */\n const swEnableOverride = env.getBoolean(ENV_SW_OVERRIDE);\n const hasServiceWorker = 'serviceWorker' in navigator;\n const swEnabled = env.getBoolean(\n ENV_IS_SW_ENABLED,\n true,\n ); /* if missing assume YES, otherwise allow for ENV to disable service-workers (Agnelli) */\n\n if (!swEnabled) {\n } else if (!hasServiceWorker) {\n } else if (isProduction || swEnableOverride) {\n const controller = await injectServiceWorkerController(container);\n\n /* limit SW visibility to base subpath of PWA, scope *must* end with slash '/qc/mauto' -> '/qc/mauto/' */\n let scope = env.getString('REACT_APP_ROUTE_BASENAME') ?? SCOPE_SERVICE_WORKER_DEFAULT;\n\n if (!scope.endsWith('/')) {\n scope = scope + '/';\n }\n\n controller.start(PATH_SERVICE_WORKER, scope);\n }\n}\n\nfunction startRenderer(container: IContainer): Promise {\n const router = injectRouter(container);\n const config = injectConfigRoute(container);\n\n const allRoutes = router.allRoutes();\n\n const StoreProvider = injectStoresRenderer().render;\n\n const App = lazy(() => import('./app'));\n\n DOMrender(\n \n \n \n \n \n \n ,\n document.getElementById(ID_ROOT_ELEMENT),\n );\n\n return Promise.resolve();\n}\n\ndeclare global {\n interface Window {\n __REACT_DEVTOOLS_GLOBAL_HOOK__: Record | undefined;\n __WS_DEVTOOLS_CONTAINER__: IContainer | undefined;\n }\n}\n\nfunction disableReactDevTools(container: IContainer): void {\n const env = injectENV(container);\n const isProduction = env.getString(ENV_BUILDTYPE) === 'production';\n\n const reactDevTools = window.__REACT_DEVTOOLS_GLOBAL_HOOK__;\n\n if (isProduction && reactDevTools) {\n const noop = (): void => undefined;\n\n for (const [key, value] of Object.entries(reactDevTools)) {\n reactDevTools[key] = typeof value === 'function' ? noop : null;\n }\n }\n}\n\n/* start */\nconst container = buildContainer();\nbindContainer(container);\n\nloadContainerBindings(container)\n .then(_ => startServiceWorker(container))\n .then(_ => startRenderer(container))\n .then(_ => {\n if (window === undefined) {\n /* ignore */\n } else if (_isDevelopment(container)) {\n /* development mode */\n window.__WS_DEVTOOLS_CONTAINER__ = container;\n } else {\n /* production mode */\n disableReactDevTools(container);\n }\n\n injectLog(container).milestone('App running');\n })\n .catch(error => {\n injectLog(container).error(`Failed to start app: ${[error]}`);\n });\n\n/* If you want to start measuring performance in your app, pass a function\n to log results (for example: reportWebVitals(console.log))\n or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals */\nif (_isDevelopment(container)) {\n const reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n };\n\n reportWebVitals();\n}\n"],"names":["DEFAULTS","CLIENT_ID","CLIENT_SECRET","GRANT_TYPE","USERNAME","PASSWORD","AUTH","SITEDATA","MEDIADIFF","MEDIA","MEDIA_WITH_ACCESS_TOKEN","env","url","getString","auth","clientId","clientSecret","grantType","username","password","extension","siteData","mediaDiff","media","mediaWithAccessToken","DATA_IMAGE","JSON_IMAGE","_weightings","valuesIn","targetValue","weightGenerator","weightingsAll","map","val","weightingsMin","Math","min","weightingsMax","max","weightingsDelta","weightingsNormalized","weight","abs","minValue","maxValue","weightings","_imageAsset","group","name","_imageAssetGroup","Object","values","_imageAssetGroupClosestMatch","targetWidth","targetHeight","target","allImages","weightingsAR","width","height","image","weightingsWidth","weightingsHeight","weightedImages","idx","sort","prev","next","shift","_closestImage","imageAsset","imageAssetGroup","imageAssetGroupClosestMatch","IConfigCacheName","cacheName","expiration","maxEntries","matcher","fetchOptions","mode","RegExp","headers","credentials","ignoreSearch","tokenPath","fetcher","routing","Promise","resolve","reject","pathFetch","basename","replace","method","expectedResponseType","manifest","payload","JSON","stringify","basenameIn","routes","IConfigRoutePath","pathPrefix","pathMatch","backgroundColor","title","text","fontFamily","fontSize","fontAlignment","fontWeight","color","visible","zoomControlsBackgroundColor","zoomControlsTintColor","items","backButton","strokeColor","strokeSize","arrowColor","onBack","MainView","lazy","Render","props","log","injectLog","initialState","useState","getVal","setVal","updateVal","useCallback","partial","sPrev","ReactUseStateWithUpdate","model","modelPlaceholderData","isLoading","state","updateState","onRequestBack","onSiteObject","siteObjectId","onRequestSiteObject","useEffect","then","controller","default","catch","error","mapper","route","getProjectOverrides","_","info","document","AnimatePresence","Loading","styleOverrides","opacity","pointerEvents","Suspense","fallback","propsEqual","memo","renderer","Renderer","canRender","hasEnoughDataToRender","canLoad","DataCheckResult","backgroundImage","isEqual","require","View","cycler","activeTitle","nextTitle","delayBetweenChangingTitle","type","ILanguageSelectType","titleCyclerTimeout","setState","onLanguageSelect","language","didRequestTourSelect","id","clearUpdates","verbose","clearInterval","setInterval","stateIn","stateOut","setupUpdates","injectAPISession","open","sessionName","workspace","db","all","languages","hasMultipleLanguages","length","result","Error","suggestedAlternativeRoute","additionalRouteDataNeeded","languageId","close","CanRender","onDownloadClick","onSkipClick","status","detail","centerImage","downloadButton","onClick","skipButton","progressBar","progress","barColor","textColor","ILaunchState","ILaunchEvent","ProcessEvent","processor","event","Halted","Start","configAPI","injectConfigAPI","sessionController","filter","config","apiUrl","apiUsername","apiPassword","console","session","setActive","save","_start","setStatus","UpdatingSite","process","FetchingSiteData","err","setError","navigator","onLine","hasContentInDb","sites","promise","injectJobs","updateSite","onProgress","updateSiteProgress","warn","_updateSite","Completed","Halt","None","_status","Initializing","_error","this","_callbackStatus","onStatusChange","callback","activeEvent","isRunning","_state","_callbackState","onStateChange","downloadClick","skipClick","assets","defaultProps","AwaitingUserDownloadSkipConfirmation","DownloadingMedia","downloadMediaProgress","showingUserDialog","background_color","theme_color","window","innerWidth","devicePixelRatio","innerHeight","path","injectConfigManifest","injectAssetFetcher","StateProcessor","UserRequestedDownloadingMedia","UserRequestedSkipMedia","mapping","newStatus","didRequestLanguageSelect","routesEqual","placeholderData","ISiteObjectType","didRequestBack","route1","route2","tourId","mediaRequired","siteObject","translation","mediumId","medium","push","NeedsInternet","get","requiredMedia","isAllMediaCached","allCached","needsInternet","TYPES","IToast","Symbol","for","injectToast","container","injectContainer","bindToast","bind","dummyItem","lineHeight","titleBackgroundColor","cornerRadius","number","numberBackgroundColor","shouldGrayAfterViewing","subItems","item","sideMenu","foregroundImage","topBar","iconColor","collection","showFloorPlanIcon","hasContentDownloaded","onDownloadStatusRequest","onFloorPlanSelect","downloadTourStateFetcher","module","_triggerPopUp","show","_StorageKey","tour","_canTriggerPopUp","isShowable","_hasShownPopUp","injectKVStorage","getItem","_setHasShownPopUp","setItem","setTimeout","canShow","hasShown","deleteTourStateFetcher","_StateReducer","action","useReducer","ITourType","showPopUpDownload","showPopUpDelete","modelDispatcher","didRequestSiteObject","onFloorPlan","didRequestFloorPlan","onTourSelect","reducer","modifier","modelState","downloadState","deleteState","canDownload","hide","oldProps","oldState","injectCacheController","getAssociatedCache","getGlobalCache","modelResult","modelIn","transitionDuration","DownloadAlert","displayName","tourRelatedSiteObjects","siteObjectIds","x","allSiteObjects","so","allRequiredMedia","flat","isAllCached","allTourRelatedSiteObjects","matchingTourRelatedSiteObjects","hasMultipleSiteObjects","ITourSelectType","didRequestTour","onScroll","position","newOpacityPC","top","util","tours","hasMultipleTours","IUserAlert","injectUserAlert","bindUserAlert","IAssetFetcher","bindAssetFetcher","IConfigLogLevel","IConfigLogDestination","IConfigLog","IConfigAPI","IConfigManifest","IConfigCache","IConfigRoute","bindConfigLog","bindConfigAPI","bindConfigManifest","bindConfigCache","injectConfigRoute","bindConfigRoute","containers","global","obj","overrideMapper","injectENV","getValueWithDefault","IBrowserPlatform","IEnv","IFetch","ILog","IQueryURL","IZip","IKVStorage","IBrowser","ICache","ICacheController","ITranslationStorage","injectFetch","injectQueryURL","injectZip","injectTranslationStorage","IStoreMiddlewareType","IStoreMiddlewares","IStoresReducer","IStoresData","IStoresRenderer","injectStoresMiddleware","bindStoresMiddleware","injectStoresData","bindStoresReducer","injectStoresReducer","bindStoresData","injectStoresRenderer","bindStoresRenderer","IWorkspaceDBInstantiate","injectWorkspaceDB","bindWorkspaceDB","IJobs","bindJobs","IModelInstantiator","bindModelInstantiator","serialize","pairings","keys","key","hasOwnProperty","value","encodeURIComponent","join","_isIAuthenticateResponse","object","record","isNullOrUndefined","undefined","access_token","userName","token_type","expires_in","refresh_token","_request","apiExtension","authParams","client_id","client_secret","grant_type","body","form","_authenticate","logger","timeout","req","response","statusCode","isStatusOk","errors","fetchLoader","assert","authenticate","apiURL","authImpl","params","requestDto","siteId","hash","siteHash","requests","existingMedia","mediumHash","mapMediumToBodyRequest","apiHref","authToken","_isMediaDiffResponse","Array","isArray","configs","requester","apiHrefs","getMediaDiff","_hasHttpPrefix","startsWith","_requestFromConfig","mediaId","templatedPath","resolvedPath","_requestFromConfigWithToken","accessToken","requestURL","parameters","resolver","urls","canResolveMedium","getMedia","promiser","mediaUtil","mediaDownload","injectProgressPromise","mediaImpl","isRunningOnNodeJS","_downloadSiteData","data","_unzipSiteData","zip","srcData","unzipFile","dataFile","Blob","indexOf","prototype","toString","call","_isBlob","arrayBuffer","dataStr","jsonData","parse","currentHash","previousHash","patch","_isISiteData","zipper","fetchGet","siteDataBinary","getSiteData","mediaAPIs","injectMediaAPI","bindMediaAPI","mediaApiInst","bindAuthAPI","authApiInst","bindMediaDiffAPI","mediaDiffApiInst","bindSiteDataAPI","siteDataApiInst","unbind","unbindMediaAPI","unbindAuthAPI","unbindMediaDiffAPI","unbindSiteDataAPI","expose","srcContainer","dstContainer","injectAuthAPI","injectMediaDiffAPI","injectSiteDataAPI","_open","authAPI","initState","manager","pendingRenew","expiry","Date","hasExpired","threshold","getTime","renew","authResponse","substring","getSeconds","args","expand","initString","downloadToBinary","database","cacheController","cacheOnly","cachedResponse","token","api","mediaBinary","mimeType","downloadToBinaries","mediaAPI","mediaIds","promises","results","downloadToUrl","blob","URL","createObjectURL","downloadToUrls","blobs","mediaForStyling","style","shouldOpenClose","isOpen","queryIds","backgroundImageMediumId","foregroundImageMediumId","menuImageMediumId","mediaForSiteObject","translations","allTranslations","matchTranslations","sot","downloadList","styleId","localMediaIds","allLocalMedia","mediaUsedForSiteObjectTranslationsInLanguage","allSiteObjectTranslations","allMediaWithTranslations","matchMediaTranslations","allMedia","allMediaWithTranslationsIds","m","mediaUniversal","includes","downloadMedia","forEach","_siteObjectsForTour","siteObjects","mediaUsedForLanguage","mediaForLanguageWithTour","mediaList","tourStyle","soMedia","_resolveUrlWithToken","apis","isMediumCached","downloadToURL","downloadToURLs","ids","removeMediumCache","mediaForLanguage","mediaFilter","resolveUrlWithToken","injectMediaCacheController","MediaManager","StoreSymbol","globalObject","globalThis","_GetValue","_SetValue","store","_saveUserState","_init","startingData","callbacks","getProperty","getPropertyWithDefault","defaultValue","setProperty","cbArray","subscribeChanges","subscriberKey","arr","unsubscribeChanges","subscriber","match","flatten","load","_loadFromStore","dataObj","userState","IAuthenticationManager","IMediaManager","IUserStateManager","injectMediaManager","bindMediaManager","injectAuthManager","bindAuthManager","injectUserStateManager","bindUserStateManager","mediaInst","authInst","userStateInst","remove","unbindMediaManager","unbindAuthManager","unbindUserStateManager","STORAGEENGINE","indexeddb","options","idb","memory","mem","OPTIONS_DEFAULTS","version","engine","mappings","OPTIONS_OVERRIDES","_options","optionsIn","_expand","apply","setDefaults","localName","create","customProps","sourceObject","newEntity","property","newValue","externalName","removeValueOnImport","customImport","_mapExtToIntProps","_isEntity","entityIn","flattenObject","entityCast","keySave","keyGet","removeValueOnExport","customExport","_site","site","_translations","_that","floorPlanId","_image","imageMediumId","_language","_style","_allSiteObjectsOnFloorplan","soFPs","_siteObjectOnFloorplan","allSiteObjectsOnFloorplan","siteObjectOnFloorplan","optional","_languages","self","allSOTs","matchSOTs","languageIds","_menuItem","menuItemId","menuItem","VALUES_FIELD_BYTEVALUE","All","Landscape","Portrait","_imageLogo","logoMediumId","_screenOrientation","screenOrientationId","_languageSelectionStyle","languageSelectionStyleId","_tourSelectionStyle","tourSelectionStyleId","_siteSupportedLanguages","ssl","sslMatch","imageLogo","screenOrientation","languageSelectionStyle","tourSelectionStyle","siteSupportedLanguages","_type","siteObjectTypeId","_beacon","beaconId","_beaconSensitivity","beaconSensitivityId","_nextObject","nextObjectId","_relatedObject1","relatedObject1Id","_relatedObject2","relatedObject2Id","_relatedObject3","relatedObject3Id","_relatedObject4","relatedObject4Id","_relatedObject5","relatedObject5Id","_foregroundImageMedium","_backgroundImageMedium","_menuImageMedium","_translation","Number","_relatedObjects","objects","beacon","beaconSensitivity","nextObject","relatedObject1","relatedObject2","relatedObject3","relatedObject4","relatedObject5","foregroundImageMedium","backgroundImageMedium","menuImageMedium","relatedObjects","source","siteObjectKeywords","keyword","_siteObject","_floorPlan","_pinType","pinTypeId","floorPlan","pinType","siteObjectIdRaw","floorPlanIdRaw","_medium","_parent","parentId","_backgroundMode","backgroundModeId","_primaryFontFamily","primaryFontFamilyId","_primaryFontStyle","primaryFontStyleId","_primaryFontSizeUnit","primaryFontSizeUnitId","_primaryFontAlignment","primaryFontAlignmentId","_secondaryFontFamily","secondaryFontFamilyId","_secondaryFontStyle","secondaryFontStyleId","_secondaryFontSizeUnit","secondaryFontSizeUnitId","_secondaryFontAlignment","secondaryFontAlignmentId","_tertiaryFontFamily","tertiaryFontFamilyId","_tertiaryFontStyle","tertiaryFontStyleId","_tertiaryFontSizeUnit","tertiaryFontSizeUnitId","_tertiaryFontAlignment","tertiaryFontAlignmentId","parent","backgroundMode","primaryFontFamily","primaryFontStyle","primaryFontSizeUnit","primaryFontAlignment","secondaryFontFamily","secondaryFontStyle","secondaryFontSizeUnit","secondaryFontAlignment","tertiaryFontFamily","tertiaryFontStyle","tertiaryFontSizeUnit","tertiaryFontAlignment","_tourType","tourTypeId","_tourSubType","tourSubTypeId","_tourStatus","tourStatusId","_tourSupportedLanguages","allTourSupportedLanguages","matchTSL","matchTSLIds","tourSupportedLanguageId","allSSL","matchSSL","matchSSLIds","allTSL","siteSupportedLanguageId","tourTranslations","_floorplans","thisId","allFloorPlanTours","matchFPTours","fpTour","matchFloorPlans","tourType","tourSubType","tourStatus","tourSupportedLanguages","floorplans","_tour","_tourSupportedLanguage","tourSupportedLanguage","_siteSupportedLanguage","siteSupportedLanguage","InstantiateMap","IBackgroundModeDto","Transformers","linkables","IBeaconDto","IBeaconSensitivityDto","ICountryDto","IDeviceAccountDto","IFloorPlanDto","IFloorPlanTourDto","IFloorPlanTranslationDto","IFontFamilyDto","IFontStyleDto","IFontSizeUnitDto","IFontAlignmentDto","ILanguageDto","IMediumDto","IMenuItemDto","IMenuItemKeywordDto","IMenuItemTranslationDto","IPinTypeDto","IRoleDto","IScreenOrientationDto","ISiteDto","ISiteObjectDto","ISiteObjectOnFloorPlanDto","ISiteObjectKeywordDto","ISiteObjectTranslationDto","ISiteObjectTypeDto","ISiteSupportedLanguageDto","IStyleDto","ITourDto","ITourMenuItemDto","ITourRelatedSiteObjectDto","ITourStatusDto","ITourSubTypeDto","ITourTranslationDto","ITourTypeDto","ITourSupportedLanguageDto","IUserDto","ILegacy_FloorPlanDto","instantiate","className","constructor","allInterfaces","ContainerTable","_table","_entityName","table","count","entityName","toArray","instantiator","pk","insItems","bulkAddOrUpdate","description","upgrade","transaction","preInsertCleanup","dataIn","allFloorplansLegacy","bulkAdd","toCollection","floorPlanLegacyPrimaryKeys","bulkDelete","modify","newObj","ScreenOrientation_FIELD_BYTEVALUE","dataOut","versions","freeze","v1","v2","ContainerDB","modelInstantiator","_db","_openCount","_modelInstantiator","migration","migrator","tableName","tableConstructor","itemData","dbMigrator","DB","openCount","dbOpen","_close","_isOpen","_newController","records","existing","injectModelInstantiator","dbInst","unbindWorkspaceDB","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","__","_hasOwnProperty","_objectKeys","k","i","_deepClone","isInteger","str","charCode","len","charCodeAt","escapePathComponent","unescapePathComponent","hasUndefined","objKeys","objKeysLength","patchErrorMessageFormatter","message","messageParts","PatchError","_super","index","operation","tree","_newTarget","_this","JsonPatchError","deepClone","objOps","add","newDocument","removed","move","getValueByPointer","originalValue","applyOperation","op","from","copy","valueToCopy","test","_areEquals","_get","arrOps","splice","pointer","getOriginalDestination","validateOperation","mutateDocument","banPrototypeModifications","validator","returnValue","split","t","existingPathFragment","validateFunction","TypeError","slice","applyPatch","length_1","applyReducer","operationResult","pathLen","existingPathLen","validate","sequence","externalValidator","e","a","arrA","arrB","beforeDict","WeakMap","Mirror","observers","Map","ObserverInfo","observer","unobserve","root","observe","mirror","getMirror","observerInfo","getObserverFromMirror","set","dirtyCheck","generate","fastCheck","clearTimeout","addEventListener","patches","delete","removeObserverFromMirror","removeEventListener","invertible","_generate","temp","toJSON","newKeys","oldKeys","deleted","oldVal","newVal","compare","tree1","tree2","assign","patchData","jsonpatch","TABLE_NAME","TABLE_MAPPINGS","_isPatchStorage","addOrUpdate","storage","_promise","patchPaths","progressPerPath","patchPath","ENTITY_MAPPING","LOOKUP_MAP","LOOKUP_MAP_BUILT","entityname","_buildMap","pathCompare","toLowerCase","siteDataResponseToEntityMap","applicator","entityNameFromPatchPath","siteAPI","existingPatch","urlAPI","siteFetcher","newPatch","DEFAULT_MEDIUM_SIZE","_clamp","_isMediumDto","progressCb","fetchError","totalBytesToDownload","reduce","total","mediumSize","responses","progressUptoThisFetch","progressWeighting","progressCounterSoFar","fetchers","fetchErrors","progressNow","download","downloadMediaNoResponse","_isMedium","progressPerItem","deleteMedia","mediaDelete","updateSiteBinder","downloadBinder","deleteBinder","jobsInst","unbindJobs","unbindModelInstantiator","DEFAULT_ISESSIONDATA","_instantiate","exists","_remove","sessionDB","_save","sessionSerialize","buildFromArgs","userInst","nameIn","buildFromSessionData","authArgs","memoryCache","sessionDelete","activeSession","activeRecords","active","sessionNew","subscribeActiveChanged","unsubscribeActiveChanged","cb","sessionCache","sessionObj","sessionBuilder","sessionData","cached","sessionCallback","_isConfigAPI","_configAPI","sessionInst","bindAPISession","unbindAPISession","CACHE_SEARCH_PARAMS","ignoreMethod","mediaRequestList","urlResolver","urlFetchList","requestList","urlFetch","Request","cacheResponsesForRequests","cache","request","deleteMediaIdsFromCache","allRequests","openCache","caches","_isCachedItem","cacheResolver","cacheUtil","_addToCache","put","mediaIdResolver","cacheHandle","cachedCacheResolver","isCached","mediaIdArg","cacheResponses","missingCacheValues","_isCached","removeFromCache","mediaIdIArg","_removeFromCache","addToCache","responseList","pop","_cachedResponse","_isCachedMedium","cacheList","cc","_isCachedMedia","_cachedResponseMedium","cacheSource","addCacheResolver","removeCacheResolver","matchingControllers","cacheItem","cacheImpl","bindMediaCacheController","cacheInst","unbindMediaCacheController","binders","binder","bindModel","isPrivate","bindApi","bindDB","bindController","bindSession","_postPrivateBindSetup","privateContainer","injectConfigCache","configCache","apiCacheName","containerGlobal","prvContainer","bindAll","_cacheResolver","size","_urlWithTokenResolver","lazyUrlForAsset","resolvers","SiteSupportedLanguages","first","siteLookup","ToursForLanguage","sslMatchIds","tsl","tslMatch","tslMatchTourIds","invertResult","origPromise","array","filterAsync","arrayOrig","newArray","DEFAULT_TIMEOUT","retryCount","RESPONSETYPE_MAP","ArrayBuffer","none","requestForURL","IMediaAPI","IAuthAPI","IMediaDiffAPI","ISiteDataAPI","MediumStatus","IUserProperties","bindContainer","IProgressPromiseGenerator","CONTAINER_KEY","parentContainer","newContainer","buildContainer","ISessionInstantiator","useActiveSession","sessionFetcher","setSession","_useActiveSessionUserStateValue","saveVal","setSaveVal","useActiveSessionLanguageId","useActiveSessionTourId","useActiveSessionLanguage","useActiveSessionTour","IMediaCacheController","focusable","role","xmlns","viewBox","fill","TRANSITION","ease","duration","MINOPACITY","transition","MAXOPACITY","initial","animate","exit","children","StyleElem","Container","Text","PROPS_APPLICATOR","_LoadingText","elem","styleForElement","element","classLoad","styles","classNameForElement","loadCounter","setLoadCounter","ref","createRef","FadeTransition","Icon","MapBackgroundColor","icon","MapTextColor","inIcon","IToastIcon","Warning","Success","Information","IconExclamation","IconTick","IconQuestionMark","IconInfo","_useStateInjector","useBrowser","injectBrowser","IMimeType","IRouteName","associatedObject","isExtensible","keySearch","Cache","globalCacheObj","_queryStorage","envName","_getValue","envStorage","processEnv","ENV","getValue","_getValueWithDefault","getNumber","_getNumber","getBoolean","_getBoolean","_getString","LOG_LEVEL","logMap","MILESTONE","TRACE","debug","VERBOSE","INFO","WARN","ERROR","FATAL","ASSERT","_consoleLog","logLevel","levels","settings","condition","level","msg","_levelToApplicationInsightsLevel","SeverityLevel","_applicationInsightsLog","trackTrace","severityLevel","trackException","exception","remoteAILogger","debugLogEnabled","warnLogEnabled","loggingLevel","aiPackage","ApplicationInsights","instrumentationKey","authorizationKey","enableAutoRouteTracking","loggingLevelTelemetry","loggingLevelConsole","namePrefix","loadAppInsights","_setupAILogger","LOG_PREFIX","collisionCounter","ERROR_NAME_QUOTA_EXCEEDED","_localStorageLog","time","saveItem","localStorage","_hasExceededQuotaError","DEFAULT_CONFIGLOG","loggingLevelsEnabled","outputDestinations","outputConfiguration","_isLogLevelEnabled","loggers","Console","consoleConfig","consoleLoggerInstantiator","Remote_ApplicationInsights","remoteAIConfig","aiLoggerInstantiator","LocalStorage","localStorageConfig","lsLoggerInstantiator","_buildLoggers","logAll","noop","milestone","trace","warning","fatal","assertAll","instantiateLogger","injectConfigLog","queryString","query","pairs","substr","pair","decodeURIComponent","v","assemble","queryArgs","strPairs","encodedStr","extractPathRegex","pathRegex","homeDir","cleanStack","stack","pretty","basePath","basePathRegex","string","escapeStringRegexp","line","pathMatches","trim","p1","AggregateError","String","indent","includeEmptyLines","RangeError","regex","repeat","indentString","super","pMapSkip","pTimes","async","iterable","concurrency","POSITIVE_INFINITY","stopOnError","reject_","iterator","asyncIterator","isSafeInteger","skippedIndexesMap","isRejected","isResolved","isIterableDone","resolvingCount","currentIndex","reason","nextItem","done","pureResult","entries","pMap","sum","PProgress","static","pProgress","every","progressMap","reportProgress","nextValue","percentage","executor","setProgress","_progress","listener","_listeners","Set","_setProgress","onFulfilled","onRejected","child","input","MIME_MAP","mimeTypeToFileExtension","mime","fileExtensionToMimeType","fileExtension","fileExtSearch","charAt","_bindENV","bindENV","_bindFetch","bindFetch","rejection","progressPromiser","requestPayload","_bindLog","bindLog","_bindQueryString","bindQueryURL","_bindZip","bindZip","_bindKVStorage","bindKVStorage","dbName","short_name","storeName","_bindBrowser","bindBrowser","_bindCache","bindCache","_bindCacheController","bindCacheController","_bindMimeType","bindMimeType","_bindPromise","bindProgressPromise","_bindTranslationStorage","bindTranslationStorage","envLoad","parents","_map","_parents","find","importBindings","unshift","arrayBufferToString","buffer","TextDecoder","decode","stringToArrayBuffer","TextEncoder","encode","isArrayBuffer","Buffer","TryNull","fn","AsyncTryNull","getPropFallback","getFirstFallback","IChannelStatus","globals","IChannelController","injectChannelController","bindChannelController","IServiceWorkerStatus","IMessageInstantiator","injectMessageInstantiator","bindMessageInstantiator","ICacheStorage","bindCacheStorage","IFetchHelper","bindFetchHelper","IRegexSerializer","injectRegexSerializer","bindRegexSerializer","IRequestSerializer","bindRequestSerializer","IResponseSerializer","bindResponseSerializer","ISettingsStorage","bindSettingsStorage","IWorkboxUtils","bindWorkboxUtils","addCacheFirst","dependencies","maxAge","construct","regexParser","worker","postMessage","addOAuthTokenCache","pathSuffix","addZipPathFetchResponder","zipPath","relativeRespondPath","addHeader","headerKey","headerVal","fetchToCache","port","callbackChannel","keepAlive","isLocalHost","hostName","location","hostname","_hasServiceWorker","_fetchServiceWorker","swUrl","fetch","_checkValidServiceWorker","didFindFile","isJavascriptFile","isValid","_canRegister","canRegister","host","_registerWorker","scope","serviceWorker","register","_addRegistrationCallbacks","registration","_processState","onInstall","onReady","onupdatefound","newWorker","installing","onstatechange","waiting","update","start","_registerCb","reg","onRegister","ready","unregister","reload","readyState","stop","_isConfigToken","_isConfigAsset","deps","_assetConfigs","bridge","_tokenConfigs","_requestInNamedCache","_notifyCallbacksOfStatusChange","statusChangeCallbacks","_obtainScreenLock","wakeLock","release","isInterceptingNetworkRequests","hasInstalledRules","_installRules","rules","checkControllerStatus","subscribeStatusChange","statusChangeCb","swCallback","unsubscribeStatusChange","dispatch","isRequestCached","cacheNames","reqCheck","anyCacheHits","cur","addRequestsToCache","screenLock","channelID","channel","channelController","subKey","fetchDeps","keepAliveTimer","cleanup","removeListener","Expired","activeWorker","ServiceWorker","terminate","IServiceWorkerController","injectServiceWorkerController","bindServiceWorkerController","builder","unbindServiceWorkerController","MESSAGE_TYPE","AddCacheFirst","isMatch","AddHeader","AddOAuthTokenCache","AddPreCache","paths","AddZipPathRelativeResponder","AddKeepAliveMessageResponder","LogDiagnostics","FetchToCache","unbindMessageInstantiator","insert","build","subscribe","existingRecords","unsubscribe","search","eventListeners","callbackRegistry","PROMISE_RESOLVED_TRUE","PROMISE_RESOLVED_VOID","sleep","resolveWith","res","randomToken","random","lastMs","additional","microSeconds","ms","isNode","channelName","messagesCallback","bc","BroadcastChannel","subFns","onmessage","channelState","onMessage","messageJson","canBeUsed","_pubkey","averageResponseTime","ttl","_to","has","now","obliviousSet","olderThen","removeTooOldValues","clear","originalOptions","arguments","webWorkerSupport","fallbackInterval","onclose","localstorage","removeTimeout","methods","node","maxParallelWrites","useFastPath","OBJECT_STORE_ID","TRANSACTION_SETTINGS","durability","getIdb","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","commitIndexedDBTransaction","tx","commit","getMessagesHigherThan","lastCursorId","objectStore","ret","keyRangeValue","IDBKeyRange","bound","Infinity","getAll","getAllRequest","rej","onerror","onsuccess","openCursorRequest","openCursor","ev","cursor","cleanOldMessages","msgObk","getOldMessages","tooOld","deleteRequest","removeMessagesById","_readLoop","closed","readNewMessages","newerMessages","useMessages","msgObj","uuid","eMIs","messagesCallbackTime","_filterMessage","msgObjA","msgObjB","openRequest","onupgradeneeded","createObjectStore","keyPath","autoIncrement","createDatabase","ObliviousSet","writeBlockPromise","readQueuePromises","readerUuid","writeObject","oncomplete","writeMessage","floor","getLocalStorage","storageKey","ls","removeItem","addStorageEventListener","writeObj","createEvent","initEvent","dispatchEvent","userAgent","defaultTime","SIMULATE_CHANNELS","METHODS","ENFORCED_OPTIONS","OPEN_BROADCAST_CHANNELS","lastId","chooseMethods","concat","Boolean","useMethod","_iL","_onML","_addEL","internal","_uMP","_befC","_prepP","maybePromise","s","_prepareChannel","_post","broadcastChannel","sendPromise","_hasMessageListeners","_addListenerObject","listenerFn","listenerObject","hundredMsInMicro","minMessageTime","_startListening","_removeListenerObject","o","_stopListening","postInternal","listenObj","awaitPrepare","isClosed","WorkerGlobalScope","USE_METHOD","LISTENERS","startedListening","runAll","run","LeaderElection","isLeader","hasLeader","isDead","_aplQ","_aplQC","_unl","_lstns","_dpL","_dpLC","hasLeaderListener","context","_sendMessage","leaderElector","msgJson","applyOnce","isFromFallbackInterval","_this2","applyRun","stopCriteriaPromiseResolve","stopCriteria","stopCriteriaPromise","recieved","handleMessage","waitForAnswerTime","responseTime","race","unloadFn","die","isLeaderListener","beLeader","awaitLeadership","_aLP","resolved","finish","whenDeathListener","tryOnFallBack","_awaitLeadershipOnce","onduplicate","_this3","uFn","ICallbackBuilder","injectCallbackBuilder","bindCallbackBuilder","handler","Active","createChannel","_responseWithProgressCallbacks","contentLength","parseInt","stream","ReadableStream","reader","getReader","readerIndex","lastProgress","read","newProgress","progressDelta","enqueue","Response","fetchWithProgress","AbortController","timeoutId","abort","signal","hasProgressSupport","isNotCorsRequest","responseReturn","LOG_LEVEL_PROD","logLevels","isLogLevelEnabled","logNoop","_replacer","_reviver","_serializeHeaders","serialized","serializeRequest","redirect","referrer","referrerPolicy","isHistoryNavigation","isReloadNavigation","integrity","destination","clone","deserializeRequest","requestIn","serializeResponse","statusText","deserializeResponse","idbProxyableTypes","cursorAdvanceMethods","cursorRequestMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","idbProxyTraps","prop","receiver","IDBTransaction","objectStoreNames","wrapFunction","func","IDBDatabase","IDBCursor","advance","continue","continuePrimaryKey","unwrap","storeNames","transformCachableValue","unlisten","complete","DOMException","cacheDonePromiseForTransaction","IDBObjectStore","IDBIndex","some","c","Proxy","IDBRequest","success","promisifyRequest","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","useIndex","isWrite","replaceTraps","oldTraps","KEY_STORE_NAME","_dbOpen","blocked","blocking","terminated","openPromise","oldVersion","newVersion","openDB","getAllKeys","messageGenerator","code","errorCode","details","normalizeHandler","handle","Router","_routes","_defaultHandlerMap","addFetchListener","responsePromise","handleRequest","respondWith","addCacheListener","requestPromises","urlsToCache","entry","waitUntil","ports","href","protocol","sameOrigin","origin","findMatchingRoute","catchHandler","_catchHandler","catchErr","matchResult","setDefaultHandler","setCatchHandler","registerRoute","unregisterRoute","routeIndex","defaultRouter","getOrCreateDefaultRouter","findResponderStrategy","router","routeMatchOptions","ExtendableEvent","_isRouteHandlerObject","plugins","_isStrategy","flatMap","_zipFile","unzip","_isArrayBuffer","_unzipEntry","fileName","zipFile","matchedEntries","unzipAll","listings","blobData","unbindCallbackBuilder","unbindChannelController","unbindCacheStorage","injectCacheStorage","fetchHelper","unbindFetchHelper","injectFetchHelper","kvStorage","unbindSettingsStorage","injectSettingsStorage","regexJSON","unbindRegexSerializer","requestJSON","unbindRequestSerializer","injectRequestSerializer","responseJSON","unbindResponseSerializer","injectResponseSerializer","unbindLog","workboxUtils","unbindWorkboxUtils","injectWorkboxUtils","unbindZip","bindClient","bindMessage","exports","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","toStringTag","define","defineProperty","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","arg","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","isNaN","isGeneratorFunction","genFun","ctor","mark","awrap","iter","reverse","skipTempReset","rootRecord","rval","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","isDraft","DRAFT_STATE","isDraftable","proto","Ctor","objectCtorString","DRAFTABLE","isMap","isSet","each","enumerableOnly","getArchtype","ownKeys","thing","type_","propOrOldValue","is","y","hasMap","hasSet","latest","copy_","base_","shallowCopy","base","descriptors","getOwnPropertyDescriptors","desc","deep","isFrozen","dontMutateFrozenCollections","getPlugin","pluginKey","plugin","loadPlugin","implementation","getCurrentScope","currentScope","usePatchesInScope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer","immer_","canAutoFreeze_","unfinalizedDrafts_","draft","revoke_","revoked_","processResult","baseDraft","isReplaced","useProxies_","willFinalizeES5_","modified_","finalize","maybeFreeze","generateReplacementPatches_","NOTHING","rootScope","childValue","finalizeProperty","scope_","finalized_","draft_","generatePatches_","parentState","targetObject","rootPath","assigned_","autoFreeze_","peek","getDescriptorFromProto","getOwnPropertyDescriptor","markChanged","prepareCopy","createProxy","proxyMap_","proxySet_","isManual_","traps","objectTraps","arrayTraps","revocable","revoke","proxy","createES5Proxy_","current","currentImpl","archType","hasChanges_","copyHelper","enableES5","proxyProperty","markChangesSweep","drafts","hasArrayChanges","hasObjectChanges","baseValue","baseIsDraft","descriptor","markChangesRecursively","hasSymbol","hasProxies","Reflect","getOwnPropertySymbols","getOwnPropertyNames","_desc$get","currentState","deleteProperty","owner","Immer","recipe","defaultBase","produce","hasError","arg1","arg2","produceWithPatches","ip","inversePatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","applyPatchesImpl","applyPatches_","createThunkMiddleware","extraArgument","_ref","getState","thunk","withExtraArgument","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","isPlainObject","baseProto","MiddlewareArray","species","prepend","curryGetDefaultMiddleware","middlewareArray","isBoolean","getDefaultMiddleware","configureStore","rootReducer","curriedGetDefaultMiddleware","middleware","devTools","preloadedState","enhancers","finalMiddleware","middlewareEnhancer","finalCompose","storeEnhancers","composedEnhancer","createAction","prepareAction","actionCreator","prepared","meta","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","addCase","typeOrActionCreator","addMatcher","addDefaultCase","createSlice","_reducer","reducers","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","buildReducer","extraReducers","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","isStateFunction","caseReducers","cr","previousState","caseReducer","createReducer","reducerName","prepareCallback","maybeReducerWithPrepare","prepare","actions","nanoid","assertFunction","expected","catchRejection","onError","addAbortSignalListener","abortSignal","once","abortControllerWithReason","abortController","aborted","listenerCancelled","task","validateActive","TaskAbortError","promisifyAbortSignal","notifyRejection","createPause","output","createDelay","pause","timeoutMs","INTERNAL_NIL_TOKEN","alm","createFork","parentAbortSignal","taskExecutor","childAbortController","cleanUp","delay","cancel","createTakePattern","startListening","predicate","tuplePromise","effect","listenerApi","getOriginalState","take","getListenerEntryPropsFrom","safelyNotifyError","errorHandler","errorToNotify","errorInfo","errorHandlerError","addListener","clearAllListeners","defaultErrorHandler","cancelActiveListeners","pending","createListenerMiddleware","middlewareOptions","listenerMap","extra","findListenerEntry","comparator","existingEntry","createListenerEntry","cancelOptions","cancelActive","insertEntry","stopListening","notifyListener","internalTaskController","fork","raisedBy","clearListenerMiddleware","createClearListenerMiddleware","originalState","listenerEntries","runListener","predicateError","clearListeners","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","f","g","h","l","n","q","r","w","z","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","propIsEnumerable","propertyIsEnumerable","toObject","test1","test2","fromCharCode","test3","letter","shouldUseNative","symbols","to","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bool","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","ba","ca","da","ea","fa","createElement","ha","ia","ja","ka","B","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","D","oa","pa","toUpperCase","qa","ma","na","la","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","E","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Qa","tag","_render","Ra","_context","_payload","Sa","Ta","nodeName","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","ownerDocument","eb","Children","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","ob","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","ub","menuitem","area","br","col","embed","hr","img","keygen","link","param","track","wbr","vb","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","flags","$b","memoizedState","dehydrated","ac","sibling","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","F","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","LN2","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","keyCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","range","tel","week","me","ne","oe","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","offset","nextSibling","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","end","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","instance","G","$e","af","bf","cf","df","capture","passive","Nb","ef","ff","parentWindow","gf","hf","J","K","Q","L","je","char","ke","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","H","I","Cf","M","N","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","O","eg","fg","gg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","C","Dg","Eg","Fg","Component","refs","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","documentElement","tagName","fh","gh","hh","P","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","R","S","T","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","destroy","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useContext","useImperativeHandle","useLayoutEffect","useMemo","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","hi","ii","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","last","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","createElementNS","createTextNode","V","Hi","Ii","W","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","display","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","mj","nj","ceil","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","wj","ck","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","extend","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","scrollTop","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","hk","_calculateChangedBits","unstable_observedBits","unmount","querySelectorAll","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","unstable_batchedUpdates","checkDCE","hasElementType","hasArrayBuffer","isView","equal","it","batch","getBatch","nullListeners","notify","parentSub","handleChangeWrapper","subscription","trySubscribe","addNestedSub","isSubscribed","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","contextValue","Provider","refEquality","createSelectorHook","useReduxContext","selector","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestStoreState","latestSelectedState","storeState","newSelectedState","checkForUpdates","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","newBatch","useSelector","__self","__source","jsx","jsxs","forceUpdate","escape","_result","IsSomeRendererActing","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Consumer","createFactory","forwardRef","isValidElement","_defineProperty","sym","_objectSpread2","defineProperties","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","enhancer","_ref2","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","combineReducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","_i","_key","previousStateForKey","nextStateForKey","compose","_len","funcs","applyMiddleware","middlewares","_dispatch","middlewareAPI","chain","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","requestAnimationFrame","port2","port1","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","__assign","__rest","__values","__read","ar","__spreadArray","pack","readBlobAsArrayBuffer","FileReader","readAsArrayBuffer","readBlobAsUint8Array","Uint8Array","isBlob","isSharedArrayBuffer","SharedArrayBuffer","electron","ArrayBufferReader","arrayBufferOrView","typedArray","byteOffset","byteLength","BlobReader","_check","buf","bl","nbuf","_decodeTiny","lmap","LL","pos","bitsE","_bitsE","get17","_get17","lit","ll","_copyOut","src","off","mx","tl","makeCodes","MAX_BITS","bits","max_code","bl_count","next_code","codes2map","r15","rev15","cl","rest","i0","i1","revCodes","imb","dt","_bitsF","u16","Uint16Array","u32","Uint32Array","ordr","of0","exb","ldef","df0","dxb","ddef","flmap","fltree","fdmap","fdtree","ltree","ttree","dmap","dtree","imap","itree","lhst","dhst","ihst","lits","strt","pushV","tgt","sv","crc","tab","inflateRaw","file","u8","bitsF","decodeTiny","noBuf","BFINAL","BTYPE","HLIT","HDIST","HCLEN","ML","MD","mx0","mx1","ebs","dcode","dlit","dbs","dst","p8","inflate","numWorkers","workerURL","useWorkers","nextId","canUseWorkers","workers","availableWorkers","waitingForWorkerQueue","currentlyProcessingIdToRequestMap","handleResult","makeWorkerAvailable","startWorker","Worker","workerHelper","on","btoa","processWaitingForWorkerQueue","inflateRawLocal","uncompressedSize","createWorker","getAvailableWorker","transferables","inflateRawAsync","ZipEntry","rawEntry","_reader","_rawEntry","nameBytes","compressedSize","comment","commentBytes","compressionMethod","lastModDate","lastModFileDate","lastModFileTime","isDirectory","endsWith","encrypted","generalPurposeBitFlag","externalFileAttributes","versionMadeBy","decompress","fileDataStart","readEntryDataHeader","typedArrayOrBlob","readAsBlobOrTypedArray","readEntryDataAsBlob","dataView","readAs","readEntryDataAsArrayBuffer","decodeBuffer","sliceAsBlob","crc$1","unsigned","getUint16LE","uint8View","getUint32LE","getUint64LE","utf8Decoder","isUTF8","readZip64CentralDirectory","zip64EocdlOffset","eocdl","zip64EocdrOffset","zip64Eocdr","entryCount","centralDirectorySize","readEntries","centralDirectoryOffset","rawEntryCount","readEntryCursor","allEntriesBuffer","rawEntries","subarray","signature","versionNeededToExtract","crc32","fileNameLength","extraFieldLength","fileCommentLength","internalFileAttributes","relativeOffsetOfLocalHeader","fileCommentStart","extraFieldBuffer","extraFields","headerId","dataStart","dataEnd","zip64ExtraField","zip64EiefBuffer","nameField","expectedCompressedSize","totalLength","getLength","localFileHeaderEnd","fileDataEnd","unzipRaw","MAX_SAFE_INTEGER","EOCDR_WITHOUT_COMMENT_SIZE","readStart","eocdr","diskNumber","commentLength","expectedCommentLength","findEndOfCentralDirector","fromEntries","_arrayLikeToArray","arr2","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_createForOfIteratorHelper","allowArrayLike","_e","normalCompletion","didErr","step","_e2","_slicedToArray","_s","_arr","_n","_d","unsupportedIterableToArray","_toConsumableArray","arrayLikeToArray","_unsupportedIterableToArray","minLen","isAnimationControls","isKeyframesTarget","presenceId","getPresenceId","PresenceChild","_a","isPresent","onExitComplete","custom","presenceAffectsLayout","presenceChildren","newChildrenMap","childId","e_1","_b","_c","e_1_1","PresenceContext","getChildKey","exitBeforeEnter","forceRenderLayoutGroup","LayoutGroupContext","isInitialRender","filteredChildren","filtered","onlyElements","presentChildren","allChildren","exiting","updateChildLookup","childrenToRender","presentKeys","targetKeys","numPresent","insertionIndex","removeIndex","findIndex","presentChild","LazyContext","strict","createDefinition","propNames","isEnabled","featureDefinitions","measureLayout","drag","hover","tap","pan","inView","loadFeatures","features","projectionNodeConstructor","scaleCorrectors","isForcedMotionValue","layout","layoutId","featureNames","numFeatures","MotionConfigContext","transformPagePoint","isStatic","MotionContext","useIsomorphicLayoutEffect","useVisualElement","visualState","createVisualElement","lazyContext","visualElement","presenceContext","visualElementRef","blockInitialAnimation","syncRender","animationState","animateChanges","notifyUnmount","isRefObject","useCreateMotionContext","inherit","getCurrentTreeVariants","variantLabelsAsDependency","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","SwitchLayoutGroupContext","VisualElementHandler","updateProps","setProps","createMotionComponent","preloadedFeatures","useRender","useVisualState","externalRef","layoutGroupId","useLayoutId","projectionId","ProjectionNodeConstructor","dragConstraints","layoutScroll","initialPromotionConfig","projection","getLatestValues","setOptions","alwaysMeasureLayout","scheduleRender","animationType","useProjection","name_1","useFeatures","mount","useMotionRef","createHtmlRenderState","transform","transformKeys","transformOrigin","vars","copyRawValuesOnly","useStyle","transformTemplate","enableHardwareAcceleration","useInitialMotionValues","transformValues","useHTMLProps","htmlProps","dragListener","draggable","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","validMotionProps","isValidMotionProp","shouldForward","emotionIsPropValid_1","createSvgRenderState","attrs","useSVGProps","visualProps","rawStyles","createUseRender","forwardMotionProps","latestValues","filteredProps","isDom","filterProps","elementProps","unwrappedValue","toValue","makeState","scrapeMotionValuesFromProps","createRenderState","onMount","makeLatestValues","renderState","makeUseVisualState","scrapeMotionValues","motionValues","isControllingVariants","isVariantNode","initialAnimationIsBlocked","variantToSet","definition","transitionEnd","valueTarget","svgMotionConfig","dimensions","getBBox","getBoundingClientRect","htmlMotionConfig","createConfig","customMotionComponentConfig","componentCache","_target","createMotionProxy","baseConfig","CAMEL_CASE_PATTERN","camelToDash","isCSSVariable","lowercaseSVGElements","isSVGComponent","round","numberValueTypes","borderWidth","px","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","radius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","maxWidth","maxHeight","right","bottom","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","margin","marginTop","marginRight","marginBottom","marginLeft","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","distance","translateX","translateY","translateZ","perspective","transformPerspective","originX","originY","originZ","numOctaves","translateAlias","getValueAsType","buildHTMLStyles","hasTransform","hasTransformOrigin","transformIsNone","valueType","valueAsType","transformIsDefault","allowTransformNone","transformString","transformHasZ","numTransformKeys","buildTransform","buildTransformOrigin","renderHTML","styleProp","getProjectionStyles","newValues","transformAxes","transformProps","sortTransformProps","operationKey","axesKey","transformPropSet","isTransformProp","transformOriginProps","isTransformOriginProp","calcOrigin","dashKeys","camelKeys","buildSVGAttrs","attrX","attrY","pathLength","pathSpacing","pathOffset","pxOriginX","pxOriginY","calcSVGTransformOrigin","spacing","useDashCase","buildSVGPath","camelCaseAttributes","renderSVG","isVariantLabels","isVariantLabel","resolveVariantFromProps","currentValues","currentVelocity","variants","resolveVariant","getProps","forEachValue","getCurrent","velocity","getVelocity","checkIfControllingVariants","whileHover","whileDrag","whileTap","whileFocus","checkIfVariantNode","isBrowser","isCustomValue","mix","resolveFinalValueInKeyframes","useConstant","init","useForceUpdate","isUnmountingRef","forcedRenderCount","setForcedRenderCount","useUnmountEffect","isMotionValue","defaultTimestep","getCurrentTime","onNextFrame","useDefaultElapsed","runNextFrame","isProcessing","delta","timestamp","stepsOrder","steps","acc","toRun","toRunNextFrame","numToRun","flushNextFrame","toKeepAlive","schedule","immediate","addToCurrentFrame","frameData","createRenderStep","sync","startLoop","cancelSync","processStep","stepId","processFrame","getFrameData","parseFloat","alpha","createUnitType","unit","degrees","percent","vw","progressPercentage","clamp","sanitize","toFixed","floatRegex","colorRegex","singleColorRegex","isString","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","getter","__esModule","chunkId","miniCssF","hmd","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","onScriptComplete","onload","doneFns","head","loadStylesheet","fullhref","existingLinkTags","dataHref","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","createStylesheet","installedCssChunks","miniCss","installedChunks","j","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","revision","modifiedDate","creationDate","preExpand","sourceGuid","sourceHash","_isIMediaItemSchema","_expandMedium","_isIMediaSchema","schema","MIME_TYPE_STREAM","_isStream","asset","_isDownload","urlPrefix","matchingItems","streamVersions","downloadVersions","matchingVersion","schemaURL","_mediaSchemaFetcher","schemaUrl","fetchResolved","fileContents","mediaSchema","streamAPI","mediaStreamBinder","schemaPrefix","streamCacheName","LOGGINGLEVELSENABLED","Trace","Info","Warn","Fatal","OUTPUTDESTINATIONS","OUTPUTCONFIGURATION","_bindAPI","_bindAsset","_bindConfig","routeConfig","_bindRoute","bindVal","errorLog","displayMessage","hideMessage","matchingIndexes","STORE_NAME","getStore","dispatchAction","ANIMATION_STATES","MAP_TOAST_TYPE_ICON","ToastView","VARIANTS","SIZE_CONTAINERHEIGHT_VH","enter","STYLE_CONTAINER","STYLE_VIEW","ToastRootStyle","ToastRender","messages","globalState","useToastMessages","Message","isShowing","RootView","actionMessage","addSlice","toaster","MESSAGE_DEFAULTS","textAccept","textDecline","onAccept","onDecline","removeOnHide","constructMessage","defaults","_updateStore","newData","stateReturn","_indexesInStore","showPopUp","hidePopUp","removePopUp","updatePopUp","useAlertMessages","PopUpView","AlertRender","alertHider","_defaultAction","newItem","alert","binderToast","binderUserAlert","IRouter","injectRouter","bindRouter","updateLanguageId","updateTourId","usernameFromConfig","mapRouteToProps","authUsername","LaunchRoute","sessionHook","setRoute","LanguageSelect","history","pathname","loadController","didLaunchAction","alternativeRoutePayload","alternativeRouteRequested","coordinator","LanguageSelectRoute","TourSelect","Launch","args1","args2","newRoute","isRoutable","renderResult","TourSelectRoute","Tour","TourRoute","showToast","SiteObjectController","canPush","SiteObject","FloorPlan","floorplanId","popTo","SiteObjectRoute","Controller","setController","controllerIn","_parseToInt","num","FloorplanRoute","goBack","_history","_controller","findFirstPathPrefix","pathPrefixes","idxSearch","findPathPrefix","listen","_route","launch","languageSelect","tourSelect","LocationHistory","routeTarget","curIdx","popCount","go","canPop","allRoutes","interceptorMiddleware","mw","middlewareLogger","middlewareEffect","middlewareInterceptor","interceptor","buildMiddlewares","_defaultReducer","registry","initialReducers","subscribers","SliceAdded","ReducersChanged","combinedReducer","keysToRemove","getReducerMap","reducerRegister","serializableCheck","stores","binderMiddleware","binderReducer","binderStores","binderRenderer","PATH_SERVICE_WORKER","_isDevelopment","ENV_BUILDTYPE","_isProduction","ENV_IS_SW_ENABLED","ENV_SW_OVERRIDE","LoadingView","loadContainerBindings","promiseWrapper","targetContainer","bindStreamAPI","streamAPIBinder","bindUtil","localBindConfig","bindApiService","bindWorker","localBindRouter","localBindStores","localBindController","startServiceWorker","isProduction","swEnableOverride","hasServiceWorker","onPerfEntry","StoreProvider","App","DOMrender","getElementById","startRenderer","__WS_DEVTOOLS_CONTAINER__","reactDevTools","disableReactDevTools","getCLS","getFID","getFCP","getLCP","getTTFB"],"sourceRoot":""}