{"version":3,"file":"static/js/vendors.2592486f.js","mappings":"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YlsC,GAK5B,OAAOqoK,CACT,CASA,SAASC,EAAa16H,EAAQ1uB,GAC5B,KAAkB,OAAX0uB,GAAiB,CACtB,MAAM7xB,EAAOC,EAAyB4xB,EAAQ1uB,GAE9C,GAAInD,EAAM,CACR,GAAIA,EAAKsiC,IACP,OAAO8oH,EAAQprJ,EAAKsiC,KAGtB,GAA0B,oBAAftiC,EAAK/b,MACd,OAAOmnK,EAAQprJ,EAAK/b,MAExB,CAEA4tC,EAASsV,EAAetV,EAC1B,CAEA,SAAS26H,IACP,OAAO,IACT,CAEA,OAAOA,CACT,CC1LO,MAAMC,EAAOt9F,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAIWu9F,EAAMv9F,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGWw9F,EAAax9F,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOWy9F,EAAgBz9F,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGW09F,EAAS19F,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,gBAKW29F,EAAmB39F,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGWhjE,EAAOgjE,EAAO,CAAC,UCrRf6qB,EAAO7qB,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,QACA,SAGW49F,EAAM59F,EAAO,CACxB,gBACA,aACA,WACA,qBACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGW69F,EAAS79F,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UAC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","sources":["cms/actions/services/ClientMainPageItemsServiceAction.ts","cms/actions/services/ContactUsServiceAction.ts","cms/enums/EContentStatus.ts","cms/enums/EContentType.ts","cms/enums/ELayoutType.ts","cms/enums/ERedirectType.ts","cms/enums/EResourceType.ts","cms/enums/EView.ts","cms/enums/EViewType.ts","cms/services/ClientMainPageItemsService.ts","cms/services/ClientSliderItemService.ts","cms/services/ContactUsService.ts","cms/utilities/ApplicationDocumentSelector.ts","cms/utilities/LanguageVersionSelector.ts","cms/utilities/SanitizeHTMLString.ts","cms/actions/components/ContactForm/ContactUsServiceAction.ts","core/actions/common/MessagePublisherAction.ts","cms/enums/ESeverityLevel.ts","components/RMDRTextBox.tsx","components/RMDRTextArea.tsx","components/ContactForm.tsx","components/MainPageLayout/components/MNPG_001.tsx","components/MainPageLayout/components/MNPG_002.tsx","components/MainPageLayout/components/MNPG_003.tsx","components/MainPageLayout/components/MNPG_004.tsx","components/Counter.tsx","components/CounterUp.tsx","components/MainPageLayout/components/MNPG_005.tsx","components/ContactInfoBlock.tsx","components/MainPageLayout/components/MNPG_006.tsx","components/MainPageLayout/components/MNPG_007.tsx","components/MainPageLayout/components/MNPG_008.tsx","components/MainPageLayout/components/MNPG_013.tsx","components/MainPageLayout/components/MNPG_014.tsx","components/MainPageLayout/components/MNPG_015.tsx","components/MainPageLayout/index.tsx","cms/actions/components/MainPageItems/ClientMainPageItemsServiceAction.ts","components/MainPageItems.tsx","cms/enums/EMimeType.ts","components/RMDRImage.tsx","components/RMDRLink.tsx","../node_modules/swiper/shared/ssr-window.esm.mjs","../node_modules/swiper/shared/utils.mjs","../node_modules/swiper/shared/create-element-if-not-defined.mjs","../node_modules/swiper/modules/navigation.mjs","../node_modules/swiper/shared/classes-to-selector.mjs","../node_modules/swiper/modules/pagination.mjs","../node_modules/swiper/modules/autoplay.mjs","../node_modules/swiper/shared/swiper-core.mjs","../node_modules/swiper/shared/update-swiper.mjs","../node_modules/swiper/swiper-react.mjs","../node_modules/swiper/shared/update-on-virtual-data.mjs","components/SliderLayouts/components/SLDR_002.tsx","components/SliderLayouts/index.tsx","components/SliderLayouts/components/SLDR_001.tsx","cms/actions/services/ClientSilderItemServiceAction.ts","cms/actions/components/Slider/ClientSilderItemServiceAction.ts","core/utilities/DateTimeHelper.ts","components/Slider.tsx","core/enums/EEndpointProtocol.ts","core/Defaults.ts","core/utilities/DeleteKeyFromListOfDictionary.ts","core/actions/ActionBase.ts","core/actions/ActionCore.ts","core/actions/OdataActionBase.ts","core/actions/OdataCoreActionBase.ts","core/actions/OdataReadOnlyActionBase.ts","core/actions/common/CoreAction.ts","core/enums/EActionStatus.ts","core/enums/EActionType.ts","core/enums/EHttpMethod.ts","core/enums/EHttpStatusCode.ts","core/enums/EMessageStatus.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","core/extensions/FetchExtension.ts","core/hooks/useProgressiveImage.tsx","core/services/ServiceBase.ts","core/services/OdataCoreServiceBase.ts","core/services/OdataReadOnlyServiceBase.ts","core/services/OdataServiceBase.ts","../node_modules/web-vitals/dist/web-vitals.js","core/extensions/AnalyticsExtension.ts","../node_modules/immer/src/utils/env.ts","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/immer.ts","../node_modules/reselect/src/utils.ts","../node_modules/reselect/src/autotrackMemoize/proxy.ts","../node_modules/reselect/src/weakMapMemoize.ts","../node_modules/reselect/src/createSelectorCreator.ts","../node_modules/reselect/src/createStructuredSelector.ts","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/createDraftSafeSelector.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/getDefaultEnhancers.ts","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/exceptions.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/utils.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/combineSlices.ts","../node_modules/@reduxjs/toolkit/src/formatProdErrorMessage.ts","core/enums/EReduxStoreInitialState.ts","core/utilities/ReduxStoreModifierFunctions.ts","core/reducers/BaseReduxStore.ts","core/reducers/CoreReduxStore.ts","core/reducers/common/CoreStore.ts","core/reducers/common/LanguageStore.ts","core/reducers/common/PopupPublisherStore.ts","core/reducers/index.ts","core/reducers/common/MessagePublisherStore.ts","cms/reducers/common/SiteSettingStore.ts","cms/reducers/common/CMSStore.ts","cms/services/ClientMenuItemService.ts","cms/reducers/services/ClientMenuItemServiceStore.ts","cms/reducers/components/HeaderStore.ts","cms/reducers/services/ClientMainPageItemsServiceStore.ts","cms/services/ClientPagesService.ts","cms/reducers/services/ClientPagesServiceStore.ts","cms/reducers/components/FooterStore.ts","cms/reducers/services/ClientSilderItemServiceStore.ts","cms/services/ClientCategoriesService.ts","cms/reducers/services/ClientCategoriesServiceStore.ts","cms/reducers/components/SliderStore.ts","cms/reducers/components/MainPageItemStore.ts","cms/reducers/components/LatestContents.ts","cms/reducers/components/ShowroomLayoutStore.ts","cms/reducers/services/ContactUsServiceStore.ts","cms/reducers/components/ContactFormStore.ts","cms/reducers/components/InnerLayouts/INNR003Store.ts","cms/services/ClientContentsService.ts","cms/reducers/services/ClientContentsServiceStore.ts","core/services/metrics/ContentMetricsService.ts","core/reducers/service/metrics/ContentMetricsServiceStore.ts","cms/reducers/index.ts","cms/reducers/screens/ContentStore.ts","appReducer.ts","components/WebApplicationRedirector.tsx","core/services/language/LanguageService.ts","core/actions/services/language/LanguageServiceAction.ts","core/actions/common/LanguageServiceAction.ts","cms/actions/components/WebApplicationStarter/LanguageServiceAction.ts","cms/utilities/DetectLanguage.ts","components/WebApplicationStarter.tsx","cms/enums/ESizeType.ts","components/SEO.tsx","components/Error404.tsx","cms/layouts/WebApplicationLayout.tsx","cms/actions/components/Footer/ClientMainPageItemsServiceAction.ts","components/Footer/components/BottomBar.tsx","components/SocialMedia/components/SocialMedia01.tsx","components/Logo.tsx","components/Footer/components/CompanyIntroduction.tsx","components/Footer/components/MiddleBar.tsx","components/Footer/index.tsx","cms/actions/common/CMSAction.ts","core/actions/services/metrics/ContentMetricsServiceAction.ts","cms/actions/components/Header/ContentMetricsServiceAction.ts","cms/actions/services/ClientMenuItemServiceAction.ts","cms/actions/components/Header/ClientMenuItemServiceAction.ts","cms/utilities/MenuComposer.ts","components/RMDRNavLink.tsx","components/Header/components/HeaderMenu.tsx","components/Header/components/MobileMenu.tsx","core/enums/EContentMetricsType.ts","components/Header/index.tsx","cms/services/ClientSiteSettingService.ts","cms/actions/services/ClientSiteSettingServiceAction.ts","cms/actions/common/SiteSettingServiceAction.ts","cms/utilities/PutManifestFileDynamic.ts","components/BackToTop.tsx","cms/layouts/WebApplicationWrapperLayout.tsx","screens/Home.tsx","cms/actions/services/ClientContentsServiceAction.ts","cms/actions/screens/Content/ClientContentsServiceAction.ts","cms/actions/screens/Content/ContentMetricsServiceAction.ts","components/RenderText.tsx","components/ContentHeaderRow.tsx","components/RMDRTextContent.tsx","../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/context/PresenceContext.mjs","../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../node_modules/framer-motion/dist/es/context/LazyContext.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","../node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","../node_modules/framer-motion/dist/es/frameloop/render-step.mjs","../node_modules/framer-motion/dist/es/frameloop/batcher.mjs","../node_modules/framer-motion/dist/es/frameloop/microtask.mjs","../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.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/motion/features/definitions.mjs","../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../node_modules/framer-motion/dist/es/motion/index.mjs","../node_modules/framer-motion/dist/es/motion/features/load-features.mjs","../node_modules/framer-motion/dist/es/render/dom/motion-proxy.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/projection/styles/scale-correction.mjs","../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../node_modules/framer-motion/dist/es/utils/clamp.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","../node_modules/framer-motion/dist/es/value/types/utils.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/units.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-styles.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/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/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.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/render/html/utils/render.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/html/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../node_modules/framer-motion/dist/es/utils/resolve-value.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/utils/noop.mjs","../node_modules/framer-motion/dist/es/frameloop/frame.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/events/add-dom-event.mjs","../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs","../node_modules/framer-motion/dist/es/events/event-info.mjs","../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","../node_modules/framer-motion/dist/es/utils/pipe.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","../node_modules/framer-motion/dist/es/motion/features/Feature.mjs","../node_modules/framer-motion/dist/es/gestures/hover.mjs","../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","../node_modules/framer-motion/dist/es/gestures/press.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","../node_modules/framer-motion/dist/es/motion/features/gestures.mjs","../node_modules/framer-motion/dist/es/gestures/focus.mjs","../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","../node_modules/framer-motion/dist/es/utils/time-conversion.mjs","../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","../node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs","../node_modules/framer-motion/dist/es/frameloop/sync-time.mjs","../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","../node_modules/framer-motion/dist/es/utils/errors.mjs","../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","../node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs","../node_modules/framer-motion/dist/es/value/types/color/utils.mjs","../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","../node_modules/framer-motion/dist/es/value/types/color/hex.mjs","../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","../node_modules/framer-motion/dist/es/value/types/color/index.mjs","../node_modules/framer-motion/dist/es/value/types/complex/index.mjs","../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","../node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs","../node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","../node_modules/framer-motion/dist/es/utils/memo.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","../node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs","../node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs","../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","../node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs","../node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","../node_modules/framer-motion/dist/es/easing/ease.mjs","../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","../node_modules/framer-motion/dist/es/easing/circ.mjs","../node_modules/framer-motion/dist/es/easing/back.mjs","../node_modules/framer-motion/dist/es/easing/utils/map.mjs","../node_modules/framer-motion/dist/es/easing/anticipate.mjs","../node_modules/framer-motion/dist/es/utils/progress.mjs","../node_modules/framer-motion/dist/es/utils/mix/number.mjs","../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","../node_modules/framer-motion/dist/es/utils/mix/immediate.mjs","../node_modules/framer-motion/dist/es/utils/mix/color.mjs","../node_modules/framer-motion/dist/es/utils/mix/visibility.mjs","../node_modules/framer-motion/dist/es/utils/mix/complex.mjs","../node_modules/framer-motion/dist/es/utils/mix/index.mjs","../node_modules/framer-motion/dist/es/utils/interpolate.mjs","../node_modules/framer-motion/dist/es/utils/offsets/default.mjs","../node_modules/framer-motion/dist/es/utils/offsets/fill.mjs","../node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs","../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs","../node_modules/framer-motion/dist/es/utils/offsets/time.mjs","../node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs","../node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs","../node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs","../node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs","../node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs","../node_modules/framer-motion/dist/es/render/dom/scroll/supports.mjs","../node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs","../node_modules/framer-motion/dist/es/render/dom/scroll/observe.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","../node_modules/framer-motion/dist/es/utils/array.mjs","../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","../node_modules/framer-motion/dist/es/value/index.mjs","../node_modules/framer-motion/dist/es/render/utils/setters.mjs","../node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","../node_modules/framer-motion/dist/es/motion/features/animations.mjs","../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","../node_modules/framer-motion/dist/es/utils/distance.mjs","../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","../node_modules/framer-motion/dist/es/projection/geometry/models.mjs","../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","../node_modules/framer-motion/dist/es/projection/utils/measure.mjs","../node_modules/framer-motion/dist/es/utils/get-context-window.mjs","../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","../node_modules/framer-motion/dist/es/gestures/pan/index.mjs","../node_modules/framer-motion/dist/es/projection/node/state.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","../node_modules/framer-motion/dist/es/projection/shared/stack.mjs","../node_modules/framer-motion/dist/es/projection/styles/transform.mjs","../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","../node_modules/framer-motion/dist/es/debug/record.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs","../node_modules/framer-motion/dist/es/utils/delay.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/single-value.mjs","../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","../node_modules/framer-motion/dist/es/motion/features/drag.mjs","../node_modules/framer-motion/dist/es/gestures/drag/index.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","../node_modules/framer-motion/dist/es/render/store.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","../node_modules/framer-motion/dist/es/render/VisualElement.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../node_modules/framer-motion/dist/es/render/dom/motion.mjs","../node_modules/framer-motion/dist/es/motion/features/layout.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.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/utils/use-force-update.mjs","../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","components/RMDRAccordions/components/RMDRAccordion01.tsx","components/RMDRTabs/components/RMDRTab01.tsx","components/ContentRenderer.tsx","components/InnerLayouts/components/INNR_001.tsx","../node_modules/dist/lightgallery.es5.js","../node_modules/src/plugins/thumbnail/lg-thumbnail-settings.ts","../node_modules/src/lg-events.ts","../node_modules/src/plugins/thumbnail/lg-thumbnail.ts","../node_modules/src/plugins/zoom/lg-zoom-settings.ts","../node_modules/src/plugins/zoom/lg-zoom.ts","../node_modules/src/plugins/rotate/lg-rotate-settings.ts","../node_modules/src/plugins/rotate/lg-rotate.ts","../node_modules/src/plugins/fullscreen/lg-fullscreen-settings.ts","../node_modules/src/plugins/fullscreen/lg-fullscreen.ts","../node_modules/src/plugins/share/lg-share-settings.ts","../node_modules/src/plugins/share/lg-fb-share-utils.ts","../node_modules/src/plugins/share/lg-twitter-share-utils.ts","../node_modules/src/plugins/share/lg-pinterest-share-utils.ts","../node_modules/src/plugins/share/lg-share.ts","components/RMDRGallery/components/Gallery01.tsx","components/InnerLayouts/components/INNR_002.tsx","cms/actions/components/InnerLayouts/INNR003/ContactUsServiceAction.ts","components/InnerLayouts/components/INNR_003.tsx","components/RMDRPDFViever/index.tsx","components/InnerLayouts/components/INNR_004.tsx","components/InnerLayouts/components/INNR_005.tsx","components/InnerLayouts/components/INNR_006.tsx","components/InnerLayouts/components/INNR_007.tsx","components/InnerLayouts/components/INNR_008.tsx","components/InnerLayouts/components/INNR_009.tsx","components/InnerLayouts/index.tsx","cms/actions/services/ClientPagesServiceAction.ts","cms/actions/components/ShowroomLayouts/ClientPagesServiceAction.ts","components/ShowroomLayouts/components/SHWRM_001.tsx","components/RMDRGallery/components/Gallery02.tsx","components/GalleryLayouts/components/GLLRY_001.tsx","components/Layouts.tsx","components/ShowroomLayouts/index.ts","components/GalleryLayouts/index.tsx","screens/Content.tsx","components/Preloader/index.tsx","appRoutes.tsx","app.tsx","index.tsx","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/cookie/index.js","../node_modules/dompurify/src/utils.js","../node_modules/dompurify/src/tags.js","../node_modules/dompurify/src/attrs.js","../node_modules/dompurify/src/regexp.js","../node_modules/dompurify/src/purify.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.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/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/wowjs/dist/wow.js","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/platform.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/isVirtualEvent.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/domHelpers.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useFocusVisible.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useLayoutEffect.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useEffectEvent.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/utils.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useFocus.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useFocusWithin.ts","../node_modules/@react-aria/focus/dist/packages/@react-aria/focus/src/useFocusRing.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useHover.ts","../node_modules/universal-cookie/esm/index.mjs"],"sourcesContent":["// action \nimport OdataReadOnlyActionBase from \"core/actions/OdataReadOnlyActionBase\";\n// service\nimport ClientMainPageItemsService from \"cms/services/ClientMainPageItemsService\";\n\n\nclass ClientMainPageItemsServiceAction extends OdataReadOnlyActionBase {\n\n constructor( dispatch: any, screenCode:string ) {\n super(dispatch, ClientMainPageItemsService, screenCode);\n }\n\n}\n\nexport default ClientMainPageItemsServiceAction;\n","// action \nimport OdataActionBase from \"core/actions/OdataActionBase\";\n// service\nimport ContactUsService from \"cms/services/ContactUsService\";\n\n\nclass ContactUsServiceAction extends OdataActionBase {\n\n constructor( dispatch: any, screenCode:string ) {\n super(dispatch, ContactUsService, screenCode);\n }\n\n}\n\nexport default ContactUsServiceAction;\n","const EContentStatusDataSource = {\n \n PASSIVE: { \"id\": 0, \"name\": \"Passive\", \"description\": null }, \n ACTIVE: { \"id\": 1, \"name\": \"Active\", \"description\": null },\n PREVIEW: { \"id\": 2, \"name\": \"Preview\", \"description\": null }\n\n}\n\nenum EContentStatus {\n \n PASSIVE,\n ACTIVE,\n PREVIEW\n\n}\n\n\nexport default EContentStatusDataSource;\nexport {\n\n EContentStatus\n\n}\n","const EContentTypeDataSource = {\n\n DEFAULT : { id: 1, name: \"Default\" },\n PAGE : { id: 2, name: \"Page\" },\n CATEGORY : { id: 4, name: \"Category\" },\n MENU_ITEM : { id: 8, name: \"Menu Item\" },\n SLIDER_ITEM : { id: 16, name: \"Slider Item\" },\n MAIN_PAGE_ITEM : { id: 32, name: \"Main Page Item\" },\n STATISTIC_ITEM : { id: 64, name: \"Statistic Item\" },\n SITE_SETTING : { id: 128,name: \"Site Setting\" },\n DATA : { id: 256,name: \"Data\" },\n\n VENDOR : { id: 2048,name: \"Vendor\" },\n STORE : { id: 4096,name: \"Store\" },\n BRAND : { id: 8192,name: \"Brand\" },\n CATALOG_CATEGORY : { id: 16384, name: \"Catalog Category\" },\n PRODUCT : { id: 32768, name: \"Product\" },\n PRODUCT_VARIANT : { id: 65536, name: \"Product Variant\" }\n\n}\n\n\nenum EContentType {\n\n DEFAULT = 1,\n PAGE = 2,\n CATEGORY = 4,\n MENU_ITEM = 8,\n SLIDER_ITEM = 16,\n MAIN_PAGE_ITEM = 32,\n STATISTIC_ITEM = 64,\n SITE_SETTING = 128,\n DATA = 256,\n\n VENDOR = 2048,\n STORE = 4096,\n BRAND = 8192,\n CATALOG_CATEGORY = 16384,\n PRODUCT = 32768,\n PRODUCT_VARIANT = 65536,\n\n}\n\nexport default EContentTypeDataSource;\nexport {\n\n EContentType\n\n}\n","const ELayoutTypeDataSource = {\n\n MENU_ITEM : { id: 1, name: \"MenuItem\" },\n MENU_GROUP : { id: 2, name: \"MenuGroup\" },\n INNER_PAGE : { id: 3, name: \"InnerPage\" },\n OUTER_PAGE : { id: 4, name: \"OutterPage\" },\n SLIDER : { id: 5, name: \"Slider\" },\n SLIDER_GROUP : { id: 6, name: \"SliderGroup\" },\n SHOWROOM : { id: 7, name: \"Showroom\" },\n GALLERY : { id: 8, name: \"Gallery\" },\n MAIN_PAGE : { id: 9, name: \"MainPage\" },\n MAIN_PAGE_GROUP : { id: 10, name: \"MainPageGroup\" },\n STATISTIC_GROUP : { id: 11, name: \"StatisticGroup\" } \n\n}\n\nenum ELayoutType {\n\n MENU_ITEM = 1,\n MENU_GROUP,\n INNER_PAGE,\n OUTER_PAGE,\n SLIDER,\n SLIDER_GROUP,\n SHOWROOM,\n GALLERY,\n MAIN_PAGE,\n MAIN_PAGE_GROUP,\n STATISTIC_GROUP\n\n}\n\nexport default ELayoutTypeDataSource;\nexport {\n\n ELayoutType\n\n}\n","enum ERedirectType {\n \n STAY_CURRENT_PAGE = 1,\n REDIRECT_NEW_TAB = 2,\n OPEN_POPUP = 3\n \n}\n\nexport default ERedirectType;\n","const EResourceTypeDataSource = {\n \n PARALLAX : { id: 1, name: \"Parallax\" },\n PATTERN : { id: 2, name: \"Pattern\" },\n OUTER_IMAGE : { id: 3, name: \"OutterImage\" },\n INNER_IMAGE : { id: 4, name: \"InnerImage\" },\n VIDEO : { id: 5, name: \"Video\" },\n IMAGE : { id: 6, name: \"Image\" },\n DATA : { id: 7, name: \"Data\" },\n STATISTIC_DATA_SHEET : { id: 8, name: \"StatisticDataSheet\" },\n ICON : { id: 9, name: \"Icon\" },\n LOGO_DEFAULT : { id: 10, name: \"LogoDefault\" },\n LOGO_ONLY : { id: 11, name: \"LogoOnly\" },\n LOGO_WITH_BOTTOM_TEXT : { id: 12, name: \"LogoWithBottomText\" }\n\n}\n\nenum EResourceType {\n \n PARALLAX = 1,\n PATTERN,\n OUTER_IMAGE,\n INNER_IMAGE,\n VIDEO,\n IMAGE,\n DATA,\n STATISTIC_DATA_SHEET,\n ICON,\n LOGO_DEFAULT,\n LOGO_ONLY,\n LOGO_WITH_BOTTOM_TEXT,\n\n}\n\nexport default EResourceTypeDataSource;\nexport {\n EResourceType\n}\n","const EViewDataSource = {\n \n OUTTER : { id: 1, name: \"Outter\" },\n INNER : { id: 2, name: \"Inner\" },\n META_DATA : { id: 4, name: \"MetaData\" }\n \n}\n\nenum EView {\n \n OUTTER = 1,\n INNER = 2,\n META_DATA = 4\n \n}\n\nexport default EViewDataSource;\nexport {\n\n EView\n\n}\n","const EViewTypeDataSource = {\n \n TEXT : { id: 1, name: \"Text\" },\n TAB : { id: 2, name: \"Tab\" },\n ACCORDION : { id: 3, name: \"Accordion\" },\n NAME_DESCRIPTION : { id: 4, name: \"Name and Description\" }\n\n}\n\nenum EViewType {\n \n TEXT = 1,\n TAB,\n ACCORDION,\n NAME_DESCRIPTION\n\n}\n\nexport default EViewTypeDataSource;\nexport {\n\n EViewType\n\n}\n","import ReadOnlyOdataServiceBase from \"core/services/OdataReadOnlyServiceBase\";\n\n\nclass ClientMainPageItemsService extends ReadOnlyOdataServiceBase {\n\n static code = \"202\";\n code = \"202\";\n\n constructor () {\n super({\n sourcePath: \"client-main-page-items\"\n });\n }\n\n}\n\nexport default ClientMainPageItemsService;\n","import ReadOnlyOdataServiceBase from \"core/services/OdataReadOnlyServiceBase\";\n\n\nclass ClientSliderItemService extends ReadOnlyOdataServiceBase {\n\n static code = \"206\";\n code = \"206\";\n\n constructor () {\n\n super({\n sourcePath: \"client-slider-items\"\n });\n\n }\n\n}\n\nexport default ClientSliderItemService;\n","import OdataServiceBase from \"core/services/OdataServiceBase\";\n\n\nclass ContactUsService extends OdataServiceBase {\n\n static code = \"207\";\n code = \"207\";\n\n constructor () {\n\n super( {\n sourcePath: \"contact-us\"\n });\n\n }\n \n}\n\nexport default ContactUsService;\n","import { isEmpty, reject } from \"lodash\";\n// interfaces\nimport IApplicationDocument from \"cms/interfaces/IApplicationDocument\";\n// enums\nimport { EResourceType } from 'cms/enums/EResourceType';\nimport ESizeType from \"cms/enums/ESizeType\";\n// interfaces\nimport IResource from 'cms/interfaces/IResource';\n\n\ntype TApplicationDocumentSelector = {\n\n resources?: IResource[];\n \n resourceType?: EResourceType;\n sizeType?: ESizeType;\n\n type?: \"find\"|\"filter\";\n\n disableDeriveds?: boolean;\n\n}\n\nfunction _find ( props:Readonly ) {\n\n let resource:IResource|undefined;\n if ( props.sizeType !== null && props.sizeType !== undefined ) {\n resource = props.resources?.find((item) => item.resourceTypeId === props.resourceType && item.applicationDocument.sizeType === props.sizeType);\n } else {\n resource = props.resources?.find((item) => item.resourceTypeId === props.resourceType);\n }\n\n const applicationDocument = resource?.applicationDocument;\n const derived = resource?.applicationDocument?.deriveds?.[0];\n \n if ( derived && !isEmpty(derived) && !props.disableDeriveds ) return derived as any;\n else if ( applicationDocument && !isEmpty(applicationDocument) ) return applicationDocument as any;\n\n return null as any;\n}\n\nfunction _filter ( props:Readonly ) {\n\n let resources:IResource[]|undefined;\n if ( props.sizeType !== null && props.sizeType !== undefined ) {\n resources = props.resources?.filter((item) => item.resourceTypeId === props.resourceType && item.applicationDocument.sizeType === props.sizeType);\n } else {\n resources = props.resources?.filter((item) => item.resourceTypeId === props.resourceType);\n }\n\n const applicationDocuments = reject(resources?.map((item) => item.applicationDocument as IApplicationDocument), isEmpty);\n const deriveds = reject(resources?.map((item) => item.applicationDocument.deriveds?.[0]), isEmpty);\n\n if ( deriveds && !isEmpty(deriveds) && !props.disableDeriveds ) return deriveds as any;\n else if ( applicationDocuments && !isEmpty(applicationDocuments) ) return applicationDocuments as any;\n\n return null as any;\n}\n\nfunction ApplicationDocumentSelector ( props:TApplicationDocumentSelector ): T {\n\n if ( !isEmpty(props.resources) ) {\n\n if ( props.type === \"find\" ) {\n\n return _find(props);\n\n } \n else if ( props.type === \"filter\" ) {\n\n return _filter(props);\n\n }\n\n }\n\n return null as any;\n\n}\n\n\nexport type {\n TApplicationDocumentSelector\n}\nexport default ApplicationDocumentSelector;\n","import { isEmpty, find, filter } from \"lodash\";\n// enums\nimport { EView } from 'cms/enums/EView';\nimport { EViewType } from 'cms/enums/EViewType';\nimport { EContentType } from 'cms/enums/EContentType';\n// interfaces\nimport ILanguageVersionList from 'cms/interfaces/ILanguageVersionList';\nimport ILanguageVersionDetail from 'cms/interfaces/ILanguageVersionDetail';\n\n\ntype TLanguageVersionSelector = {\n\n languageVersions?: ILanguageVersionList[]|ILanguageVersionDetail[]|null;\n \n filters: {\n view?: EView;\n viewType?: EViewType;\n contentType?: EContentType;\n name?: string;\n customFilter?: { key:string, value:any }[];\n }[];\n\n type?: 'filter'|'find';\n\n}\n\nfunction LanguageVersionSelector( props:TLanguageVersionSelector ): T {\n\n if ( props.languageVersions && !isEmpty(props.languageVersions) ) {\n\n for ( let filterItem of props.filters ) {\n\n let predicate:any = {},\n data:any = null;\n \n if ( filterItem.view ) predicate[\"view\"] = filterItem.view;\n if ( filterItem.viewType ) predicate[\"viewType\"] = filterItem.viewType;\n if ( filterItem.contentType ) predicate[\"contentType\"] = filterItem.contentType;\n if ( filterItem.name ) predicate[\"name\"] = filterItem.name;\n if ( filterItem.customFilter ) {\n for ( let item of filterItem.customFilter ) {\n predicate[item.key] = item.value;\n }\n }\n\n if ( props.type === 'find' ) data = find(props.languageVersions, predicate) as any;\n else if ( props.type === 'filter' ) data = filter(props.languageVersions, predicate) as any;\n \n if ( data && !isEmpty(data) ) return data;\n\n }\n }\n\n return null as any;\n\n}\n\nLanguageVersionSelector.defaultProps = {\n\n type: 'find'\n\n}\n\nexport default LanguageVersionSelector;\nexport type {\n TLanguageVersionSelector\n};\n","import * as DOMPurify from 'dompurify';\n\nfunction SanitizeHTMLString(value?: string|null) {\n\n return DOMPurify.sanitize(value || \"\",{ FORCE_BODY: true })\n\n}\n\nexport default SanitizeHTMLString;\n","import _ContactUsServiceAction from \"cms/actions/services/ContactUsServiceAction\";\n\n\nconst screenCode = \"20C\";\nclass ContactUsServiceAction extends _ContactUsServiceAction {\n\n constructor( dispatch: any ) {\n super(dispatch, screenCode);\n }\n \n}\n\nexport default ContactUsServiceAction;\n","import EActionType from \"core/enums/EActionType\";\nimport EMessageStatus from \"core/enums/EMessageStatus\";\n\n\nclass MessagePublisherAction {\n\n dispatch:any;\n\n constructor ( dispatch:any ) {\n this.dispatch = dispatch;\n }\n\n /**\n * show success message\n */\n showSuccessMessage( message:string ) {\n this.dispatch({\n type: `${EActionType.PUBLISH_MESSAGE}${EMessageStatus.SUCCESS}`,\n payload: message\n });\n }\n\n /**\n * show error message\n */\n showErrorMessage( message:string ) {\n this.dispatch({\n type: `${EActionType.PUBLISH_MESSAGE}${EMessageStatus.ERROR}`,\n payload: message\n });\n }\n\n /**\n * show warning message\n */\n showWarningMessage( message:string ) {\n this.dispatch({\n type: `${EActionType.PUBLISH_MESSAGE}${EMessageStatus.WARNING}`,\n payload: message\n });\n }\n\n /**\n * show info message\n */\n showInfoMessage( message:string ) {\n this.dispatch({\n type: `${EActionType.PUBLISH_MESSAGE}${EMessageStatus.INFO}`,\n payload: message\n });\n }\n\n}\n\nexport default MessagePublisherAction;\n","enum ESeverityLevel {\n\n ERROR = 0,\n WARNING = 1,\n INFO = 2,\n\n}\n\nexport default ESeverityLevel;\n","import { useState, useEffect } from 'react';\n// enums\nimport ESeverityLevel from 'cms/enums/ESeverityLevel';\n// types\nimport TValidations from 'cms/types/TValidations';\n\n\ntype TRMDRTextBox = {\n\n name: string;\n title: string|null;\n rmdrRef?: any;\n \n value: string|null;\n defaultValue: string|null;\n placeholder: string|null;\n\n errors: TValidations[]|null;\n isDisabled: boolean;\n isAutoFocus: boolean;\n\n mode: string|null;\n\n onValueChanged: (name:string, value?:string|null) => void;\n\n className: string|null;\n disabled: boolean;\n\n}\n\nfunction RMDRTextBox ( props:TRMDRTextBox ) {\n \n const [validation, setValidation] = useState(null);\n\n useEffect(\n () => {\n let __value = props.errors?.find((item:any) => item.propertyName === props.name);\n\n if ( __value ) { \n let className = \"\";\n let inputClassName = \"\";\n \n if (__value.severity === ESeverityLevel.ERROR) {\n className = \"tw-text-base tw-bg-red-100 tw-rounded-t-none tw-text-red-700 tw-border tw-border-solid tw-border-t-0 tw-border-red-700 tw-p-2 tw-rounded text-sm\";\n inputClassName = \"!tw-border-red-700 hover:!tw-border-red-700\";\n }\n else if (__value.severity === ESeverityLevel.WARNING) {\n className = \"tw-text-base tw-bg-orange-100 tw-rounded-t-none tw-text-orange-700 tw-border tw-border-solid tw-border-t-0 tw-border-orange-700 tw-p-2 tw-rounded tw-text-sm\";\n inputClassName = \"!tw-border-orange-700 hover:!tw-border-orange-700\";\n }\n else if (__value.severity === ESeverityLevel.INFO) {\n className = \"tw-text-base tw-bg-blue-100 tw-rounded-t-none tw-text-blue-700 tw-border tw-border-solid tw-border-t-0 tw-border-blue-700 tw-p-2 tw-rounded tw-text-sm\";\n inputClassName = \"!tw-border-blue-700\";\n }\n \n setValidation({ ...__value, className, inputClassName }); \n }\n\n if ( !__value && validation ) setValidation(null);\n }, [ props.errors ]\n )\n\n function valueChanged ( event:any ) {\n if ( props.onValueChanged && event.event !== undefined ) props.onValueChanged(props.name, event.value??undefined);\n if ( validation !== null ) setValidation(null);\n }\n\n return (\n <>\n \n {\n validation &&

{ validation.errorMessage }

\n }\n \n );\n}\n\nRMDRTextBox.defaultProps = {\n\n name: \"RMDRTextBox\",\n title: null,\n rmdrRef: undefined,\n \n value: \"\",\n defaultValue: \"\",\n placeholder: \"\",\n\n validations: [],\n isDisabled: false,\n isAutoFocus: false,\n\n mode: \"text\",\n lookupDataSource: null,\n\n onValueChanged: null,\n\n className: \"\",\n disabled: false,\n\n}\n\nexport default RMDRTextBox;\nexport type {\n TRMDRTextBox\n};\n","import { useState, useEffect } from 'react';\nimport cn from \"classnames\";\n// enums\nimport ESeverityLevel from 'cms/enums/ESeverityLevel';\n// types\nimport TValidations from 'cms/types/TValidations';\n\n\ntype TRMDRTextArea = {\n\n name: string;\n title: string|null;\n rmdrRef?: any;\n \n value: string|null;\n defaultValue: string|null;\n placeholder: string|null;\n rows: number;\n\n errors: TValidations[]|null;\n isDisabled: boolean;\n isAutoFocus: boolean;\n\n onValueChanged: (name:string, value?:string|null) => void;\n\n className?: string;\n disabled: boolean;\n\n}\n\nfunction RMDRTextArea ( props:TRMDRTextArea ) {\n \n const [validation, setValidation] = useState(null);\n\n useEffect(\n () => {\n let __value = props.errors?.find((item:any) => item.propertyName === props.name);\n\n if ( __value ) { \n let className = \"\";\n let inputClassName = \"\";\n \n if (__value.severity === ESeverityLevel.ERROR) {\n className = \"tw-text-base tw-bg-red-100 tw-rounded-t-none tw-text-red-700 tw-border tw-border-solid tw-border-t-0 tw-border-red-700 tw-p-2 tw-rounded text-sm\";\n inputClassName = \"!tw-border-red-700 hover:!tw-border-red-700\";\n }\n else if (__value.severity === ESeverityLevel.WARNING) {\n className = \"tw-text-base tw-bg-orange-100 tw-rounded-t-none tw-text-orange-700 tw-border tw-border-solid tw-border-t-0 tw-border-orange-700 tw-p-2 tw-rounded tw-text-sm\";\n inputClassName = \"!tw-border-orange-700 hover:!tw-border-orange-700\";\n }\n else if (__value.severity === ESeverityLevel.INFO) {\n className = \"tw-text-base tw-bg-blue-100 tw-rounded-t-none tw-text-blue-700 tw-border tw-border-solid tw-border-t-0 tw-border-blue-700 tw-p-2 tw-rounded tw-text-sm\";\n inputClassName = \"!tw-border-blue-700\";\n }\n \n setValidation({ ...__value, className, inputClassName }); \n }\n\n if ( !__value && validation ) setValidation(null);\n }, [ props.errors ]\n )\n\n function valueChanged ( event:any ) {\n if ( props.onValueChanged && event.event !== undefined ) props.onValueChanged(props.name, event.value??undefined);\n if ( validation !== null ) setValidation(null);\n }\n\n return (\n <>\n \n {\n validation &&

{ validation.errorMessage }

\n }\n \n );\n}\n\nRMDRTextArea.defaultProps = {\n name: \"RMDRTextBox\",\n title: null,\n rmdrRef: undefined,\n \n value: \"\",\n defaultValue: \"\",\n placeholder: \"\",\n rows: 1,\n\n validations: [],\n isDisabled: false,\n isAutoFocus: false,\n\n lookupDataSource: null,\n\n onValueChanged: null,\n\n className: \"\",\n disabled: false,\n}\n\nexport default RMDRTextArea;\nexport type {\n TRMDRTextArea\n};\n","import TValidations from \"cms/types/TValidations\";\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport React, { useEffect, useRef } from \"react\";\nimport { isEmpty } from \"lodash\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport ContactUsServiceAction from \"cms/actions/components/ContactForm/ContactUsServiceAction\";\nimport MessagePublisherAction from \"core/actions/common/MessagePublisherAction\";\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport IBase from \"cms/interfaces/IBase\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\nimport RMDRTextBox from \"./RMDRTextBox\";\nimport RMDRTextArea from \"./RMDRTextArea\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionDetail from \"cms/interfaces/ILanguageVersionDetail\";\nimport { EContentType } from \"cms/enums/EContentType\";\nimport cn from \"classnames\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG008.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const contactUsPostPayload:IBase = state.ContactFormStore.ContactUsStore.post.payload;\n const contactUsPostError:TValidations[]|null = state.ContactFormStore.ContactUsStore.post.error?.value;\n const contactUsPostIsLoading:boolean = state.ContactFormStore.ContactUsStore.post.isLoading;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n contactUsPostPayload,\n contactUsPostError,\n contactUsPostIsLoading,\n \n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG008.mapDispatchToProps\");\n\n const messagePublisherAction = new MessagePublisherAction(dispatch);\n const contactUsServiceAction = new ContactUsServiceAction(dispatch);\n\n return {\n\n _post: ( payload: { nameSurname:string|null, email:string|null, title:string|null, message:string|null }, webApplicationLanguageCode:string ) => {\n contactUsServiceAction.post({ servicePayload: { body: payload, language: webApplicationLanguageCode } });\n },\n\n _showMessage: ( message:string ) => { \n messagePublisherAction.showSuccessMessage(message);\n },\n\n _clean: () => {\n contactUsServiceAction.postClean();\n }\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\ntype TContactForm = {\n\n languageVersions?:ILanguageVersionList[]|null;\n className?:string;\n\n} & T;\n\n/* component */\nfunction ContactFormLoader () {\n\n return (\n <>\n )\n\n}\n\nfunction ContactForm ( props:TContactForm ) {\n console.log(\"ContactForm.rendered: \", props);\n\n const contactUsNameSurname = useRef(null);\n const contactUsEmail = useRef(null);\n const contactUsMessage = useRef(null);\n const contactUsTitle = useRef(null);\n\n const enterYourNameString = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"enterYourNameString\" }\n ],\n type: \"find\"\n });\n \n const enterYourEmailString = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"enterYourEmailString\" }\n ],\n type: \"find\"\n });\n\n const enterYourTitleString = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"enterYourTitleString\" }\n ],\n type: \"find\"\n });\n\n const writeYourMessageString = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"writeYourMessageString\" }\n ],\n type: \"find\"\n });\n\n const sendMessageString = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"sendMessageString\" }\n ],\n type: \"find\"\n });\n\n const sendingMessageString = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"sendingMessageString\" }\n ],\n type: \"find\"\n });\n\n const messageHasBeenSentString = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"messageHasBeenSentString\" }\n ],\n type: \"find\"\n });\n\n useEffect(\n () => {\n\n return () => {\n props._clean();\n }\n\n }, []\n )\n\n useEffect(\n () => {\n if ( !isEmpty(props.contactUsPostPayload?.id) ) {\n contactUsNameSurname.current.value = \"\";\n contactUsEmail.current.value = \"\";\n contactUsMessage.current.value = \"\";\n contactUsTitle.current.value = \"\";\n\n props._clean();\n props._showMessage(messageHasBeenSentString?.value||\"\");\n \n }\n }, [ props.contactUsPostPayload ]\n )\n\n function onSubmit(event:React.SyntheticEvent) { \n event.preventDefault();\n\n const target = event.target as typeof event.target & {\n nameSurname: { value: string },\n title: { value: string },\n email: { value: string },\n message: { value: string },\n };\n\n const payload:any = {\n nameSurname: target.nameSurname.value,\n email: target.email.value,\n message: target.message.value,\n title: target.title.value,\n }\n \n props._post(payload, props.webApplicationLanguageCode);\n }\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n );\n};\n\nContactForm.defaultProps = {\n\n className: \"contact-three__form\"\n\n}\n\nconst Component = React.memo(ContactForm, ( prevProps:TContactForm , nextProps:TContactForm ) => {\n console.log(\"ContactForm.memo\", { prevProps, nextProps });\n\n return !(\n prevProps.contactUsPostPayload !== nextProps.contactUsPostPayload\n || prevProps.contactUsPostError !== nextProps.contactUsPostError\n );\n});\n\nexport default connector(Component);\n","import React from \"react\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\n// types\nimport { TMainPageLayout } from \"../type\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport { FaTruckMedical } from \"react-icons/fa6\";\nimport { Link } from \"react-router-dom\";\nimport RMDRLink from \"components/RMDRLink\";\nimport RMDRImage from \"components/RMDRImage\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\n\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG001.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload,\n \n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG001.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n\n/* component */\nfunction MMNPG001Loader () {\n\n return (\n <>\n \n \n )\n\n}\n\nconst MNPG001 = ( props:TMainPageLayout ) => {\n console.log(\"MNPG001.rendered\", props)\n\n const parentLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.MAIN_PAGE_ITEM },\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n
\n {\n props.childsPayload?.map((item) => {\n\n const languageVersion = LanguageVersionSelector({\n languageVersions: item?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n const redirectUrl = LanguageVersionSelector({\n languageVersions: item?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"redirectUrl\" }\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n

\n \n

\n

\n {/*

\n Read more\n
*/}\n
\n
\n
\n )\n\n // return (\n //
\n //
\n //
\n // \n // \n // \n //
\n //

\n // \n //

\n //
\n //
\n // )\n\n })\n }\n
\n
\n
\n )\n\n}\n\n\nconst Component = React.memo(MNPG001, ( prevProps:TMainPageLayout, nextProps:TMainPageLayout ) => {\n return true;\n});\n\nexport default Component;","import React from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\n// actions\nimport { TMainPageLayout } from \"../type\";\n// interfaces\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\n// utilities\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport RMDRImage from \"components/RMDRImage\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG002.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload\n\n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG002.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n\n/* component */\nfunction MMNPG002Loader () {\n\n return (\n <>\n )\n\n}\n\nfunction MNPG002 ( props:TMainPageLayout ) {\n console.log(\"MNPG002.rendered\", props)\n\n const parentLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.MAIN_PAGE_ITEM },\n // { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT },\n ],\n type: \"find\"\n });\n\n const descriptionLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.TEXT, contentType: EContentType.MAIN_PAGE_ITEM },\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n {parentLanguageVersion?.name}\n
\n

\n

\n
\n
\n
\n
\n
\n
\n )\n\n}\n\nconst Component = React.memo(MNPG002, ( prevProps: TMainPageLayout, nextProps: TMainPageLayout ) => {\n return true;\n});\n\nexport default connector(Component);\n","import React, { useEffect } from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\n// actions\nimport { TMainPageLayout } from \"../type\";\n// interfaces\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport { Link } from \"react-router-dom\";\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\nimport RMDRImage from \"components/RMDRImage\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport RMDRLink from \"components/RMDRLink\";\nimport useProgressiveImage from \"core/hooks/useProgressiveImage\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG003.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload\n\n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG003.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n\n/* component */\nfunction MMNPG003Loader () {\n\n return (\n <>\n )\n\n}\n\nfunction MNPG003 ( props:TMainPageLayout ) {\n console.log(\"MNPG003.rendered\", props)\n\n const parentLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.MAIN_PAGE_ITEM },\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n const loaded = useProgressiveImage({ src:\"/assets/images/shapes/services-six-bg-shape.webp\" });\n\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n {parentLanguageVersion?.name}\n
\n

\n

\n
\n
\n
\n {\n props.childsPayload?.map((item) => {\n\n const childLanguageVersion = LanguageVersionSelector({\n languageVersions: item?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n const redirectUrl = LanguageVersionSelector({\n languageVersions: item?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"redirectUrl\" }\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n

\n \n

\n

\n {/*

\n Read more\n
*/}\n
\n
\n
\n )\n\n })\n }\n
\n
\n
\n
\n )\n\n}\n\nconst Component = React.memo(MNPG003, ( prevProps: TMainPageLayout, nextProps: TMainPageLayout ) => {\n return true;\n});\n\nexport default connector(Component);\n","import React from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\n// actions\nimport { TMainPageLayout } from \"../type\";\n// interfaces\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\n// utilities\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport { Link } from \"react-router-dom\";\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\nimport RMDRImage from \"components/RMDRImage\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG004.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload,\n \n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG004.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n\n/* component */\nfunction MMNPG004Loader () {\n\n return (\n <>\n )\n\n}\n\nfunction MNPG004 ( props:TMainPageLayout ) {\n console.log(\"MNPG004.rendered\", props)\n\n const parentLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.MAIN_PAGE_ITEM },\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n
\n
\n {parentLanguageVersion?.name}\n
\n

\n

\n
\n
\n
    \n {\n props.childsPayload?.slice(0,3)?.map((item) => {\n\n const childLanguageVersion = LanguageVersionSelector({\n languageVersions: item?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n return (\n
  • \n
    \n
    \n \n
    \n
    \n

    {childLanguageVersion?.name}

    \n

    \n

    \n
    \n {/*
    \n Read more\n
    */}\n
  • \n )\n\n })\n }\n
\n
\n
\n
    \n {\n props.childsPayload?.slice(3,6)?.map((item) => {\n\n const childLanguageVersion = LanguageVersionSelector({\n languageVersions: item?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n return (\n
  • \n
    \n
    \n \n
    \n
    \n

    {childLanguageVersion?.name}

    \n

    \n

    \n
    \n {/*
    \n Read more\n
    */}\n
  • \n )\n\n })\n }\n
\n
\n
\n \n
\n
\n )\n\n}\n\nconst Component = React.memo(MNPG004, ( prevProps: TMainPageLayout, nextProps: TMainPageLayout ) => {\n return true;\n});\n\nexport default connector(Component);\n","import { useEffect, useRef, useState } from 'react'\n\n\nexport default function Counter({ end, duration }:any) {\n const [count, setCount] = useState(0)\n const countRef = useRef(null)\n const increment = end / duration\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n startCount()\n observer.disconnect()\n }\n },\n { threshold: 0 }\n )\n\n if (countRef.current) {\n observer.observe(countRef.current)\n }\n\n return () => {\n observer.disconnect()\n }\n }, [])\n\n useEffect(() => {\n const interval = setInterval(() => {\n setCount((prevCount) => {\n const newCount = prevCount + increment\n if (newCount >= end) {\n clearInterval(interval)\n return end\n } else {\n return newCount\n }\n })\n }, 1000 / duration)\n\n return () => {\n clearInterval(interval)\n }\n }, [end, increment])\n\n const startCount = () => {\n setCount(0)\n }\n\n return (\n \n {Math.round(count)}\n \n )\n}","'use client'\r\nimport { useEffect, useState } from 'react'\r\nimport Counter from './Counter'\r\n\r\nexport default function CounterUp({ end }:any) {\r\n const [inViewport, setInViewport] = useState(false)\r\n\r\n const handleScroll = () => {\r\n const elements = document.getElementsByClassName('count-text')\r\n if (elements.length > 0) {\r\n const element = elements[0]\r\n const rect = element.getBoundingClientRect()\r\n const isInViewport = rect.top >= 0 && rect.bottom <= window.innerHeight\r\n if (isInViewport && !inViewport) {\r\n setInViewport(true)\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n window.addEventListener('scroll', handleScroll)\r\n return () => {\r\n window.removeEventListener('scroll', handleScroll)\r\n }\r\n }, [])\r\n return (\r\n <>\r\n {inViewport && }\r\n \r\n )\r\n}\r\n","import React from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\n// actions\nimport { TMainPageLayout } from \"../type\";\n// interfaces\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport { Link } from \"react-router-dom\";\nimport CounterUp from \"components/CounterUp\";\nimport ApplicationDocumentSelector from \"cms/utilities/ApplicationDocumentSelector\";\nimport IApplicationDocument from \"cms/interfaces/IApplicationDocument\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport CoreDefault from \"core/Defaults\";\nimport { isEmpty } from \"lodash\";\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\nimport useProgressiveImage from \"core/hooks/useProgressiveImage\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG005.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload,\n \n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG005.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n\n/* component */\nfunction MMNPG005Loader () {\n\n return (\n <>\n )\n\n}\n\nfunction MNPG005 ( props:TMainPageLayout ) {\n console.log(\"MNPG005.rendered\", props)\n\n const parentLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.MAIN_PAGE_ITEM },\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n const yearsOfExperienceString = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"yearsOfExperienceString\" }\n ],\n type: \"find\"\n });\n\n const yearsOfExperience = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"yearsOfExperience\" }\n ],\n type: \"find\"\n });\n\n const projectString = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"projectString\" }\n ],\n type: \"find\"\n });\n\n const project = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"project\" }\n ],\n type: \"find\"\n });\n\n const corporateReferenceString = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"corporateReferenceString\" }\n ],\n type: \"find\"\n });\n\n const corporateReference = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"corporateReference\" }\n ],\n type: \"find\"\n });\n\n const productivityString = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"productivityString\" }\n ],\n type: \"find\"\n });\n\n const productivity = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"productivity\" }\n ],\n type: \"find\"\n });\n\n const outerImage = ApplicationDocumentSelector({\n resources: props.parentPayload.resources,\n resourceType: EResourceType.OUTER_IMAGE,\n type: \"find\"\n });\n\n const emailString = LanguageVersionSelector({\n languageVersions: props.childsPayload?.[0]?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"emailString\" }\n ],\n type: \"find\"\n });\n\n const email = LanguageVersionSelector({\n languageVersions: props.childsPayload?.[0]?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"email\" }\n ],\n type: \"find\"\n });\n\n const phoneNumberString = LanguageVersionSelector({\n languageVersions: props.childsPayload?.[0]?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"phoneNumberString\" }\n ],\n type: \"find\"\n });\n\n const phone01 = LanguageVersionSelector({\n languageVersions: props.childsPayload?.[0]?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"phone01\" }\n ],\n type: \"find\"\n });\n\n const phone02 = LanguageVersionSelector({\n languageVersions: props.childsPayload?.[0]?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"phone02\" }\n ],\n type: \"find\"\n });\n\n\n const loaded = useProgressiveImage({ src:outerImage?.filePath ? `${CoreDefault.cdn}/${outerImage.filePath.replace(\"\\\\\", \"/\")}` : null });\n console.log(\"MNPG005.loaded\", loaded);\n\n return (\n <>\n
\n
\n
\n
\n
\n
\n \n
\n\n {/*
\n
\n {parentLanguageVersion?.name}\n
\n

\n

\n

*/}\n\n

\n
\n\n
    \n
  • \n
    \n \n
    \n
    \n {phoneNumberString?.value}\n

    \n {phone01?.value}
    \n {phone02?.value}\n

    \n
    \n
  • \n
  • \n
    \n \n
    \n
    \n {emailString?.value}\n

    \n {email?.value}
    \n  \n

    \n
    \n
  • \n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
    \n
  • \n
    \n \n +\n
    \n
    \n \n +\n
    \n

    \")||\"\"}} />\n

  • \n
  • \n
    \n \n +\n
    \n
    \n \n +\n
    \n

    \")||\"\"}} />\n

  • \n
  • \n
    \n \n +\n
    \n
    \n \n +\n
    \n

    \")||\"\"}} />\n

  • \n
  • \n
    \n \n %\n
    \n
    \n \n %\n
    \n

    \")||\"\"}} />\n

  • \n
\n
\n
\n
\n \n \n );\n\n}\n\nconst Component = React.memo(MNPG005, ( prevProps: TMainPageLayout, nextProps: TMainPageLayout ) => {\n return true;\n});\n\nexport default connector(Component);\n","import { IoLocationSharp, IoMail, IoCallSharp } from 'react-icons/io5';\n// interfaces\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport ILanguageVersionDetail from 'cms/interfaces/ILanguageVersionDetail';\nimport LanguageVersionSelector from 'cms/utilities/LanguageVersionSelector';\n\n\n/* types */\ntype TContactInfoBlock = {\n\n title?:string|null;\n languageVersions?:ILanguageVersionList[]|ILanguageVersionDetail[]|null;\n className?:string;\n\n}\n\n\n/* component */\nfunction ContactInfoBlockLoader () {\n\n return (\n <>\n )\n\n}\n\nfunction ContactInfoBlock ( props:TContactInfoBlock ) {\n\n if ( props.languageVersions ) {\n\n const addressString = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"addressString\" }\n ],\n type: \"find\"\n });\n const address = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"address\" }\n ],\n type: \"find\"\n });\n const phoneNumberString = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"phoneNumberString\" }\n ],\n type: \"find\"\n });\n const phone01 = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"phone01\" }\n ],\n type: \"find\"\n });\n const phone02 = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"phone02\" }\n ],\n type: \"find\"\n });\n const emailString = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"emailString\" }\n ],\n type: \"find\"\n });\n const email = LanguageVersionSelector({\n languageVersions: props.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"email\" }\n ],\n type: \"find\"\n });\n\n return (\n
\n\n
\n
\n \n
\n
\n
\n {addressString?.value}\n
\n
\n {address?.value}\n
\n
\n
\n\n
\n
\n \n
\n
\n
\n {emailString?.value}\n
\n
\n {email?.value}\n
\n
\n
\n\n
\n
\n \n
\n
\n
\n {phoneNumberString?.value}\n
\n
\n {phone01?.value}
\n {phone02?.value}\n
\n
\n
\n\n
\n );\n }\n\n return \n};\n\nexport default ContactInfoBlock;\n","import React from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\n// actions\nimport { TMainPageLayout } from \"../type\";\n// interfaces\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport { Link } from \"react-router-dom\";\nimport ContactForm from \"components/ContactForm\";\nimport ContactInfoBlock from \"components/ContactInfoBlock\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG006.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload\n \n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG006.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n\n/* component */\nfunction MMNPG006Loader () {\n\n return (\n <>\n )\n\n}\n\nfunction MNPG006 ( props:TMainPageLayout ) {\n console.log(\"MNPG006.rendered\", props)\n\n const parentLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.MAIN_PAGE_ITEM },\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n const weAreHereToHelp = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"weAreHereToHelp\" }\n ],\n type: \"find\"\n });\n const contactOurTeam = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"contactOurTeam\" }\n ],\n type: \"find\"\n });\n \n return (\n
\n
\n
\n
\n
\n\n
\n
\n {weAreHereToHelp?.value}\n
\n

{contactOurTeam?.value}

\n
\n \n
\n\n \n\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n )\n\n}\n\nconst Component = React.memo(MNPG006, ( prevProps: TMainPageLayout, nextProps: TMainPageLayout ) => {\n return true;\n});\n\nexport default connector(Component);\n","import React, { useEffect } from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\n// components\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\n// actions\nimport { TMainPageLayout } from \"../type\";\n// interfaces\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG007.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload\n \n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG007.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n/* component */\nfunction MMNPG007Loader () {\n\n return (\n <>\n )\n\n}\n\n\nfunction MNPG007 ( props:TMainPageLayout ) {\n console.log(\"MNPG007.rendered\", props)\n\n const parentLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.MAIN_PAGE_ITEM },\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n useEffect(\n () => {\n\n }, []\n )\n\n return (\n <>\n \n )\n\n}\n\nconst Component = React.memo(MNPG007, ( prevProps: TMainPageLayout, nextProps: TMainPageLayout ) => {\n return true;\n});\n\nexport default connector(Component);\n","import React from \"react\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\n// types\nimport { TMainPageLayout } from \"../type\";\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { EContentType } from \"cms/enums/EContentType\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG008.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload\n\n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG008.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n\n/* component */\nfunction MMNPG008Loader () {\n\n return (\n <>\n )\n\n}\n\nfunction MNPG008 ( props: TMainPageLayout ) {\n console.log(\"MNPG008.rendered\", props) \n\n const parentLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.MAIN_PAGE_ITEM },\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n return (\n <>\n \n )\n\n}\n\nconst Component = React.memo(MNPG008, ( prevProps:TMainPageLayout , nextProps:TMainPageLayout ) => {\n return true;\n});\n\nexport default connector(Component);\n","import React from \"react\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\n// types\nimport { TMainPageLayout } from \"../type\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport { FaTruckMedical } from \"react-icons/fa6\";\nimport { Link } from \"react-router-dom\";\nimport RMDRLink from \"components/RMDRLink\";\nimport RMDRImage from \"components/RMDRImage\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\n\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG0013.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload,\n \n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG0013.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n\n/* component */\nfunction MMNPG0013Loader () {\n\n return (\n <>\n \n \n )\n\n}\n\nconst MNPG0013 = ( props:TMainPageLayout ) => {\n console.log(\"MNPG0013.rendered\", props)\n\n const parentLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.MAIN_PAGE_ITEM },\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n
\n {\n props.childsPayload?.map((item) => {\n\n const languageVersion = LanguageVersionSelector({\n languageVersions: item?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n const redirectUrl = LanguageVersionSelector({\n languageVersions: item?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"redirectUrl\" }\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n
\n
\n \n
\n
\n
\n

\n \n

\n

\n {/*

\n Read more\n
*/}\n
\n
\n
\n )\n\n // return (\n //
\n //
\n //
\n // \n // \n // \n //
\n //

\n // \n //

\n //
\n //
\n // )\n\n })\n }\n
\n
\n
\n )\n\n}\n\n\nconst Component = React.memo(MNPG0013, ( prevProps:TMainPageLayout, nextProps:TMainPageLayout ) => {\n return true;\n});\n\nexport default Component;","import React from \"react\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\n// types\nimport { TMainPageLayout } from \"../type\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport { FaTruckMedical } from \"react-icons/fa6\";\nimport { Link } from \"react-router-dom\";\nimport RMDRLink from \"components/RMDRLink\";\nimport RMDRImage from \"components/RMDRImage\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\n\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG0014.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload,\n \n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG0014.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n\n/* component */\nfunction MMNPG0014Loader () {\n\n return (\n <>\n \n \n )\n\n}\n\nconst MNPG0014 = ( props:TMainPageLayout ) => {\n console.log(\"MNPG0014.rendered\", props)\n\n const parentLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.MAIN_PAGE_ITEM },\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n
\n {\n props.childsPayload?.map((item) => {\n\n const languageVersion = LanguageVersionSelector({\n languageVersions: item?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n const redirectUrl = LanguageVersionSelector({\n languageVersions: item?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"redirectUrl\" }\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n
\n \n \n \n
\n

\n \n

\n
\n
\n )\n\n })\n }\n
\n
\n
\n )\n\n}\n\n\nconst Component = React.memo(MNPG0014, ( prevProps:TMainPageLayout, nextProps:TMainPageLayout ) => {\n return true;\n});\n\nexport default Component;","import React from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\nimport cn from \"classnames\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\n// actions\nimport { TMainPageLayout } from \"../type\";\n// interfaces\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\n// utilities\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport { Link } from \"react-router-dom\";\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\nimport RMDRImage from \"components/RMDRImage\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MNPG015.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload,\n \n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MNPG015.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n\n/* component */\nfunction MMNPG015Loader () {\n\n return (\n <>\n )\n\n}\n\nfunction MNPG015 ( props:TMainPageLayout ) {\n console.log(\"MNPG015.rendered\", props)\n\n const parentLanguageVersion = LanguageVersionSelector({\n languageVersions: props.parentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.MAIN_PAGE_ITEM },\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n
\n {/*
\n {parentLanguageVersion?.name}\n
*/}\n

\n

\n
\n {\n Array.from(Array(3)).map((pItem:any, pIndex:number) => {\n return (\n
\n \n {\n props.childsPayload?.slice(pIndex*2,(pIndex+1)*2)?.map((item, index) => {\n\n const childLanguageVersion = LanguageVersionSelector({\n languageVersions: item?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n return (\n
    \n
  • \n
    \n
    \n \n
    \n
    \n

    {childLanguageVersion?.name}

    \n {/*

    */}\n

    \n
    \n {/*
    \n Read more\n
    */}\n
  • \n
\n )\n\n })\n }\n \n
\n )\n })\n }\n \n
\n \n
\n
\n )\n\n}\n\nconst Component = React.memo(MNPG015, ( prevProps: TMainPageLayout, nextProps: TMainPageLayout ) => {\n return true;\n});\n\nexport default connector(Component);\n","import MNPG_001 from \"./components/MNPG_001\";\nimport MNPG_002 from \"./components/MNPG_002\";\nimport MNPG_003 from \"./components/MNPG_003\";\nimport MNPG_004 from \"./components/MNPG_004\";\nimport MNPG_005 from \"./components/MNPG_005\";\nimport MNPG_006 from \"./components/MNPG_006\";\nimport MNPG_007 from \"./components/MNPG_007\";\nimport MNPG_008 from \"./components/MNPG_008\";\nimport MNPG_013 from \"./components/MNPG_013\";\nimport MNPG_014 from \"./components/MNPG_014\";\nimport MNPG_015 from \"./components/MNPG_015\";\n\nconst MainPageLayout:any = {\n \n MNPG_001,\n MNPG_002,\n MNPG_003,\n MNPG_004,\n MNPG_005,\n MNPG_006,\n MNPG_007,\n MNPG_008,\n MNPG_013,\n MNPG_014,\n MNPG_015,\n\n}\n\nexport default MainPageLayout;\n","import _ClientMainPageItemsServiceAction from \"cms/actions/services/ClientMainPageItemsServiceAction\";\n\n\nconst screenCode = \"207\";\nclass ClientMainPageItemsServiceAction extends _ClientMainPageItemsServiceAction {\n\n constructor( dispatch: any ) {\n super(dispatch, screenCode);\n }\n \n}\n\nexport default ClientMainPageItemsServiceAction;\n","import React, { useEffect, useState } from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport Lodash from \"lodash\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\n// components\nimport MainPageLayout from \"components/MainPageLayout\";\n// actions\nimport CoreAction from \"core/actions/common/CoreAction\";\nimport ClientMainPageItemsServiceAction from \"cms/actions/components/MainPageItems/ClientMainPageItemsServiceAction\";\n// interfaces\nimport IOdataQueryOptions from \"core/interfaces/IOdataQueryOptions\";\nimport IClientMainPageItemList from \"cms/interfaces/IClientMainPageItemList\";\nimport ILayoutList from \"cms/interfaces/ILayoutList\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\n// enums\nimport ELayoutTypeDataSource from \"cms/enums/ELayoutType\";\nimport { EContentStatus } from \"cms/enums/EContentStatus\";\n// types\nimport TValidations from \"cms/types/TValidations\";\n// styles\nimport 'react-tabs/style/react-tabs.css';\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MainPageItems.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const mainPageItemsListPayload:IClientMainPageItemList[] = state.MainPageItemStore.ClientMainPageItemsStore.list?.payload;\n const mainPageItemsListError:TValidations[]|null = state.MainPageItemStore.ClientMainPageItemsStore.list?.error;\n const mainPageItemsListIsLoading:boolean = state.MainPageItemStore.ClientMainPageItemsStore.list?.isLoading;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n const siteSettingDetailError:TValidations[]|null = state.SiteSettingStore.details?.error;\n const siteSettingDetailIsLoading:boolean = state.SiteSettingStore.details?.isLoading;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n mainPageItemsListPayload,\n mainPageItemsListError,\n mainPageItemsListIsLoading,\n\n siteSettingDetailPayload,\n siteSettingDetailError,\n siteSettingDetailIsLoading,\n \n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MainPageItems.mapDispatchToProps\");\n\n const coreAction = new CoreAction(dispatch);\n const clientMainPageItemsServiceAction = new ClientMainPageItemsServiceAction(dispatch);\n\n return {\n // list\n _listClientMainPageItems: ( mapLayoutName:string, webApplicationLanguageCode:string ) => {\n let queryOptions:IOdataQueryOptions = {\n filter: [`mapLayoutName eq '${mapLayoutName}'`, \"and\", `status eq ${EContentStatus.ACTIVE}`],\n orderBy: [\"order asc\"],\n top: 1000\n };\n\n clientMainPageItemsServiceAction.list({ servicePayload: { queryOptions, language: webApplicationLanguageCode } });\n },\n\n _hideLoader: () => {\n coreAction.hideLoader();\n }\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\ntype TMainPageItems = {\n\n mapLayoutName?: string;\n \n} & T;\n\n\n/* component */\nfunction MainPageItemsLoader () {\n\n return (\n <>\n )\n\n}\n\nfunction MainPageItems (props: TMainPageItems) {\n console.log(\"MainPageItems.rendered: \", props);\n\n // TODO: Her bir main page item ın kendi loader elementi olacak. API den bilgi gelene kadar gözükecek.\n\n const [ mainPageParentLayouts, setMainPageParentLayouts ] = useState(null);\n\n useEffect(\n () => {\n if ( props.mapLayoutName && !Lodash.isEmpty(props.mapLayoutName) ) \n props._listClientMainPageItems( props.mapLayoutName, props.webApplicationLanguageCode );\n }, [ props.mapLayoutName ]\n )\n\n useEffect (\n () => {\n\n if ( props.mainPageItemsListPayload && !Lodash.isEmpty(props.mainPageItemsListPayload) && !props.mainPageItemsListIsLoading ) {\n setMainPageParentLayouts(props.mainPageItemsListPayload?.filter((item:IClientMainPageItemList) => item.parentId === null ))\n }\n\n setTimeout(() => { props._hideLoader(); }, 100);\n \n }, [ props.mainPageItemsListIsLoading ]\n )\n\n if ( mainPageParentLayouts && !Lodash.isEmpty(mainPageParentLayouts) && !props.mainPageItemsListIsLoading ) {\n\n return (\n <>\n {\n mainPageParentLayouts?.map((item:IClientMainPageItemList) => { \n const layout = item.layouts.find((item:ILayoutList) => item.layoutType === ELayoutTypeDataSource.MAIN_PAGE.id );\n\n if ( layout ) {\n const Layout = MainPageLayout[layout.layoutName];\n const childs = props.mainPageItemsListPayload?.filter((cItem:IClientMainPageItemList) => cItem.parentId === item.id);\n \n if ( Layout ) {\n return \n }\n }\n\n return null;\n })\n }\n \n )\n\n }\n else if ( props.mainPageItemsListIsLoading ) {\n \n return ;\n \n }\n\n return ( <> );\n \n}\n\nMainPageItems.defaultProps = {\n\n mapLayoutName: \"MNPGGRP_001\"\n\n}\n\nconst Component = React.memo(MainPageItems, (prevProps:TMainPageItems, nextProps:TMainPageItems) => {\n console.log(\"MainPageItems.memo\", { prevProps, nextProps });\n return !(prevProps.mainPageItemsListIsLoading !== nextProps.mainPageItemsListIsLoading );\n});\n\nexport default connector(Component);\n","const EMimeType = {\n\n AVIF: { id: 1, name: \"image/avif\" },\n BMP: { id: 2, name: \"image/bmp\" },\n GIF: { id: 3, name: \"image/gif\" },\n JPEG: { id: 4, name: \"image/jpeg\" },\n JPG: { id: 5, name: \"image/jpg\" },\n PNG: { id: 6, name: \"image/png\" },\n SVG: { id: 7, name: \"image/svg+xml\" },\n TIFF: { id: 8, name: \"image/tiff\" },\n WEBP: { id: 9, name: \"image/webp\" }\n\n}\n\nexport default EMimeType;\n","import { useEffect, useState, CSSProperties } from \"react\";\nimport { isEmpty } from \"lodash\";\nimport CoreDefaults from 'core/Defaults';\n// utilities\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\nimport ApplicationDocumentSelector from \"cms/utilities/ApplicationDocumentSelector\";\n// enums\nimport { EResourceType } from 'cms/enums/EResourceType';\nimport ESizeType from \"cms/enums/ESizeType\";\nimport EMimeType from \"cms/enums/EMimeType\";\n// interfaces\nimport IResource from 'cms/interfaces/IResource';\nimport IApplicationDocument from \"cms/interfaces/IApplicationDocument\";\n// image\nimport defaultImage from \"assets/img/default-image.webp\";\nimport TMimeType from \"cms/types/TMimeType\";\n\n\ntype TRMDRImage = {\n\n id?:string;\n src?: string;\n\n resources?: IResource[];\n \n resourceType?: EResourceType;\n sizeType?: ESizeType;\n\n alt?: string|null;\n title?: string|null;\n\n style?: CSSProperties;\n className?: string; \n\n width?: number|string;\n height?: number|string;\n\n disableLazyLoading?:boolean;\n\n}\n\ntype TImagePayload = {\n \n imageSource:any;\n alt:string;\n title:string;\n contentType:TMimeType;\n width:number;\n height:number;\n isLoad:boolean;\n _isError:boolean;\n\n}\n\n\nfunction RMDRImage ( props:Readonly ) {\n\n const [ payload, setPayload ] = useState(null);\n\n useEffect(\n () => {\n \n const applicationDocument = ApplicationDocumentSelector({ \n resources: props.resources,\n resourceType: props.resourceType,\n sizeType: props.sizeType,\n type: \"find\"\n });\n\n if ( !isEmpty(applicationDocument) && applicationDocument ) {\n\n const imageURL = `${CoreDefaults.cdn}/${applicationDocument.filePath}`;\n if ( applicationDocument.contentType === EMimeType.SVG.name ) {\n\n let _imageSource:any = null;\n let _isError:boolean = false;\n\n fetch(\n imageURL, \n { method: \"GET\", mode: 'cors' }\n )\n .then(res => res.text())\n .then((value:any) => _imageSource = value)\n .catch(() => _isError = true)\n .then(() => setPayload({ imageSource: _imageSource, alt:props.alt||applicationDocument.name, title:props.title||applicationDocument.name, contentType: applicationDocument.contentType, width: applicationDocument.width, height: applicationDocument.height, isLoad: true, _isError: _isError }))\n \n }\n else {\n\n setPayload({ imageSource: imageURL, alt:props.alt||applicationDocument.name, title:props.title||applicationDocument.name, contentType: applicationDocument.contentType, width: applicationDocument.width, height: applicationDocument.height, isLoad: true, _isError: false});\n\n }\n\n }\n\n }, [ props.resources ]\n );\n\n function replaceImage (error:any) {\n \n error.target.path = defaultImage;\n \n }\n\n if ( payload?.imageSource && !isEmpty(payload?.imageSource) ) {\n if ( payload.contentType === EMimeType.SVG.name ) {\n if ( payload.imageSource && payload.isLoad && !payload._isError ) {\n return
;\n }\n }\n else {\n return {payload.alt}\n }\n }\n else if ( props?.src && !isEmpty(props?.src) ) {\n\n return {props.alt||undefined}\n\n\n }\n\n return null;\n\n}\n\nexport default RMDRImage;\nexport type {\n TRMDRImage\n};\n","import { CSSProperties, JSXElementConstructor, ReactNode } from \"react\";\nimport { isEmpty,isNumber, reject } from \"lodash\";\nimport { Link } from \"react-router-dom\";\n// enums\nimport ERedirectType from 'cms/enums/ERedirectType';\n\ntype Variant = 'a' | 'div';\n\ntype TRMDRLink = {\n\n title?: string|null;\n text?:string|null;\n\n hasNavigationDestination?: boolean|null;\n isShowAlways?: boolean|null;\n\n navigationURL?: string|null;\n\n redirectType?: ERedirectType;\n redirectUrl?: string|null;\n\n className?: string;\n style?: CSSProperties;\n\n children?: ReactNode;\n\n onClick?: (event:any) => void;\n\n variant?: Variant;\n}\n\nfunction RMDRLink ( props:TRMDRLink ) {\n\n const _target = ((props.redirectType === ERedirectType.STAY_CURRENT_PAGE || !isNumber(props.redirectType)) && \"_self\") || (props.redirectType === ERedirectType.REDIRECT_NEW_TAB && \"_blank\") || \"\";\n \n if ( props.hasNavigationDestination && !isEmpty(props.redirectUrl) && props.redirectUrl ) {\n\n return \n { reject( [props.text, props.children, props.redirectUrl], isEmpty )?.[0] }\n \n \n }\n\n if ( props.hasNavigationDestination && !isEmpty(props.navigationURL) && props.navigationURL ) {\n \n return \n { reject( [props.text, props.children, props.navigationURL], isEmpty )?.[0] }\n \n\n }\n\n if ( !isEmpty(props.onClick) ) {\n\n const componentsMap: {\n [P in Variant]: React.ComponentType | string;\n } = {\n a: 'a',\n div: 'div'\n };\n \n const Component: JSXElementConstructor | React.ReactElement | React.ComponentType | string = componentsMap![props.variant!];\n\n return \n { reject( [props.text, props.children], isEmpty )?.[0] }\n \n \n }\n\n if ( props.isShowAlways ) {\n\n const componentsMap: {\n [P in Variant]: React.ComponentType | string;\n } = {\n a: 'a',\n div: 'div'\n };\n \n const Component: JSXElementConstructor | React.ReactElement | React.ComponentType | string = componentsMap![props.variant!];\n\n return \n { reject( [props.text, props.redirectUrl, props.children], isEmpty )?.[0] }\n ;\n\n }\n \n return null;\n \n}\n\nRMDRLink.defaultProps = {\n\n title: undefined,\n text: undefined,\n\n hasNavigationDestination: false,\n isShowAlways: false,\n\n navigationURL: undefined,\n\n redirectType: undefined,\n redirectUrl: undefined,\n\n className: \"\",\n style: undefined,\n\n children: null,\n\n onClick: (event:any) => {},\n\n variant: \"a\"\n\n};\n\nexport default RMDRLink;\nexport type {\n TRMDRLink\n};\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, elementStyle as o, elementNextAll as p, elementPrevAll as q, animateCSSModeScroll as r, setCSSProperty as s, showWarning as t, extend as u, deleteProps as v };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, o as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, p as elementNextAll, q as elementPrevAll, j as getTranslate, r as animateCSSModeScroll, n as nextTick, t as showWarning, c as createElement, d as now, u as extend, h as elementIndex, v as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n Object.assign(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) {\n if (slides) virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","/**\n * Swiper React 11.1.3\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: May 13, 2024\n */\n\nimport React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react';\nimport { S as Swiper$1 } from './shared/swiper-core.mjs';\nimport { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs';\nimport { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n const {\n from,\n to\n } = virtualData;\n const loopFrom = swiper.params.loop ? -slides.length : 0;\n const loopTo = swiper.params.loop ? slides.length * 2 : slides.length;\n const slidesToRender = [];\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n slidesToRender.push(slides[getSlideIndex(i)]);\n }\n }\n return slidesToRender.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style,\n key: child.props.virtualIndex || child.key || `slide-${index}`\n });\n });\n}\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nconst SwiperSlideContext = /*#__PURE__*/createContext(null);\nconst useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nconst SwiperContext = /*#__PURE__*/createContext(null);\nconst useSwiper = () => {\n return useContext(SwiperContext);\n};\n\nconst Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n let {\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n });\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n const passParams = {\n ...swiperParams\n };\n delete passParams.wrapperClass;\n swiperRef.current = new Swiper$1(passParams);\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n if (!swiperElRef.current) {\n initSwiper();\n }\n\n // Listen for breakpoints change\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n });\n\n // set initialized flag\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n });\n\n // mount swiper\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n if (!swiperElRef.current) return;\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current);\n // eslint-disable-next-line\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []);\n\n // watch for params change\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n return () => {\n detachEvents();\n };\n });\n\n // update on virtual update\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]);\n\n // bypass swiper instance to slides\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n return slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current,\n swiperSlideIndex: index\n });\n });\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: wrapperClass(swiperParams.wrapperClass)\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\n\nconst SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n let {\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n lazy,\n virtualIndex,\n swiperSlideIndex,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n const [lazyLoaded, setLazyLoaded] = useState(false);\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n useIsomorphicLayoutEffect(() => {\n if (typeof swiperSlideIndex !== 'undefined') {\n slideElRef.current.swiperSlideIndex = swiperSlideIndex;\n }\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n if (!slideElRef.current || !swiper) {\n return;\n }\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n return;\n }\n swiper.on('_slideClass', updateClasses);\n // eslint-disable-next-line\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0\n };\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n const onLoad = () => {\n setLazyLoaded(true);\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex,\n onLoad: onLoad\n }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n })));\n});\nSwiperSlide.displayName = 'SwiperSlide';\n\nexport { Swiper, SwiperSlide, useSwiper, useSwiperSlide };\n","import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nfunction getParams(obj, splitEvents) {\n if (obj === void 0) {\n obj = {};\n }\n if (splitEvents === void 0) {\n splitEvents = true;\n }\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, defaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nfunction mountSwiper(_ref, swiperParams) {\n let {\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n } = _ref;\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n swiper.init(el);\n}\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nconst updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};\n\nexport { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u };\n","import { TSLDRLatout } from \"../type\";\nimport ApplicationDocumentSelector from \"cms/utilities/ApplicationDocumentSelector\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport CoreDefault from \"core/Defaults\";\nimport IApplicationDocument from \"cms/interfaces/IApplicationDocument\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionDetail from \"cms/interfaces/ILanguageVersionDetail\";\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\n\n\nfunction SLDR_002 ( props: TSLDRLatout ) {\n console.log(\"SLDR_002: \", props);\n \n const video = ApplicationDocumentSelector({\n resources: props.payload.resources,\n resourceType: EResourceType.VIDEO,\n type: \"find\"\n });\n\n const languageVersion = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION }\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n );\n}\n\n\nexport default SLDR_002;\n","import SLDR_001 from \"./components/SLDR_001\";\nimport SLDR_002 from \"./components/SLDR_002\";\n\nconst SliderLayouts:any = {\n \n SLDR_001,\n SLDR_002\n}\n\nexport default SliderLayouts;\n","// types\nimport { Link } from \"react-router-dom\";\nimport { TSLDRLatout } from \"../type\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionDetail from \"cms/interfaces/ILanguageVersionDetail\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\nimport { EView } from \"cms/enums/EView\";\nimport ApplicationDocumentSelector from \"cms/utilities/ApplicationDocumentSelector\";\nimport IApplicationDocument from \"cms/interfaces/IApplicationDocument\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport { FaYoutube } from \"react-icons/fa\";\nimport { isEmpty } from \"lodash\";\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\nimport CoreDefault from \"core/Defaults\";\nimport useProgressiveImage from \"core/hooks/useProgressiveImage\";\n\n\nfunction SLDR_001 ( props: Readonly ) {\n console.log(\"SLDR_001: \", props);\n\n const languageVersion = LanguageVersionSelector({\n languageVersions: props.payload.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.SLIDER_ITEM },\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n const followUs = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT, name: \"followUs\" },\n ],\n type: \"find\"\n });\n\n const facebook = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT, name: \"facebook\" },\n ],\n type: \"find\"\n });\n\n const instagram = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT, name: \"instagram\" },\n ],\n type: \"find\"\n });\n\n const linkedin = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT, name: \"linkedin\" },\n ],\n type: \"find\"\n });\n\n const youtube = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT, name: \"youtube\" },\n ],\n type: \"find\"\n });\n\n const patternImage = ApplicationDocumentSelector({\n resources: props.payload.resources,\n resourceType: EResourceType.PATTERN,\n type: \"find\"\n });\n\n const loaded = useProgressiveImage({ src:patternImage?.filePath ? `${CoreDefault.cdn}/${patternImage?.filePath}` : null });\n\n return (\n
\n
\n
\n
{followUs?.value}
\n
\n
\n
\n { facebook?.name && }\n { instagram?.name && }\n { linkedin?.name && }\n { youtube?.name && }\n
\n
\n
\n
\n
\n
\n
\n

{languageVersion?.name}

\n {\n !isEmpty(languageVersion?.value) ? (\n

\n ) : (\n

\n )\n }\n

\n
\n {/* Read more */}\n
\n
\n {/* Contact Us */}\n
\n
\n \n
\n
\n
\n
\n
\n );\n}\n\n\nexport default SLDR_001;\n","// action \nimport OdataReadOnlyActionBase from \"core/actions/OdataReadOnlyActionBase\";\n// service\nimport ClientSliderItemService from \"cms/services/ClientSliderItemService\";\n\n\nclass ClientSliderItemServiceAction extends OdataReadOnlyActionBase {\n\n constructor( dispatch: any, screenCode:string ) {\n super(dispatch, ClientSliderItemService, screenCode);\n }\n\n}\n\nexport default ClientSliderItemServiceAction;\n","import _ClientSilderItemServiceAction from \"cms/actions/services/ClientSilderItemServiceAction\";\n\n\nconst screenCode = \"209\";\nclass ClientSilderItemServiceAction extends _ClientSilderItemServiceAction {\n\n constructor( dispatch: any ) {\n super(dispatch, screenCode);\n }\n \n}\n\nexport default ClientSilderItemServiceAction;\n","function getLocalDateTime( isEnd:boolean = false ) {\n\n let localDateTime = (new Date()).toJSON();\n \n try {\n\n if ( isEnd ) return `${getDate(localDateTime)}T23:59:59Z`;\n return `${getDate(localDateTime)}T00:00:00Z`;\n\n } catch (e) { }\n \n}\n\nfunction getDate( dateTime?:string ) {\n\n if ( dateTime ) {\n let val = dateTime.split(\"T\");\n return val[0];\n }\n\n}\n\nfunction _getTime( dateTime?:string ) {\n\n if ( dateTime ) {\n let val = dateTime.split(\"T\");\n return val[1];\n }\n\n}\n\nfunction dataTimeToHumanReadable ( datetime?:string ) {\n\n if ( datetime ) {\n\n try {\n let splittedDateTime = new Date(Date.parse(datetime)).toString().split(\" \")\n return { day: splittedDateTime[2], month: splittedDateTime[1], year: splittedDateTime[3] }\n } catch(ex) {\n return null;\n }\n \n\n }\n\n}\n\nexport {\n\n getLocalDateTime,\n getDate,\n dataTimeToHumanReadable\n\n}","import React, { useEffect } from \"react\";\r\nimport { connect, ConnectedProps } from \"react-redux\";\r\nimport { Autoplay, Navigation, Pagination } from \"swiper/modules\"\r\nimport Lodash, { isEmpty } from \"lodash\";\r\nimport { Swiper, SwiperClass, SwiperSlide } from \"swiper/react\";\r\n// components\r\nimport SliderLayouts from \"./SliderLayouts\";\r\n// actions\r\nimport CoreAction from \"core/actions/common/CoreAction\";\r\nimport ClientSilderItemServiceAction from \"cms/actions/components/Slider/ClientSilderItemServiceAction\";\r\n// interfaces\r\nimport IOdataQueryOptions from 'core/interfaces/IOdataQueryOptions';\r\n// enums\r\nimport ELayoutTypeDataSource from \"cms/enums/ELayoutType\";\r\n// \r\nimport { getLocalDateTime } from \"core/utilities/DateTimeHelper\";\r\nimport IClientSliderItemList from \"cms/interfaces/IClientSliderItemList\";\r\n//\r\nimport \"swiper/css/bundle\";\r\nimport { EContentStatus } from \"cms/enums/EContentStatus\";\r\nimport { Dispatch } from \"@reduxjs/toolkit\";\r\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\r\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\r\nimport TValidations from \"cms/types/TValidations\";\r\n\r\n\r\nfunction mapStateToProps ( state: any ) {\r\n console.log(\"Slider.mapStateToProps: \", state);\r\n\r\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\r\n\r\n const webApplicationLanguage: IClientLanguage = state.CoreStore.language?.payload;\r\n const webApplicationLanguageCode: string = webApplicationLanguage.code;\r\n const webApplicationLanguageISOCode: string = state.CoreStore.languageCode?.payload;\r\n\r\n const sliderItemListPayload:IClientSliderItemList[]|null = state.SliderStore.ClientSilderItemStore.list?.payload;\r\n const sliderItemListError:TValidations[]|null = state.SliderStore.ClientSilderItemStore.list?.error;\r\n const sliderItemListIsLoading:boolean = state.SliderStore.ClientSilderItemStore.list?.isLoading;\r\n\r\n return {\r\n\r\n siteSettingDetailPayload,\r\n\r\n webApplicationLanguage,\r\n webApplicationLanguageCode,\r\n webApplicationLanguageISOCode,\r\n\r\n sliderItemListPayload,\r\n sliderItemListError,\r\n sliderItemListIsLoading\r\n\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\r\n console.log(\"Slider.mapDispatchToProps\");\r\n\r\n const coreAction = new CoreAction(dispatch);\r\n const clientSilderItemServiceAction = new ClientSilderItemServiceAction(dispatch);\r\n\r\n return {\r\n // list\r\n _listSliderItems: (categoryId: string, webApplicationLanguageCode: string) => {\r\n let queryOptions: IOdataQueryOptions = {\r\n filter: [`status eq ${EContentStatus.ACTIVE}`, \"and\", `(publishDate le ${getLocalDateTime()} or publishDate eq null)`, \"and\", `(expireDate ge ${getLocalDateTime(true)} or expireDate eq null)`],\r\n orderBy: [\"order asc\"],\r\n top: 1000\r\n };\r\n\r\n clientSilderItemServiceAction.list({ servicePayload: { queryOptions, language: webApplicationLanguageCode } });\r\n },\r\n\r\n // other\r\n _hideLoader: () => {\r\n coreAction.hideLoader();\r\n }\r\n }\r\n}\r\n\r\nconst connector = connect(mapStateToProps, mapDispatchToProps);\r\n\r\n\r\n/* types */\r\ntype PropsFromRedux = ConnectedProps\r\n\r\ntype TSlider = {\r\n\r\n layoutName?:string;\r\n\r\n} & T;\r\n\r\n\r\n/* component */\r\nfunction SliderLoader () {\r\n\r\n return (\r\n <>\r\n )\r\n\r\n}\r\n\r\nfunction Slider ( props: TSlider ) {\r\n console.log(\"Slider.rendered: \", props);\r\n\r\n const swiperOptions = {\r\n modules: [Autoplay, Pagination, Navigation],\r\n slidesPerView: 1,\r\n spaceBetween: 0,\r\n // autoplay: {\r\n // delay: 5000,\r\n // disableOnInteraction: true,\r\n // },\r\n loop: true,\r\n \r\n // Navigation\r\n navigation: {\r\n nextEl: '.h1n',\r\n prevEl: '.h1p',\r\n },\r\n \r\n // Pagination\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true,\r\n },\r\n // on: {\r\n // transitionStart: function() {\r\n // var videos = document.querySelectorAll('video');\r\n // Array.prototype.forEach.call(videos, function(video){\r\n // video.pause();\r\n // });\r\n // },\r\n \r\n // transitionEnd: function(){\r\n // var activeIndex = this.activeIndex;\r\n // var activeSlide = document.getElementsByClassName('swiper-slide')[activeIndex];\r\n // var activeSlideVideo = activeSlide.getElementsByTagName('video')[0];\r\n // activeSlideVideo.play();\r\n \r\n // },\r\n \r\n // }\r\n }\r\n\r\n useEffect(\r\n () => {\r\n if ( props.layoutName && !Lodash.isEmpty(props.layoutName)) {\r\n props._listSliderItems(props.layoutName, props.webApplicationLanguageCode);\r\n }\r\n }, [ props.layoutName ]\r\n )\r\n\r\n if (!isEmpty(props.sliderItemListPayload)) {\r\n\r\n return (\r\n
\r\n {\r\n let videoItem = swiper.slides.find((item) => item.classList.contains(\"swiper-slide-active\"));\r\n let video = videoItem?.getElementsByTagName(\"video\")?.[0];\r\n if ( video ) video.play();\r\n }}\r\n onTransitionStart={(swiper: SwiperClass) => {\r\n for ( let item of swiper.slides ) {\r\n let video = item.getElementsByTagName(\"video\")?.[0];\r\n if ( video ) video.pause();\r\n }\r\n }}\r\n onClick={(swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => {\r\n for ( let item of swiper.slides ) {\r\n let video = item.getElementsByTagName(\"video\")?.[0];\r\n if ( video && video.paused ) video.play();\r\n else if ( video ) video.pause();\r\n }\r\n }}\r\n >\r\n
\r\n {\r\n props.sliderItemListPayload?.map((item) => {\r\n const layoutName = item.layouts?.[0]?.layoutName;\r\n const Layout = SliderLayouts[layoutName]\r\n\r\n if ( Layout ) {\r\n return \r\n }\r\n \r\n })\r\n }\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n }\r\n\r\n return null;\r\n\r\n}\r\n\r\nSlider.defaultProps = {\r\n\r\n layoutName: \"SLDRGRP_001\"\r\n\r\n}\r\n\r\nconst Component = React.memo(Slider, ( prevProps: TSlider, nextProps: TSlider ) => {\r\n console.log(\"Slider.memo\", { prevProps, nextProps });\r\n\r\n return !(\r\n prevProps.webApplicationLanguageISOCode !== nextProps.webApplicationLanguageISOCode\r\n || prevProps.sliderItemListPayload !== nextProps.sliderItemListPayload\r\n )\r\n});\r\n\r\nexport default connector(Component);\r\n","enum EEndpointProtocol {\n\n ODATA = \"odata\",\n MVB_API = \"mvbapi\",\n API = \"api\"\n\n}\n\nexport default EEndpointProtocol;\n","import EHttpStatusCode from \"core/enums/EHttpStatusCode\";\nimport EEndpointProtocol from \"core/enums/EEndpointProtocol\";\n\nconst CoreDefault = {\n\n url: `${process.env.PROTOCOL}${process.env.HOSTNAME||window.location.hostname}${process.env.PORT ? `:${process.env.PORT}`:\"\"}`,\n api: `${process.env.PROTOCOL}${process.env.API_HOSTNAME||window.location.hostname}${process.env.API_PORT ? `:${process.env.API_PORT}`:\"\"}`,\n\tcdn: `${process.env.PROTOCOL}${process.env.CDN_HOSTNAME||window.location.hostname}${process.env.CDN_PORT ? `:${process.env.CDN_PORT}`:\"\"}`,\n\n acceptableHttpStatus: [\n EHttpStatusCode.OK,\n EHttpStatusCode.CREATED,\n EHttpStatusCode.ACCEPTED,\n EHttpStatusCode.BAD_REQUEST,\n EHttpStatusCode.UNAUTHORIZED,\n EHttpStatusCode.NOT_ACCEPTABLE,\n EHttpStatusCode.INTERNAL_SERVER_ERROR\n ],\n fetchSettings: {\n protocol: EEndpointProtocol.MVB_API\n },\n tokenKeyName: \"token\",\n clientLanguage: {\n code: \"tr-TR\",\n name: \"Turkish\",\n twoLetterISOName: \"tr\"\n }\n\n};\n\nexport default CoreDefault;\n","import Lodash from 'lodash';\n\n\nfunction deleteKeyFromListOfDictionary( value:any[], keys:string[] ) {\n\n if ( Lodash.isEmpty(value) ) return value;\n\n const _keys = keys?.filter((item:string) => item);\n if ( Lodash.isEmpty(keys) || Lodash.isEmpty(_keys) ) return value;\n\n let _value:any[] = [...value];\n _value.map((item:any) => { for(let key of _keys) delete item[key]});\n\n return _value;\n\n}\n\nexport default deleteKeyFromListOfDictionary;\n","// enum\nimport HttpStatusCode from \"core/enums/EHttpStatusCode\";\nimport EActionType from \"core/enums/EActionType\";\nimport EActionStatus from \"core/enums/EActionStatus\";\n// interface\nimport IServiceResponse from \"core/interfaces/IServiceResponse\";\nimport IActionCallbackArgs from \"core/interfaces/IActionCallbackArgs\";\nimport IActionRunParams from \"core/interfaces/IActionRunParams\";\nimport deleteKeyFromListOfDictionary from \"core/utilities/DeleteKeyFromListOfDictionary\";\nimport TDispatchPayload from \"core/types/TDispatchPayload\";\n\n\nexport default class ActionBase {\n\n dispatch: any = null;\n service: any = null;\n\n serviceCode: string = \"\";\n screenCode: string = \"\";\n\n constructor ( dispatch: any, service: any, screenCode: string ) {\n\n this.dispatch = dispatch;\n if ( service ) {\n this.service = new service();\n this.serviceCode = service.code;\n }\n if (screenCode) this.screenCode = screenCode;\n \n }\n\n callback200( response: IServiceResponse, args?: IActionCallbackArgs ) {\n\n if ( args?.actionType === EActionType.LIST || args?.actionType === EActionType.POST ) {\n this.dispatch({ \n type: `${this.screenCode}${this.serviceCode}${args.actionType}${EActionStatus.SUCCESS}`, \n payload: args[\"keysToBeRemoved\"] ? deleteKeyFromListOfDictionary(response.value, args[\"keysToBeRemoved\"] as string[]) : response.value,\n count: response?.[\"@odata.count\"]\n });\n } \n else if ( args?.actionType === EActionType.DETAILS ) {\n this.dispatch({ \n type: `${this.screenCode}${this.serviceCode}${args.actionType}${EActionStatus.SUCCESS}`, \n payload: response.value\n });\n }\n else if ( args?.actionType === EActionType.GET ) {\n\n // extraPayload parametresinin çalışbilmesi için sayfadan yapılan istek aşağıdaki gibi olmalıdır. İstek içindeki storeMapOptions değişkeni api den gelen verinin içindeki bilginin nereye atanacağını gösteriyor.\n // dataMetricsAction.list({ servicePayload: queryOptions, args: { storeMapOptions: [{ destinationName: \"totalCountGroupByMetricType\", sourceName: \"value\" }] } }); \n\n if ( args.storeMapOptions && Array.isArray(args.storeMapOptions) ) {\n let dispatchPayload:TDispatchPayload = {\n type: `${this.screenCode}${this.serviceCode}${args.actionType}${EActionStatus.SUCCESS}`,\n extraPayload: {}\n }\n\n for ( let item of args.storeMapOptions ) {\n dispatchPayload.extraPayload[item.destinationName] = (response as any)?.[item.sourceName];\n }\n\n this.dispatch(dispatchPayload);\n }\n \n }\n\n }\n\n callback201( response: IServiceResponse, args?: IActionCallbackArgs ) {\n\n }\n\n callback400( response: IServiceResponse, args?: IActionCallbackArgs ) {\n\n if ( args?.actionType === EActionType.LIST || args?.actionType === EActionType.POST || args?.actionType === EActionType.DETAILS ) {\n this.dispatch({ \n type: `${this.screenCode}${this.serviceCode}${args.actionType}${EActionStatus.FAIL}`, \n payload: response\n });\n }\n\n }\n\n callback401( response: IServiceResponse, args?: IActionCallbackArgs ) {\n \n }\n\n callback406( response: IServiceResponse, args?: IActionCallbackArgs ) {\n\n this.callback400( response, args );\n\n }\n\n callback500( response?: IServiceResponse, args?: IActionCallbackArgs ) {\n\n }\n\n callbackOther( response?: IServiceResponse, args?: IActionCallbackArgs ) {\n\n }\n \n callbackError( response?: IServiceResponse, args?: IActionCallbackArgs ) {\n\n }\n\n executeService( service: any, params: IActionRunParams ) {\n \n service( params.servicePayload )\n .then( (response: any) => {\n switch (response.status) {\n\n // from data\n case HttpStatusCode.OK:\n this.callback200(response.data, params.args);\n break;\n\n case HttpStatusCode.CREATED:\n this.callback201(response.data, params.args);\n break;\n\n case HttpStatusCode.ACCEPTED:\n this.callback201(response.data, params.args);\n break;\n\n case HttpStatusCode.BAD_REQUEST:\n this.callback400(response.data, params.args);\n break;\n\n case HttpStatusCode.UNAUTHORIZED:\n this.callback401(response.data, params.args);\n break;\n\n case HttpStatusCode.NOT_ACCEPTABLE:\n this.callback406(response.data, params.args);\n break;\n\n case HttpStatusCode.INTERNAL_SERVER_ERROR:\n this.callback500(response, params.args);\n break;\n\n default:\n this.callbackOther(response, params.args);\n\n }\n\n return Promise.resolve();\n\n })\n .catch( (error: any) => {\n\n console.error(\"executeService.error: \", JSON.stringify(error, null, 4));\n\n const message = (error.response && error.response.data && error.response.data.message) || error.message || error.toString();\n console.error(\"executeService.catch: \", message);\n\n this.callbackError(message, params?.args);\n\n return Promise.resolve();\n\n });\n }\n}\n","// actions\nimport ActionBase from \"core/actions/ActionBase\";\n// enums\nimport EActionStatus from 'core/enums/EActionStatus';\nimport EActionType from 'core/enums/EActionType';\n// interfaces\nimport IModifierPayload from 'core/interfaces/IModifierPayload';\n// types\nimport TActionType from \"core/types/TActionType\";\n\n\nclass ActionCore extends ActionBase {\n\n fetching( actionType:TActionType, screenCode?:string, serviceCode?:string ) {\n\n this.dispatch({ \n type: `${screenCode ?? this.screenCode}${serviceCode ?? this.serviceCode}${actionType}${EActionStatus.FETCHING}` \n });\n\n }\n\n modify( actionType:TActionType, payload:any, screenCode?:string, serviceCode?:string ) {\n\n this.dispatch({ \n type: `${screenCode ?? this.screenCode}${serviceCode ?? this.serviceCode}${actionType}${EActionStatus.MODIFIER}`,\n payload\n });\n\n }\n\n store( actionType:TActionType, payload:any, screenCode?:string, serviceCode?:string ) {\n\n this.dispatch({ \n type: `${screenCode ?? this.screenCode}${serviceCode ?? this.serviceCode}${actionType}${EActionStatus.STORE}`,\n payload\n });\n\n }\n\n set( actionType:TActionType, payload:any, screenCode?:string, serviceCode?:string ) {\n \n this.dispatch({ \n type: `${screenCode ?? this.screenCode}${serviceCode ?? this.serviceCode}${actionType}${EActionStatus.SUCCESS}`,\n payload\n });\n\n }\n\n clean( actionType:TActionType, key?:string, screenCode?:string, serviceCode?:string ) {\n\n this.dispatch({ \n type: `${screenCode ?? this.screenCode}${serviceCode ?? this.serviceCode}${actionType}${EActionStatus.CLEAN}`,\n key\n });\n\n }\n\n storageModifier ( payload: IModifierPayload[], screenCode?:string, serviceCode?:string ) {\n\n this.modify(EActionType.STORAGE, payload, screenCode, serviceCode);\n\n }\n\n storageStore ( payload:{}, screenCode?:string, serviceCode?:string ) {\n\n this.store(EActionType.STORAGE, payload, screenCode, serviceCode);\n\n }\n\n storageClean() {\n\n this.clean(EActionType.STORAGE);\n \n }\n\n}\n\nexport default ActionCore;\n","// action\nimport OdataReadOnlyActionBase from \"./OdataReadOnlyActionBase\";\n// enum\nimport EActionStatus from \"core/enums/EActionStatus\";\nimport EActionType from \"core/enums/EActionType\";\n// interface\nimport { IActionPostOdata } from \"core/interfaces/IActionPost\";\nimport { IActionDeleteOdata } from \"core/interfaces/IActionDelete\";\nimport IActionRunParams from \"core/interfaces/IActionRunParams\";\nimport IServiceResponse from \"core/interfaces/IServiceResponse\";\nimport IActionCallbackArgs from \"core/interfaces/IActionCallbackArgs\";\n\n\nclass OdataActionBase extends OdataReadOnlyActionBase {\n\n async post ( params: IActionPostOdata ) {\n\n this.fetching(EActionType.POST);\n \n const serviceParams: IActionRunParams = {\n args: {...params.args, actionType: EActionType.POST},\n servicePayload: params.servicePayload\n }\n \n this.executeService( this.service.post.bind(this.service), serviceParams );\n \n }\n\n async postModifier ( params: IActionPostOdata ) {\n console.log(\"OdataActionBase.post_modify: \", params);\n\n this.fetching(EActionType.POST);\n this.modify(EActionType.POST, params.servicePayload);\n\n }\n\n postClean () {\n\n this.clean(EActionType.POST);\n\n }\n\n async delete ( params: IActionDeleteOdata ) {\n\n this.fetching(EActionType.DELETE);\n \n const serviceParams: IActionRunParams = {\n args: {...params.args, actionType: EActionType.DELETE},\n servicePayload: params.payload\n }\n \n this.executeService( this.service.delete.bind(this.service), serviceParams );\n \n }\n\n deleteClean () {\n\n this.clean(EActionType.DELETE);\n\n }\n\n // callback406 ( response: IServiceResponse, args?: IActionCallbackArgs ) {\n\n // if ( args?.actionType === EActionType.POST || args?.actionType === EActionType.DELETE ) {\n // this.dispatch({ \n // type: `${this.screenCode}${this.serviceCode}${args?.actionType}${EActionStatus.FAIL}`, \n // payload: response,\n // message: null\n // });\n // }\n // else if ( args?.actionType === EActionType.POST || args?.actionType === EActionType.DELETE ) {\n // this.dispatch({ \n // type: `${this.screenCode}${this.serviceCode}${args?.actionType}${EActionStatus.FAIL}`, \n // payload: response,\n // message: null\n // });\n // }\n\n // }\n\n}\n\nexport default OdataActionBase;\n","// action\nimport ActionCore from \"./ActionCore\";\n// enum\nimport EActionType from \"core/enums/EActionType\";\n// interface\nimport { IActionGetOdata } from \"core/interfaces/IActionGet\";\nimport IActionRunParams from \"core/interfaces/IActionRunParams\";\n\n\nclass OdataCoreActionBase extends ActionCore {\n\n async list ( params: IActionGetOdata ) {\n\n this.fetching(EActionType.LIST);\n\n const serviceParams: IActionRunParams = {\n args: {\n ...params.args, \n actionType: EActionType.LIST\n },\n servicePayload: params.servicePayload\n }\n\n this.executeService( this.service.get.bind(this.service), serviceParams );\n \n }\n\n async listModifier ( params: IActionGetOdata ) {\n\n this.fetching(EActionType.LIST);\n this.modify(EActionType.LIST, params.payload);\n \n }\n\n async listStore ( params: IActionGetOdata ) {\n\n this.store(EActionType.LIST, params.payload);\n \n }\n\n listClean () {\n\n this.clean(EActionType.LIST);\n\n }\n\n async get ( params:IActionGetOdata ) {\n\n this.fetching(EActionType.GET);\n\n const serviceParams: IActionRunParams = {\n args: {\n ...params.args, \n actionType: EActionType.GET\n },\n servicePayload: params.servicePayload\n }\n\n this.executeService( this.service.get.bind(this.service), serviceParams );\n\n }\n\n async getClean( key:string ) {\n\n this.clean(EActionType.GET, key);\n \n }\n\n}\n\nexport default OdataCoreActionBase;\n","// action\nimport OdataCoreActionBase from \"./OdataCoreActionBase\";\n// enum\nimport EActionStatus from \"core/enums/EActionStatus\";\nimport EActionType from \"core/enums/EActionType\";\n// interface\nimport { IActionDetailOdata } from \"core/interfaces/IActionDetail\";\nimport IActionRunParams from \"core/interfaces/IActionRunParams\";\n\n\nclass OdataReadOnlyActionBase extends OdataCoreActionBase {\n\n async details( params: IActionDetailOdata ) {\n\n this.fetching(EActionType.DETAILS);\n\n const serviceParams: IActionRunParams = {\n args: {\n ...params.args, \n actionType: EActionType.DETAILS\n },\n servicePayload: params.servicePayload\n }\n\n this.executeService( this.service.details.bind(this.service), serviceParams );\n\n }\n\n detailsClean () {\n \n this.clean(EActionType.DETAILS);\n \n }\n\n}\n\nexport default OdataReadOnlyActionBase;\n","import IClientLanguage from 'core/interfaces/IClientLanguage';\nimport EActionType from \"core/enums/EActionType\";\nimport ActionCore from 'core/actions/ActionCore';\n\n\nconst screenCode = \"COM\";\nclass CoreAction extends ActionCore {\n\n constructor( dispatch:any ) {\n super( dispatch, \"\", screenCode);\n\n this.serviceCode = \"Core\";\n }\n\n /**\n * set web application language\n */\n setWebApplicationLanguage ( language: IClientLanguage ) {\n\n localStorage.setItem(\"WebApplicationLanguage\", JSON.stringify(language));\n localStorage.setItem(\"WebApplicationLanguageISOCode\", language.twoLetterISOName);\n\n this.store(EActionType.LANGUAGE, language);\n this.store(EActionType.LANGUAGE_CODE, language.twoLetterISOName);\n \n }\n\n /**\n * show full screen loader\n */\n showLoader () {\n\n this.clean(EActionType.LOADER)\n\n }\n\n /**\n * hide full screen loader\n */\n hideLoader () {\n this.fetching(EActionType.LOADER);\n\n }\n\n /**\n * change color palette\n */\n changeColorPalette( payload:any ) {\n\n localStorage.setItem(\"color-palette\", payload);\n this.store(EActionType.COLOR_PALETTE, payload);\n\n }\n\n /**\n * theme mode\n */\n changeColorPaletteMode( payload:any ) {\n \n localStorage.setItem(\"color-palette-mode\", payload);\n this.store(EActionType.COLOR_PALETTE_MODE, payload);\n\n }\n\n}\n\nexport default CoreAction;\n","enum EActionStatus {\n\n SUCCESS = \"SU\",\n FAIL = \"FA\",\n STORE = \"ST\",\n MODIFIER = \"MO\",\n \n CLEAN = \"CL\",\n CLEAN_MESSAGE = \"CM\",\n CLEAN_PAYLOAD = \"CP\",\n CLEAN_ERROR = \"CE\",\n CLEAN_COUNT = \"CC\",\n \n FETCHING = \"FE\",\n TOGGLE = \"TO\",\n\n}\n\nexport default EActionStatus;\n","enum EActionType {\n\n LIST = \"LI\",\n POST = \"PO\",\n PATCH = \"PA\",\n MANAGEMENT = \"MA\",\n DELETE = \"DE\",\n DETAILS = \"DT\",\n STORAGE = \"ST\",\n SIGNIN = \"SI\",\n GET = \"GE\",\n\n LANGUAGE = \"LA\",\n LANGUAGE_CODE = \"LC\",\n LOADER = \"LO\",\n\n DOWNLOAD = \"DL\",\n UPLOAD = \"UL\",\n\n CHANGE = \"CH\",\n COLOR_PALETTE = \"CP\",\n COLOR_PALETTE_MODE = \"CM\",\n PAGINATION = \"PN\",\n\n PUBLISH_MESSAGE = \"PM\",\n PUBLISH_POPUP = \"PP\"\n\n}\n\nexport default EActionType;\n","enum EHttpMethod {\n\n GET = \"get\",\n DELETE = \"delete\",\n HEAD = \"head\",\n OPTIONS = \"options\",\n POST = \"post\",\n PUT = \"put\",\n PATCH = \"patch\",\n PURGE = \"purge\",\n LINK = \"link\",\n UNLINK = \"unlink\"\n\n}\n\nexport default EHttpMethod;\n","const EHttpStatusCode = {\n\n\t// Informational responses \n\tCONTINUE: 100,\n\tSWITCHING_PROTOCOLS: 101,\n\tPROCESSING: 102,\n\tEARLY_HINTS: 103,\n\n\t// Successful responses\n\tOK: 200,\n\tCREATED: 201,\n\tACCEPTED: 202,\n\tNON_AUTHORITATIVE_INFORMATION: 203,\n\tNO_CONTENT: 204,\n\tRESET_CONTENT: 205,\n\tPARTIAL_CONTENT: 206,\n\tMULTI_STATUS: 207,\n\n\t// Redirection messages\n\tMULTIPLE_CHOICES: 300,\n\tMOVED_PERMANENTLY: 301,\n\tMOVED_TEMPORARILY: 302,\n\tSEE_OTHER: 303,\n\tNOT_MODIFIED: 304,\n\tUSE_PROXY: 305,\n\tTEMPORARY_REDIRECT: 307,\n\tPERMANENT_REDIRECT: 308,\n\n\t// Client error responses\n\tBAD_REQUEST: 400,\n\tUNAUTHORIZED: 401,\n\tPAYMENT_REQUIRED: 402,\n\tFORBIDDEN: 403,\n\tNOT_FOUND: 404,\n\tMETHOD_NOT_ALLOWED: 405,\n\tNOT_ACCEPTABLE: 406,\n\tPROXY_AUTHENTICATION_REQUIRED: 407,\n\tREQUEST_TIMEOUT: 408,\n\tCONFLICT: 409,\n\tGONE: 410,\n\tLENGTH_REQUIRED: 411,\n\tPRECONDITION_FAILED: 412,\n\tREQUEST_TOO_LONG: 413,\n\tREQUEST_URI_TOO_LONG: 414,\n\tUNSUPPORTED_MEDIA_TYPE: 415,\n\tREQUESTED_RANGE_NOT_SATISFIABLE: 416,\n\tEXPECTATION_FAILED: 417,\n\tIM_A_TEAPOT: 418,\n\tINSUFFICIENT_SPACE_ON_RESOURCE: 419,\n\tMISDIRECTED_REQUEST: 421,\n\tUNPROCESSABLE_ENTITY: 422,\n\tMETHOD_FAILURE: 420,\n\tLOCKED: 423,\n\tFAILED_DEPENDENCY: 424,\n\tTOO_EARLY: 425,\n\tUPGRADE_REQUIRED: 426,\n\tPRECONDITION_REQUIRED: 428,\n\tTOO_MANY_REQUESTS: 429,\n\tREQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n\tUNAVAILABLE_FOR_LEGAL_REASONS: 451,\n\n\t// Server error responses\n\tINTERNAL_SERVER_ERROR: 500,\n\tNOT_IMPLEMENTED: 501,\n\tBAD_GATEWAY: 502,\n\tSERVICE_UNAVAILABLE: 503,\n\tGATEWAY_TIMEOUT: 504,\n\tHTTP_VERSION_NOT_SUPPORTED: 505,\n\tVARIANT_ALSO_NEGOTIATES: 506,\n\tINSUFFICIENT_STORAGE: 507,\n\tLOOP_DETECTED: 508,\n\tNOT_EXTENDED: 510,\n\tNETWORK_AUTHENTICATION_REQUIRED: 511\n\n}\n\nexport default EHttpStatusCode;","enum EMessageStatus {\n\n SUCCESS = \"MS\",\n ERROR = \"ME\",\n WARNING = \"MW\",\n INFO = \"MI\",\n POPUP = \"MP\"\n\n}\n\nexport default EMessageStatus;\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import Axios, { AxiosRequestConfig } from 'axios';\nimport Cookies from \"universal-cookie\";\n// core\nimport CoreDefault from \"core/Defaults\";\n// interfaces\nimport IFetchExtension from 'core/interfaces/IFetchExtension';\nimport IOdataQueryOptions from 'core/interfaces/IOdataQueryOptions';\nimport sleep from 'core/utilities/sleep';\n\n// constants\nconst cookies = new Cookies();\ndeclare module \"axios\" {\n export interface AxiosRequestConfig {\n responseEncoding?: string;\n }\n}\n\n\nfunction OdataQueryComposer( baseUrl: string, queryOptions?: (IOdataQueryOptions|null) ) : string {\n if ( queryOptions === null ) return baseUrl;\n\n const queryList = [];\n let url = baseUrl;\n\n \n if (queryOptions?.filter && queryOptions?.filter?.length > 0) {\n queryList.push(`$filter=${queryOptions.filter.join(' ')}`);\n }\n if (queryOptions?.skip && queryOptions?.skip >= 0) {\n queryList.push(`$skip=${queryOptions.skip}`);\n }\n if (queryOptions?.top && queryOptions?.top >= 0) {\n queryList.push(`$top=${queryOptions.top}`);\n }\n if (queryOptions?.orderBy && queryOptions?.orderBy?.length > 0) {\n queryList.push(`$orderby=${queryOptions.orderBy.join(',')}`);\n }\n if (queryOptions?.expand && queryOptions?.expand?.length > 0) {\n queryList.push(`$expand=${queryOptions.expand.join(',')}`);\n }\n if (queryOptions?.count === true) {\n queryList.push(`$count=true`);\n }\n\n if (queryList.length > 0) {\n url = `${baseUrl}?${queryList.join('&')}`;\n }\n\n return url;\n}\n\nasync function FetchExtension ( params: IFetchExtension ) : Promise {\n console.log(\"FetchExtension.params: \", params);\n\n const baseUrl = `${CoreDefault.api}/${params.protocol ?? CoreDefault.fetchSettings.protocol}/${params.sourcePath}`;\n const url: string = OdataQueryComposer(baseUrl, params.queryOptions);\n // const language: (string|null) = localStorage.getItem(\"WebApplicationLanguage\");\n\n const axiosConfig: AxiosRequestConfig = {\n url,\n method: params.method,\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': params.contentType || 'application/json',\n 'Accept-Language': params.language || CoreDefault.clientLanguage.code\n },\n responseType: 'json',\n responseEncoding: 'utf8',\n validateStatus: function (status: number) {\n return CoreDefault.acceptableHttpStatus.indexOf(status) > -1;\n }\n }\n\n console.log(\"FetchExtension.params: \", axiosConfig);\n\n // token\n // const token = cookies.get(CoreDefault.tokenKeyName);\n // if ( token && axiosConfig.headers ) { \n // axiosConfig.headers['Authorization'] = `Bearer ${ token }`; \n // }\n\n // body\n if ( params.body || params.formData ) {\n axiosConfig.data = params.formData ? params.formData : JSON.stringify(params.body);\n }\n\n // await sleep(5000);\n\n return Axios(axiosConfig);\n}\n\nexport default FetchExtension;","import { isEmpty } from \"lodash\";\nimport { useEffect, useState } from \"react\";\n\ntype TUseProgressiveImage = {\n\n src:string|null;\n\n}\n\nconst useProgressiveImage = (props:TUseProgressiveImage) => { \n const [sourceLoaded, setSourceLoaded] = useState(null);\n \n useEffect(\n () => {\n if ( props.src && !isEmpty(props.src) ) {\n const img = new Image();\n img.src = props.src;\n img.onload = () => setSourceLoaded(props.src);\n }\n }, [props.src]\n )\n \n return sourceLoaded \n}\n\nexport default useProgressiveImage;\n","// interface\nimport IServiceBase from \"core/interfaces/IServiceBase\";\n\n\nclass ServiceBase {\n\n sourcePath: string = \"\";\n code: string = \"\";\n\n constructor ( { sourcePath }: IServiceBase ) {\n this.sourcePath = sourcePath\n }\n\n}\n\nexport default ServiceBase;\n","import FetchExtension from 'core/extensions/FetchExtension';\n// service \nimport ServiceBase from \"core/services/ServiceBase\";\n// interface\nimport IFetchExtension from 'core/interfaces/IFetchExtension';\nimport { IOdataGetRequest } from 'core/interfaces/IGetRequest';\n// enum\nimport HttpMethodEnum from 'core/enums/EHttpMethod';\nimport EndpointProtocol from 'core/enums/EEndpointProtocol';\n\n\nclass OdataCoreServiceBase extends ServiceBase {\n\n\tasync get( params: IOdataGetRequest ): Promise {\n\n\t\tconst apiFetchConfig: IFetchExtension = {\n\t\t\t// protocol: EndpointProtocol.ODATA,\n method: HttpMethodEnum.GET,\n\t\t\tlanguage: params.language,\n \n\t\t\tsourcePath: this.sourcePath,\n\t\t\tqueryOptions: params.queryOptions\n\t\t}\n\n\t\treturn FetchExtension(apiFetchConfig);\n\t\n }\n\n}\n\nexport default OdataCoreServiceBase;\n","import FetchExtension from 'core/extensions/FetchExtension';\n// service \nimport OdataCoreServiceBase from 'core/services/OdataCoreServiceBase';\n// interface\nimport IFetchExtension from 'core/interfaces/IFetchExtension';\nimport { IOdataDetailRequest } from 'core/interfaces/IDetailRequest';\n// enum\nimport HttpMethodEnum from 'core/enums/EHttpMethod';\nimport EndpointProtocol from 'core/enums/EEndpointProtocol';\n\n\nclass OdataReadOnlyServiceBase extends OdataCoreServiceBase {\n\n\tasync details( params: IOdataDetailRequest ): Promise {\n\n\t\tconst apiFetchConfig: IFetchExtension = {\n // protocol: EndpointProtocol.ODATA,\n\t\t\tmethod: HttpMethodEnum.GET,\n language: params.language,\n\n\t\t\tsourcePath: `${this.sourcePath}/${params.key}/details`,\n\t\t}\n\n\t\treturn FetchExtension(apiFetchConfig);\n\t\n }\n\n}\n\nexport default OdataReadOnlyServiceBase;\n","import FetchExtension from 'core/extensions/FetchExtension';\n// service \nimport OdataReadOnlyServiceBase from 'core/services/OdataReadOnlyServiceBase';\n// interface\nimport IFetchExtension from 'core/interfaces/IFetchExtension';\nimport { IOdataPostRequest } from 'core/interfaces/IPostRequest';\nimport { IOdataDeleteRequest } from 'core/interfaces/IDeleteRequest';\n// enum\nimport HttpMethodEnum from 'core/enums/EHttpMethod';\nimport EndpointProtocol from 'core/enums/EEndpointProtocol';\n\n\nclass OdataServiceBase extends OdataReadOnlyServiceBase {\n\n\tasync post ( params: IOdataPostRequest ): Promise {\n\n\t\tconst apiFetchConfig: IFetchExtension = {\n // protocol: EndpointProtocol.ODATA,\n\t\t\tmethod: HttpMethodEnum.POST,\n\t\t\tlanguage: params.language,\n\n\t\t\tsourcePath: this.sourcePath,\n\t\t\tbody: params.body,\n\t\t}\n\n\t\treturn FetchExtension(apiFetchConfig);\n\n\t}\n\n async delete( params: IOdataDeleteRequest ): Promise {\n\n\t\tconst apiFetchConfig: IFetchExtension = {\n // protocol: EndpointProtocol.ODATA,\n\t\t\tmethod: HttpMethodEnum.DELETE,\n language: params.language,\n\n\t\t\tsourcePath: `${this.sourcePath}/${params.key}`,\n\t\t}\n\n\t\treturn FetchExtension(apiFetchConfig);\n\t\n }\n\n}\n\nexport default OdataServiceBase;\n","var e,n,t,i,r,a=-1,o=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(a=n.timeStamp,e(n))}),!0)},c=function(){return window.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0]},u=function(){var e=c();return e&&e.activationStart||0},f=function(e,n){var t=c(),i=\"navigate\";a>=0?i=\"back-forward-cache\":t&&(document.prerendering||u()>0?i=\"prerender\":document.wasDiscarded?i=\"restore\":t.type&&(i=t.type.replace(/_/g,\"-\")));return{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v3-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:i}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var i=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return i.observe(Object.assign({type:e,buffered:!0},t||{})),i}}catch(e){}},d=function(e,n,t,i){var r,a;return function(o){n.value>=0&&(o||i)&&((a=n.value-(r||0))||void 0===r)&&(r=n.value,n.delta=a,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){var n=function(n){\"pagehide\"!==n.type&&\"hidden\"!==document.visibilityState||e(n)};addEventListener(\"visibilitychange\",n,!0),addEventListener(\"pagehide\",n,!0)},v=function(e){var n=!1;return function(t){n||(e(t),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),o((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},L=[1800,3e3],w=function(e,n){n=n||{},C((function(){var t,i=E(),r=f(\"FCP\"),a=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(a.disconnect(),e.startTimei.value&&(i.value=r,i.entries=a,t())},u=s(\"layout-shift\",c);u&&(t=d(e,i,b,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),o((function(){r=0,i=f(\"CLS\",0),t=d(e,i,b,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A={passive:!0,capture:!0},I=new Date,P=function(i,r){e||(e=r,n=i,t=new Date,k(removeEventListener),F())},F=function(){if(n>=0&&n1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){P(e,n),r()},i=function(){r()},r=function(){removeEventListener(\"pointerup\",t,A),removeEventListener(\"pointercancel\",i,A)};addEventListener(\"pointerup\",t,A),addEventListener(\"pointercancel\",i,A)}(n,e):P(n,e)}},k=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,M,A)}))},D=[100,300],x=function(t,r){r=r||{},C((function(){var a,c=E(),u=f(\"FID\"),l=function(e){e.startTimen.latency){if(t)t.entries.push(e),t.latency=Math.max(t.latency,e.duration);else{var i={id:e.interactionId,latency:e.duration,entries:[e]};J[i.id]=i,G.push(i)}G.sort((function(e,n){return n.latency-e.latency})),G.splice(10).forEach((function(e){delete J[e.id]}))}},Q=function(e,n){n=n||{},C((function(){var t;q();var i,r=f(\"INP\"),a=function(e){e.forEach((function(e){(e.interactionId&&K(e),\"first-input\"===e.entryType)&&(!G.some((function(n){return n.entries.some((function(n){return e.duration===n.duration&&e.startTime===n.startTime}))}))&&K(e))}));var n,t=(n=Math.min(G.length-1,Math.floor(z()/50)),G[n]);t&&t.latency!==r.value&&(r.value=t.latency,r.entries=t.entries,i())},c=s(\"event\",a,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});i=d(e,r,j,n.reportAllChanges),c&&(\"PerformanceEventTiming\"in window&&\"interactionId\"in PerformanceEventTiming.prototype&&c.observe({type:\"first-input\",buffered:!0}),p((function(){a(c.takeRecords()),r.value<0&&z()>0&&(r.value=0,r.entries=[]),i(!0)})),o((function(){G=[],_=O(),r=f(\"INP\"),i=d(e,r,j,n.reportAllChanges)})))}))},U=[2500,4e3],V={},W=function(e,n){n=n||{},C((function(){var t,i=E(),r=f(\"LCP\"),a=function(e){var n=e[e.length-1];n&&n.startTimeperformance.now())return;t.value=Math.max(a-u(),0),t.entries=[r],i(!0),o((function(){t=f(\"TTFB\",0),(i=d(e,t,X,n.reportAllChanges))(!0)}))}}))};export{b as CLSThresholds,L as FCPThresholds,D as FIDThresholds,j as INPThresholds,U as LCPThresholds,X as TTFBThresholds,S as getCLS,w as getFCP,x as getFID,Q as getINP,W as getLCP,Z as getTTFB,S as onCLS,w as onFCP,x as onFID,Q as onINP,W as onLCP,Z as onTTFB};\n","import ReactGA from 'react-ga4';\nimport { isEmpty } from \"lodash\";\nimport { onCLS, onFCP, onFID, onINP, onLCP, onTTFB } from 'web-vitals';\n\n\nvar instance:any = null;\n\nclass IAnalytics {\n\n isActive:boolean;\n\n constructor() {\n\n this.isActive = false;\n this.init();\n \n }\n\n init() {\n\n }\n\n sendWebVitalsData( metric:any ) {\n\n }\n\n sendPageView( page:string, title:string ) {\n\n }\n\n}\n\nclass GoogleAnalytics extends IAnalytics {\n\n init () {\n\n if ( process.env.GOOGLE_ANALYTICS && !isEmpty(process.env.GOOGLE_ANALYTICS) ) {\n ReactGA.initialize(process.env.GOOGLE_ANALYTICS);\n this.isActive = true;\n }\n \n }\n\n sendPageView ( page:string, title:string ) {\n\n if ( this.isActive ) {\n ReactGA.send({ hitType: \"pageview\", page, title });\n }\n \n }\n\n sendWebVitalsData ( metric:any ) {\n \n if ( this.isActive && metric !== null ) {\n ReactGA.event({\n category: 'Web Vitals',\n action: metric.name,\n value: Math.round(metric.name === 'CLS' ? metric.value * 1000 : metric.value), // values must be integers\n label: metric.id, // id unique to current page load\n nonInteraction: true, // avoids affecting bounce rate\n });\n }\n \n }\n\n}\n\nclass ApiAnalytics extends IAnalytics {\n\n}\n\nclass SerializeAnalytics extends IAnalytics {\n\n init () {\n\n this.isActive = true;\n \n }\n\n sendPageView ( page:string, title:string ) {\n \n console.table({ hitType: \"pageview\", page, title })\n \n }\n\n sendWebVitalsData ( metric:any ) {\n\n console.table(JSON.parse(JSON.stringify(metric)));\n \n }\n\n}\n\nclass AnalyticsExtension {\n\n googleAnalytics:GoogleAnalytics;\n apiAnalytics:ApiAnalytics;\n serializeAnalytics:SerializeAnalytics;\n\n constructor() {\n\n this.googleAnalytics = new GoogleAnalytics();\n this.apiAnalytics = new ApiAnalytics();\n this.serializeAnalytics = new SerializeAnalytics();\n\n this.webVitals();\n \n }\n\n initGoogleAnalytics () {\n \n this.googleAnalytics.init();\n \n }\n\n initApiAnalytics () {\n \n this.apiAnalytics.init()\n \n }\n\n initSerializeAnalytics () {\n \n this.serializeAnalytics.init()\n \n }\n\n sendWebVitals ( metric:any ) {\n \n this.googleAnalytics.sendWebVitalsData(metric);\n this.apiAnalytics.sendWebVitalsData(metric);\n this.serializeAnalytics.sendWebVitalsData(metric);\n \n }\n\n sendPageView ( page:string, title:string) {\n \n this.googleAnalytics.sendPageView( page, title );\n this.apiAnalytics.sendPageView( page, title );\n this.serializeAnalytics.sendPageView( page, title );\n \n }\n\n send ( webVitalMetric:any, page:string, title:string ) {\n \n this.sendWebVitals(webVitalMetric);\n this.sendPageView( page, title );\n \n }\n\n webVitals () {\n \n onCLS(this.sendWebVitals.bind(this));\n onFCP(this.sendWebVitals.bind(this));\n onFID(this.sendWebVitals.bind(this));\n onINP(this.sendWebVitals.bind(this));\n onLCP(this.sendWebVitals.bind(this));\n onTTFB(this.sendWebVitals.bind(this));\n \n }\n\n}\n\nif ( !instance ) instance = new AnalyticsExtension();\n\nexport default instance;\n","// Should be no imports here!\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: unique symbol = Symbol.for(\"immer-nothing\")\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 = Symbol.for(\"immer-draftable\")\n\nexport const DRAFT_STATE: unique symbol = Symbol.for(\"immer-state\")\n","export const errors =\n\tprocess.env.NODE_ENV !== \"production\"\n\t\t? [\n\t\t\t\t// All error codes, starting by 0:\n\t\t\t\tfunction(plugin: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\tfunction(thing: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\t\"This object has been frozen and should not be mutated\",\n\t\t\t\tfunction(data: any) {\n\t\t\t\t\treturn (\n\t\t\t\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\t\t\t\tdata\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t\t\t\t\"Immer forbids circular references\",\n\t\t\t\t\"The first or second argument to `produce` must be a function\",\n\t\t\t\t\"The third argument to `produce` must be a function or undefined\",\n\t\t\t\t\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t\t\t\t\"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'current' expects a draft, got: ${thing}`\n\t\t\t\t},\n\t\t\t\t\"Object.defineProperty() cannot be used on an Immer draft\",\n\t\t\t\t\"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t\t\t\t\"Immer only supports deleting array indices\",\n\t\t\t\t\"Immer only supports setting array indices and the 'length' property\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'original' expects a draft, got: ${thing}`\n\t\t\t\t}\n\t\t\t\t// Note: if more errors are added, the errorOffset in Patches.ts should be increased\n\t\t\t\t// See Patches.ts for additional errors\n\t\t ]\n\t\t: []\n\nexport function die(error: number, ...args: any[]): never {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst e = errors[error]\n\t\tconst msg = typeof e === \"function\" ? e.apply(null, args as any) : e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\tArchType,\n\tdie,\n\tStrictMode\n} from \"../internal\"\n\nexport const getPrototypeOf = Object.getPrototypeOf\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 = 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(15, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/**\n * Each iterates a map, set or array.\n * Or, if any other kind of object, all of its own properties.\n * Regardless whether they are enumerable or symbols\n */\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void\n): void\nexport function each(obj: any, iter: any) {\n\tif (getArchtype(obj) === ArchType.Object) {\n\t\tReflect.ownKeys(obj).forEach(key => {\n\t\t\titer(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\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_\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.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 target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn 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, strict: StrictMode) {\n\tif (isMap(base)) {\n\t\treturn new Map(base)\n\t}\n\tif (isSet(base)) {\n\t\treturn new Set(base)\n\t}\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\n\tconst isPlain = isPlainObject(base)\n\n\tif (strict === true || (strict === \"class_only\" && !isPlain)) {\n\t\t// Perform a strict copy\n\t\tconst descriptors = Object.getOwnPropertyDescriptors(base)\n\t\tdelete descriptors[DRAFT_STATE as any]\n\t\tlet keys = Reflect.ownKeys(descriptors)\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key: any = keys[i]\n\t\t\tconst desc = descriptors[key]\n\t\t\tif (desc.writable === false) {\n\t\t\t\tdesc.writable = true\n\t\t\t\tdesc.configurable = true\n\t\t\t}\n\t\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t\t// with libraries that trap values, like mobx or vue\n\t\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\t\tif (desc.get || desc.set)\n\t\t\t\tdescriptors[key] = {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\t\tvalue: base[key]\n\t\t\t\t}\n\t\t}\n\t\treturn Object.create(getPrototypeOf(base), descriptors)\n\t} else {\n\t\t// perform a sloppy copy\n\t\tconst proto = getPrototypeOf(base)\n\t\tif (proto !== null && isPlain) {\n\t\t\treturn {...base} // assumption: better inner class optimization than the assign below\n\t\t}\n\t\tconst obj = Object.create(proto)\n\t\treturn Object.assign(obj, base)\n\t}\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)\n\t\t// See #590, don't recurse into non-enumerable / Symbol properties when freezing\n\t\t// So use Object.entries (only string-like, enumerables) instead of each()\n\t\tObject.entries(obj).forEach(([key, value]) => freeze(value, true))\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tDrafted,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tArchType,\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\tbase: any,\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: readonly Patch[]): T\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(0, 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/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ArchType.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_: ArchType.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\tArchType,\n\tgetPlugin\n} from \"../internal\"\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\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 (state.type_ === ArchType.Object || state.type_ === ArchType.Array)\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\tArchType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen\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 (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].base_,\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(value, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path)\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 = 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// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ArchType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\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\ttargetIsSet?: boolean\n) {\n\tif (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n\t\tdie(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ArchType.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} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\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\t// Per #590, we never freeze symbolic properties. Just to make sure don't accidentally interfere\n\t\t// with other frameworks.\n\t\tif (\n\t\t\t(!parentState || !parentState.scope_.parent_) &&\n\t\t\ttypeof prop !== \"symbol\" &&\n\t\t\tObject.prototype.propertyIsEnumerable.call(targetObject, prop)\n\t\t)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && 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\tgetPrototypeOf,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tArchType,\n\tImmerScope\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_: ArchType.Object\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ArchType.Array\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 ? ArchType.Array : (ArchType.Object 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(value, state))\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\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\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\tif (state.copy_) {\n\t\t\tdelete state.copy_[prop]\n\t\t}\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_ !== ArchType.Array || 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 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 (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop as any)))\n\t\tdie(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (\n\t\tprocess.env.NODE_ENV !== \"production\" &&\n\t\tprop !== \"length\" &&\n\t\tisNaN(parseInt(prop as any))\n\t)\n\t\tdie(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 = getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = 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: {\n\tbase_: any\n\tcopy_: any\n\tscope_: ImmerScope\n}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(\n\t\t\tstate.base_,\n\t\t\tstate.scope_.immer_.useStrictShallowCopy_\n\t\t)\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\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 type StrictMode = boolean | \"class_only\";\n\nexport class Immer implements ProducersFns {\n\tautoFreeze_: boolean = true\n\tuseStrictShallowCopy_: StrictMode = false\n\n\tconstructor(config?: {\n\t\tautoFreeze?: boolean\n\t\tuseStrictShallowCopy?: StrictMode\n\t}) {\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tif (typeof config?.useStrictShallowCopy === \"boolean\")\n\t\t\tthis.setUseStrictShallowCopy(config!.useStrictShallowCopy)\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} recipe - 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(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\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 === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(1, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\t\treturn [result, 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(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 (!state || !state.isManual_) die(9)\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 enable strict shallow copy.\n\t *\n\t * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n\t */\n\tsetUseStrictShallowCopy(value: StrictMode) {\n\t\tthis.useStrictShallowCopy_ = value\n\t}\n\n\tapplyPatches(base: T, patches: readonly 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\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: createProxyProxy(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\tset,\n\tImmerState,\n\tisDraftable,\n\tisFrozen\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(10, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value) || isFrozen(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tif (state) {\n\t\tif (!state.modified_) return state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_)\n\t} else {\n\t\tcopy = shallowCopy(value, true)\n\t}\n\t// recurse\n\teach(copy, (key, childValue) => {\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\tif (state) {\n\t\tstate.finalized_ = false\n\t}\n\treturn copy\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tWritableDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\tProducer,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze,\n\tObjectish,\n\tStrictMode\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\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 enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\nexport const setUseStrictShallowCopy = immer.setUseStrictShallowCopy.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 {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\n","import { runIdentityFunctionCheck } from './devModeChecks/identityFunctionCheck'\r\nimport { runInputStabilityCheck } from './devModeChecks/inputStabilityCheck'\r\nimport { globalDevModeChecks } from './devModeChecks/setGlobalDevModeChecks'\r\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\r\nimport type {\r\n DevModeChecks,\r\n Selector,\r\n SelectorArray,\r\n DevModeChecksExecutionInfo\r\n} from './types'\r\n\r\nexport const NOT_FOUND = /* @__PURE__ */ Symbol('NOT_FOUND')\r\nexport type NOT_FOUND_TYPE = typeof NOT_FOUND\r\n\r\n/**\r\n * Assert that the provided value is a function. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param func - The value to be checked.\r\n * @param errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsFunction(\r\n func: unknown,\r\n errorMessage = `expected a function, instead received ${typeof func}`\r\n): asserts func is FunctionType {\r\n if (typeof func !== 'function') {\r\n throw new TypeError(errorMessage)\r\n }\r\n}\r\n\r\n/**\r\n * Assert that the provided value is an object. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param object - The value to be checked.\r\n * @param errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsObject>(\r\n object: unknown,\r\n errorMessage = `expected an object, instead received ${typeof object}`\r\n): asserts object is ObjectType {\r\n if (typeof object !== 'object') {\r\n throw new TypeError(errorMessage)\r\n }\r\n}\r\n\r\n/**\r\n * Assert that the provided array is an array of functions. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param array - The array to be checked.\r\n * @param errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsArrayOfFunctions(\r\n array: unknown[],\r\n errorMessage = `expected all items to be functions, instead received the following types: `\r\n): asserts array is FunctionType[] {\r\n if (\r\n !array.every((item): item is FunctionType => typeof item === 'function')\r\n ) {\r\n const itemTypes = array\r\n .map(item =>\r\n typeof item === 'function'\r\n ? `function ${item.name || 'unnamed'}()`\r\n : typeof item\r\n )\r\n .join(', ')\r\n throw new TypeError(`${errorMessage}[${itemTypes}]`)\r\n }\r\n}\r\n\r\n/**\r\n * Ensure that the input is an array. If it's already an array, it's returned as is.\r\n * If it's not an array, it will be wrapped in a new array.\r\n *\r\n * @param item - The item to be checked.\r\n * @returns An array containing the input item. If the input is already an array, it's returned without modification.\r\n */\r\nexport const ensureIsArray = (item: unknown) => {\r\n return Array.isArray(item) ? item : [item]\r\n}\r\n\r\n/**\r\n * Extracts the \"dependencies\" / \"input selectors\" from the arguments of `createSelector`.\r\n *\r\n * @param createSelectorArgs - Arguments passed to `createSelector` as an array.\r\n * @returns An array of \"input selectors\" / \"dependencies\".\r\n * @throws A `TypeError` if any of the input selectors is not function.\r\n */\r\nexport function getDependencies(createSelectorArgs: unknown[]) {\r\n const dependencies = Array.isArray(createSelectorArgs[0])\r\n ? createSelectorArgs[0]\r\n : createSelectorArgs\r\n\r\n assertIsArrayOfFunctions(\r\n dependencies,\r\n `createSelector expects all input-selectors to be functions, but received the following types: `\r\n )\r\n\r\n return dependencies as SelectorArray\r\n}\r\n\r\n/**\r\n * Runs each input selector and returns their collective results as an array.\r\n *\r\n * @param dependencies - An array of \"dependencies\" or \"input selectors\".\r\n * @param inputSelectorArgs - An array of arguments being passed to the input selectors.\r\n * @returns An array of input selector results.\r\n */\r\nexport function collectInputSelectorResults(\r\n dependencies: SelectorArray,\r\n inputSelectorArgs: unknown[] | IArguments\r\n) {\r\n const inputSelectorResults = []\r\n const { length } = dependencies\r\n for (let i = 0; i < length; i++) {\r\n // @ts-ignore\r\n // apply arguments instead of spreading and mutate a local list of params for performance.\r\n inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs))\r\n }\r\n return inputSelectorResults\r\n}\r\n\r\n/**\r\n * Retrieves execution information for development mode checks.\r\n *\r\n * @param devModeChecks - Custom Settings for development mode checks. These settings will override the global defaults.\r\n * @param firstRun - Indicates whether it is the first time the selector has run.\r\n * @returns An object containing the execution information for each development mode check.\r\n */\r\nexport const getDevModeChecksExecutionInfo = (\r\n firstRun: boolean,\r\n devModeChecks: Partial\r\n) => {\r\n const { identityFunctionCheck, inputStabilityCheck } = {\r\n ...globalDevModeChecks,\r\n ...devModeChecks\r\n }\r\n return {\r\n identityFunctionCheck: {\r\n shouldRun:\r\n identityFunctionCheck === 'always' ||\r\n (identityFunctionCheck === 'once' && firstRun),\r\n run: runIdentityFunctionCheck\r\n },\r\n inputStabilityCheck: {\r\n shouldRun:\r\n inputStabilityCheck === 'always' ||\r\n (inputStabilityCheck === 'once' && firstRun),\r\n run: runInputStabilityCheck\r\n }\r\n } satisfies DevModeChecksExecutionInfo\r\n}\r\n","// Original source:\r\n// - https://github.com/simonihmig/tracked-redux/blob/master/packages/tracked-redux/src/-private/proxy.ts\r\n\r\nimport type { Node, Tag } from './tracking'\r\nimport {\r\n consumeCollection,\r\n consumeTag,\r\n createTag,\r\n dirtyCollection,\r\n dirtyTag\r\n} from './tracking'\r\n\r\nexport const REDUX_PROXY_LABEL = Symbol()\r\n\r\nlet nextId = 0\r\n\r\nconst proto = Object.getPrototypeOf({})\r\n\r\nclass ObjectTreeNode> implements Node {\r\n proxy: T = new Proxy(this, objectProxyHandler) as unknown as T\r\n tag = createTag()\r\n tags = {} as Record\r\n children = {} as Record\r\n collectionTag = null\r\n id = nextId++\r\n\r\n constructor(public value: T) {\r\n this.value = value\r\n this.tag.value = value\r\n }\r\n}\r\n\r\nconst objectProxyHandler = {\r\n get(node: Node, key: string | symbol): unknown {\r\n function calculateResult() {\r\n const { value } = node\r\n\r\n const childValue = Reflect.get(value, key)\r\n\r\n if (typeof key === 'symbol') {\r\n return childValue\r\n }\r\n\r\n if (key in proto) {\r\n return childValue\r\n }\r\n\r\n if (typeof childValue === 'object' && childValue !== null) {\r\n let childNode = node.children[key]\r\n\r\n if (childNode === undefined) {\r\n childNode = node.children[key] = createNode(childValue)\r\n }\r\n\r\n if (childNode.tag) {\r\n consumeTag(childNode.tag)\r\n }\r\n\r\n return childNode.proxy\r\n } else {\r\n let tag = node.tags[key]\r\n\r\n if (tag === undefined) {\r\n tag = node.tags[key] = createTag()\r\n tag.value = childValue\r\n }\r\n\r\n consumeTag(tag)\r\n\r\n return childValue\r\n }\r\n }\r\n const res = calculateResult()\r\n return res\r\n },\r\n\r\n ownKeys(node: Node): ArrayLike {\r\n consumeCollection(node)\r\n return Reflect.ownKeys(node.value)\r\n },\r\n\r\n getOwnPropertyDescriptor(\r\n node: Node,\r\n prop: string | symbol\r\n ): PropertyDescriptor | undefined {\r\n return Reflect.getOwnPropertyDescriptor(node.value, prop)\r\n },\r\n\r\n has(node: Node, prop: string | symbol): boolean {\r\n return Reflect.has(node.value, prop)\r\n }\r\n}\r\n\r\nclass ArrayTreeNode> implements Node {\r\n proxy: T = new Proxy([this], arrayProxyHandler) as unknown as T\r\n tag = createTag()\r\n tags = {}\r\n children = {}\r\n collectionTag = null\r\n id = nextId++\r\n\r\n constructor(public value: T) {\r\n this.value = value\r\n this.tag.value = value\r\n }\r\n}\r\n\r\nconst arrayProxyHandler = {\r\n get([node]: [Node], key: string | symbol): unknown {\r\n if (key === 'length') {\r\n consumeCollection(node)\r\n }\r\n\r\n return objectProxyHandler.get(node, key)\r\n },\r\n\r\n ownKeys([node]: [Node]): ArrayLike {\r\n return objectProxyHandler.ownKeys(node)\r\n },\r\n\r\n getOwnPropertyDescriptor(\r\n [node]: [Node],\r\n prop: string | symbol\r\n ): PropertyDescriptor | undefined {\r\n return objectProxyHandler.getOwnPropertyDescriptor(node, prop)\r\n },\r\n\r\n has([node]: [Node], prop: string | symbol): boolean {\r\n return objectProxyHandler.has(node, prop)\r\n }\r\n}\r\n\r\nexport function createNode | Record>(\r\n value: T\r\n): Node {\r\n if (Array.isArray(value)) {\r\n return new ArrayTreeNode(value)\r\n }\r\n\r\n return new ObjectTreeNode(value) as Node\r\n}\r\n\r\nconst keysMap = new WeakMap<\r\n Array | Record,\r\n Set\r\n>()\r\n\r\nexport function updateNode | Record>(\r\n node: Node,\r\n newValue: T\r\n): void {\r\n const { value, tags, children } = node\r\n\r\n node.value = newValue\r\n\r\n if (\r\n Array.isArray(value) &&\r\n Array.isArray(newValue) &&\r\n value.length !== newValue.length\r\n ) {\r\n dirtyCollection(node)\r\n } else {\r\n if (value !== newValue) {\r\n let oldKeysSize = 0\r\n let newKeysSize = 0\r\n let anyKeysAdded = false\r\n\r\n for (const _key in value) {\r\n oldKeysSize++\r\n }\r\n\r\n for (const key in newValue) {\r\n newKeysSize++\r\n if (!(key in value)) {\r\n anyKeysAdded = true\r\n break\r\n }\r\n }\r\n\r\n const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize\r\n\r\n if (isDifferent) {\r\n dirtyCollection(node)\r\n }\r\n }\r\n }\r\n\r\n for (const key in tags) {\r\n const childValue = (value as Record)[key]\r\n const newChildValue = (newValue as Record)[key]\r\n\r\n if (childValue !== newChildValue) {\r\n dirtyCollection(node)\r\n dirtyTag(tags[key], newChildValue)\r\n }\r\n\r\n if (typeof newChildValue === 'object' && newChildValue !== null) {\r\n delete tags[key]\r\n }\r\n }\r\n\r\n for (const key in children) {\r\n const childNode = children[key]\r\n const newChildValue = (newValue as Record)[key]\r\n\r\n const childValue = childNode.value\r\n\r\n if (childValue === newChildValue) {\r\n continue\r\n } else if (typeof newChildValue === 'object' && newChildValue !== null) {\r\n updateNode(childNode, newChildValue as Record)\r\n } else {\r\n deleteNode(childNode)\r\n delete children[key]\r\n }\r\n }\r\n}\r\n\r\nfunction deleteNode(node: Node): void {\r\n if (node.tag) {\r\n dirtyTag(node.tag, null)\r\n }\r\n dirtyCollection(node)\r\n for (const key in node.tags) {\r\n dirtyTag(node.tags[key], null)\r\n }\r\n for (const key in node.children) {\r\n deleteNode(node.children[key])\r\n }\r\n}\r\n","// Original source:\r\n// - https://github.com/facebook/react/blob/0b974418c9a56f6c560298560265dcf4b65784bc/packages/react/src/ReactCache.js\r\n\r\nimport type {\r\n AnyFunction,\r\n DefaultMemoizeFields,\r\n EqualityFn,\r\n Simplify\r\n} from './types'\r\n\r\nclass StrongRef {\r\n constructor(private value: T) {}\r\n deref() {\r\n return this.value\r\n }\r\n}\r\n\r\nconst Ref =\r\n typeof WeakRef !== 'undefined'\r\n ? WeakRef\r\n : (StrongRef as unknown as typeof WeakRef)\r\n\r\nconst UNTERMINATED = 0\r\nconst TERMINATED = 1\r\n\r\ninterface UnterminatedCacheNode {\r\n /**\r\n * Status, represents whether the cached computation returned a value or threw an error.\r\n */\r\n s: 0\r\n /**\r\n * Value, either the cached result or an error, depending on status.\r\n */\r\n v: void\r\n /**\r\n * Object cache, a `WeakMap` where non-primitive arguments are stored.\r\n */\r\n o: null | WeakMap>\r\n /**\r\n * Primitive cache, a regular Map where primitive arguments are stored.\r\n */\r\n p: null | Map>\r\n}\r\n\r\ninterface TerminatedCacheNode {\r\n /**\r\n * Status, represents whether the cached computation returned a value or threw an error.\r\n */\r\n s: 1\r\n /**\r\n * Value, either the cached result or an error, depending on status.\r\n */\r\n v: T\r\n /**\r\n * Object cache, a `WeakMap` where non-primitive arguments are stored.\r\n */\r\n o: null | WeakMap>\r\n /**\r\n * Primitive cache, a regular `Map` where primitive arguments are stored.\r\n */\r\n p: null | Map>\r\n}\r\n\r\ntype CacheNode = TerminatedCacheNode | UnterminatedCacheNode\r\n\r\nfunction createCacheNode(): CacheNode {\r\n return {\r\n s: UNTERMINATED,\r\n v: undefined,\r\n o: null,\r\n p: null\r\n }\r\n}\r\n\r\n/**\r\n * Configuration options for a memoization function utilizing `WeakMap` for\r\n * its caching mechanism.\r\n *\r\n * @template Result - The type of the return value of the memoized function.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport interface WeakMapMemoizeOptions {\r\n /**\r\n * If provided, used to compare a newly generated output value against previous values in the cache.\r\n * If a match is found, the old value is returned. This addresses the common\r\n * ```ts\r\n * todos.map(todo => todo.id)\r\n * ```\r\n * use case, where an update to another field in the original data causes a recalculation\r\n * due to changed references, but the output is still effectively the same.\r\n *\r\n * @since 5.0.0\r\n */\r\n resultEqualityCheck?: EqualityFn\r\n}\r\n\r\n/**\r\n * Creates a tree of `WeakMap`-based cache nodes based on the identity of the\r\n * arguments it's been called with (in this case, the extracted values from your input selectors).\r\n * This allows `weakMapMemoize` to have an effectively infinite cache size.\r\n * Cache results will be kept in memory as long as references to the arguments still exist,\r\n * and then cleared out as the arguments are garbage-collected.\r\n *\r\n * __Design Tradeoffs for `weakMapMemoize`:__\r\n * - Pros:\r\n * - It has an effectively infinite cache size, but you have no control over\r\n * how long values are kept in cache as it's based on garbage collection and `WeakMap`s.\r\n * - Cons:\r\n * - There's currently no way to alter the argument comparisons.\r\n * They're based on strict reference equality.\r\n * - It's roughly the same speed as `lruMemoize`, although likely a fraction slower.\r\n *\r\n * __Use Cases for `weakMapMemoize`:__\r\n * - This memoizer is likely best used for cases where you need to call the\r\n * same selector instance with many different arguments, such as a single\r\n * selector instance that is used in a list item component and called with\r\n * item IDs like:\r\n * ```ts\r\n * useSelector(state => selectSomeData(state, props.category))\r\n * ```\r\n * @param func - The function to be memoized.\r\n * @returns A memoized function with a `.clearCache()` method attached.\r\n *\r\n * @example\r\n * Using `createSelector`\r\n * ```ts\r\n * import { createSelector, weakMapMemoize } from 'reselect'\r\n *\r\n * interface RootState {\r\n * items: { id: number; category: string; name: string }[]\r\n * }\r\n *\r\n * const selectItemsByCategory = createSelector(\r\n * [\r\n * (state: RootState) => state.items,\r\n * (state: RootState, category: string) => category\r\n * ],\r\n * (items, category) => items.filter(item => item.category === category),\r\n * {\r\n * memoize: weakMapMemoize,\r\n * argsMemoize: weakMapMemoize\r\n * }\r\n * )\r\n * ```\r\n *\r\n * @example\r\n * Using `createSelectorCreator`\r\n * ```ts\r\n * import { createSelectorCreator, weakMapMemoize } from 'reselect'\r\n *\r\n * const createSelectorWeakMap = createSelectorCreator({ memoize: weakMapMemoize, argsMemoize: weakMapMemoize })\r\n *\r\n * const selectItemsByCategory = createSelectorWeakMap(\r\n * [\r\n * (state: RootState) => state.items,\r\n * (state: RootState, category: string) => category\r\n * ],\r\n * (items, category) => items.filter(item => item.category === category)\r\n * )\r\n * ```\r\n *\r\n * @template Func - The type of the function that is memoized.\r\n *\r\n * @see {@link https://reselect.js.org/api/weakMapMemoize `weakMapMemoize`}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n * @experimental\r\n */\r\nexport function weakMapMemoize(\r\n func: Func,\r\n options: WeakMapMemoizeOptions> = {}\r\n) {\r\n let fnNode = createCacheNode()\r\n const { resultEqualityCheck } = options\r\n\r\n let lastResult: WeakRef | undefined\r\n\r\n let resultsCount = 0\r\n\r\n function memoized() {\r\n let cacheNode = fnNode\r\n const { length } = arguments\r\n for (let i = 0, l = length; i < l; i++) {\r\n const arg = arguments[i]\r\n if (\r\n typeof arg === 'function' ||\r\n (typeof arg === 'object' && arg !== null)\r\n ) {\r\n // Objects go into a WeakMap\r\n let objectCache = cacheNode.o\r\n if (objectCache === null) {\r\n cacheNode.o = objectCache = new WeakMap()\r\n }\r\n const objectNode = objectCache.get(arg)\r\n if (objectNode === undefined) {\r\n cacheNode = createCacheNode()\r\n objectCache.set(arg, cacheNode)\r\n } else {\r\n cacheNode = objectNode\r\n }\r\n } else {\r\n // Primitives go into a regular Map\r\n let primitiveCache = cacheNode.p\r\n if (primitiveCache === null) {\r\n cacheNode.p = primitiveCache = new Map()\r\n }\r\n const primitiveNode = primitiveCache.get(arg)\r\n if (primitiveNode === undefined) {\r\n cacheNode = createCacheNode()\r\n primitiveCache.set(arg, cacheNode)\r\n } else {\r\n cacheNode = primitiveNode\r\n }\r\n }\r\n }\r\n\r\n const terminatedNode = cacheNode as unknown as TerminatedCacheNode\r\n\r\n let result\r\n\r\n if (cacheNode.s === TERMINATED) {\r\n result = cacheNode.v\r\n } else {\r\n // Allow errors to propagate\r\n result = func.apply(null, arguments as unknown as any[])\r\n resultsCount++\r\n\r\n if (resultEqualityCheck) {\r\n const lastResultValue = lastResult?.deref?.() ?? lastResult\r\n\r\n if (\r\n lastResultValue != null &&\r\n resultEqualityCheck(lastResultValue as ReturnType, result)\r\n ) {\r\n result = lastResultValue\r\n\r\n resultsCount !== 0 && resultsCount--\r\n }\r\n\r\n const needsWeakRef =\r\n (typeof result === 'object' && result !== null) ||\r\n typeof result === 'function'\r\n\r\n lastResult = needsWeakRef ? new Ref(result) : result\r\n }\r\n }\r\n\r\n terminatedNode.s = TERMINATED\r\n\r\n terminatedNode.v = result\r\n return result\r\n }\r\n\r\n memoized.clearCache = () => {\r\n fnNode = createCacheNode()\r\n memoized.resetResultsCount()\r\n }\r\n\r\n memoized.resultsCount = () => resultsCount\r\n\r\n memoized.resetResultsCount = () => {\r\n resultsCount = 0\r\n }\r\n\r\n return memoized as Func & Simplify\r\n}\r\n","import { weakMapMemoize } from './weakMapMemoize'\r\n\r\nimport type {\r\n Combiner,\r\n CreateSelectorOptions,\r\n DropFirstParameter,\r\n ExtractMemoizerFields,\r\n GetParamsFromSelectors,\r\n GetStateFromSelectors,\r\n InterruptRecursion,\r\n OutputSelector,\r\n Selector,\r\n SelectorArray,\r\n SetRequired,\r\n Simplify,\r\n UnknownMemoizer\r\n} from './types'\r\n\r\nimport {\r\n assertIsFunction,\r\n collectInputSelectorResults,\r\n ensureIsArray,\r\n getDependencies,\r\n getDevModeChecksExecutionInfo\r\n} from './utils'\r\n\r\n/**\r\n * An instance of `createSelector`, customized with a given memoize implementation.\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n * @template StateType - The type of state that the selectors created with this selector creator will operate on.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSelectorFunction<\r\n MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n StateType = any\r\n> {\r\n /**\r\n * Creates a memoized selector function.\r\n *\r\n * @param createSelectorArgs - An arbitrary number of input selectors as separate inline arguments and a `combiner` function.\r\n * @returns A memoized output selector.\r\n *\r\n * @template InputSelectors - The type of the input selectors as an array.\r\n * @template Result - The return type of the `combiner` as well as the output selector.\r\n * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n *\r\n * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n */\r\n , Result>(\r\n ...createSelectorArgs: [\r\n ...inputSelectors: InputSelectors,\r\n combiner: Combiner\r\n ]\r\n ): OutputSelector<\r\n InputSelectors,\r\n Result,\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n /**\r\n * Creates a memoized selector function.\r\n *\r\n * @param createSelectorArgs - An arbitrary number of input selectors as separate inline arguments, a `combiner` function and an `options` object.\r\n * @returns A memoized output selector.\r\n *\r\n * @template InputSelectors - The type of the input selectors as an array.\r\n * @template Result - The return type of the `combiner` as well as the output selector.\r\n * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n *\r\n * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n */\r\n <\r\n InputSelectors extends SelectorArray,\r\n Result,\r\n OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n >(\r\n ...createSelectorArgs: [\r\n ...inputSelectors: InputSelectors,\r\n combiner: Combiner,\r\n createSelectorOptions: Simplify<\r\n CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n >\r\n ]\r\n ): OutputSelector<\r\n InputSelectors,\r\n Result,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n /**\r\n * Creates a memoized selector function.\r\n *\r\n * @param inputSelectors - An array of input selectors.\r\n * @param combiner - A function that Combines the input selectors and returns an output selector. Otherwise known as the result function.\r\n * @param createSelectorOptions - An optional options object that allows for further customization per selector.\r\n * @returns A memoized output selector.\r\n *\r\n * @template InputSelectors - The type of the input selectors array.\r\n * @template Result - The return type of the `combiner` as well as the output selector.\r\n * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n *\r\n * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n */\r\n <\r\n InputSelectors extends SelectorArray,\r\n Result,\r\n OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n >(\r\n inputSelectors: [...InputSelectors],\r\n combiner: Combiner,\r\n createSelectorOptions?: Simplify<\r\n CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n >\r\n ): OutputSelector<\r\n InputSelectors,\r\n Result,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n /**\r\n * Creates a \"pre-typed\" version of {@linkcode createSelector createSelector}\r\n * where the `state` type is predefined.\r\n *\r\n * This allows you to set the `state` type once, eliminating the need to\r\n * specify it with every {@linkcode createSelector createSelector} call.\r\n *\r\n * @returns A pre-typed `createSelector` with the state type already defined.\r\n *\r\n * @example\r\n * ```ts\r\n * import { createSelector } from 'reselect'\r\n *\r\n * export interface RootState {\r\n * todos: { id: number; completed: boolean }[]\r\n * alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * export const createAppSelector = createSelector.withTypes()\r\n *\r\n * const selectTodoIds = createAppSelector(\r\n * [\r\n * // Type of `state` is set to `RootState`, no need to manually set the type\r\n * state => state.todos\r\n * ],\r\n * todos => todos.map(({ id }) => id)\r\n * )\r\n * ```\r\n * @template OverrideStateType - The specific type of state used by all selectors created with this selector creator.\r\n *\r\n * @see {@link https://reselect.js.org/api/createselector#defining-a-pre-typed-createselector `createSelector.withTypes`}\r\n *\r\n * @since 5.1.0\r\n */\r\n withTypes: () => CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideStateType\r\n >\r\n}\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization function\r\n * and options for customizing memoization behavior.\r\n *\r\n * @param options - An options object containing the `memoize` function responsible for memoizing the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). It also provides additional options for customizing memoization. While the `memoize` property is mandatory, the rest are optional.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @example\r\n * ```ts\r\n * const customCreateSelector = createSelectorCreator({\r\n * memoize: customMemoize, // Function to be used to memoize `resultFunc`\r\n * memoizeOptions: [memoizeOption1, memoizeOption2], // Options passed to `customMemoize` as the second argument onwards\r\n * argsMemoize: customArgsMemoize, // Function to be used to memoize the selector's arguments\r\n * argsMemoizeOptions: [argsMemoizeOption1, argsMemoizeOption2] // Options passed to `customArgsMemoize` as the second argument onwards\r\n * })\r\n *\r\n * const customSelector = customCreateSelector(\r\n * [inputSelector1, inputSelector2],\r\n * resultFunc // `resultFunc` will be passed as the first argument to `customMemoize`\r\n * )\r\n *\r\n * customSelector(\r\n * ...selectorArgs // Will be memoized by `customArgsMemoize`\r\n * )\r\n * ```\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelectorCreator#using-options-since-500 `createSelectorCreator`}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport function createSelectorCreator<\r\n MemoizeFunction extends UnknownMemoizer,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n>(\r\n options: Simplify<\r\n SetRequired<\r\n CreateSelectorOptions<\r\n typeof weakMapMemoize,\r\n typeof weakMapMemoize,\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >,\r\n 'memoize'\r\n >\r\n >\r\n): CreateSelectorFunction\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization function\r\n * and options for customizing memoization behavior.\r\n *\r\n * @param memoize - The `memoize` function responsible for memoizing the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @param memoizeOptionsFromArgs - Optional configuration options for the memoization function. These options are then passed to the memoize function as the second argument onwards.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @example\r\n * ```ts\r\n * const customCreateSelector = createSelectorCreator(customMemoize, // Function to be used to memoize `resultFunc`\r\n * option1, // Will be passed as second argument to `customMemoize`\r\n * option2, // Will be passed as third argument to `customMemoize`\r\n * option3 // Will be passed as fourth argument to `customMemoize`\r\n * )\r\n *\r\n * const customSelector = customCreateSelector(\r\n * [inputSelector1, inputSelector2],\r\n * resultFunc // `resultFunc` will be passed as the first argument to `customMemoize`\r\n * )\r\n * ```\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelectorCreator#using-memoize-and-memoizeoptions `createSelectorCreator`}\r\n *\r\n * @public\r\n */\r\nexport function createSelectorCreator(\r\n memoize: MemoizeFunction,\r\n ...memoizeOptionsFromArgs: DropFirstParameter\r\n): CreateSelectorFunction\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization\r\n * function and options for customizing memoization behavior.\r\n *\r\n * @param memoizeOrOptions - Either A `memoize` function or an `options` object containing the `memoize` function.\r\n * @param memoizeOptionsFromArgs - Optional configuration options for the memoization function. These options are then passed to the memoize function as the second argument onwards.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n * @template MemoizeOrOptions - The type of the first argument. It can either be a `memoize` function or an `options` object containing the `memoize` function.\r\n */\r\nexport function createSelectorCreator<\r\n MemoizeFunction extends UnknownMemoizer,\r\n ArgsMemoizeFunction extends UnknownMemoizer,\r\n MemoizeOrOptions extends\r\n | MemoizeFunction\r\n | SetRequired<\r\n CreateSelectorOptions,\r\n 'memoize'\r\n >\r\n>(\r\n memoizeOrOptions: MemoizeOrOptions,\r\n ...memoizeOptionsFromArgs: MemoizeOrOptions extends SetRequired<\r\n CreateSelectorOptions,\r\n 'memoize'\r\n >\r\n ? never\r\n : DropFirstParameter\r\n) {\r\n /** options initially passed into `createSelectorCreator`. */\r\n const createSelectorCreatorOptions: SetRequired<\r\n CreateSelectorOptions,\r\n 'memoize'\r\n > = typeof memoizeOrOptions === 'function'\r\n ? {\r\n memoize: memoizeOrOptions as MemoizeFunction,\r\n memoizeOptions: memoizeOptionsFromArgs\r\n }\r\n : memoizeOrOptions\r\n\r\n const createSelector = <\r\n InputSelectors extends SelectorArray,\r\n Result,\r\n OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n >(\r\n ...createSelectorArgs: [\r\n ...inputSelectors: [...InputSelectors],\r\n combiner: Combiner,\r\n createSelectorOptions?: CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n ]\r\n ) => {\r\n let recomputations = 0\r\n let dependencyRecomputations = 0\r\n let lastResult: Result\r\n\r\n // Due to the intricacies of rest params, we can't do an optional arg after `...createSelectorArgs`.\r\n // So, start by declaring the default value here.\r\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\r\n let directlyPassedOptions: CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n > = {}\r\n\r\n // Normally, the result func or \"combiner\" is the last arg\r\n let resultFunc = createSelectorArgs.pop() as\r\n | Combiner\r\n | CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n\r\n // If the result func is actually an _object_, assume it's our options object\r\n if (typeof resultFunc === 'object') {\r\n directlyPassedOptions = resultFunc\r\n // and pop the real result func off\r\n resultFunc = createSelectorArgs.pop() as Combiner\r\n }\r\n\r\n assertIsFunction(\r\n resultFunc,\r\n `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\r\n )\r\n\r\n // Determine which set of options we're using. Prefer options passed directly,\r\n // but fall back to options given to `createSelectorCreator`.\r\n const combinedOptions = {\r\n ...createSelectorCreatorOptions,\r\n ...directlyPassedOptions\r\n }\r\n\r\n const {\r\n memoize,\r\n memoizeOptions = [],\r\n argsMemoize = weakMapMemoize,\r\n argsMemoizeOptions = [],\r\n devModeChecks = {}\r\n } = combinedOptions\r\n\r\n // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\r\n // is an array. In most libs I've looked at, it's an equality function or options object.\r\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\r\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\r\n // we wrap it in an array so we can apply it.\r\n const finalMemoizeOptions = ensureIsArray(memoizeOptions)\r\n const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions)\r\n const dependencies = getDependencies(createSelectorArgs) as InputSelectors\r\n\r\n const memoizedResultFunc = memoize(function recomputationWrapper() {\r\n recomputations++\r\n // apply arguments instead of spreading for performance.\r\n // @ts-ignore\r\n return (resultFunc as Combiner).apply(\r\n null,\r\n arguments as unknown as Parameters>\r\n )\r\n }, ...finalMemoizeOptions) as Combiner &\r\n ExtractMemoizerFields\r\n\r\n let firstRun = true\r\n\r\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\r\n const selector = argsMemoize(function dependenciesChecker() {\r\n dependencyRecomputations++\r\n /** Return values of input selectors which the `resultFunc` takes as arguments. */\r\n const inputSelectorResults = collectInputSelectorResults(\r\n dependencies,\r\n arguments\r\n )\r\n\r\n // apply arguments instead of spreading for performance.\r\n // @ts-ignore\r\n lastResult = memoizedResultFunc.apply(null, inputSelectorResults)\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n const { identityFunctionCheck, inputStabilityCheck } =\r\n getDevModeChecksExecutionInfo(firstRun, devModeChecks)\r\n if (identityFunctionCheck.shouldRun) {\r\n identityFunctionCheck.run(\r\n resultFunc as Combiner,\r\n inputSelectorResults,\r\n lastResult\r\n )\r\n }\r\n\r\n if (inputStabilityCheck.shouldRun) {\r\n // make a second copy of the params, to check if we got the same results\r\n const inputSelectorResultsCopy = collectInputSelectorResults(\r\n dependencies,\r\n arguments\r\n )\r\n\r\n inputStabilityCheck.run(\r\n { inputSelectorResults, inputSelectorResultsCopy },\r\n { memoize, memoizeOptions: finalMemoizeOptions },\r\n arguments\r\n )\r\n }\r\n\r\n if (firstRun) firstRun = false\r\n }\r\n\r\n return lastResult\r\n }, ...finalArgsMemoizeOptions) as unknown as Selector<\r\n GetStateFromSelectors,\r\n Result,\r\n GetParamsFromSelectors\r\n > &\r\n ExtractMemoizerFields\r\n\r\n return Object.assign(selector, {\r\n resultFunc,\r\n memoizedResultFunc,\r\n dependencies,\r\n dependencyRecomputations: () => dependencyRecomputations,\r\n resetDependencyRecomputations: () => {\r\n dependencyRecomputations = 0\r\n },\r\n lastResult: () => lastResult,\r\n recomputations: () => recomputations,\r\n resetRecomputations: () => {\r\n recomputations = 0\r\n },\r\n memoize,\r\n argsMemoize\r\n }) as OutputSelector<\r\n InputSelectors,\r\n Result,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n }\r\n\r\n Object.assign(createSelector, {\r\n withTypes: () => createSelector\r\n })\r\n\r\n return createSelector as CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >\r\n}\r\n\r\n/**\r\n * Accepts one or more \"input selectors\" (either as separate arguments or a single array),\r\n * a single \"result function\" / \"combiner\", and an optional options object, and\r\n * generates a memoized selector function.\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelector `createSelector`}\r\n *\r\n * @public\r\n */\r\nexport const createSelector =\r\n /* #__PURE__ */ createSelectorCreator(weakMapMemoize)\r\n","import { createSelector } from './createSelectorCreator'\r\n\r\nimport type { CreateSelectorFunction } from './createSelectorCreator'\r\nimport type {\r\n InterruptRecursion,\r\n ObjectValuesToTuple,\r\n OutputSelector,\r\n Selector,\r\n Simplify,\r\n UnknownMemoizer\r\n} from './types'\r\nimport { assertIsObject } from './utils'\r\nimport type { weakMapMemoize } from './weakMapMemoize'\r\n\r\n/**\r\n * Represents a mapping of selectors to their return types.\r\n *\r\n * @template TObject - An object type where each property is a selector function.\r\n *\r\n * @public\r\n */\r\nexport type SelectorResultsMap = {\r\n [Key in keyof TObject]: ReturnType\r\n}\r\n\r\n/**\r\n * Represents a mapping of selectors for each key in a given root state.\r\n *\r\n * This type is a utility that takes a root state object type and\r\n * generates a corresponding set of selectors. Each selector is associated\r\n * with a key in the root state, allowing for the selection\r\n * of specific parts of the state.\r\n *\r\n * @template RootState - The type of the root state object.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport type RootStateSelectors = {\r\n [Key in keyof RootState]: Selector\r\n}\r\n\r\n/**\r\n * @deprecated Please use {@linkcode StructuredSelectorCreator.withTypes createStructuredSelector.withTypes()} instead. This type will be removed in the future.\r\n * @template RootState - The type of the root state object.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport type TypedStructuredSelectorCreator =\r\n /**\r\n * A convenience function that simplifies returning an object\r\n * made up of selector results.\r\n *\r\n * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n * @returns A memoized structured selector.\r\n *\r\n * @example\r\n * Modern Use Case\r\n * ```ts\r\n * import { createSelector, createStructuredSelector } from 'reselect'\r\n *\r\n * interface RootState {\r\n * todos: {\r\n * id: number\r\n * completed: boolean\r\n * title: string\r\n * description: string\r\n * }[]\r\n * alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * // This:\r\n * const structuredSelector = createStructuredSelector(\r\n * {\r\n * todos: (state: RootState) => state.todos,\r\n * alerts: (state: RootState) => state.alerts,\r\n * todoById: (state: RootState, id: number) => state.todos[id]\r\n * },\r\n * createSelector\r\n * )\r\n *\r\n * // Is essentially the same as this:\r\n * const selector = createSelector(\r\n * [\r\n * (state: RootState) => state.todos,\r\n * (state: RootState) => state.alerts,\r\n * (state: RootState, id: number) => state.todos[id]\r\n * ],\r\n * (todos, alerts, todoById) => {\r\n * return {\r\n * todos,\r\n * alerts,\r\n * todoById\r\n * }\r\n * }\r\n * )\r\n * ```\r\n *\r\n * @example\r\n * In your component:\r\n * ```tsx\r\n * import type { RootState } from 'createStructuredSelector/modernUseCase'\r\n * import { structuredSelector } from 'createStructuredSelector/modernUseCase'\r\n * import type { FC } from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * interface Props {\r\n * id: number\r\n * }\r\n *\r\n * const MyComponent: FC = ({ id }) => {\r\n * const { todos, alerts, todoById } = useSelector((state: RootState) =>\r\n * structuredSelector(state, id)\r\n * )\r\n *\r\n * return (\r\n *
\r\n * Next to do is:\r\n *

{todoById.title}

\r\n *

Description: {todoById.description}

\r\n *
    \r\n *

    All other to dos:

    \r\n * {todos.map(todo => (\r\n *
  • {todo.title}
  • \r\n * ))}\r\n *
\r\n *
\r\n * )\r\n * }\r\n * ```\r\n *\r\n * @example\r\n * Simple Use Case\r\n * ```ts\r\n * const selectA = state => state.a\r\n * const selectB = state => state.b\r\n *\r\n * // The result function in the following selector\r\n * // is simply building an object from the input selectors\r\n * const structuredSelector = createSelector(selectA, selectB, (a, b) => ({\r\n * a,\r\n * b\r\n * }))\r\n *\r\n * const result = structuredSelector({ a: 1, b: 2 }) // will produce { x: 1, y: 2 }\r\n * ```\r\n *\r\n * @template InputSelectorsObject - The shape of the input selectors object.\r\n * @template MemoizeFunction - The type of the memoize function that is used to create the structured selector. It defaults to `weakMapMemoize`.\r\n * @template ArgsMemoizeFunction - The type of the of the memoize function that is used to memoize the arguments passed into the generated structured selector. It defaults to `weakMapMemoize`.\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n */\r\n <\r\n InputSelectorsObject extends RootStateSelectors = RootStateSelectors,\r\n MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n >(\r\n inputSelectorsObject: InputSelectorsObject,\r\n selectorCreator?: CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >\r\n ) => OutputSelector<\r\n ObjectValuesToTuple,\r\n Simplify>,\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n/**\r\n * Represents an object where each property is a selector function.\r\n *\r\n * @template StateType - The type of state that all the selectors operate on.\r\n *\r\n * @public\r\n */\r\nexport type SelectorsObject = Record<\r\n string,\r\n Selector\r\n>\r\n\r\n/**\r\n * It provides a way to create structured selectors.\r\n * The structured selector can take multiple input selectors\r\n * and map their output to an object with specific keys.\r\n *\r\n * @template StateType - The type of state that the structured selectors created with this structured selector creator will operate on.\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n *\r\n * @public\r\n */\r\nexport interface StructuredSelectorCreator {\r\n /**\r\n * A convenience function that simplifies returning an object\r\n * made up of selector results.\r\n *\r\n * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n * @returns A memoized structured selector.\r\n *\r\n * @example\r\n * Modern Use Case\r\n * ```ts\r\n * import { createSelector, createStructuredSelector } from 'reselect'\r\n *\r\n * interface RootState {\r\n * todos: {\r\n * id: number\r\n * completed: boolean\r\n * title: string\r\n * description: string\r\n * }[]\r\n * alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * // This:\r\n * const structuredSelector = createStructuredSelector(\r\n * {\r\n * todos: (state: RootState) => state.todos,\r\n * alerts: (state: RootState) => state.alerts,\r\n * todoById: (state: RootState, id: number) => state.todos[id]\r\n * },\r\n * createSelector\r\n * )\r\n *\r\n * // Is essentially the same as this:\r\n * const selector = createSelector(\r\n * [\r\n * (state: RootState) => state.todos,\r\n * (state: RootState) => state.alerts,\r\n * (state: RootState, id: number) => state.todos[id]\r\n * ],\r\n * (todos, alerts, todoById) => {\r\n * return {\r\n * todos,\r\n * alerts,\r\n * todoById\r\n * }\r\n * }\r\n * )\r\n * ```\r\n *\r\n * @example\r\n * In your component:\r\n * ```tsx\r\n * import type { RootState } from 'createStructuredSelector/modernUseCase'\r\n * import { structuredSelector } from 'createStructuredSelector/modernUseCase'\r\n * import type { FC } from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * interface Props {\r\n * id: number\r\n * }\r\n *\r\n * const MyComponent: FC = ({ id }) => {\r\n * const { todos, alerts, todoById } = useSelector((state: RootState) =>\r\n * structuredSelector(state, id)\r\n * )\r\n *\r\n * return (\r\n *
\r\n * Next to do is:\r\n *

{todoById.title}

\r\n *

Description: {todoById.description}

\r\n *
    \r\n *

    All other to dos:

    \r\n * {todos.map(todo => (\r\n *
  • {todo.title}
  • \r\n * ))}\r\n *
\r\n *
\r\n * )\r\n * }\r\n * ```\r\n *\r\n * @example\r\n * Simple Use Case\r\n * ```ts\r\n * const selectA = state => state.a\r\n * const selectB = state => state.b\r\n *\r\n * // The result function in the following selector\r\n * // is simply building an object from the input selectors\r\n * const structuredSelector = createSelector(selectA, selectB, (a, b) => ({\r\n * a,\r\n * b\r\n * }))\r\n *\r\n * const result = structuredSelector({ a: 1, b: 2 }) // will produce { x: 1, y: 2 }\r\n * ```\r\n *\r\n * @template InputSelectorsObject - The shape of the input selectors object.\r\n * @template MemoizeFunction - The type of the memoize function that is used to create the structured selector. It defaults to `weakMapMemoize`.\r\n * @template ArgsMemoizeFunction - The type of the of the memoize function that is used to memoize the arguments passed into the generated structured selector. It defaults to `weakMapMemoize`.\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n */\r\n <\r\n InputSelectorsObject extends SelectorsObject,\r\n MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n >(\r\n inputSelectorsObject: InputSelectorsObject,\r\n selectorCreator?: CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >\r\n ): OutputSelector<\r\n ObjectValuesToTuple,\r\n Simplify>,\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n /**\r\n * Creates a \"pre-typed\" version of\r\n * {@linkcode createStructuredSelector createStructuredSelector}\r\n * where the `state` type is predefined.\r\n *\r\n * This allows you to set the `state` type once, eliminating the need to\r\n * specify it with every\r\n * {@linkcode createStructuredSelector createStructuredSelector} call.\r\n *\r\n * @returns A pre-typed `createStructuredSelector` with the state type already defined.\r\n *\r\n * @example\r\n * ```ts\r\n * import { createStructuredSelector } from 'reselect'\r\n *\r\n * export interface RootState {\r\n * todos: { id: number; completed: boolean }[]\r\n * alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * export const createStructuredAppSelector =\r\n * createStructuredSelector.withTypes()\r\n *\r\n * const structuredAppSelector = createStructuredAppSelector({\r\n * // Type of `state` is set to `RootState`, no need to manually set the type\r\n * todos: state => state.todos,\r\n * alerts: state => state.alerts,\r\n * todoById: (state, id: number) => state.todos[id]\r\n * })\r\n *\r\n * ```\r\n * @template OverrideStateType - The specific type of state used by all structured selectors created with this structured selector creator.\r\n *\r\n * @see {@link https://reselect.js.org/api/createstructuredselector#defining-a-pre-typed-createstructuredselector `createSelector.withTypes`}\r\n *\r\n * @since 5.1.0\r\n */\r\n withTypes: <\r\n OverrideStateType extends StateType\r\n >() => StructuredSelectorCreator\r\n}\r\n\r\n/**\r\n * A convenience function that simplifies returning an object\r\n * made up of selector results.\r\n *\r\n * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n * @returns A memoized structured selector.\r\n *\r\n * @example\r\n * Modern Use Case\r\n * ```ts\r\n * import { createSelector, createStructuredSelector } from 'reselect'\r\n *\r\n * interface RootState {\r\n * todos: {\r\n * id: number\r\n * completed: boolean\r\n * title: string\r\n * description: string\r\n * }[]\r\n * alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * // This:\r\n * const structuredSelector = createStructuredSelector(\r\n * {\r\n * todos: (state: RootState) => state.todos,\r\n * alerts: (state: RootState) => state.alerts,\r\n * todoById: (state: RootState, id: number) => state.todos[id]\r\n * },\r\n * createSelector\r\n * )\r\n *\r\n * // Is essentially the same as this:\r\n * const selector = createSelector(\r\n * [\r\n * (state: RootState) => state.todos,\r\n * (state: RootState) => state.alerts,\r\n * (state: RootState, id: number) => state.todos[id]\r\n * ],\r\n * (todos, alerts, todoById) => {\r\n * return {\r\n * todos,\r\n * alerts,\r\n * todoById\r\n * }\r\n * }\r\n * )\r\n * ```\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n *\r\n * @public\r\n */\r\nexport const createStructuredSelector: StructuredSelectorCreator =\r\n Object.assign(\r\n <\r\n InputSelectorsObject extends SelectorsObject,\r\n MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n >(\r\n inputSelectorsObject: InputSelectorsObject,\r\n selectorCreator: CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n > = createSelector as CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >\r\n ) => {\r\n assertIsObject(\r\n inputSelectorsObject,\r\n 'createStructuredSelector expects first argument to be an object ' +\r\n `where each property is a selector, instead received a ${typeof inputSelectorsObject}`\r\n )\r\n const inputSelectorKeys = Object.keys(inputSelectorsObject)\r\n const dependencies = inputSelectorKeys.map(\r\n key => inputSelectorsObject[key]\r\n )\r\n const structuredSelector = selectorCreator(\r\n dependencies,\r\n (...inputSelectorResults: any[]) => {\r\n return inputSelectorResults.reduce((composition, value, index) => {\r\n composition[inputSelectorKeys[index]] = value\r\n return composition\r\n }, {})\r\n }\r\n )\r\n return structuredSelector\r\n },\r\n { withTypes: () => createStructuredSelector }\r\n ) as StructuredSelectorCreator\r\n","import type { Action, ActionCreator, StoreEnhancer } from 'redux';\nimport { compose } from 'redux';\n/**\n * @public\n */\n\nexport interface DevToolsEnhancerOptions {\n /**\n * the instance name to be showed on the monitor page. Default value is `document.title`.\n * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\n */\n name?: string;\n /**\n * action creators functions to be available in the Dispatcher.\n */\n\n actionCreators?: ActionCreator[] | {\n [key: string]: ActionCreator;\n };\n /**\n * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\n * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\n * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\n *\n * @default 500 ms.\n */\n\n latency?: number;\n /**\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.\n *\n * @default 50\n */\n\n maxAge?: number;\n /**\n * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\n * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\n * functions.\n */\n\n serialize?: boolean | {\n /**\n * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\n * - `false` - will handle also circular references.\n * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\n * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\n * For each of them you can indicate if to include (by setting as `true`).\n * For `function` key you can also specify a custom function which handles serialization.\n * See [`jsan`](https://github.com/kolodny/jsan) for more details.\n */\n options?: undefined | boolean | {\n date?: true;\n regex?: true;\n undefined?: true;\n error?: true;\n symbol?: true;\n map?: true;\n set?: true;\n function?: true | ((fn: (...args: any[]) => any) => string);\n };\n /**\n * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\n * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\n * key. So you can deserialize it back while importing or persisting data.\n * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\n */\n\n replacer?: (key: string, value: unknown) => any;\n /**\n * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\n * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\n * as an example on how to serialize special data types and get them back.\n */\n\n reviver?: (key: string, value: unknown) => any;\n /**\n * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\n * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\n * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\n */\n\n immutable?: any;\n /**\n * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\n */\n\n refs?: any;\n };\n /**\n * function which takes `action` object and id number as arguments, and should return `action` object back.\n */\n\n actionSanitizer?: (action: A, id: number) => A;\n /**\n * function which takes `state` object and index as arguments, and should return `state` object back.\n */\n\n stateSanitizer?: (state: S, index: number) => S;\n /**\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\n */\n\n actionsDenylist?: string | string[];\n /**\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\n */\n\n actionsAllowlist?: string | string[];\n /**\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.\n * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\n */\n\n predicate?: (state: S, action: A) => boolean;\n /**\n * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\n * Available only for Redux enhancer, for others use `autoPause`.\n *\n * @default true\n */\n\n shouldRecordChanges?: boolean;\n /**\n * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\n * If not specified, will commit when paused. Available only for Redux enhancer.\n *\n * @default \"@@PAUSED\"\"\n */\n\n pauseActionType?: string;\n /**\n * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\n * Not available for Redux enhancer (as it already does it but storing the data to be sent).\n *\n * @default false\n */\n\n autoPause?: boolean;\n /**\n * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\n * Available only for Redux enhancer.\n *\n * @default false\n */\n\n shouldStartLocked?: boolean;\n /**\n * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\n *\n * @default true\n */\n\n shouldHotReload?: boolean;\n /**\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.\n *\n * @default false\n */\n\n shouldCatchErrors?: boolean;\n /**\n * If you want to restrict the extension, specify the features you allow.\n * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\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.\n * Otherwise, you'll get/set the data right from the monitor part.\n */\n\n features?: {\n /**\n * start/pause recording of dispatched actions\n */\n pause?: boolean;\n /**\n * lock/unlock dispatching actions and side effects\n */\n\n lock?: boolean;\n /**\n * persist states on page reloading\n */\n\n persist?: boolean;\n /**\n * export history of actions in a file\n */\n\n export?: boolean | 'custom';\n /**\n * import history of actions from a file\n */\n\n import?: boolean | 'custom';\n /**\n * jump back and forth (time travelling)\n */\n\n jump?: boolean;\n /**\n * skip (cancel) actions\n */\n\n skip?: boolean;\n /**\n * drag and drop actions in the history list\n */\n\n reorder?: boolean;\n /**\n * dispatch custom actions or action creators\n */\n\n dispatch?: boolean;\n /**\n * generate tests for the selected actions\n */\n\n test?: boolean;\n };\n /**\n * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\n * Defaults to false.\n */\n\n trace?: boolean | ((action: A) => string);\n /**\n * The maximum number of stack trace entries to record per action. Defaults to 10.\n */\n\n traceLimit?: number;\n}\ntype Compose = typeof compose;\ninterface ComposeWithDevTools {\n (options: DevToolsEnhancerOptions): Compose;\n (...funcs: StoreEnhancer[]): StoreEnhancer;\n}\n/**\n * @public\n */\n\nexport const composeWithDevTools: ComposeWithDevTools = typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, ((arguments as any) as Function[]));\n};\n/**\n * @public\n */\n\nexport const devToolsEnhancer: {\n (options: DevToolsEnhancerOptions): StoreEnhancer;\n} = typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__ ? (window as any).__REDUX_DEVTOOLS_EXTENSION__ : function () {\n return function (noop) {\n return noop;\n };\n};","import { current, isDraft } from 'immer';\nimport { createSelectorCreator, weakMapMemoize } from 'reselect';\nexport const createDraftSafeSelectorCreator: typeof createSelectorCreator = (...args: unknown[]) => {\n const createSelector = (createSelectorCreator as any)(...args);\n const createDraftSafeSelector = Object.assign((...args: unknown[]) => {\n const selector = createSelector(...args);\n\n const wrappedSelector = (value: unknown, ...rest: unknown[]) => selector(isDraft(value) ? current(value) : value, ...rest);\n\n Object.assign(wrappedSelector, selector);\n return (wrappedSelector as any);\n }, {\n withTypes: () => createDraftSafeSelector\n });\n return createDraftSafeSelector;\n};\n/**\n * \"Draft-Safe\" version of `reselect`'s `createSelector`:\n * If an `immer`-drafted object is passed into the resulting selector's first argument,\n * the selector will act on the current draft value, instead of returning a cached value\n * that might be possibly outdated if the draft has been modified since.\n * @public\n */\n\nexport const createDraftSafeSelector = createDraftSafeSelectorCreator(weakMapMemoize);","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport { isAction } from 'redux';\nimport type { IsUnknownOrNonInferrable, IfMaybeUndefined, IfVoid, IsAny } from './tsHelpers';\nimport { hasMatchFunction } from './tsHelpers';\n/**\n * An action with a string type and an associated payload. This is the\n * type of action returned by `createAction()` action creators.\n *\n * @template P The type of the action's payload.\n * @template T the type used for the action type.\n * @template M The type of the action's meta (optional)\n * @template E The type of the action's error (optional)\n *\n * @public\n */\n\nexport type PayloadAction

= {\n payload: P;\n type: T;\n} & ([M] extends [never] ? {} : {\n meta: M;\n}) & ([E] extends [never] ? {} : {\n error: E;\n});\n/**\n * A \"prepare\" method to be used as the second parameter of `createAction`.\n * Takes any number of arguments and returns a Flux Standard Action without\n * type (will be added later) that *must* contain a payload (might be undefined).\n *\n * @public\n */\n\nexport type PrepareAction

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

| void = void> = IfPrepareActionMethodProvided, // else\nIsAny, IsUnknownOrNonInferrable, // else\nIfVoid, // else\nIfMaybeUndefined, // else\nActionCreatorWithPayload>>>>>;\n/**\n * A utility function to create an action creator for the given action type\n * string. The action creator accepts a single argument, which will be included\n * in the action object as a field called payload. The action creator function\n * will also have its toString() overridden so that it returns the action type.\n *\n * @param type The action type to use for created actions.\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\n *\n * @public\n */\n\nexport function createAction

(type: T): PayloadActionCreator;\n/**\n * A utility function to create an action creator for the given action type\n * string. The action creator accepts a single argument, which will be included\n * in the action object as a field called payload. The action creator function\n * will also have its toString() overridden so that it returns the action type.\n *\n * @param type The action type to use for created actions.\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\n *\n * @public\n */\n\nexport function createAction, T extends string = string>(type: T, prepareAction: PA): PayloadActionCreator['payload'], T, PA>;\nexport function createAction(type: string, prepareAction?: Function): any {\n function actionCreator(...args: any[]) {\n if (prepareAction) {\n let prepared = prepareAction(...args);\n\n if (!prepared) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(0) : 'prepareAction did not return an object');\n }\n\n return {\n type,\n payload: prepared.payload,\n ...('meta' in prepared && {\n meta: prepared.meta\n }),\n ...('error' in prepared && {\n error: prepared.error\n })\n };\n }\n\n return {\n type,\n payload: args[0]\n };\n }\n\n actionCreator.toString = () => `${type}`;\n\n actionCreator.type = type;\n\n actionCreator.match = (action: unknown): action is PayloadAction => isAction(action) && action.type === type;\n\n return actionCreator;\n}\n/**\n * Returns true if value is an RTK-like action creator, with a static type property and match method.\n */\n\nexport function isActionCreator(action: unknown): action is BaseActionCreator & Function {\n return typeof action === 'function' && 'type' in action && // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\n hasMatchFunction((action as any));\n}\n/**\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\n */\n\nexport function isFSA(action: unknown): action is {\n type: string;\n payload?: unknown;\n error?: unknown;\n meta?: unknown;\n} {\n return isAction(action) && Object.keys(action).every(isValidKey);\n}\n\nfunction isValidKey(key: string) {\n return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1;\n} // helper types for more readable typings\n\n\ntype IfPrepareActionMethodProvided | void, True, False> = PA extends (...args: any[]) => any ? True : False;","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport { produce as createNextState, isDraftable } from 'immer';\nimport type { Middleware, StoreEnhancer } from 'redux';\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\n let elapsed = 0;\n return {\n measureTime(fn: () => T): T {\n const started = Date.now();\n\n try {\n return fn();\n } finally {\n const finished = Date.now();\n elapsed += finished - started;\n }\n },\n\n warnIfExceeded() {\n if (elapsed > maxDelay) {\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \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.\nIt is disabled in production builds, so you don't need to worry about that.`);\n }\n }\n\n };\n}\nexport function delay(ms: number) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\nexport function find(iterable: Iterable, comparator: (item: T) => boolean): T | undefined {\n for (const entry of iterable) {\n if (comparator(entry)) {\n return entry;\n }\n }\n\n return undefined;\n}\nexport class Tuple = []> extends Array {\n constructor(length: number);\n constructor(...items: Items);\n\n constructor(...items: any[]) {\n super(...items);\n Object.setPrototypeOf(this, Tuple.prototype);\n }\n\n static get [Symbol.species]() {\n return (Tuple as any);\n }\n\n concat>(items: Tuple): Tuple<[...Items, ...AdditionalItems]>;\n concat>(items: AdditionalItems): Tuple<[...Items, ...AdditionalItems]>;\n concat>(...items: AdditionalItems): Tuple<[...Items, ...AdditionalItems]>;\n\n concat(...arr: any[]) {\n return super.concat.apply(this, arr);\n }\n\n prepend>(items: Tuple): Tuple<[...AdditionalItems, ...Items]>;\n prepend>(items: AdditionalItems): Tuple<[...AdditionalItems, ...Items]>;\n prepend>(...items: AdditionalItems): Tuple<[...AdditionalItems, ...Items]>;\n\n prepend(...arr: any[]) {\n if (arr.length === 1 && Array.isArray(arr[0])) {\n return new Tuple(...arr[0].concat(this));\n }\n\n return new Tuple(...arr.concat(this));\n }\n\n}\nexport function freezeDraftable(val: T) {\n return isDraftable(val) ? createNextState(val, () => {}) : val;\n}\ninterface WeakMapEmplaceHandler {\n /**\n * Will be called to get value, if no value is currently in map.\n */\n insert?(key: K, map: WeakMap): V;\n /**\n * Will be called to update a value, if one exists already.\n */\n\n update?(previous: V, key: K, map: WeakMap): V;\n}\ninterface MapEmplaceHandler {\n /**\n * Will be called to get value, if no value is currently in map.\n */\n insert?(key: K, map: Map): V;\n /**\n * Will be called to update a value, if one exists already.\n */\n\n update?(previous: V, key: K, map: Map): V;\n}\nexport function emplace(map: Map, key: K, handler: MapEmplaceHandler): V;\nexport function emplace(map: WeakMap, key: K, handler: WeakMapEmplaceHandler): V;\n/**\n * Allow inserting a new value, or updating an existing one\n * @throws if called for a key with no current value and no `insert` handler is provided\n * @returns current value in map (after insertion/updating)\n * ```ts\n * // return current value if already in map, otherwise initialise to 0 and return that\n * const num = emplace(map, key, {\n * insert: () => 0\n * })\n *\n * // increase current value by one if already in map, otherwise initialise to 0\n * const num = emplace(map, key, {\n * update: (n) => n + 1,\n * insert: () => 0,\n * })\n *\n * // only update if value's already in the map - and increase it by one\n * if (map.has(key)) {\n * const num = emplace(map, key, {\n * update: (n) => n + 1,\n * })\n * }\n * ```\n *\n * @remarks\n * Based on https://github.com/tc39/proposal-upsert currently in Stage 2 - maybe in a few years we'll be able to replace this with direct method calls\n */\n\nexport function emplace(map: WeakMap, key: K, handler: WeakMapEmplaceHandler): V {\n if (map.has(key)) {\n let value = (map.get(key) as V);\n\n if (handler.update) {\n value = handler.update(value, key, map);\n map.set(key, value);\n }\n\n return value;\n }\n\n if (!handler.insert) throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(10) : 'No insert provided for key not already in map');\n const inserted = handler.insert(key, map);\n map.set(key, inserted);\n return inserted;\n}","import type { Middleware, UnknownAction } from 'redux';\nimport type { ThunkMiddleware } from 'redux-thunk';\nimport { thunk as thunkMiddleware, withExtraArgument } from 'redux-thunk';\nimport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware';\nimport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware';\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware';\n/* PROD_START_REMOVE_UMD */\n\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware';\n/* PROD_STOP_REMOVE_UMD */\n\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware';\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware';\nimport type { ExcludeFromTuple } from './tsHelpers';\nimport { Tuple } from './utils';\n\nfunction isBoolean(x: any): x is boolean {\n return typeof x === 'boolean';\n}\n\ninterface ThunkOptions {\n extraArgument: E;\n}\ninterface GetDefaultMiddlewareOptions {\n thunk?: boolean | ThunkOptions;\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions;\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions;\n actionCreatorCheck?: boolean | ActionCreatorInvariantMiddlewareOptions;\n}\nexport type ThunkMiddlewareFor = O extends {\n thunk: false;\n} ? never : O extends {\n thunk: {\n extraArgument: infer E;\n };\n} ? ThunkMiddleware : ThunkMiddleware;\nexport type GetDefaultMiddleware = (options?: O) => Tuple], never>>;\nexport const buildGetDefaultMiddleware = (): GetDefaultMiddleware => function getDefaultMiddleware(options) {\n const {\n thunk = true,\n immutableCheck = true,\n serializableCheck = true,\n actionCreatorCheck = true\n } = options ?? {};\n let middlewareArray = new Tuple();\n\n if (thunk) {\n if (isBoolean(thunk)) {\n middlewareArray.push(thunkMiddleware);\n } else {\n middlewareArray.push(withExtraArgument(thunk.extraArgument));\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (immutableCheck) {\n /* PROD_START_REMOVE_UMD */\n let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {};\n\n if (!isBoolean(immutableCheck)) {\n immutableOptions = immutableCheck;\n }\n\n middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\n /* PROD_STOP_REMOVE_UMD */\n }\n\n if (serializableCheck) {\n let serializableOptions: SerializableStateInvariantMiddlewareOptions = {};\n\n if (!isBoolean(serializableCheck)) {\n serializableOptions = serializableCheck;\n }\n\n middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\n }\n\n if (actionCreatorCheck) {\n let actionCreatorOptions: ActionCreatorInvariantMiddlewareOptions = {};\n\n if (!isBoolean(actionCreatorCheck)) {\n actionCreatorOptions = actionCreatorCheck;\n }\n\n middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions));\n }\n }\n\n return (middlewareArray as any);\n};","import type { StoreEnhancer } from 'redux';\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch';\nexport const prepareAutoBatched = () => (payload: T): {\n payload: T;\n meta: unknown;\n} => ({\n payload,\n meta: {\n [SHOULD_AUTOBATCH]: true\n }\n});\n\nconst createQueueWithTimer = (timeout: number) => {\n return (notify: () => void) => {\n setTimeout(notify, timeout);\n };\n}; // requestAnimationFrame won't exist in SSR environments.\n// Fall back to a vague approximation just to keep from erroring.\n\n\nconst rAF = typeof window !== 'undefined' && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);\nexport type AutoBatchOptions = {\n type: 'tick';\n} | {\n type: 'timer';\n timeout: number;\n} | {\n type: 'raf';\n} | {\n type: 'callback';\n queueNotification: (notify: () => void) => void;\n};\n/**\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\n * notifying subscribers until either the queued callback executes or the\n * next \"standard-priority\" action is dispatched.\n *\n * This allows dispatching multiple \"low-priority\" actions in a row with only\n * a single subscriber notification to the UI after the sequence of actions\n * is finished, thus improving UI re-render performance.\n *\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\n * This can be added to `action.meta` manually, or by using the\n * `prepareAutoBatched` helper.\n *\n * By default, it will queue a notification for the end of the event loop tick.\n * However, you can pass several other options to configure the behavior:\n * - `{type: 'tick'}`: queues using `queueMicrotask`\n * - `{type: 'timer, timeout: number}`: queues using `setTimeout`\n * - `{type: 'raf'}`: queues using `requestAnimationFrame` (default)\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}`: lets you provide your own callback\n *\n *\n */\n\nexport const autoBatchEnhancer = (options: AutoBatchOptions = {\n type: 'raf'\n}): StoreEnhancer => next => (...args) => {\n const store = next(...args);\n let notifying = true;\n let shouldNotifyAtEndOfTick = false;\n let notificationQueued = false;\n const listeners = new Set<() => void>();\n const queueCallback = options.type === 'tick' ? queueMicrotask : options.type === 'raf' ? rAF : options.type === 'callback' ? options.queueNotification : createQueueWithTimer(options.timeout);\n\n const notifyListeners = () => {\n // We're running at the end of the event loop tick.\n // Run the real listener callbacks to actually update the UI.\n notificationQueued = false;\n\n if (shouldNotifyAtEndOfTick) {\n shouldNotifyAtEndOfTick = false;\n listeners.forEach(l => l());\n }\n };\n\n return Object.assign({}, store, {\n // Override the base `store.subscribe` method to keep original listeners\n // from running if we're delaying notifications\n subscribe(listener: () => void) {\n // Each wrapped listener will only call the real listener if\n // the `notifying` flag is currently active when it's called.\n // This lets the base store work as normal, while the actual UI\n // update becomes controlled by this enhancer.\n const wrappedListener: typeof listener = () => notifying && listener();\n\n const unsubscribe = store.subscribe(wrappedListener);\n listeners.add(listener);\n return () => {\n unsubscribe();\n listeners.delete(listener);\n };\n },\n\n // Override the base `store.dispatch` method so that we can check actions\n // for the `shouldAutoBatch` flag and determine if batching is active\n dispatch(action: any) {\n try {\n // If the action does _not_ have the `shouldAutoBatch` flag,\n // we resume/continue normal notify-after-each-dispatch behavior\n notifying = !action?.meta?.[SHOULD_AUTOBATCH]; // If a `notifyListeners` microtask was queued, you can't cancel it.\n // Instead, we set a flag so that it's a no-op when it does run\n\n shouldNotifyAtEndOfTick = !notifying;\n\n if (shouldNotifyAtEndOfTick) {\n // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\n // a microtask to notify listeners at the end of the event loop tick.\n // Make sure we only enqueue this _once_ per tick.\n if (!notificationQueued) {\n notificationQueued = true;\n queueCallback(notifyListeners);\n }\n } // Go ahead and process the action as usual, including reducers.\n // If normal notification behavior is enabled, the store will notify\n // all of its own listeners, and the wrapper callbacks above will\n // see `notifying` is true and pass on to the real listener callbacks.\n // If we're \"batching\" behavior, then the wrapped callbacks will\n // bail out, causing the base store notification behavior to be no-ops.\n\n\n return store.dispatch(action);\n } finally {\n // Assume we're back to normal behavior after each action\n notifying = true;\n }\n }\n\n });\n};","import type { StoreEnhancer } from 'redux';\nimport type { AutoBatchOptions } from './autoBatchEnhancer';\nimport { autoBatchEnhancer } from './autoBatchEnhancer';\nimport { Tuple } from './utils';\nimport type { Middlewares } from './configureStore';\nimport type { ExtractDispatchExtensions } from './tsHelpers';\ntype GetDefaultEnhancersOptions = {\n autoBatch?: boolean | AutoBatchOptions;\n};\nexport type GetDefaultEnhancers> = (options?: GetDefaultEnhancersOptions) => Tuple<[StoreEnhancer<{\n dispatch: ExtractDispatchExtensions;\n}>]>;\nexport const buildGetDefaultEnhancers = ,>(middlewareEnhancer: StoreEnhancer<{\n dispatch: ExtractDispatchExtensions;\n}>): GetDefaultEnhancers => function getDefaultEnhancers(options) {\n const {\n autoBatch = true\n } = options ?? {};\n let enhancerArray = new Tuple(middlewareEnhancer);\n\n if (autoBatch) {\n enhancerArray.push(autoBatchEnhancer(typeof autoBatch === 'object' ? autoBatch : undefined));\n }\n\n return (enhancerArray as any);\n};","import { formatProdErrorMessage as _formatProdErrorMessage7 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage6 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Reducer, ReducersMapObject, Middleware, Action, StoreEnhancer, Store, UnknownAction } from 'redux';\nimport { applyMiddleware, createStore, compose, combineReducers, isPlainObject } from 'redux';\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension';\nimport { composeWithDevTools } from './devtoolsExtension';\nimport type { ThunkMiddlewareFor, GetDefaultMiddleware } from './getDefaultMiddleware';\nimport { buildGetDefaultMiddleware } from './getDefaultMiddleware';\nimport type { ExtractDispatchExtensions, ExtractStoreExtensions, ExtractStateExtensions, UnknownIfNonSpecific } from './tsHelpers';\nimport type { Tuple } from './utils';\nimport type { GetDefaultEnhancers } from './getDefaultEnhancers';\nimport { buildGetDefaultEnhancers } from './getDefaultEnhancers';\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production';\n/**\n * Options for `configureStore()`.\n *\n * @public\n */\n\nexport interface ConfigureStoreOptions> = Tuple>, E extends Tuple = Tuple, P = S> {\n /**\n * A single reducer function that will be used as the root reducer, or an\n * object of slice reducers that will be passed to `combineReducers()`.\n */\n reducer: Reducer | ReducersMapObject;\n /**\n * An array of Redux middleware to install, or a callback receiving `getDefaultMiddleware` and returning a Tuple of middleware.\n * If not supplied, defaults to the set of middleware returned by `getDefaultMiddleware()`.\n *\n * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\n * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\n */\n\n middleware?: (getDefaultMiddleware: GetDefaultMiddleware) => M;\n /**\n * Whether to enable Redux DevTools integration. Defaults to `true`.\n *\n * Additional configuration can be done by passing Redux DevTools options\n */\n\n devTools?: boolean | DevToolsOptions;\n /**\n * The initial state, same as Redux's createStore.\n * You may optionally specify it to hydrate the state\n * from the server in universal apps, or to restore a previously serialized\n * user session. If you use `combineReducers()` to produce the root reducer\n * function (either directly or indirectly by passing an object as `reducer`),\n * this must be an object with the same shape as the reducer map keys.\n */\n // we infer here, and instead complain if the reducer doesn't match\n\n preloadedState?: P;\n /**\n * The store enhancers to apply. See Redux's `createStore()`.\n * All enhancers will be included before the DevTools Extension enhancer.\n * If you need to customize the order of enhancers, supply a callback\n * function that will receive a `getDefaultEnhancers` function that returns a Tuple,\n * and should return a Tuple of enhancers (such as `getDefaultEnhancers().concat(offline)`).\n * If you only need to add middleware, you can use the `middleware` parameter instead.\n */\n\n enhancers?: (getDefaultEnhancers: GetDefaultEnhancers) => E;\n}\nexport type Middlewares = ReadonlyArray>;\ntype Enhancers = ReadonlyArray;\n/**\n * A Redux store returned by `configureStore()`. Supports dispatching\n * side-effectful _thunks_ in addition to plain actions.\n *\n * @public\n */\n\nexport type EnhancedStore = ExtractStoreExtensions & Store>>;\n/**\n * A friendly abstraction over the standard Redux `createStore()` function.\n *\n * @param options The store configuration.\n * @returns A configured Redux store.\n *\n * @public\n */\n\nexport function configureStore> = Tuple<[ThunkMiddlewareFor]>, E extends Tuple = Tuple<[StoreEnhancer<{\n dispatch: ExtractDispatchExtensions;\n}>, StoreEnhancer]>, P = S>(options: ConfigureStoreOptions): EnhancedStore {\n const getDefaultMiddleware = buildGetDefaultMiddleware();\n const {\n reducer = undefined,\n middleware,\n devTools = true,\n preloadedState = undefined,\n enhancers = undefined\n } = options || {};\n let rootReducer: Reducer;\n\n if (typeof reducer === 'function') {\n rootReducer = reducer;\n } else if (isPlainObject(reducer)) {\n rootReducer = ((combineReducers(reducer) as unknown) as Reducer);\n } else {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(1) : '`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\n }\n\n if (!IS_PRODUCTION && middleware && typeof middleware !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(2) : '`middleware` field must be a callback');\n }\n\n let finalMiddleware: Tuple>;\n\n if (typeof middleware === 'function') {\n finalMiddleware = middleware(getDefaultMiddleware);\n\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(3) : 'when using a middleware builder function, an array of middleware must be returned');\n }\n } else {\n finalMiddleware = getDefaultMiddleware();\n }\n\n if (!IS_PRODUCTION && finalMiddleware.some((item: any) => typeof item !== 'function')) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(4) : 'each middleware provided to configureStore must be a function');\n }\n\n let finalCompose = compose;\n\n if (devTools) {\n finalCompose = composeWithDevTools({\n // Enable capture of stack traces for dispatched Redux actions\n trace: !IS_PRODUCTION,\n ...(typeof devTools === 'object' && devTools)\n });\n }\n\n const middlewareEnhancer = applyMiddleware(...finalMiddleware);\n const getDefaultEnhancers = buildGetDefaultEnhancers(middlewareEnhancer);\n\n if (!IS_PRODUCTION && enhancers && typeof enhancers !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(5) : '`enhancers` field must be a callback');\n }\n\n let storeEnhancers = typeof enhancers === 'function' ? enhancers(getDefaultEnhancers) : getDefaultEnhancers();\n\n if (!IS_PRODUCTION && !Array.isArray(storeEnhancers)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(6) : '`enhancers` callback must return an array');\n }\n\n if (!IS_PRODUCTION && storeEnhancers.some((item: any) => typeof item !== 'function')) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(7) : 'each enhancer provided to configureStore must be a function');\n }\n\n if (!IS_PRODUCTION && finalMiddleware.length && !storeEnhancers.includes(middlewareEnhancer)) {\n console.error('middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`');\n }\n\n const composedEnhancer: StoreEnhancer = finalCompose(...storeEnhancers);\n return createStore(rootReducer, (preloadedState as P), composedEnhancer);\n}","import { formatProdErrorMessage as _formatProdErrorMessage6 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Action } from 'redux';\nimport type { CaseReducer, CaseReducers, ActionMatcherDescriptionCollection } from './createReducer';\nimport type { TypeGuard } from './tsHelpers';\nexport interface TypedActionCreator {\n (...args: any[]): Action;\n type: Type;\n}\n/**\n * A builder for an action <-> reducer map.\n *\n * @public\n */\n\nexport interface ActionReducerMapBuilder {\n /**\n * Adds a case reducer to handle a single exact action type.\n * @remarks\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\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.\n * @param reducer - The actual case reducer function.\n */\n addCase>(actionCreator: ActionCreator, reducer: CaseReducer>): ActionReducerMapBuilder;\n /**\n * Adds a case reducer to handle a single exact action type.\n * @remarks\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\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.\n * @param reducer - The actual case reducer function.\n */\n\n addCase>(type: Type, reducer: CaseReducer): ActionReducerMapBuilder;\n /**\n * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\n * @remarks\n * If multiple matcher reducers match, all of them will be executed in the order\n * they were defined in - even if a case reducer already matched.\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\n * function\n * @param reducer - The actual case reducer function.\n *\n * @example\n ```ts\n import {\n createAction,\n createReducer,\n AsyncThunk,\n UnknownAction,\n } from \"@reduxjs/toolkit\";\n type GenericAsyncThunk = AsyncThunk;\n type PendingAction = ReturnType;\n type RejectedAction = ReturnType;\n type FulfilledAction = ReturnType;\n const initialState: Record = {};\n const resetAction = createAction(\"reset-tracked-loading-state\");\n function isPendingAction(action: UnknownAction): action is PendingAction {\n return typeof action.type === \"string\" && action.type.endsWith(\"/pending\");\n }\n const reducer = createReducer(initialState, (builder) => {\n builder\n .addCase(resetAction, () => initialState)\n // matcher can be defined outside as a type predicate function\n .addMatcher(isPendingAction, (state, action) => {\n state[action.meta.requestId] = \"pending\";\n })\n .addMatcher(\n // matcher can be defined inline as a type predicate function\n (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\n (state, action) => {\n state[action.meta.requestId] = \"rejected\";\n }\n )\n // matcher can just return boolean and the matcher can receive a generic argument\n .addMatcher(\n (action) => action.type.endsWith(\"/fulfilled\"),\n (state, action) => {\n state[action.meta.requestId] = \"fulfilled\";\n }\n );\n });\n ```\n */\n\n addMatcher(matcher: TypeGuard | ((action: any) => boolean), reducer: CaseReducer): Omit, 'addCase'>;\n /**\n * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\n * reducer was executed for this action.\n * @param reducer - The fallback \"default case\" reducer function.\n *\n * @example\n ```ts\n import { createReducer } from '@reduxjs/toolkit'\n const initialState = { otherActions: 0 }\n const reducer = createReducer(initialState, builder => {\n builder\n // .addCase(...)\n // .addMatcher(...)\n .addDefaultCase((state, action) => {\n state.otherActions++\n })\n })\n ```\n */\n\n addDefaultCase(reducer: CaseReducer): {};\n}\nexport function executeReducerBuilderCallback(builderCallback: (builder: ActionReducerMapBuilder) => void): [CaseReducers, ActionMatcherDescriptionCollection, CaseReducer | undefined] {\n const actionsMap: CaseReducers = {};\n const actionMatchers: ActionMatcherDescriptionCollection = [];\n let defaultCaseReducer: CaseReducer | undefined;\n const builder = {\n addCase(typeOrActionCreator: string | TypedActionCreator, reducer: CaseReducer) {\n if (process.env.NODE_ENV !== 'production') {\n /*\n to keep the definition by the user in line with actual behavior,\n we enforce `addCase` to always be called before calling `addMatcher`\n as matching cases take precedence over matchers\n */\n if (actionMatchers.length > 0) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(26) : '`builder.addCase` should only be called before calling `builder.addMatcher`');\n }\n\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(27) : '`builder.addCase` should only be called before calling `builder.addDefaultCase`');\n }\n }\n\n const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n\n if (!type) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(28) : '`builder.addCase` cannot be called with an empty action type');\n }\n\n if (type in actionsMap) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(29) : '`builder.addCase` cannot be called with two reducers for the same action type ' + `'${type}'`);\n }\n\n actionsMap[type] = reducer;\n return builder;\n },\n\n addMatcher(matcher: TypeGuard, reducer: CaseReducer) {\n if (process.env.NODE_ENV !== 'production') {\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(30) : '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`');\n }\n }\n\n actionMatchers.push({\n matcher,\n reducer\n });\n return builder;\n },\n\n addDefaultCase(reducer: CaseReducer) {\n if (process.env.NODE_ENV !== 'production') {\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(31) : '`builder.addDefaultCase` can only be called once');\n }\n }\n\n defaultCaseReducer = reducer;\n return builder;\n }\n\n };\n builderCallback(builder);\n return [actionsMap, actionMatchers, defaultCaseReducer];\n}","// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\n// optimize the gzip compression for this alphabet.\nlet urlAlphabet = 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW';\n/**\n *\n * @public\n */\n\nexport let nanoid = (size = 21) => {\n let id = ''; // A compact alternative for `for (var i = 0; i < step; i++)`.\n\n let i = size;\n\n while (i--) {\n // `| 0` is more compact and faster than `Math.floor()`.\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n\n return id;\n};","import { formatProdErrorMessage as _formatProdErrorMessage8 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage7 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage6 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Action, UnknownAction, Reducer } from 'redux';\nimport type { Selector } from 'reselect';\nimport type { ActionCreatorWithoutPayload, PayloadAction, PayloadActionCreator, PrepareAction, _ActionCreatorWithPreparedPayload } from './createAction';\nimport { createAction } from './createAction';\nimport type { ActionMatcherDescriptionCollection, CaseReducer, ReducerWithInitialState } from './createReducer';\nimport { createReducer } from './createReducer';\nimport type { ActionReducerMapBuilder, TypedActionCreator } from './mapBuilders';\nimport { executeReducerBuilderCallback } from './mapBuilders';\nimport type { Id, Tail, TypeGuard } from './tsHelpers';\nimport type { InjectConfig } from './combineSlices';\nimport type { AsyncThunk, AsyncThunkConfig, AsyncThunkOptions, AsyncThunkPayloadCreator, OverrideThunkApiConfigs } from './createAsyncThunk';\nimport { createAsyncThunk as _createAsyncThunk } from './createAsyncThunk';\nimport { emplace } from './utils';\nconst asyncThunkSymbol = Symbol.for('rtk-slice-createasyncthunk'); // type is annotated because it's too long to infer\n\nexport const asyncThunkCreator: {\n [asyncThunkSymbol]: typeof _createAsyncThunk;\n} = {\n [asyncThunkSymbol]: _createAsyncThunk\n};\ninterface InjectIntoConfig extends InjectConfig {\n reducerPath?: NewReducerPath;\n}\n/**\n * The return value of `createSlice`\n *\n * @public\n */\n\nexport interface Slice = SliceCaseReducers, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors = SliceSelectors> {\n /**\n * The slice name.\n */\n name: Name;\n /**\n * The slice reducer path.\n */\n\n reducerPath: ReducerPath;\n /**\n * The slice's reducer.\n */\n\n reducer: Reducer;\n /**\n * Action creators for the types of actions that are handled by the slice\n * reducer.\n */\n\n actions: CaseReducerActions;\n /**\n * The individual case reducer functions that were passed in the `reducers` parameter.\n * This enables reuse and testing if they were defined inline when calling `createSlice`.\n */\n\n caseReducers: SliceDefinedCaseReducers;\n /**\n * Provides access to the initial state value given to the slice.\n * If a lazy state initializer was provided, it will be called and a fresh value returned.\n */\n\n getInitialState: () => State;\n /**\n * Get localised slice selectors (expects to be called with *just* the slice's state as the first parameter)\n */\n\n getSelectors(): Id>;\n /**\n * Get globalised slice selectors (`selectState` callback is expected to receive first parameter and return slice state)\n */\n\n getSelectors(selectState: (rootState: RootState) => State): Id>;\n /**\n * Selectors that assume the slice's state is `rootState[slice.reducerPath]` (which is usually the case)\n *\n * Equivalent to `slice.getSelectors((state: RootState) => state[slice.reducerPath])`.\n */\n\n get selectors(): Id>;\n /**\n * Inject slice into provided reducer (return value from `combineSlices`), and return injected slice.\n */\n\n injectInto(this: this, injectable: {\n inject: (slice: {\n reducerPath: string;\n reducer: Reducer;\n }, config?: InjectConfig) => void;\n }, config?: InjectIntoConfig): InjectedSlice;\n /**\n * Select the slice state, using the slice's current reducerPath.\n *\n * Will throw an error if slice is not found.\n */\n\n selectSlice(state: { [K in ReducerPath]: State }): State;\n}\n/**\n * A slice after being called with `injectInto(reducer)`.\n *\n * Selectors can now be called with an `undefined` value, in which case they use the slice's initial state.\n */\n\ninterface InjectedSlice = SliceCaseReducers, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors = SliceSelectors> extends Omit, 'getSelectors' | 'selectors'> {\n /**\n * Get localised slice selectors (expects to be called with *just* the slice's state as the first parameter)\n */\n getSelectors(): Id>;\n /**\n * Get globalised slice selectors (`selectState` callback is expected to receive first parameter and return slice state)\n */\n\n getSelectors(selectState: (rootState: RootState) => State | undefined): Id>;\n /**\n * Selectors that assume the slice's state is `rootState[slice.name]` (which is usually the case)\n *\n * Equivalent to `slice.getSelectors((state: RootState) => state[slice.name])`.\n */\n\n get selectors(): Id>;\n /**\n * Select the slice state, using the slice's current reducerPath.\n *\n * Returns initial state if slice is not found.\n */\n\n selectSlice(state: { [K in ReducerPath]?: State | undefined }): State;\n}\n/**\n * Options for `createSlice()`.\n *\n * @public\n */\n\nexport interface CreateSliceOptions = SliceCaseReducers, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors = SliceSelectors> {\n /**\n * The slice's name. Used to namespace the generated action types.\n */\n name: Name;\n /**\n * The slice's reducer path. Used when injecting into a combined slice reducer.\n */\n\n reducerPath?: ReducerPath;\n /**\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`.\n */\n\n initialState: State | (() => State);\n /**\n * A mapping from action types to action-type-specific *case reducer*\n * functions. For every action type, a matching action creator will be\n * generated using `createAction()`.\n */\n\n reducers: ValidateSliceCaseReducers | ((creators: ReducerCreators) => CR);\n /**\n * A callback that receives a *builder* object to define\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\n * \n * \n * @example\n ```ts\n import { createAction, createSlice, Action } from '@reduxjs/toolkit'\n const incrementBy = createAction('incrementBy')\n const decrement = createAction('decrement')\n interface RejectedAction extends Action {\n error: Error\n }\n function isRejectedAction(action: Action): action is RejectedAction {\n return action.type.endsWith('rejected')\n }\n createSlice({\n name: 'counter',\n initialState: 0,\n reducers: {},\n extraReducers: builder => {\n builder\n .addCase(incrementBy, (state, action) => {\n // action is inferred correctly here if using TS\n })\n // You can chain calls, or have separate `builder.addCase()` lines each time\n .addCase(decrement, (state, action) => {})\n // You can match a range of action types\n .addMatcher(\n isRejectedAction,\n // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\n (state, action) => {}\n )\n // and provide a default case if no other handlers matched\n .addDefaultCase((state, action) => {})\n }\n })\n ```\n */\n\n extraReducers?: (builder: ActionReducerMapBuilder) => void;\n /**\n * A map of selectors that receive the slice's state and any additional arguments, and return a result.\n */\n\n selectors?: Selectors;\n}\nexport enum ReducerType {\n reducer = 'reducer',\n reducerWithPrepare = 'reducerWithPrepare',\n asyncThunk = 'asyncThunk',\n}\ninterface ReducerDefinition {\n _reducerDefinitionType: T;\n}\nexport interface CaseReducerDefinition extends CaseReducer, ReducerDefinition {}\n/**\n * A CaseReducer with a `prepare` method.\n *\n * @public\n */\n\nexport type CaseReducerWithPrepare = {\n reducer: CaseReducer;\n prepare: PrepareAction;\n};\nexport interface CaseReducerWithPrepareDefinition extends CaseReducerWithPrepare, ReducerDefinition {}\nexport interface AsyncThunkSliceReducerConfig {\n pending?: CaseReducer['pending']>>;\n rejected?: CaseReducer['rejected']>>;\n fulfilled?: CaseReducer['fulfilled']>>;\n settled?: CaseReducer['rejected' | 'fulfilled']>>;\n options?: AsyncThunkOptions;\n}\nexport interface AsyncThunkSliceReducerDefinition extends AsyncThunkSliceReducerConfig, ReducerDefinition {\n payloadCreator: AsyncThunkPayloadCreator;\n}\n/**\n * Providing these as part of the config would cause circular types, so we disallow passing them\n */\n\ntype PreventCircular = { [K in keyof ThunkApiConfig]: K extends 'state' | 'dispatch' ? never : ThunkApiConfig[K] };\ninterface AsyncThunkCreator = PreventCircular> {\n (payloadCreator: AsyncThunkPayloadCreator, config?: AsyncThunkSliceReducerConfig): AsyncThunkSliceReducerDefinition;\n = {}>(payloadCreator: AsyncThunkPayloadCreator, config?: AsyncThunkSliceReducerConfig): AsyncThunkSliceReducerDefinition;\n withTypes>(): AsyncThunkCreator>;\n}\nexport interface ReducerCreators {\n reducer(caseReducer: CaseReducer): CaseReducerDefinition;\n reducer(caseReducer: CaseReducer>): CaseReducerDefinition>;\n asyncThunk: AsyncThunkCreator;\n preparedReducer>(prepare: Prepare, reducer: CaseReducer>>): {\n _reducerDefinitionType: ReducerType.reducerWithPrepare;\n prepare: Prepare;\n reducer: CaseReducer>>;\n };\n}\n/**\n * The type describing a slice's `reducers` option.\n *\n * @public\n */\n\nexport type SliceCaseReducers = Record> | CaseReducerWithPrepareDefinition> | AsyncThunkSliceReducerDefinition> | Record> | CaseReducerWithPrepare>>;\n/**\n * The type describing a slice's `selectors` option.\n */\n\nexport type SliceSelectors = {\n [K: string]: (sliceState: State, ...args: any[]) => any;\n};\ntype SliceActionType = ActionName extends string | number ? `${SliceName}/${ActionName}` : string;\n/**\n * Derives the slice's `actions` property from the `reducers` options\n *\n * @public\n */\n\nexport type CaseReducerActions, SliceName extends string> = { [Type in keyof CaseReducers]: CaseReducers[Type] extends infer Definition ? Definition extends {\n prepare: any;\n} ? ActionCreatorForCaseReducerWithPrepare> : Definition extends AsyncThunkSliceReducerDefinition ? AsyncThunk : Definition extends {\n reducer: any;\n} ? ActionCreatorForCaseReducer> : ActionCreatorForCaseReducer> : never };\n/**\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\n *\n * @internal\n */\n\ntype ActionCreatorForCaseReducerWithPrepare = _ActionCreatorWithPreparedPayload;\n/**\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\n *\n * @internal\n */\n\ntype ActionCreatorForCaseReducer = CR extends (state: any, action: infer Action) => any ? Action extends {\n payload: infer P;\n} ? PayloadActionCreator : ActionCreatorWithoutPayload : ActionCreatorWithoutPayload;\n/**\n * Extracts the CaseReducers out of a `reducers` object, even if they are\n * tested into a `CaseReducerWithPrepare`.\n *\n * @internal\n */\n\ntype SliceDefinedCaseReducers> = { [Type in keyof CaseReducers]: CaseReducers[Type] extends infer Definition ? Definition extends AsyncThunkSliceReducerDefinition ? Id, 'fulfilled' | 'rejected' | 'pending' | 'settled'>> : Definition extends {\n reducer: infer Reducer;\n} ? Reducer : Definition : never };\ntype RemappedSelector = S extends Selector ? Selector & {\n unwrapped: S;\n} : never;\n/**\n * Extracts the final selector type from the `selectors` object.\n *\n * Removes the `string` index signature from the default value.\n */\n\ntype SliceDefinedSelectors, RootState> = { [K in keyof Selectors as string extends K ? never : K]: RemappedSelector };\n/**\n * Used on a SliceCaseReducers object.\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\n * the `reducer` and the `prepare` function use the same type of `payload`.\n *\n * Might do additional such checks in the future.\n *\n * This type is only ever useful if you want to write your own wrapper around\n * `createSlice`. Please don't use it otherwise!\n *\n * @public\n */\n\nexport type ValidateSliceCaseReducers> = ACR & { [T in keyof ACR]: ACR[T] extends {\n reducer(s: S, action?: infer A): any;\n} ? {\n prepare(...a: never[]): Omit;\n} : {} };\n\nfunction getType(slice: string, actionKey: string): string {\n return `${slice}/${actionKey}`;\n}\n\ninterface BuildCreateSliceConfig {\n creators?: {\n asyncThunk?: typeof asyncThunkCreator;\n };\n}\nexport function buildCreateSlice({\n creators\n}: BuildCreateSliceConfig = {}) {\n const cAT = creators?.asyncThunk?.[asyncThunkSymbol];\n return function createSlice, Name extends string, Selectors extends SliceSelectors, ReducerPath extends string = Name>(options: CreateSliceOptions): Slice {\n const {\n name,\n reducerPath = ((name as unknown) as ReducerPath)\n } = options;\n\n if (!name) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(11) : '`name` is a required option for createSlice');\n }\n\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n if (options.initialState === undefined) {\n console.error('You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`');\n }\n }\n\n const reducers = (typeof options.reducers === 'function' ? options.reducers(buildReducerCreators()) : options.reducers) || {};\n const reducerNames = Object.keys(reducers);\n const context: ReducerHandlingContext = {\n sliceCaseReducersByName: {},\n sliceCaseReducersByType: {},\n actionCreators: {},\n sliceMatchers: []\n };\n const contextMethods: ReducerHandlingContextMethods = {\n addCase(typeOrActionCreator: string | TypedActionCreator, reducer: CaseReducer) {\n const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n\n if (!type) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(12) : '`context.addCase` cannot be called with an empty action type');\n }\n\n if (type in context.sliceCaseReducersByType) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(13) : '`context.addCase` cannot be called with two reducers for the same action type: ' + type);\n }\n\n context.sliceCaseReducersByType[type] = reducer;\n return contextMethods;\n },\n\n addMatcher(matcher, reducer) {\n context.sliceMatchers.push({\n matcher,\n reducer\n });\n return contextMethods;\n },\n\n exposeAction(name, actionCreator) {\n context.actionCreators[name] = actionCreator;\n return contextMethods;\n },\n\n exposeCaseReducer(name, reducer) {\n context.sliceCaseReducersByName[name] = reducer;\n return contextMethods;\n }\n\n };\n reducerNames.forEach(reducerName => {\n const reducerDefinition = reducers[reducerName];\n const reducerDetails: ReducerDetails = {\n reducerName,\n type: getType(name, reducerName),\n createNotation: typeof options.reducers === 'function'\n };\n\n if (isAsyncThunkSliceReducerDefinition(reducerDefinition)) {\n handleThunkCaseReducerDefinition(reducerDetails, reducerDefinition, contextMethods, cAT);\n } else {\n handleNormalReducerDefinition(reducerDetails, reducerDefinition, contextMethods);\n }\n });\n\n function buildReducer() {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof options.extraReducers === 'object') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(14) : \"The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\n }\n }\n\n const [extraReducers = {}, actionMatchers = [], defaultCaseReducer = undefined] = typeof options.extraReducers === 'function' ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers];\n const finalCaseReducers = { ...extraReducers,\n ...context.sliceCaseReducersByType\n };\n return createReducer(options.initialState, builder => {\n for (let key in finalCaseReducers) {\n builder.addCase(key, (finalCaseReducers[key] as CaseReducer));\n }\n\n for (let sM of context.sliceMatchers) {\n builder.addMatcher(sM.matcher, sM.reducer);\n }\n\n for (let m of actionMatchers) {\n builder.addMatcher(m.matcher, m.reducer);\n }\n\n if (defaultCaseReducer) {\n builder.addDefaultCase(defaultCaseReducer);\n }\n });\n }\n\n const selectSelf = (state: State) => state;\n\n const injectedSelectorCache = new Map State | undefined, Record any>>>();\n\n let _reducer: ReducerWithInitialState;\n\n function reducer(state: State | undefined, action: UnknownAction) {\n if (!_reducer) _reducer = buildReducer();\n return _reducer(state, action);\n }\n\n function getInitialState() {\n if (!_reducer) _reducer = buildReducer();\n return _reducer.getInitialState();\n }\n\n function makeSelectorProps(reducerPath: CurrentReducerPath, injected = false): Pick, 'getSelectors' | 'selectors' | 'selectSlice' | 'reducerPath'> {\n function selectSlice(state: { [K in CurrentReducerPath]: State }) {\n let sliceState = state[reducerPath];\n\n if (typeof sliceState === 'undefined') {\n if (injected) {\n sliceState = getInitialState();\n } else if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(15) : 'selectSlice returned undefined for an uninjected slice reducer');\n }\n }\n\n return sliceState;\n }\n\n function getSelectors(selectState: (rootState: any) => State = selectSelf) {\n const selectorCache = emplace(injectedSelectorCache, injected, {\n insert: () => new WeakMap()\n });\n return (emplace(selectorCache, selectState, {\n insert: () => {\n const map: Record> = {};\n\n for (const [name, selector] of Object.entries(options.selectors ?? {})) {\n map[name] = wrapSelector(selector, selectState, getInitialState, injected);\n }\n\n return map;\n }\n }) as any);\n }\n\n return {\n reducerPath,\n getSelectors,\n\n get selectors() {\n return getSelectors(selectSlice);\n },\n\n selectSlice\n };\n }\n\n const slice: Slice = {\n name,\n reducer,\n actions: (context.actionCreators as any),\n caseReducers: (context.sliceCaseReducersByName as any),\n getInitialState,\n ...makeSelectorProps(reducerPath),\n\n injectInto(injectable, {\n reducerPath: pathOpt,\n ...config\n } = {}) {\n const newReducerPath = pathOpt ?? reducerPath;\n injectable.inject({\n reducerPath: newReducerPath,\n reducer\n }, config);\n return ({ ...slice,\n ...makeSelectorProps(newReducerPath, true)\n } as any);\n }\n\n };\n return slice;\n };\n}\n\nfunction wrapSelector>(selector: S, selectState: Selector, getInitialState: () => State, injected?: boolean) {\n function wrapper(rootState: NewState, ...args: any[]) {\n let sliceState = selectState(rootState);\n\n if (typeof sliceState === 'undefined') {\n if (injected) {\n sliceState = getInitialState();\n } else if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(16) : 'selectState returned undefined for an uninjected slice reducer');\n }\n }\n\n return selector(sliceState, ...args);\n }\n\n wrapper.unwrapped = selector;\n return (wrapper as RemappedSelector);\n}\n/**\n * A function that accepts an initial state, an object full of reducer\n * functions, and a \"slice name\", and automatically generates\n * action creators and action types that correspond to the\n * reducers and state.\n *\n * @public\n */\n\n\nexport const createSlice = buildCreateSlice();\ninterface ReducerHandlingContext {\n sliceCaseReducersByName: Record | Pick, 'fulfilled' | 'rejected' | 'pending' | 'settled'>>;\n sliceCaseReducersByType: Record>;\n sliceMatchers: ActionMatcherDescriptionCollection;\n actionCreators: Record;\n}\ninterface ReducerHandlingContextMethods {\n /**\n * Adds a case reducer to handle a single action type.\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.\n * @param reducer - The actual case reducer function.\n */\n addCase>(actionCreator: ActionCreator, reducer: CaseReducer>): ReducerHandlingContextMethods;\n /**\n * Adds a case reducer to handle a single action type.\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.\n * @param reducer - The actual case reducer function.\n */\n\n addCase>(type: Type, reducer: CaseReducer): ReducerHandlingContextMethods;\n /**\n * Allows you to match incoming actions against your own filter function instead of only the `action.type` property.\n * @remarks\n * If multiple matcher reducers match, all of them will be executed in the order\n * they were defined in - even if a case reducer already matched.\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\n * function\n * @param reducer - The actual case reducer function.\n *\n */\n\n addMatcher(matcher: TypeGuard, reducer: CaseReducer): ReducerHandlingContextMethods;\n /**\n * Add an action to be exposed under the final `slice.actions` key.\n * @param name The key to be exposed as.\n * @param actionCreator The action to expose.\n * @example\n * context.exposeAction(\"addPost\", createAction(\"addPost\"));\n *\n * export const { addPost } = slice.actions\n *\n * dispatch(addPost(post))\n */\n\n exposeAction(name: string, actionCreator: Function): ReducerHandlingContextMethods;\n /**\n * Add a case reducer to be exposed under the final `slice.caseReducers` key.\n * @param name The key to be exposed as.\n * @param reducer The reducer to expose.\n * @example\n * context.exposeCaseReducer(\"addPost\", (state, action: PayloadAction) => {\n * state.push(action.payload)\n * })\n *\n * slice.caseReducers.addPost([], addPost(post))\n */\n\n exposeCaseReducer(name: string, reducer: CaseReducer | Pick, 'fulfilled' | 'rejected' | 'pending' | 'settled'>): ReducerHandlingContextMethods;\n}\ninterface ReducerDetails {\n /** The key the reducer was defined under */\n reducerName: string;\n /** The predefined action type, i.e. `${slice.name}/${reducerName}` */\n\n type: string;\n /** Whether create. notation was used when defining reducers */\n\n createNotation: boolean;\n}\n\nfunction buildReducerCreators(): ReducerCreators {\n function asyncThunk(payloadCreator: AsyncThunkPayloadCreator, config: AsyncThunkSliceReducerConfig): AsyncThunkSliceReducerDefinition {\n return {\n _reducerDefinitionType: ReducerType.asyncThunk,\n payloadCreator,\n ...config\n };\n }\n\n asyncThunk.withTypes = () => asyncThunk;\n\n return {\n reducer(caseReducer: CaseReducer) {\n return Object.assign({\n // hack so the wrapping function has the same name as the original\n // we need to create a wrapper so the `reducerDefinitionType` is not assigned to the original\n [caseReducer.name](...args: Parameters) {\n return caseReducer(...args);\n }\n\n }[caseReducer.name], ({\n _reducerDefinitionType: ReducerType.reducer\n } as const));\n },\n\n preparedReducer(prepare, reducer) {\n return {\n _reducerDefinitionType: ReducerType.reducerWithPrepare,\n prepare,\n reducer\n };\n },\n\n asyncThunk: (asyncThunk as any)\n };\n}\n\nfunction handleNormalReducerDefinition({\n type,\n reducerName,\n createNotation\n}: ReducerDetails, maybeReducerWithPrepare: CaseReducer | CaseReducerWithPrepare>, context: ReducerHandlingContextMethods) {\n let caseReducer: CaseReducer;\n let prepareCallback: PrepareAction | undefined;\n\n if ('reducer' in maybeReducerWithPrepare) {\n if (createNotation && !isCaseReducerWithPrepareDefinition(maybeReducerWithPrepare)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(17) : 'Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.');\n }\n\n caseReducer = maybeReducerWithPrepare.reducer;\n prepareCallback = maybeReducerWithPrepare.prepare;\n } else {\n caseReducer = maybeReducerWithPrepare;\n }\n\n context.addCase(type, caseReducer).exposeCaseReducer(reducerName, caseReducer).exposeAction(reducerName, prepareCallback ? createAction(type, prepareCallback) : createAction(type));\n}\n\nfunction isAsyncThunkSliceReducerDefinition(reducerDefinition: any): reducerDefinition is AsyncThunkSliceReducerDefinition {\n return reducerDefinition._reducerDefinitionType === ReducerType.asyncThunk;\n}\n\nfunction isCaseReducerWithPrepareDefinition(reducerDefinition: any): reducerDefinition is CaseReducerWithPrepareDefinition {\n return reducerDefinition._reducerDefinitionType === ReducerType.reducerWithPrepare;\n}\n\nfunction handleThunkCaseReducerDefinition({\n type,\n reducerName\n}: ReducerDetails, reducerDefinition: AsyncThunkSliceReducerDefinition, context: ReducerHandlingContextMethods, cAT: typeof _createAsyncThunk | undefined) {\n if (!cAT) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(18) : 'Cannot use `create.asyncThunk` in the built-in `createSlice`. ' + 'Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.');\n }\n\n const {\n payloadCreator,\n fulfilled,\n pending,\n rejected,\n settled,\n options\n } = reducerDefinition;\n const thunk = cAT(type, payloadCreator, (options as any));\n context.exposeAction(reducerName, thunk);\n\n if (fulfilled) {\n context.addCase(thunk.fulfilled, fulfilled);\n }\n\n if (pending) {\n context.addCase(thunk.pending, pending);\n }\n\n if (rejected) {\n context.addCase(thunk.rejected, rejected);\n }\n\n if (settled) {\n context.addMatcher(thunk.settled, settled);\n }\n\n context.exposeCaseReducer(reducerName, {\n fulfilled: fulfilled || noop,\n pending: pending || noop,\n rejected: rejected || noop,\n settled: settled || noop\n });\n}\n\nfunction noop() {}","import type { SerializedError } from '@reduxjs/toolkit';\nconst task = 'task';\nconst listener = 'listener';\nconst completed = 'completed';\nconst cancelled = 'cancelled';\n/* TaskAbortError error codes */\n\nexport const taskCancelled = (`task-${cancelled}` as const);\nexport const taskCompleted = (`task-${completed}` as const);\nexport const listenerCancelled = (`${listener}-${cancelled}` as const);\nexport const listenerCompleted = (`${listener}-${completed}` as const);\nexport class TaskAbortError implements SerializedError {\n name = 'TaskAbortError';\n message: string;\n\n constructor(public code: string | undefined) {\n this.message = `${task} ${cancelled} (reason: ${code})`;\n }\n\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { AbortSignalWithReason } from './types';\nexport const assertFunction: (func: unknown, expected: string) => asserts func is (...args: unknown[]) => unknown = (func: unknown, expected: string) => {\n if (typeof func !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(32) : `${expected} is not a function`);\n }\n};\nexport const noop = () => {};\nexport const catchRejection = (promise: Promise, onError = noop): Promise => {\n promise.catch(onError);\n return promise;\n};\nexport const addAbortSignalListener = (abortSignal: AbortSignal, callback: (evt: Event) => void) => {\n abortSignal.addEventListener('abort', callback, {\n once: true\n });\n return () => abortSignal.removeEventListener('abort', callback);\n};\n/**\n * Calls `abortController.abort(reason)` and patches `signal.reason`.\n * if it is not supported.\n *\n * At the time of writing `signal.reason` is available in FF chrome, edge node 17 and deno.\n * @param abortController\n * @param reason\n * @returns\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/reason\n */\n\nexport const abortControllerWithReason = (abortController: AbortController, reason: T): void => {\n type Consumer = (val: T) => void;\n const signal = (abortController.signal as AbortSignalWithReason);\n\n if (signal.aborted) {\n return;\n } // Patch `reason` if necessary.\n // - We use defineProperty here because reason is a getter of `AbortSignal.__proto__`.\n // - We need to patch 'reason' before calling `.abort()` because listeners to the 'abort'\n // event are are notified immediately.\n\n\n if (!('reason' in signal)) {\n Object.defineProperty(signal, 'reason', {\n enumerable: true,\n value: reason,\n configurable: true,\n writable: true\n });\n }\n\n ;\n (abortController.abort as Consumer)(reason);\n};","import { TaskAbortError } from './exceptions';\nimport type { AbortSignalWithReason, TaskResult } from './types';\nimport { addAbortSignalListener, catchRejection, noop } from './utils';\n/**\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\n * @param signal\n * @param reason\n * @see {TaskAbortError}\n */\n\nexport const validateActive = (signal: AbortSignal): void => {\n if (signal.aborted) {\n const {\n reason\n } = (signal as AbortSignalWithReason);\n throw new TaskAbortError(reason);\n }\n};\n/**\n * Generates a race between the promise(s) and the AbortSignal\n * This avoids `Promise.race()`-related memory leaks:\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\n */\n\nexport function raceWithSignal(signal: AbortSignalWithReason, promise: Promise): Promise {\n let cleanup = noop;\n return new Promise((resolve, reject) => {\n const notifyRejection = () => reject(new TaskAbortError(signal.reason));\n\n if (signal.aborted) {\n notifyRejection();\n return;\n }\n\n cleanup = addAbortSignalListener(signal, notifyRejection);\n promise.finally(() => cleanup()).then(resolve, reject);\n }).finally(() => {\n // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\n cleanup = noop;\n });\n}\n/**\n * Runs a task and returns promise that resolves to {@link TaskResult}.\n * Second argument is an optional `cleanUp` function that always runs after task.\n *\n * **Note:** `runTask` runs the executor in the next microtask.\n * @returns\n */\n\nexport const runTask = async (task: () => Promise, cleanUp?: () => void): Promise> => {\n try {\n await Promise.resolve();\n const value = await task();\n return {\n status: 'ok',\n value\n };\n } catch (error: any) {\n return {\n status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\n error\n };\n } finally {\n cleanUp?.();\n }\n};\n/**\n * Given an input `AbortSignal` and a promise returns another promise that resolves\n * as soon the input promise is provided or rejects as soon as\n * `AbortSignal.abort` is `true`.\n * @param signal\n * @returns\n */\n\nexport const createPause = (signal: AbortSignal) => {\n return (promise: Promise): Promise => {\n return catchRejection(raceWithSignal(signal, promise).then(output => {\n validateActive(signal);\n return output;\n }));\n };\n};\n/**\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\n * @param signal\n * @returns\n */\n\nexport const createDelay = (signal: AbortSignal) => {\n const pause = createPause(signal);\n return (timeoutMs: number): Promise => {\n return pause(new Promise(resolve => setTimeout(resolve, timeoutMs)));\n };\n};","import { formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Action, Dispatch, MiddlewareAPI, UnknownAction } from 'redux';\nimport { isAction } from 'redux';\nimport type { ThunkDispatch } from 'redux-thunk';\nimport { createAction } from '../createAction';\nimport { nanoid } from '../nanoid';\nimport { find } from '../utils';\nimport { TaskAbortError, listenerCancelled, listenerCompleted, taskCancelled, taskCompleted } from './exceptions';\nimport { createDelay, createPause, raceWithSignal, runTask, validateActive } from './task';\nimport type { AbortSignalWithReason, AddListenerOverloads, AnyListenerPredicate, CreateListenerMiddlewareOptions, FallbackAddListenerOptions, ForkOptions, ForkedTask, ForkedTaskExecutor, ListenerEntry, ListenerErrorHandler, ListenerErrorInfo, ListenerMiddleware, ListenerMiddlewareInstance, TakePattern, TaskResult, TypedAddListener, TypedCreateListenerEntry, TypedRemoveListener, UnsubscribeListener, UnsubscribeListenerOptions } from './types';\nimport { abortControllerWithReason, addAbortSignalListener, assertFunction, catchRejection, noop } from './utils';\nexport { TaskAbortError } from './exceptions';\nexport type { AsyncTaskExecutor, CreateListenerMiddlewareOptions, ForkedTask, ForkedTaskAPI, ForkedTaskExecutor, ListenerEffect, ListenerEffectAPI, ListenerErrorHandler, ListenerMiddleware, ListenerMiddlewareInstance, SyncTaskExecutor, TaskCancelled, TaskRejected, TaskResolved, TaskResult, TypedAddListener, TypedRemoveListener, TypedStartListening, TypedStopListening, UnsubscribeListener, UnsubscribeListenerOptions } from './types'; //Overly-aggressive byte-shaving\n\nconst {\n assign\n} = Object;\n/**\n * @internal\n */\n\nconst INTERNAL_NIL_TOKEN = ({} as const);\nconst alm = ('listenerMiddleware' as const);\n\nconst createFork = (parentAbortSignal: AbortSignalWithReason, parentBlockingPromises: Promise[]) => {\n const linkControllers = (controller: AbortController) => addAbortSignalListener(parentAbortSignal, () => abortControllerWithReason(controller, parentAbortSignal.reason));\n\n return (taskExecutor: ForkedTaskExecutor, opts?: ForkOptions): ForkedTask => {\n assertFunction(taskExecutor, 'taskExecutor');\n const childAbortController = new AbortController();\n linkControllers(childAbortController);\n const result = runTask(async (): Promise => {\n validateActive(parentAbortSignal);\n validateActive(childAbortController.signal);\n const result = (await taskExecutor({\n pause: createPause(childAbortController.signal),\n delay: createDelay(childAbortController.signal),\n signal: childAbortController.signal\n }) as T);\n validateActive(childAbortController.signal);\n return result;\n }, () => abortControllerWithReason(childAbortController, taskCompleted));\n\n if (opts?.autoJoin) {\n parentBlockingPromises.push(result.catch(noop));\n }\n\n return {\n result: createPause>(parentAbortSignal)(result),\n\n cancel() {\n abortControllerWithReason(childAbortController, taskCancelled);\n }\n\n };\n };\n};\n\nconst createTakePattern = (startListening: AddListenerOverloads, signal: AbortSignal): TakePattern => {\n /**\n * A function that takes a ListenerPredicate and an optional timeout,\n * and resolves when either the predicate returns `true` based on an action\n * state combination or when the timeout expires.\n * If the parent listener is canceled while waiting, this will throw a\n * TaskAbortError.\n */\n const take = async

,>(predicate: P, timeout: number | undefined) => {\n validateActive(signal); // Placeholder unsubscribe function until the listener is added\n\n let unsubscribe: UnsubscribeListener = () => {};\n\n const tuplePromise = new Promise<[Action, S, S]>((resolve, reject) => {\n // Inside the Promise, we synchronously add the listener.\n let stopListening = startListening({\n predicate: (predicate as any),\n effect: (action, listenerApi): void => {\n // One-shot listener that cleans up as soon as the predicate passes\n listenerApi.unsubscribe(); // Resolve the promise with the same arguments the predicate saw\n\n resolve([action, listenerApi.getState(), listenerApi.getOriginalState()]);\n }\n });\n\n unsubscribe = () => {\n stopListening();\n reject();\n };\n });\n const promises: (Promise | Promise<[Action, S, S]>)[] = [tuplePromise];\n\n if (timeout != null) {\n promises.push(new Promise(resolve => setTimeout(resolve, timeout, null)));\n }\n\n try {\n const output = await raceWithSignal(signal, Promise.race(promises));\n validateActive(signal);\n return output;\n } finally {\n // Always clean up the listener\n unsubscribe();\n }\n };\n\n return (((predicate: AnyListenerPredicate, timeout: number | undefined) => catchRejection(take(predicate, timeout))) as TakePattern);\n};\n\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\n let {\n type,\n actionCreator,\n matcher,\n predicate,\n effect\n } = options;\n\n if (type) {\n predicate = createAction(type).match;\n } else if (actionCreator) {\n type = actionCreator!.type;\n predicate = actionCreator.match;\n } else if (matcher) {\n predicate = matcher;\n } else if (predicate) {// pass\n } else {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(21) : 'Creating or removing a listener requires one of the known fields for matching an action');\n }\n\n assertFunction(effect, 'options.listener');\n return {\n predicate,\n type,\n effect\n };\n};\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\n\n\nexport const createListenerEntry: TypedCreateListenerEntry = ((Object.assign((options: FallbackAddListenerOptions) => {\n const {\n type,\n predicate,\n effect\n } = getListenerEntryPropsFrom(options);\n const id = nanoid();\n const entry: ListenerEntry = {\n id,\n effect,\n type,\n predicate,\n pending: new Set(),\n unsubscribe: () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(22) : 'Unsubscribe not initialized');\n }\n };\n return entry;\n}, {\n withTypes: () => createListenerEntry\n}) as unknown) as TypedCreateListenerEntry);\n\nconst cancelActiveListeners = (entry: ListenerEntry>) => {\n entry.pending.forEach(controller => {\n abortControllerWithReason(controller, listenerCancelled);\n });\n};\n\nconst createClearListenerMiddleware = (listenerMap: Map) => {\n return () => {\n listenerMap.forEach(cancelActiveListeners);\n listenerMap.clear();\n };\n};\n/**\n * Safely reports errors to the `errorHandler` provided.\n * Errors that occur inside `errorHandler` are notified in a new task.\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\n * @param errorHandler\n * @param errorToNotify\n */\n\n\nconst safelyNotifyError = (errorHandler: ListenerErrorHandler, errorToNotify: unknown, errorInfo: ListenerErrorInfo): void => {\n try {\n errorHandler(errorToNotify, errorInfo);\n } catch (errorHandlerError) {\n // We cannot let an error raised here block the listener queue.\n // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\n setTimeout(() => {\n throw errorHandlerError;\n }, 0);\n }\n};\n/**\n * @public\n */\n\n\nexport const addListener = ((Object.assign(createAction(`${alm}/add`), {\n withTypes: () => addListener\n}) as unknown) as TypedAddListener);\n/**\n * @public\n */\n\nexport const clearAllListeners = createAction(`${alm}/removeAll`);\n/**\n * @public\n */\n\nexport const removeListener = ((Object.assign(createAction(`${alm}/remove`), {\n withTypes: () => removeListener\n}) as unknown) as TypedRemoveListener);\n\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\n console.error(`${alm}/error`, ...args);\n};\n/**\n * @public\n */\n\n\nexport const createListenerMiddleware = = ThunkDispatch, ExtraArgument = unknown>(middlewareOptions: CreateListenerMiddlewareOptions = {}) => {\n const listenerMap = new Map();\n const {\n extra,\n onError = defaultErrorHandler\n } = middlewareOptions;\n assertFunction(onError, 'onError');\n\n const insertEntry = (entry: ListenerEntry) => {\n entry.unsubscribe = () => listenerMap.delete(entry!.id);\n\n listenerMap.set(entry.id, entry);\n return (cancelOptions?: UnsubscribeListenerOptions) => {\n entry.unsubscribe();\n\n if (cancelOptions?.cancelActive) {\n cancelActiveListeners(entry);\n }\n };\n };\n\n const startListening = (((options: FallbackAddListenerOptions) => {\n let entry = find(Array.from(listenerMap.values()), existingEntry => existingEntry.effect === options.effect);\n\n if (!entry) {\n entry = createListenerEntry((options as any));\n }\n\n return insertEntry(entry);\n }) as AddListenerOverloads);\n Object.assign(startListening, {\n withTypes: () => startListening\n });\n\n const stopListening = (options: FallbackAddListenerOptions & UnsubscribeListenerOptions): boolean => {\n const {\n type,\n effect,\n predicate\n } = getListenerEntryPropsFrom(options);\n const entry = find(Array.from(listenerMap.values()), entry => {\n const matchPredicateOrType = typeof type === 'string' ? entry.type === type : entry.predicate === predicate;\n return matchPredicateOrType && entry.effect === effect;\n });\n\n if (entry) {\n entry.unsubscribe();\n\n if (options.cancelActive) {\n cancelActiveListeners(entry);\n }\n }\n\n return !!entry;\n };\n\n Object.assign(stopListening, {\n withTypes: () => stopListening\n });\n\n const notifyListener = async (entry: ListenerEntry>, action: unknown, api: MiddlewareAPI, getOriginalState: () => StateType) => {\n const internalTaskController = new AbortController();\n const take = createTakePattern((startListening as AddListenerOverloads), internalTaskController.signal);\n const autoJoinPromises: Promise[] = [];\n\n try {\n entry.pending.add(internalTaskController);\n await Promise.resolve(entry.effect(action, // Use assign() rather than ... to avoid extra helper functions added to bundle\n assign({}, api, {\n getOriginalState,\n condition: (predicate: AnyListenerPredicate, timeout?: number) => take(predicate, timeout).then(Boolean),\n take,\n delay: createDelay(internalTaskController.signal),\n pause: createPause(internalTaskController.signal),\n extra,\n signal: internalTaskController.signal,\n fork: createFork(internalTaskController.signal, autoJoinPromises),\n unsubscribe: entry.unsubscribe,\n subscribe: () => {\n listenerMap.set(entry.id, entry);\n },\n cancelActiveListeners: () => {\n entry.pending.forEach((controller, _, set) => {\n if (controller !== internalTaskController) {\n abortControllerWithReason(controller, listenerCancelled);\n set.delete(controller);\n }\n });\n },\n cancel: () => {\n abortControllerWithReason(internalTaskController, listenerCancelled);\n entry.pending.delete(internalTaskController);\n },\n throwIfCancelled: () => {\n validateActive(internalTaskController.signal);\n }\n })));\n } catch (listenerError) {\n if (!(listenerError instanceof TaskAbortError)) {\n safelyNotifyError(onError, listenerError, {\n raisedBy: 'effect'\n });\n }\n } finally {\n await Promise.all(autoJoinPromises);\n abortControllerWithReason(internalTaskController, listenerCompleted); // Notify that the task has completed\n\n entry.pending.delete(internalTaskController);\n }\n };\n\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\n\n const middleware: ListenerMiddleware = api => next => action => {\n if (!isAction(action)) {\n // we only want to notify listeners for action objects\n return next(action);\n }\n\n if (addListener.match(action)) {\n return startListening((action.payload as any));\n }\n\n if (clearAllListeners.match(action)) {\n clearListenerMiddleware();\n return;\n }\n\n if (removeListener.match(action)) {\n return stopListening(action.payload);\n } // Need to get this state _before_ the reducer processes the action\n\n\n let originalState: StateType | typeof INTERNAL_NIL_TOKEN = api.getState(); // `getOriginalState` can only be called synchronously.\n // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\n\n const getOriginalState = (): StateType => {\n if (originalState === INTERNAL_NIL_TOKEN) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(23) : `${alm}: getOriginalState can only be called synchronously`);\n }\n\n return (originalState as StateType);\n };\n\n let result: unknown;\n\n try {\n // Actually forward the action to the reducer before we handle listeners\n result = next(action);\n\n if (listenerMap.size > 0) {\n const currentState = api.getState(); // Work around ESBuild+TS transpilation issue\n\n const listenerEntries = Array.from(listenerMap.values());\n\n for (const entry of listenerEntries) {\n let runListener = false;\n\n try {\n runListener = entry.predicate(action, currentState, originalState);\n } catch (predicateError) {\n runListener = false;\n safelyNotifyError(onError, predicateError, {\n raisedBy: 'predicate'\n });\n }\n\n if (!runListener) {\n continue;\n }\n\n notifyListener(entry, action, api, getOriginalState);\n }\n }\n } finally {\n // Remove `originalState` store from this scope.\n originalState = INTERNAL_NIL_TOKEN;\n }\n\n return result;\n };\n\n return ({\n middleware,\n startListening,\n stopListening,\n clearListeners: clearListenerMiddleware\n } as ListenerMiddlewareInstance);\n};","import { formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { UnknownAction, Reducer, StateFromReducersMapObject } from 'redux';\nimport { combineReducers } from 'redux';\nimport { nanoid } from './nanoid';\nimport type { Id, NonUndefined, Tail, UnionToIntersection, WithOptionalProp } from './tsHelpers';\nimport { emplace } from './utils';\ntype SliceLike = {\n reducerPath: ReducerPath;\n reducer: Reducer;\n};\ntype AnySliceLike = SliceLike;\ntype SliceLikeReducerPath = A extends SliceLike ? ReducerPath : never;\ntype SliceLikeState = A extends SliceLike ? State : never;\nexport type WithSlice = { [Path in SliceLikeReducerPath]: SliceLikeState };\ntype ReducerMap = Record;\ntype ExistingSliceLike = { [ReducerPath in keyof DeclaredState]: SliceLike> }[keyof DeclaredState];\nexport type InjectConfig = {\n /**\n * Allow replacing reducer with a different reference. Normally, an error will be thrown if a different reducer instance to the one already injected is used.\n */\n overrideExisting?: boolean;\n};\n/**\n * A reducer that allows for slices/reducers to be injected after initialisation.\n */\n\nexport interface CombinedSliceReducer extends Reducer> {\n /**\n * Provide a type for slices that will be injected lazily.\n *\n * One way to do this would be with interface merging:\n * ```ts\n *\n * export interface LazyLoadedSlices {}\n *\n * export const rootReducer = combineSlices(stringSlice).withLazyLoadedSlices();\n *\n * // elsewhere\n *\n * declare module './reducer' {\n * export interface LazyLoadedSlices extends WithSlice {}\n * }\n *\n * const withBoolean = rootReducer.inject(booleanSlice);\n *\n * // elsewhere again\n *\n * declare module './reducer' {\n * export interface LazyLoadedSlices {\n * customName: CustomState\n * }\n * }\n *\n * const withCustom = rootReducer.inject({ reducerPath: \"customName\", reducer: customSlice.reducer })\n * ```\n */\n withLazyLoadedSlices(): CombinedSliceReducer>>;\n /**\n * Inject a slice.\n *\n * Accepts an individual slice, RTKQ API instance, or a \"slice-like\" { reducerPath, reducer } object.\n *\n * ```ts\n * rootReducer.inject(booleanSlice)\n * rootReducer.inject(baseApi)\n * rootReducer.inject({ reducerPath: 'boolean' as const, reducer: newReducer }, { overrideExisting: true })\n * ```\n *\n */\n\n inject>>(slice: Sl, config?: InjectConfig): CombinedSliceReducer>>;\n /**\n * Inject a slice.\n *\n * Accepts an individual slice, RTKQ API instance, or a \"slice-like\" { reducerPath, reducer } object.\n *\n * ```ts\n * rootReducer.inject(booleanSlice)\n * rootReducer.inject(baseApi)\n * rootReducer.inject({ reducerPath: 'boolean' as const, reducer: newReducer }, { overrideExisting: true })\n * ```\n *\n */\n\n inject(slice: SliceLike, config?: InjectConfig): CombinedSliceReducer>>>;\n /**\n * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n *\n * ```ts\n * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n * // ^? boolean | undefined\n *\n * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n * // if action hasn't been dispatched since slice was injected, this would usually be undefined\n * // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n * return state.boolean;\n * // ^? boolean\n * })\n * ```\n *\n * If the reducer is nested inside the root state, a selectState callback can be passed to retrieve the reducer's state.\n *\n * ```ts\n *\n * export interface LazyLoadedSlices {};\n *\n * export const innerReducer = combineSlices(stringSlice).withLazyLoadedSlices();\n *\n * export const rootReducer = combineSlices({ inner: innerReducer });\n *\n * export type RootState = ReturnType;\n *\n * // elsewhere\n *\n * declare module \"./reducer.ts\" {\n * export interface LazyLoadedSlices extends WithSlice {}\n * }\n *\n * const withBool = innerReducer.inject(booleanSlice);\n *\n * const selectBoolean = withBool.selector(\n * (state) => state.boolean,\n * (rootState: RootState) => state.inner\n * );\n * // now expects to be passed RootState instead of innerReducer state\n *\n * ```\n *\n * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n *\n * ```ts\n * const injectedReducer = rootReducer.inject(booleanSlice);\n * const selectBoolean = injectedReducer.selector((state) => {\n * console.log(injectedReducer.selector.original(state).boolean) // possibly undefined\n * return state.boolean\n * })\n * ```\n */\n\n selector: {\n /**\n * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n *\n * ```ts\n * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n * // ^? boolean | undefined\n *\n * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n * // if action hasn't been dispatched since slice was injected, this would usually be undefined\n * // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n * return state.boolean;\n * // ^? boolean\n * })\n * ```\n *\n * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n *\n * ```ts\n * const injectedReducer = rootReducer.inject(booleanSlice);\n * const selectBoolean = injectedReducer.selector((state) => {\n * console.log(injectedReducer.selector.original(state).boolean) // undefined\n * return state.boolean\n * })\n * ```\n */\n unknown>(selectorFn: Selector): (state: WithOptionalProp[0], Exclude>, ...args: Tail>) => ReturnType;\n /**\n * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n *\n * ```ts\n * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n * // ^? boolean | undefined\n *\n * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n * // if action hasn't been dispatched since slice was injected, this would usually be undefined\n * // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n * return state.boolean;\n * // ^? boolean\n * })\n * ```\n *\n * If the reducer is nested inside the root state, a selectState callback can be passed to retrieve the reducer's state.\n *\n * ```ts\n *\n * interface LazyLoadedSlices {};\n *\n * const innerReducer = combineSlices(stringSlice).withLazyLoadedSlices();\n *\n * const rootReducer = combineSlices({ inner: innerReducer });\n *\n * type RootState = ReturnType;\n *\n * // elsewhere\n *\n * declare module \"./reducer.ts\" {\n * interface LazyLoadedSlices extends WithSlice {}\n * }\n *\n * const withBool = innerReducer.inject(booleanSlice);\n *\n * const selectBoolean = withBool.selector(\n * (state) => state.boolean,\n * (rootState: RootState) => state.inner\n * );\n * // now expects to be passed RootState instead of innerReducer state\n *\n * ```\n *\n * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n *\n * ```ts\n * const injectedReducer = rootReducer.inject(booleanSlice);\n * const selectBoolean = injectedReducer.selector((state) => {\n * console.log(injectedReducer.selector.original(state).boolean) // possibly undefined\n * return state.boolean\n * })\n * ```\n */\n\n unknown, RootState>(selectorFn: Selector, selectState: (rootState: RootState, ...args: Tail>) => WithOptionalProp[0], Exclude>): (state: RootState, ...args: Tail>) => ReturnType;\n /**\n * Returns the unproxied state. Useful for debugging.\n * @param state state Proxy, that ensures injected reducers have value\n * @returns original, unproxied state\n * @throws if value passed is not a state Proxy\n */\n\n original: (state: DeclaredState) => InitialState & Partial;\n };\n}\ntype InitialState> = UnionToIntersection : StateFromReducersMapObject : never>;\n\nconst isSliceLike = (maybeSliceLike: AnySliceLike | ReducerMap): maybeSliceLike is AnySliceLike => 'reducerPath' in maybeSliceLike && typeof maybeSliceLike.reducerPath === 'string';\n\nconst getReducers = (slices: Array) => slices.flatMap(sliceOrMap => isSliceLike(sliceOrMap) ? [([sliceOrMap.reducerPath, sliceOrMap.reducer] as const)] : Object.entries(sliceOrMap));\n\nconst ORIGINAL_STATE = Symbol.for('rtk-state-proxy-original');\n\nconst isStateProxy = (value: any) => !!value && !!value[ORIGINAL_STATE];\n\nconst stateProxyMap = new WeakMap();\n\nconst createStateProxy = (state: State, reducerMap: Partial>) => (emplace(stateProxyMap, state, {\n insert: () => new Proxy(state, {\n get: (target, prop, receiver) => {\n if (prop === ORIGINAL_STATE) return target;\n const result = Reflect.get(target, prop, receiver);\n\n if (typeof result === 'undefined') {\n const reducer = reducerMap[prop.toString()];\n\n if (reducer) {\n // ensure action type is random, to prevent reducer treating it differently\n const reducerResult = reducer(undefined, {\n type: nanoid()\n });\n\n if (typeof reducerResult === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(24) : `The slice reducer for key \"${prop.toString()}\" returned undefined when called for selector(). ` + `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 return reducerResult;\n }\n }\n\n return result;\n }\n })\n}) as State);\n\nconst original = (state: any) => {\n if (!isStateProxy(state)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(25) : 'original must be used on state Proxy');\n }\n\n return state[ORIGINAL_STATE];\n};\n\nexport function combineSlices]>(...slices: Slices): CombinedSliceReducer>> {\n const reducerMap = Object.fromEntries(getReducers(slices));\n\n const getReducer = () => combineReducers(reducerMap);\n\n let reducer = getReducer();\n\n function combinedReducer(state: Record, action: UnknownAction) {\n return reducer(state, action);\n }\n\n combinedReducer.withLazyLoadedSlices = () => combinedReducer;\n\n const inject = (slice: AnySliceLike, config: InjectConfig = {}): typeof combinedReducer => {\n const {\n reducerPath,\n reducer: reducerToInject\n } = slice;\n const currentReducer = reducerMap[reducerPath];\n\n if (!config.overrideExisting && currentReducer && currentReducer !== reducerToInject) {\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n console.error(`called \\`inject\\` to override already-existing reducer ${reducerPath} without specifying \\`overrideExisting: true\\``);\n }\n\n return combinedReducer;\n }\n\n reducerMap[reducerPath] = reducerToInject;\n reducer = getReducer();\n return combinedReducer;\n };\n\n const selector = Object.assign(function makeSelector(selectorFn: (state: State, ...args: Args) => any, selectState?: (rootState: RootState, ...args: Args) => State) {\n return function selector(state: State, ...args: Args) {\n return selectorFn(createStateProxy(selectState ? selectState((state as any), ...args) : state, reducerMap), ...args);\n };\n }, {\n original\n });\n return (Object.assign(combinedReducer, {\n inject,\n selector\n }) as any);\n}","/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nexport function formatProdErrorMessage(code: number) {\n return `Minified Redux Toolkit error #${code}; visit https://redux-toolkit.js.org/Errors?code=${code} for the full message or ` + 'use the non-minified dev environment for full errors. ';\n}","enum EReduxStoreInitialState {\n\n DEFAULT = 1,\n ARRAY = 2,\n OBJECT = 3\n\n};\n\nexport default EReduxStoreInitialState;\n","import EReduxStoreInitialState from 'core/enums/EReduxStoreInitialState';\nimport Lodash from 'lodash';\n\n\nfunction changeValue(\n value:any, \n initialState:EReduxStoreInitialState, \n changeOrders:{ key:string, value:any, match_key:string, match_value:any }[]\n) {\n \n if ( initialState === EReduxStoreInitialState.ARRAY ) return changeValueInArray(value, changeOrders);\n else if ( initialState === EReduxStoreInitialState.OBJECT ) return changeValueInDictionary(value, changeOrders);\n \n return value;\n\n}\n\nfunction changeValueInArray(\n value:any[], \n changeOrders:{ key:string, value:any, match_key:string, match_value:any }[]\n) {\n\n let _value = !Lodash.isEmpty(value) ? [...value] : [];\n\n for ( let order of changeOrders ) {\n\n try {\n if ( !Lodash.isEmpty(order.match_key) && Lodash.isEmpty(order.key) ) {\n _value = _value.map(\n valueItem => { \n if (valueItem[order.match_key] === order.match_value) return { ...valueItem, ...order.value } \n else return valueItem \n }\n );\n }\n else if ( !Lodash.isEmpty(order.match_key) && !Lodash.isEmpty(order.key) ) {\n _value = _value.map( \n (valueItem) => { \n if ( valueItem[order.match_key] === order.match_value ) return { ...valueItem, [order.key]: order.value }\n else return valueItem\n }\n );\n }\n else if (Lodash.isEmpty(order.match_key) && Lodash.isEmpty(order.key)) {\n _value = [ ..._value, order.value ]\n }\n } catch (ex) {\n\n }\n\n }\n\n return Object.assign(_value);\n\n}\n\nfunction changeValueInDictionary(\n value:{[key: string]: any}|null, \n changeOrders:{ key:string, value:any, match_key:string, match_value:any }[]\n) {\n\n let _value:{[key: string]: any} = !Lodash.isEmpty(value) ? {...value} : {};\n for(let item of changeOrders) if (!Lodash.isEmpty(item.key)) _value[item.key] = item.value;\n\n return Object.assign(_value);\n\n}\n\nexport default changeValue;","import Lodash from 'lodash';\nimport CoreDefault from 'core/Defaults';\nimport Cookies from \"universal-cookie\";\n// interface\nimport IBaseReduxStore from 'core/interfaces/IBaseReduxStore';\nimport IBaseReduxStoreAction from 'core/interfaces/IBaseReduxStoreAction';\nimport IBaseReduxStoreState from 'core/interfaces/IBaseReduxStoreState';\n// enum\nimport EActionStatus from 'core/enums/EActionStatus';\nimport EActionType from 'core/enums/EActionType';\nimport EReduxStoreInitialState from 'core/enums/EReduxStoreInitialState';\n// utilities\nimport changeValue from 'core/utilities/ReduxStoreModifierFunctions';\n\n\nfunction BaseReduxStore ( { screenCode, serviceCode, protocol, initialState = EReduxStoreInitialState.DEFAULT}: IBaseReduxStore ) {\n\n // init state\n const initStateArray: IBaseReduxStoreState = { message: null, payload: [], count: 0, error: null, isLoading: false }\n const initStateObject: IBaseReduxStoreState = { message: null, payload: {}, count: 0, error: null, isLoading: false }\n const initStateAny: IBaseReduxStoreState = { message: null, payload: null, count: 0, error: null, isLoading: false }\n\n let initState: IBaseReduxStoreState = ((initialState === EReduxStoreInitialState.ARRAY && initStateArray) || (initialState === EReduxStoreInitialState.OBJECT && initStateObject) || (initialState === EReduxStoreInitialState.DEFAULT && initStateAny)) as IBaseReduxStoreState;\n\n // cookies\n let cookies:(Cookies|null) = null;\n if ( protocol === EActionType.SIGNIN ) {\n cookies = new Cookies();\n }\n\n return function ( state: IBaseReduxStoreState = initState, action: IBaseReduxStoreAction ) {\n\n switch (action.type) {\n \n /**\n * setter\n */\n // success\n case `${screenCode}${serviceCode}${protocol}${EActionStatus.SUCCESS}`:\n if ( protocol === EActionType.SIGNIN ) {\n let _token: string = action?.payload as string;\n\n if ( !Lodash.isEmpty(_token) ) {\n localStorage.setItem(CoreDefault.tokenKeyName, _token);\n cookies?.set(CoreDefault.tokenKeyName, _token, { path: \"/\" });\n } \n }\n\n if ( protocol === EActionType.GET ) {\n return {\n ...state,\n error: null,\n isLoading: false,\n ...action.extraPayload\n }\n }\n else {\n return {\n ...state,\n message: action.message,\n payload: action.payload,\n count: action.count || 0,\n error: null,\n isLoading: false,\n }\n }\n \n // fail\n case `${screenCode}${serviceCode}${protocol}${EActionStatus.FAIL}`:\n if ( protocol === EActionType.SIGNIN ) {\n localStorage.clear();\n cookies?.remove(CoreDefault.tokenKeyName, { path: \"/\" });\n }\n \n return {\n ...state,\n message: action.message,\n payload: null,\n count: 0,\n error: action.payload,\n isLoading: false\n };\n \n // store\n case `${screenCode}${serviceCode}${protocol}${EActionStatus.STORE}`:\n return {\n ...state,\n message: !Lodash.isEmpty(action.message) ? action.message : state.message,\n payload: !Lodash.isEmpty(action.payload) ? action.payload : state.payload,\n count: Lodash.isNumber(action.count) ? action.count : state.count,\n error: !Lodash.isEmpty(action.error) ? action.error : state.error,\n isLoading: false\n };\n \n // modifier\n case `${screenCode}${serviceCode}${protocol}${EActionStatus.MODIFIER}`:\n return {\n ...state,\n payload: changeValue(state?.payload, initialState, action?.payload),\n isLoading: false\n };\n \n /**\n * cleaner\n */\n // clean\n case `${screenCode}${serviceCode}${protocol}${EActionStatus.CLEAN}`:\n if ( protocol === EActionType.SIGNIN ) {\n localStorage.clear();\n cookies?.remove(CoreDefault.tokenKeyName, { path: \"/\" });\n }\n \n if ( protocol === EActionType.GET ) {\n return {\n ...state,\n [action.key]: undefined\n }\n }\n else {\n if (initialState === EReduxStoreInitialState.ARRAY) return initStateArray;\n else if (initialState === EReduxStoreInitialState.OBJECT) return initStateObject;\n else if (initialState === EReduxStoreInitialState.DEFAULT) return initStateAny;\n else return null;\n }\n \n // clean message\n case `${screenCode}${serviceCode}${protocol}${EActionStatus.CLEAN_MESSAGE}`:\n return {\n ...state,\n message: null\n };\n \n // clean payload\n case `${screenCode}${serviceCode}${protocol}${EActionStatus.CLEAN_PAYLOAD}`:\n return {\n ...state,\n payload: null\n };\n \n // clean error\n case `${screenCode}${serviceCode}${protocol}${EActionStatus.CLEAN_ERROR}`:\n return {\n ...state,\n error: null\n };\n \n // clean count\n case `${screenCode}${serviceCode}${protocol}${EActionStatus.CLEAN_COUNT}`:\n return {\n ...state,\n count: 0\n };\n\n\n /**\n * others\n */\n // fetching\n case `${screenCode}${serviceCode}${protocol}${EActionStatus.FETCHING}`:\n return {\n ...state,\n isLoading: true\n };\n \n // toggle\n case `${screenCode}${serviceCode}${protocol}${EActionStatus.TOGGLE}`:\n return {\n ...state,\n payload: (state.payload === true || state.payload === false) ? !state.payload : state.payload,\n isLoading: false\n };\n\n // default\n default:\n return state;\n }\n\n }\n\n}\n\nexport default BaseReduxStore;\n","import BaseReduxStore from 'core/reducers/BaseReduxStore';\n// interface\nimport ICoreReduxStore from 'core/interfaces/ICoreReduxStore';\nimport ICoreReduxStoreBase from 'core/interfaces/ICoreReduxStoreBase';\n// enum\nimport EActionType from 'core/enums/EActionType';\nimport EReduxStoreInitialState from 'core/enums/EReduxStoreInitialState';\n\n\nclass CoreReduxStore {\n\n serviceCode: string = \"\";\n screenCode: string = \"\";\n\n constructor({ screenCode, serviceCode }: ICoreReduxStore ) {\n this.serviceCode = serviceCode;\n this.screenCode = screenCode;\n }\n\n\n BASE ( {storeKey, protocolKey, initialState = EReduxStoreInitialState.DEFAULT}: ICoreReduxStoreBase ) {\n return {\n [storeKey]: BaseReduxStore({ \n screenCode: this.screenCode,\n serviceCode: this.serviceCode, \n protocol: protocolKey,\n initialState: initialState\n }) \n }\n }\n\n \n LIST () {\n return this.BASE({ \n storeKey: \"list\", \n protocolKey: EActionType.LIST,\n initialState: EReduxStoreInitialState.ARRAY\n });\n }\n\n POST ( initialState = EReduxStoreInitialState.OBJECT ) {\n return this.BASE({ \n storeKey: \"post\", \n protocolKey: EActionType.POST, \n initialState: initialState\n });\n }\n\n PATCH () {\n return this.BASE({ \n storeKey: \"patch\", \n protocolKey: EActionType.PATCH, \n initialState: EReduxStoreInitialState.OBJECT\n });\n }\n\n MANAGEMENT ( initialState = EReduxStoreInitialState.OBJECT ) {\n return this.BASE({ \n storeKey: \"management\", \n protocolKey: EActionType.MANAGEMENT, \n initialState: initialState\n });\n }\n\n DELETE () {\n return this.BASE({ \n storeKey: \"delete\", \n protocolKey: EActionType.DELETE, \n initialState: EReduxStoreInitialState.OBJECT\n });\n }\n\n DETAILS () {\n return this.BASE({ \n storeKey: \"details\", \n protocolKey: EActionType.DETAILS, \n initialState: EReduxStoreInitialState.OBJECT\n });\n }\n\n STORAGE ( initialState = EReduxStoreInitialState.OBJECT ) {\n return this.BASE({ \n storeKey: \"storage\", \n protocolKey: EActionType.STORAGE, \n initialState: initialState\n });\n }\n\n GET () {\n return this.BASE({ \n storeKey: \"get\", \n protocolKey: EActionType.GET,\n initialState: EReduxStoreInitialState.OBJECT\n });\n }\n\n SIGNIN () {\n return { \n \"signIn\": BaseReduxStore({ \n screenCode: \"\",\n serviceCode: \"\", \n protocol: EActionType.SIGNIN,\n initialState: EReduxStoreInitialState.OBJECT\n })\n }\n }\n\n DOWNLOAD () {\n return this.BASE({ \n storeKey: \"download\", \n protocolKey: EActionType.DOWNLOAD, \n initialState: EReduxStoreInitialState.OBJECT\n });\n }\n\n UPLOAD () {\n return this.BASE({ \n storeKey: \"upload\", \n protocolKey: EActionType.UPLOAD, \n initialState: EReduxStoreInitialState.OBJECT\n });\n }\n \n \n CHANGE () {\n return this.BASE({ \n storeKey: \"change\", \n protocolKey: EActionType.CHANGE, \n initialState: EReduxStoreInitialState.OBJECT\n });\n }\n\n \n PUBLISH_MESSAGE () {\n return this.BASE({ \n storeKey: \"publishMessage\", \n protocolKey: EActionType.PUBLISH_MESSAGE, \n initialState: EReduxStoreInitialState.OBJECT \n });\n }\n\n PUBLISH_POPUP () {\n return this.BASE({ \n storeKey: \"publishPopup\", \n protocolKey: EActionType.PUBLISH_POPUP, \n initialState: EReduxStoreInitialState.OBJECT\n });\n }\n\n}\n\nexport default CoreReduxStore;\n","import { combineReducers } from 'redux';\n// reducers\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\n// interfaces\nimport ICoreReduxStore from 'core/interfaces/ICoreReduxStore';\n// enums\nimport EReduxStoreInitialState from 'core/enums/EReduxStoreInitialState';\nimport EActionType from 'core/enums/EActionType';\n\nconst reduxStorages = new CoreReduxStore( { screenCode: \"COM\", serviceCode: \"Core\" } as ICoreReduxStore )\n\n/**\n * - Uygulama ana verileri burada depolanır\n * - Herhangi bir sayfaya bağlı kalmaksızın verilerin depolanması için \n * screenCode COM(Common) ve serviceCode Core(Core) olarak set edilmiştir.\n */\n\nconst CoreStore = combineReducers({\n\n language: reduxStorages.BASE({ \n storeKey: \"tmdgrup\",\n protocolKey: EActionType.LANGUAGE,\n initialState: EReduxStoreInitialState.OBJECT\n })[\"tmdgrup\"],\n languageCode: reduxStorages.BASE({ \n storeKey: \"tmdgrup\",\n protocolKey: EActionType.LANGUAGE_CODE,\n initialState: EReduxStoreInitialState.DEFAULT\n })[\"tmdgrup\"],\n\n loader: reduxStorages.BASE({ \n storeKey: \"tmdgrup\",\n protocolKey: EActionType.LOADER,\n initialState: EReduxStoreInitialState.DEFAULT\n })[\"tmdgrup\"],\n\n colorPalette: reduxStorages.BASE({ \n storeKey: \"tmdgrup\",\n protocolKey: EActionType.COLOR_PALETTE,\n initialState: EReduxStoreInitialState.OBJECT\n })[\"tmdgrup\"],\n colorPaletteMode: reduxStorages.BASE({ \n storeKey: \"tmdgrup\",\n protocolKey: EActionType.COLOR_PALETTE_MODE,\n initialState: EReduxStoreInitialState.OBJECT\n })[\"tmdgrup\"]\n\n});\n\nexport default CoreStore;\n","import { combineReducers } from 'redux';\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\nimport ICoreReduxStore from 'core/interfaces/ICoreReduxStore';\n\nconst reduxStorages = new CoreReduxStore( { screenCode: \"COM\", serviceCode: \"Lang\" } as ICoreReduxStore )\n\n/**\n * - Language api sinden alınan veriler burada depolanır.\n * - Herhangi bir sayfaya bağlı kalmaksızın verilerin depolanması için \n * screenCode COM(Common) ve serviceCode Lang(Langauge) olarak set edilmiştir.\n */\n\nconst LanguageStore = combineReducers({\n\n ...reduxStorages.LIST()\n\n});\n\nexport default LanguageStore;","import EActionType from 'core/enums/EActionType';\nimport EMessageStatus from 'core/enums/EMessageStatus';\n//\nimport IAction from 'core/interfaces/IAction';\n\n/**\n * - Uygulama içinde herhangi bir sayfada popup mesajı gösterir.\n * - Herhangi bir sayfaya bağlı kalmaksızın verilerin depolanması için \n * screenCode ve serviceCode verisi empty olarak set edilmiştir.\n */\n\nfunction PopupPublisherStore (state:object = {}, action:IAction) {\n\n switch (action.type) {\n\n // success\n case `${EActionType.PUBLISH_POPUP}${EMessageStatus.SUCCESS}`:\n // TODO: Popup Message\n return state;\n\n // default\n default:\n return state;\n \n }\n\n}\n\nexport default PopupPublisherStore;\n","import { combineReducers } from 'redux';\n\n/* Common */\nimport CoreStore from \"core/reducers/common/CoreStore\";\nimport LanguageStore from \"core/reducers/common/LanguageStore\";\nimport MessagePublisherStore from \"core/reducers/common/MessagePublisherStore\";\nimport PopupPublisherStore from \"core/reducers/common/PopupPublisherStore\";\n\n\nconst CoreReducer = {\n\n /* Common */\n CoreStore,\n LanguageStore,\n MessagePublisherStore,\n PopupPublisherStore\n\n}\n\nexport default CoreReducer;\n","import EActionType from 'core/enums/EActionType';\nimport EMessageStatus from 'core/enums/EMessageStatus';\n//\nimport IAction from 'core/interfaces/IAction';\n//\nimport { toast } from 'react-toastify';\n/**\n * - Uygulama içinde herhangi bir sayfada natification mesajı gösterir.\n * - Herhangi bir sayfaya bağlı kalmaksızın verilerin depolanması için \n * screenCode ve serviceCode verisi empty olarak set edilmiştir.\n */\n\nfunction MessagePublisherStore (state:object = {}, action:IAction) {\n\n switch (action.type) {\n // success\n case `${EActionType.PUBLISH_MESSAGE}${EMessageStatus.SUCCESS}`:\n toast.success(action?.payload, {\n position: \"top-right\",\n autoClose: 3000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n theme: \"colored\",\n });\n \n return state;\n\n // error\n case `${EActionType.PUBLISH_MESSAGE}${EMessageStatus.ERROR}`:\n toast.error(action?.payload, {\n position: \"top-right\",\n autoClose: 3000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n theme: \"colored\",\n });\n\n return state;\n\n // warning\n case `${EActionType.PUBLISH_MESSAGE}${EMessageStatus.WARNING}`:\n toast.warn(action?.payload, {\n position: \"top-right\",\n autoClose: 3000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n theme: \"colored\",\n });\n\n return state;\n\n // info\n case `${EActionType.PUBLISH_MESSAGE}${EMessageStatus.INFO}`:\n toast.info(action?.payload, {\n position: \"top-right\",\n autoClose: 3000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n theme: \"colored\",\n });\n\n return state;\n \n // popup message\n case `${EActionType.PUBLISH_MESSAGE}${EMessageStatus.POPUP}`:\n // TODO: Popup Message\n return state;\n\n // default\n default:\n return state;\n }\n\n}\n\nexport default MessagePublisherStore;\n","import { combineReducers } from 'redux';\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\nimport ICoreReduxStore from 'core/interfaces/ICoreReduxStore';\n\nconst reduxStorages = new CoreReduxStore( { screenCode: \"COM\", serviceCode: \"SS\" } as ICoreReduxStore )\n\n/**\n * - Site Settings api sinden alınan veriler burada depolanır.\n * - Herhangi bir sayfaya bağlı kalmaksızın verilerin depolanması için \n * screenCode COM(Common) ve serviceCode SS(SiteSetting) olarak set edilmiştir.\n */\n\nconst SiteSettingStore = combineReducers({\n\n ...reduxStorages.LIST(),\n ...reduxStorages.DETAILS(),\n\n});\n\nexport default SiteSettingStore;","import { combineReducers } from 'redux';\n// reducers\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\n// interfaces\nimport ICoreReduxStore from 'core/interfaces/ICoreReduxStore';\n// enums\nimport EReduxStoreInitialState from 'core/enums/EReduxStoreInitialState';\n\nconst reduxStorages = new CoreReduxStore( { screenCode: \"CMS\", serviceCode: \"Core\" } as ICoreReduxStore )\n\n/**\n * - Uygulama ana verileri burada depolanır\n * - Herhangi bir sayfaya bağlı kalmaksızın verilerin depolanması için \n * screenCode CMS ve serviceCode Core(Core) olarak set edilmiştir.\n */\n\nconst CoreStore = combineReducers({\n\n mobileMenu: reduxStorages.BASE({ \n storeKey: \"tmdgrup\",\n protocolKey: \"MM\",\n initialState: EReduxStoreInitialState.DEFAULT\n })[\"tmdgrup\"],\n\n mobileSearch: reduxStorages.BASE({ \n storeKey: \"tmdgrup\",\n protocolKey: \"MS\",\n initialState: EReduxStoreInitialState.DEFAULT\n })[\"tmdgrup\"],\n\n});\n\nexport default CoreStore;\n","import ReadOnlyOdataServiceBase from \"core/services/OdataReadOnlyServiceBase\";\n\n\nclass ClientMenuItemService extends ReadOnlyOdataServiceBase {\n\n static code = \"203\";\n code = \"203\";\n\n constructor () {\n super({\n sourcePath: \"client-menu-items\"\n });\n }\n\n}\n\nexport default ClientMenuItemService;\n","import { combineReducers } from 'redux';\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\n// service\nimport ClientMenuItemService from 'cms/services/ClientMenuItemService'\n// interface\nimport IServiceStore from 'core/interfaces/IServiceStore';\n\n\nfunction ClientMenuItemServiceStore({ screenCode }:IServiceStore ) {\n const reduxStorages = new CoreReduxStore({ screenCode: screenCode, serviceCode: ClientMenuItemService.code });\n\n return combineReducers({\n\n ...reduxStorages.LIST(),\n ...reduxStorages.GET()\n \n });\n}\n\nexport default ClientMenuItemServiceStore;\n","import { combineReducers } from 'redux';\n// reducers\nimport ClientMenuItemServiceStore from \"cms/reducers/services/ClientMenuItemServiceStore\";\n\n\nconst screenCode = \"201\";\nconst HeaderStore = combineReducers({\n \n ClientMenuItemStore: ClientMenuItemServiceStore({ screenCode }),\n\n});\n\nexport default HeaderStore;\n","import { combineReducers } from 'redux';\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\n// service\nimport ClientMainPageItemsService from 'cms/services/ClientMainPageItemsService'\n// interface\nimport IServiceStore from 'core/interfaces/IServiceStore';\n\n\nfunction ClientMainPageItemsServiceStore({ screenCode }:IServiceStore ) {\n const reduxStorages = new CoreReduxStore({ screenCode: screenCode, serviceCode: ClientMainPageItemsService.code });\n\n return combineReducers({\n\n ...reduxStorages.LIST()\n \n });\n}\n\nexport default ClientMainPageItemsServiceStore;\n","import ReadOnlyOdataServiceBase from \"core/services/OdataReadOnlyServiceBase\";\n// extensions\nimport FetchExtension from 'core/extensions/FetchExtension';\n// interface\nimport IFetchExtension from 'core/interfaces/IFetchExtension';\nimport { IOdataGetRequest } from 'core/interfaces/IGetRequest';\n// enum\nimport HttpMethodEnum from 'core/enums/EHttpMethod';\n\n\nclass ClientPagesService extends ReadOnlyOdataServiceBase {\n\n static code = \"204\";\n code = \"204\";\n\n constructor () {\n\n super({\n sourcePath: \"client-pages\"\n });\n\n }\n\n async search( params: IOdataGetRequest ): Promise {\n\n\t\tconst apiFetchConfig: IFetchExtension = {\n // protocol: EndpointProtocol.ODATA,\n\t\t\tmethod: HttpMethodEnum.GET,\n language: params.language,\n\n\t\t\tsourcePath: `${this.sourcePath}/search`,\n queryOptions: params.queryOptions\n\t\t}\n\n\t\treturn FetchExtension(apiFetchConfig);\n\t\n }\n\n}\n\nexport default ClientPagesService;\n","import { combineReducers } from 'redux';\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\n// service\nimport ClientPagesService from 'cms/services/ClientPagesService'\n// interface\nimport IServiceStore from 'core/interfaces/IServiceStore';\nimport EActionType from 'core/enums/EActionType';\nimport EReduxStoreInitialState from 'core/enums/EReduxStoreInitialState';\n\n\nfunction ClientPagesServiceStore({ screenCode }:IServiceStore ) {\n const reduxStorages = new CoreReduxStore({ screenCode: screenCode, serviceCode: ClientPagesService.code });\n\n return combineReducers({\n\n ...reduxStorages.LIST(),\n ...reduxStorages.DETAILS(),\n ...reduxStorages.GET(),\n \n pagination: reduxStorages.BASE({ \n storeKey: \"pagination\",\n protocolKey: EActionType.PAGINATION,\n initialState: EReduxStoreInitialState.OBJECT\n })[\"pagination\"]\n\n });\n}\n\nexport default ClientPagesServiceStore;\n","import { combineReducers } from 'redux';\n\n// reducers\nimport ClientMainPageItemsServiceStore from \"cms/reducers/services/ClientMainPageItemsServiceStore\";\nimport ClientPagesServiceStore from \"cms/reducers/services/ClientPagesServiceStore\";\n\n\nconst screenCode = \"200\";\n\nconst FooterStore = combineReducers({\n \n ClientMainPageItemsStore: ClientMainPageItemsServiceStore({ screenCode }),\n ClientPagesStore: ClientPagesServiceStore({ screenCode }),\n\n});\n\nexport default FooterStore;\n","import { combineReducers } from 'redux';\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\n// service\nimport ClientSliderItemService from 'cms/services/ClientSliderItemService'\n// interface\nimport IServiceStore from 'core/interfaces/IServiceStore';\n\n\nfunction ClientSliderItemServiceStore({ screenCode }:IServiceStore ) {\n const reduxStorages = new CoreReduxStore({ screenCode: screenCode, serviceCode: ClientSliderItemService.code });\n\n return combineReducers({\n\n ...reduxStorages.LIST()\n \n });\n}\n\nexport default ClientSliderItemServiceStore;\n","import ReadOnlyOdataServiceBase from \"core/services/OdataReadOnlyServiceBase\";\n\n\nclass ClientCategoriesService extends ReadOnlyOdataServiceBase {\n\n static code = \"200\";\n code = \"200\";\n\n constructor () {\n super({\n sourcePath: \"client-categories\"\n });\n }\n\n}\n\nexport default ClientCategoriesService;\n","import { combineReducers } from 'redux';\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\n// service\nimport ClientCategoriesService from 'cms/services/ClientCategoriesService'\n// interface\nimport IServiceStore from 'core/interfaces/IServiceStore';\nimport EActionType from 'core/enums/EActionType';\nimport EReduxStoreInitialState from 'core/enums/EReduxStoreInitialState';\n\n\nfunction ClientCategoriesServiceStore({ screenCode }:IServiceStore ) {\n const reduxStorages = new CoreReduxStore({ screenCode: screenCode, serviceCode: ClientCategoriesService.code });\n\n return combineReducers({\n\n ...reduxStorages.DETAILS(),\n \n pagination: reduxStorages.BASE({ \n storeKey: \"pagination\",\n protocolKey: EActionType.PAGINATION,\n initialState: EReduxStoreInitialState.OBJECT\n })[\"pagination\"]\n \n });\n}\n\nexport default ClientCategoriesServiceStore;\n","import { combineReducers } from 'redux';\n\n// reducers\nimport ClientSilderItemServiceStore from \"cms/reducers/services/ClientSilderItemServiceStore\";\nimport ClientCategoriesServiceStore from \"cms/reducers/services/ClientCategoriesServiceStore\";\nimport ClientPagesServiceStore from \"cms/reducers/services/ClientPagesServiceStore\";\n\n\nconst screenCode = \"209\";\n\nconst CarouselStore = combineReducers({\n \n ClientSilderItemStore: ClientSilderItemServiceStore({ screenCode }),\n ClientCategoriesStore: ClientCategoriesServiceStore({ screenCode }),\n ClientPagesStore: ClientPagesServiceStore({ screenCode }),\n\n});\n\nexport default CarouselStore;\n","import { combineReducers } from 'redux';\n// \nimport ClientMainPageItemsServiceStore from \"cms/reducers/services/ClientMainPageItemsServiceStore\";\n\n\nconst screenCode = \"207\";\n\nconst MainPageItemStore = combineReducers({\n \n ClientMainPageItemsStore: ClientMainPageItemsServiceStore({ screenCode }),\n \n});\n\nexport default MainPageItemStore;\n","import { combineReducers } from 'redux';\n// \nimport ClientPagesServiceStore from \"cms/reducers/services/ClientPagesServiceStore\";\n\n\n\nconst screenCode = \"205\";\n\nconst LatestContentsStore = combineReducers({\n \n ClientPagesStore: ClientPagesServiceStore({ screenCode }),\n \n});\n\nexport default LatestContentsStore;\n","import { combineReducers } from 'redux';\n// \nimport ClientPagesServiceStore from \"cms/reducers/services/ClientPagesServiceStore\";\n\n\nconst screenCode = \"20E\";\n\nconst ShowroomLayoutStore = combineReducers({\n \n ClientPagesStore: ClientPagesServiceStore({ screenCode }),\n \n});\n\nexport default ShowroomLayoutStore;\n","import { combineReducers } from 'redux';\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\n// service\nimport ContactUsService from 'cms/services/ContactUsService'\n// interface\nimport IServiceStore from 'core/interfaces/IServiceStore';\n\n\nfunction ContactUsServiceStore({ screenCode }:IServiceStore ) {\n const reduxStorages = new CoreReduxStore({ screenCode: screenCode, serviceCode: ContactUsService.code });\n\n return combineReducers({\n\n ...reduxStorages.POST()\n \n });\n}\n\nexport default ContactUsServiceStore;\n","import { combineReducers } from 'redux';\n\n// reducers\nimport ContactUsServiceStore from \"cms/reducers/services/ContactUsServiceStore\";\n\n\nconst screenCode = \"20C\";\nconst ContactFormStore = combineReducers({\n \n ContactUsStore: ContactUsServiceStore({ screenCode }),\n\n});\n\nexport default ContactFormStore;\n","import { combineReducers } from 'redux';\n\n// reducers\nimport ContactUsServiceStore from \"cms/reducers/services/ContactUsServiceStore\";\n\n\nconst screenCode = \"202\";\nconst INNR003Store = combineReducers({\n \n ContactUsStore: ContactUsServiceStore({ screenCode }),\n\n});\n\nexport default INNR003Store;\n","import ReadOnlyOdataServiceBase from \"core/services/OdataReadOnlyServiceBase\";\n\n\nclass ClientContentsService extends ReadOnlyOdataServiceBase {\n\n static code = \"201\";\n code = \"201\";\n\n constructor () {\n\n super({\n sourcePath: \"client-contents\"\n });\n\n }\n\n}\n\nexport default ClientContentsService;\n","import { combineReducers } from 'redux';\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\n// service\nimport ClientContentsService from 'cms/services/ClientContentsService'\n// interface\nimport IServiceStore from 'core/interfaces/IServiceStore';\nimport EActionType from 'core/enums/EActionType';\nimport EReduxStoreInitialState from 'core/enums/EReduxStoreInitialState';\n\n\nfunction ClientContentsServiceStore({ screenCode }:IServiceStore ) {\n const reduxStorages = new CoreReduxStore({ screenCode: screenCode, serviceCode: ClientContentsService.code });\n\n return combineReducers({\n\n ...reduxStorages.LIST(),\n ...reduxStorages.DETAILS(),\n \n pagination: reduxStorages.BASE({ \n storeKey: \"pagination\",\n protocolKey: EActionType.PAGINATION,\n initialState: EReduxStoreInitialState.OBJECT\n })[\"pagination\"]\n \n });\n}\n\nexport default ClientContentsServiceStore;\n","import OdataServiceBase from 'core/services/OdataServiceBase';\n\n\nclass ContentMetricsService extends OdataServiceBase {\n\t\n static code = \"00A\";\n code = \"00A\";\n\n\tconstructor () {\n\t\tsuper({\n\t\t\tsourcePath: \"content-metrics\"\n\t\t});\n\t}\n\t\n}\n\nexport default ContentMetricsService;\n","import { combineReducers } from 'redux';\nimport CoreReduxStore from 'core/reducers/CoreReduxStore';\n// service\nimport ContentMetricsService from 'core/services/metrics/ContentMetricsService'\n// interface\nimport IServiceStore from 'core/interfaces/IServiceStore';\n\n\nfunction ContentMetricsServiceStore({ screenCode }:IServiceStore ) {\n const reduxStorages = new CoreReduxStore({ screenCode: screenCode, serviceCode: ContentMetricsService.code });\n\n return combineReducers({\n\n ...reduxStorages.POST()\n \n });\n}\n\nexport default ContentMetricsServiceStore;\n","/* Common */\nimport SiteSettingStore from \"cms/reducers/common/SiteSettingStore\";\nimport CMSStore from \"cms/reducers/common/CMSStore\";\n\n/* Components */\nimport HeaderStore from \"cms/reducers/components/HeaderStore\";\nimport FooterStore from \"cms/reducers/components/FooterStore\";\nimport SliderStore from \"cms/reducers/components/SliderStore\";\nimport MainPageItemStore from \"cms/reducers/components/MainPageItemStore\";\nimport LatestContents from \"cms/reducers/components/LatestContents\";\nimport ShowroomLayoutStore from \"cms/reducers/components/ShowroomLayoutStore\";\nimport ContactFormStore from \"cms/reducers/components/ContactFormStore\";\n// InnerLayouts\nimport INNR003Store from \"cms/reducers/components/InnerLayouts/INNR003Store\";\n\n/* Screens */\nimport ContentStore from \"cms/reducers/screens/ContentStore\";\n\n\nconst CMSReducers = {\n\n /* Common */\n CMSStore,\n SiteSettingStore,\n\n /* Components */\n HeaderStore,\n FooterStore,\n SliderStore,\n MainPageItemStore,\n LatestContents,\n ShowroomLayoutStore,\n ContactFormStore,\n // InnerLayouts\n INNR003Store,\n \n /* Screens */\n ContentStore\n\n}\n\nexport default CMSReducers;\n","import { combineReducers } from 'redux';\n// reducers\nimport ClientContentsServiceStore from \"cms/reducers/services/ClientContentsServiceStore\";\nimport ContentMetricsServiceStore from \"core/reducers/service/metrics/ContentMetricsServiceStore\";\n\n\nconst screenCode = \"20B\";\n\nconst ContentStore = combineReducers({\n \n ClientContentsStore: ClientContentsServiceStore({ screenCode }),\n ContentMetricsStore: ContentMetricsServiceStore({ screenCode })\n \n});\n\nexport default ContentStore;\n","// redux\nimport { combineReducers } from \"redux\";\nimport { configureStore } from '@reduxjs/toolkit';\n// thunk\nimport { thunk } from \"redux-thunk\";\n// reducers\nimport CoreReducer from \"core/reducers\";\nimport CmsReducers from \"cms/reducers\";\n\n\nfunction Reducer () { \n return combineReducers({\n ...CoreReducer,\n ...CmsReducers\n });\n}\n\nfunction AppReducer () { \n return configureStore({\n reducer: Reducer(),\n middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(thunk),\n // devTools: process.env[\"NODE_ENV\"] !== \"production\"\n devTools: false\n });\n}\n\nexport default AppReducer;\n","import React from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\"\nimport Lodash from 'lodash';\nimport { Navigate } from \"react-router-dom\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"WebApplicationRedirector.mapStateToProps: \", state);\n\n const webApplicationLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageISOCode = state.CoreStore.languageCode?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageISOCode\n \n }\n}\n\nconst connector = connect( mapStateToProps );\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\ntype TWebApplicationRedirector = {\n \n} & T;\n\n\n/* component */\nfunction MainPageItemsLoader () {\n\n return (\n <>\n )\n\n}\n\nfunction WebApplicationRedirector ( props:TWebApplicationRedirector ) {\n console.log(\"WebApplicationRedirector.rendered: \", props);\n\n if ( !Lodash.isEmpty(props.webApplicationLanguageISOCode) ) {\n\n return ;\n \n }\n\n return null;\n\n};\n\nconst Component = React.memo(WebApplicationRedirector, ( prevProps:TWebApplicationRedirector, nextProps:TWebApplicationRedirector ) => {\n console.log(\"WebApplicationRedirector.memo\", { prevProps, nextProps });\n\n return !( \n prevProps.webApplicationLanguageISOCode !== nextProps.webApplicationLanguageISOCode \n || !Lodash.isEmpty(nextProps.webApplicationLanguageISOCode)\n )\n});\n\nexport default connector(Component);\n","import OdataCoreServiceBase from 'core/services/OdataCoreServiceBase';\n\n\nclass LanguageService extends OdataCoreServiceBase {\n\t\n static code = \"004\";\n code = \"004\";\n\n\tconstructor () {\n\t\tsuper({\n\t\t\tsourcePath: \"client-languages\"\n\t\t});\n\t}\n\t\n}\n\nexport default LanguageService;\n","// action\nimport OdataCoreActionBase from \"core/actions/OdataCoreActionBase\";\n// service\nimport LanguageService from \"core/services/language/LanguageService\";\n\n\nclass LanguageServiceAction extends OdataCoreActionBase {\n\n constructor( dispatch: any, screenCode:string ) {\n\n super(dispatch, LanguageService, screenCode);\n \n }\n\n}\n\nexport default LanguageServiceAction;\n","import _LanguageServiceAction from \"core/actions/services/language/LanguageServiceAction\";\n\n\nconst screenCode = \"COM\";\nclass LanguageServiceAction extends _LanguageServiceAction {\n\n constructor( dispatch:any ) {\n super( dispatch, screenCode);\n\n this.serviceCode = \"Lang\";\n }\n\n}\n\nexport default LanguageServiceAction;","import _LanguageServiceAction from \"core/actions/common/LanguageServiceAction\";\n\n\nconst screenCode = \"20A\";\nclass LanguageServiceAction extends _LanguageServiceAction {\n\n}\n\nexport default LanguageServiceAction;\n","import Lodash from 'lodash';\nimport Defaults from 'core/Defaults';\nimport IClientLanguage from 'core/interfaces/IClientLanguage';\n\n\nclass DetectLanguage {\n\n languages:IClientLanguage[]|null = null;\n webApplicationLanguage?:IClientLanguage|null = null;\n webApplicationLanguageISOCode?:string|null = null;\n webApplicationLanguageCode?:string|null = null;\n\n constructor( languages: IClientLanguage[]|null ) {\n\n this.languages = languages;\n\n }\n\n _findLanguage ( languages:any, ISOCode:string ) {\n\n if ( Lodash.isEmpty(ISOCode) ) return null;\n \n let language = languages.find((item:any) => item.twoLetterISOName === ISOCode);\n if (!Lodash.isEmpty(language)) delete language[\"id\"];\n \n return language;\n \n }\n\n _fromLocation() {\n\n if ( !Lodash.isEmpty(this.webApplicationLanguageISOCode) ) return;\n\n try {\n \n const locationPathnameArray:any = window.location.pathname;\n if ( !Lodash.isEmpty(locationPathnameArray) ) {\n const WebApplicationLanguageISOCodeFromLocation = locationPathnameArray.split(\"/\").filter((n:any) => n)?.[0];\n this.webApplicationLanguage = this._findLanguage(this.languages, WebApplicationLanguageISOCodeFromLocation);\n this.webApplicationLanguageISOCode = this.webApplicationLanguage?.twoLetterISOName;\n this.webApplicationLanguageCode = this.webApplicationLanguage?.code;\n }\n\n } catch( ex ) {\n \n this.webApplicationLanguage = null;\n this.webApplicationLanguageISOCode = null;\n this.webApplicationLanguageCode = null;\n \n }\n\n }\n\n _fromLocalStorage() {\n\n if ( !Lodash.isEmpty(this.webApplicationLanguageISOCode) ) return;\n\n try {\n\n const webApplicationLanguageFromLocalStorage = localStorage.getItem(\"WebApplicationLanguage\");\n if ( !Lodash.isEmpty(webApplicationLanguageFromLocalStorage) ) {\n this.webApplicationLanguage = JSON.parse(webApplicationLanguageFromLocalStorage as string);\n this.webApplicationLanguageISOCode = this.webApplicationLanguage?.twoLetterISOName;\n this.webApplicationLanguageCode = this.webApplicationLanguage?.code;\n }\n\n } catch( ex ) {\n\n this.webApplicationLanguage = null;\n this.webApplicationLanguageISOCode = null;\n this.webApplicationLanguageCode = null;\n \n }\n\n }\n\n _fromNavigator() {\n\n if ( !Lodash.isEmpty(this.webApplicationLanguageISOCode) ) return;\n\n try {\n\n const WebApplicationLanguageISOCodeFromNavigator:any = navigator.languages?.filter((item:string) => item.length === 2);\n for ( let item of WebApplicationLanguageISOCodeFromNavigator ) {\n let webApplicationLangaugeFromNavigator = this._findLanguage(this.languages, item);\n if ( webApplicationLangaugeFromNavigator ) {\n this.webApplicationLanguage = webApplicationLangaugeFromNavigator;\n this.webApplicationLanguageISOCode = webApplicationLangaugeFromNavigator.twoLetterISOName;\n this.webApplicationLanguageCode = webApplicationLangaugeFromNavigator.code;\n break;\n }\n }\n\n } catch( ex ) {\n \n this.webApplicationLanguage = null;\n this.webApplicationLanguageISOCode = null;\n this.webApplicationLanguageCode = null;\n \n }\n\n }\n\n _fromDefault() {\n\n if ( !Lodash.isEmpty(this.webApplicationLanguageISOCode) ) return;\n\n try {\n\n const webApplicationLanguageFromDefaults = this._findLanguage(this.languages, Defaults.clientLanguage.twoLetterISOName);\n this.webApplicationLanguage = webApplicationLanguageFromDefaults;\n this.webApplicationLanguageISOCode = webApplicationLanguageFromDefaults.twoLetterISOName;\n this.webApplicationLanguageCode = webApplicationLanguageFromDefaults.code;\n \n } catch( ex ) {\n\n this.webApplicationLanguage = null;\n this.webApplicationLanguageISOCode = null;\n this.webApplicationLanguageCode = null;\n\n }\n }\n\n _fromFirst () {\n\n if ( !Lodash.isEmpty(this.webApplicationLanguageISOCode) ) return;\n\n try {\n\n const webApplicationLanguageFirst = this.languages?.[0];\n this.webApplicationLanguage = webApplicationLanguageFirst;\n this.webApplicationLanguageISOCode = webApplicationLanguageFirst?.twoLetterISOName;\n this.webApplicationLanguageCode = webApplicationLanguageFirst?.code;\n \n } catch( ex ) {\n\n this.webApplicationLanguage = null;\n this.webApplicationLanguageISOCode = null;\n this.webApplicationLanguageCode = null;\n\n }\n\n }\n\n getLangauge() {\n\n if ( Lodash.isEmpty(this.languages) ) {\n return { \n webApplicationLanguage: null,\n WebApplicationLanguageISOCode: null,\n webApplicationLanguageCode: null,\n }\n }\n\n this._fromLocation();\n this._fromLocalStorage(); // TODO: Burada client-languages dan gelene veriler ile eşleşiyor mu bakılacak. eğer local de en varsa ve sunucu da en yok ise seçmeyecek.\n this._fromNavigator();\n this._fromDefault();\n this._fromFirst();\n\n localStorage.setItem(\"WebApplicationLanguage\", JSON.stringify(this.webApplicationLanguage));\n localStorage.setItem(\"WebApplicationLanguageISOCode\", this.webApplicationLanguageISOCode||\"\");\n localStorage.setItem(\"webApplicationLanguageCode\", this.webApplicationLanguageCode||\"\");\n\n return { \n webApplicationLanguage: this.webApplicationLanguage, \n webApplicationLanguageISOCode: this.webApplicationLanguageISOCode, \n webApplicationLanguageCode: this.webApplicationLanguageCode \n }\n\n }\n\n}\n\nconst detectLanguage = ( languages:IClientLanguage[]|null ) => new DetectLanguage(languages).getLangauge();\n\nexport default detectLanguage;\n","import React, { useEffect } from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\"\nimport Lodash from 'lodash';\nimport { Outlet } from \"react-router-dom\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\n// actions\nimport LanguageServiceAction from \"cms/actions/components/WebApplicationStarter/LanguageServiceAction\";\nimport CoreAction from \"core/actions/common/CoreAction\";\n// interfaces\nimport IOdataQueryOptions from \"core/interfaces/IOdataQueryOptions\";\n// utilities\nimport DetectLanguage from \"cms/utilities/DetectLanguage\";\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\n// types\nimport TValidations from \"cms/types/TValidations\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"WebApplicationStarter.mapStateToProps: \", state);\n\n const languageStorePayload:IClientLanguage[] = state.LanguageStore.list?.payload;\n const languageStoreError:TValidations[]|null = state.LanguageStore.list?.error;\n const languageStoreIsLoading:boolean = state.LanguageStore.list?.isLoading;\n\n const detectLanguage = DetectLanguage(languageStorePayload);\n const webApplicationLanguage = detectLanguage.webApplicationLanguage;\n const webApplicationLanguageISOCode = detectLanguage.webApplicationLanguageISOCode\n const webApplicationLanguageCode = detectLanguage.webApplicationLanguageCode\n\n const error:TValidations[]|null|undefined = Lodash.reject([ languageStoreError ], Lodash.isEmpty )[0];\n const isLoading:boolean = [ languageStoreIsLoading ].includes(true);\n\n return {\n\n languageStorePayload,\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n error,\n isLoading\n\n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"WebApplicationStarter.mapDispatchToProps\");\n\n const coreAction = new CoreAction(dispatch);\n const languageServiceAction = new LanguageServiceAction(dispatch);\n\n return {\n\n _listLanguages: () => {\n let queryOptions:IOdataQueryOptions = {\n filter: [\"isActive eq true\"],\n top: 1000\n };\n\n languageServiceAction.list({ servicePayload: { queryOptions }, args:{ \"keysToBeRemoved\": [\"id\"] } });\n },\n\n _setWebApplicationLanguage: ( language:any ) => {\n coreAction.setWebApplicationLanguage(language);\n }\n \n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\ntype TWebApplicationStarter = {\n\n} & T;\n\n\n/* component */\nfunction WebApplicationStarterLoader () {\n\n return (\n <>\n )\n\n}\n\nfunction WebApplicationStarter ( props:TWebApplicationStarter ) {\n console.log(\"WebApplicationStarter.rendered: \", props);\n\n useEffect(\n () => {\n\n props._listLanguages();\n \n }, []\n )\n\n if ( !Lodash.isEmpty(props.webApplicationLanguageISOCode) && props.webApplicationLanguageISOCode && !props.isLoading ) {\n\n props._setWebApplicationLanguage(props.webApplicationLanguage);\n document.documentElement.lang = props.webApplicationLanguageISOCode;\n return ;\n \n }\n\n return null;\n\n};\n\nconst Component = React.memo(WebApplicationStarter, (prevProps:TWebApplicationStarter, nextProps:TWebApplicationStarter) => {\n console.log(\"WebApplicationStarter.memo\", { prevProps, nextProps });\n\n return !( \n prevProps.isLoading !== nextProps.isLoading \n || prevProps.webApplicationLanguageISOCode !== nextProps.webApplicationLanguageISOCode \n )\n});\n\nexport default connector(Component);\n","enum ESizeType {\n \n X01 = 0, // 0 - 100\n X02, // 100 - 200\n X03, // 200 - 300\n X04, // 300 - 400\n X05, // 400 - 500\n X06, // 500 - 600\n X07, // 600 - 700\n X08, // 700 - 800\n X09, // 800 - 900\n X10, // 900 - 1000\n X11 // 1000 - y\n \n}\n\nexport default ESizeType;\n","import { isEmpty, reject } from \"lodash\";\nimport Helmet from \"react-helmet\";\nimport CoreDefault from \"core/Defaults\";\n// enums\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport { EContentType } from \"cms/enums/EContentType\";\nimport ESizeType from \"cms/enums/ESizeType\";\n// extensions\nimport AnalyticsExtension from \"core/extensions/AnalyticsExtension\";\n// utilities\nimport ApplicationDocumentSelector from \"cms/utilities/ApplicationDocumentSelector\";\n// interfaces\nimport IClientContentDetail from \"cms/interfaces/IClientContentDetail\";\nimport IClientPageList from \"cms/interfaces/IClientPageList\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport IClientPageDetail from \"cms/interfaces/IClientPageDetail\";\nimport IClientContentList from \"cms/interfaces/IClientContentList\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionDetail from \"cms/interfaces/ILanguageVersionDetail\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport IApplicationDocument from \"cms/interfaces/IApplicationDocument\";\n\n\ntype TSEO = {\n\n contentPayload?: IClientPageList|IClientPageDetail|IClientContentDetail|IClientContentList|null;\n siteSettingPayload?: IClientSiteSettingDetail|null;\n\n // predefined\n type?:\"header\" | \"home-page\" | \"content-page\" | \"showroom-page\";\n\n // other\n customMetaPayload?:{ title:string, url:string };\n\n // \n enableTitle?:boolean;\n enableIcon?:boolean;\n enableAuthor?:boolean;\n\n enableDescription?:boolean; // priority: contentPayload, customMetaPayload, siteSettingPayload\n enableKeywords?:boolean; // priority: contentPayload, customMetaPayload, siteSettingPayload\n\n enableAnalytics?:boolean;\n\n enableBase?:boolean;\n enableTwitter?:boolean;\n enableCanonical?:boolean;\n enableOpenGraph?:boolean;\n\n enableLDJSONSearch?:boolean;\n enableLDJSONOrganization?:boolean;\n\n}\n\ntype TLanguagePayload = {\n\n webAppNameDescription:ILanguageVersionDetail|null;\n contentNameDescription:ILanguageVersionDetail|ILanguageVersionList|null;\n author:ILanguageVersionDetail|null;\n \n webAppmetaDescription:ILanguageVersionDetail|null;\n contentMetaDescription:ILanguageVersionDetail|null;\n \n webAppMetaKeywords:ILanguageVersionDetail|null;\n contentMetaKeywords:ILanguageVersionDetail|null;\n \n twitterUserName:ILanguageVersionDetail|null;\n sameAs:ILanguageVersionDetail|null;\n\n addressLocality:ILanguageVersionDetail|null;\n addressRegion:ILanguageVersionDetail|null;\n postalCode:ILanguageVersionDetail|null;\n address:ILanguageVersionDetail|null;\n}\n\ntype TResourcePayload = {\n\n applicationIconX01:IApplicationDocument|null;\n applicationIconX02:IApplicationDocument|null;\n applicationIconX03:IApplicationDocument|null;\n applicationIconX06:IApplicationDocument|null;\n defaultApplicationDocument:IApplicationDocument|null;\n\n contentOuterApplicationDocument:IApplicationDocument|null;\n contentInnerApplicationDocument:IApplicationDocument|null;\n contentImage:IApplicationDocument|null;\n\n}\n\nfunction enableTitle ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( props.enableTitle !== true ) return;\n\n if ( !isEmpty(_languagePayload.contentNameDescription) && _languagePayload.contentNameDescription ) {\n payload.push({_languagePayload.webAppNameDescription?.name} - {_languagePayload.contentNameDescription.name});\n if ( props.enableAnalytics ) {\n AnalyticsExtension.sendPageView(`${CoreDefault.url}/${_languagePayload.contentNameDescription.contentRouteNavigationURL}`, `${_languagePayload.webAppNameDescription?.name} - ${_languagePayload.contentNameDescription.name}`);\n // AnalyticsExtension.webVitals();\n }\n }\n else if ( !isEmpty(props.customMetaPayload) && props.customMetaPayload ) {\n payload.push({_languagePayload.webAppNameDescription?.name} - {props.customMetaPayload.title});\n if ( props.enableAnalytics ) {\n AnalyticsExtension.sendPageView(`${CoreDefault.url}/${props.customMetaPayload.url}`, `${_languagePayload.webAppNameDescription?.name} - ${props.customMetaPayload.title}`);\n // AnalyticsExtension.webVitals();\n }\n }\n else {\n payload.push({_languagePayload.webAppNameDescription?.name});\n if ( props.enableAnalytics ) {\n AnalyticsExtension.sendPageView(`${CoreDefault.url}/${_languagePayload.webAppNameDescription?.languageTwoLetterISOName}`, `${_languagePayload.webAppNameDescription?.name}`);\n // AnalyticsExtension.webVitals();\n }\n }\n}\n\nfunction enableIcon ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( props.enableIcon !== true ) return;\n\n if ( !isEmpty(_resourcePayload.applicationIconX01) && _resourcePayload.applicationIconX01 ) {\n payload.push();\n }\n\n if ( !isEmpty(_resourcePayload.applicationIconX02) && _resourcePayload.applicationIconX02 ) {\n payload.push();\n }\n\n if ( !isEmpty(_resourcePayload.applicationIconX03) && _resourcePayload.applicationIconX03 ) {\n payload.push();\n payload.push();\n payload.push();\n }\n\n if ( !isEmpty(_resourcePayload.applicationIconX06) && _resourcePayload.applicationIconX06 ) {\n payload.push();\n }\n}\n\nfunction enableAuthor ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( props.enableAuthor !== true ) return;\n\n if ( !isEmpty(_languagePayload.author) && _languagePayload.author ) payload.push();\n else payload.push();\n\n}\n\nfunction enableDescription ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( props.enableDescription !== true ) return;\n\n if ( props.type === \"home-page\" && _languagePayload.webAppmetaDescription && !isEmpty(_languagePayload.webAppmetaDescription) ) {\n payload.push();\n }\n else if ( _languagePayload.contentMetaDescription && !isEmpty(_languagePayload.contentMetaDescription) ) {\n payload.push()\n }\n}\n\nfunction enableKeywords ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( props.enableKeywords !== true ) return;\n\n if ( props.type === \"home-page\" && _languagePayload.webAppMetaKeywords && !isEmpty(_languagePayload.webAppMetaKeywords) ) {\n payload.push();\n }\n else if ( _languagePayload.contentMetaKeywords && !isEmpty(_languagePayload.contentMetaKeywords) ) {\n payload.push();\n }\n}\n\nfunction enableBase ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( props.enableBase !== true ) return;\n\n payload.push();\n}\n\nfunction enableTwitter ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( props.enableTwitter !== true ) return;\n\n if ( !isEmpty(_languagePayload.contentNameDescription) && _languagePayload.contentNameDescription ) {\n payload.push();\n if ( !isEmpty(_languagePayload.twitterUserName) ) payload.push();\n if ( !isEmpty(_languagePayload.contentNameDescription.value ) ) payload.push();\n payload.push();\n if ( !isEmpty(_resourcePayload.contentImage) ) payload.push();\n payload.push();\n }\n else if ( !isEmpty(props.customMetaPayload) && props.customMetaPayload ) {\n payload.push();\n if ( !isEmpty(_languagePayload.twitterUserName) ) payload.push();\n if ( !isEmpty((_languagePayload.contentNameDescription as any)?.value) ) payload.push();\n payload.push();\n if ( !isEmpty(_resourcePayload.contentImage) ) payload.push();\n payload.push();\n }\n else {\n payload.push();\n if ( !isEmpty(_languagePayload.twitterUserName) ) payload.push();\n if ( !isEmpty(_languagePayload.webAppNameDescription?.value ) ) payload.push();\n payload.push();\n if ( !isEmpty(_resourcePayload.contentImage) ) payload.push();\n payload.push();\n }\n}\n\nfunction enableCanonical ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( props.enableCanonical !== true ) return;\n\n payload.push();\n}\n\nfunction enableOpenGraph ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( props.enableOpenGraph !== true ) return;\n\n if ( props.type === \"home-page\" ) {\n payload.push();\n \n payload.push();\n payload.push();\n payload.push();\n if ( !isEmpty(_languagePayload.webAppNameDescription?.value) ) {\n payload.push();\n }\n\n if ( !isEmpty(_resourcePayload.defaultApplicationDocument) ) {\n payload.push();\n payload.push();\n payload.push();\n // payload.push();\n // payload.push();\n payload.push();\n }\n } \n else if ( props.type === \"content-page\" || props.type === \"showroom-page\" ) { \n payload.push();\n payload.push();\n payload.push();\n if ( !isEmpty(_languagePayload.contentNameDescription?.value) ) {\n payload.push();\n }\n payload.push();\n\n // payload.push(); // datetime\n // payload.push(); // datetime\n // payload.push(); // datetime\n payload.push(); // profile array\n // payload.push(); // string\n if ( !isEmpty(_languagePayload.contentMetaKeywords) ) {\n payload.push(); // string array\n }\n\n if ( !isEmpty(_resourcePayload.contentImage) ) {\n payload.push();\n payload.push();\n payload.push();\n // payload.push();\n // payload.push();\n payload.push();\n }\n }\n}\n\nfunction enableGoogleSiteVerification ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( isEmpty(process.env.GOOGLE_SITE_VERIFICATION) ) return;\n\n payload.push();\n}\n\nfunction enableLDJSONSearch ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( props.enableLDJSONSearch !== true ) return;\n\n payload.push(\n \n );\n\n}\n\nfunction enableLDJSONOrganization ( props:TSEO, _languagePayload:TLanguagePayload, _resourcePayload:TResourcePayload, payload:any[] ) {\n if ( props.enableLDJSONOrganization !== true ) return;\n\n const sameAs = _languagePayload.sameAs ? `[${_languagePayload.sameAs.value}]` : \"[]\"\n const address = _languagePayload.addressLocality && _languagePayload.addressRegion && _languagePayload.postalCode && _languagePayload.address ? \n `{\"@type\":\"PostalAddress\",\"addressLocality\":\"${_languagePayload.addressLocality?.value}\",\"addressRegion\":\"${_languagePayload.addressRegion?.value}\", \"postalCode\":\"${_languagePayload.postalCode?.value}\", \"streetAddress\":\"${_languagePayload.address?.value}\"}` :\n \"{}\"\n\n payload.push(\n \n );\n\n}\n\nfunction SEO ( props:TSEO ) {\n\n let payload:any[] = [];\n\n const webAppNameDescription = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type:\"find\"\n });\n\n const contentNameDescription = LanguageVersionSelector({\n languageVersions: props.contentPayload?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type:\"find\"\n });\n \n const author = LanguageVersionSelector({\n languageVersions: props.contentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"author\" }\n ],\n type:\"find\"\n });\n\n const webAppmetaDescription = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"metaDescription\" }\n ],\n type:\"find\"\n });\n\n const contentMetaDescription = LanguageVersionSelector({\n languageVersions: props.contentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"metaDescription\" }\n ],\n type:\"find\"\n });\n\n const webAppMetaKeywords = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"metaKeywords\" }\n ],\n type:\"find\"\n });\n\n const contentMetaKeywords = LanguageVersionSelector({\n languageVersions: props.contentPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"metaKeywords\" }\n ],\n type:\"find\"\n });\n\n const twitterUserName = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name:\"twitterUsername\" }\n ],\n type:\"find\"\n });\n\n const sameAs = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name:\"sameAs\" }\n ],\n type:\"find\"\n });\n\n const addressLocality = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name:\"addressLocality\" }\n ],\n type:\"find\"\n });\n\n const addressRegion = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name:\"addressRegion\" }\n ],\n type:\"find\"\n });\n\n const postalCode = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name:\"postalCode\" }\n ],\n type:\"find\"\n });\n\n const address = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload?.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name:\"address\" }\n ],\n type:\"find\"\n });\n\n const _languagePayload = {\n webAppNameDescription,\n contentNameDescription,\n author,\n\n webAppmetaDescription,\n contentMetaDescription,\n \n webAppMetaKeywords,\n contentMetaKeywords,\n \n twitterUserName,\n sameAs,\n\n addressLocality,\n addressRegion,\n postalCode,\n address\n }\n\n const applicationIconX01 = ApplicationDocumentSelector({ resources: props.siteSettingPayload?.resources, resourceType: EResourceType.LOGO_ONLY, sizeType: ESizeType.X01, type: \"find\", disableDeriveds: true });\n const applicationIconX02 = ApplicationDocumentSelector({ resources: props.siteSettingPayload?.resources, resourceType: EResourceType.LOGO_ONLY, sizeType: ESizeType.X02, type: \"find\", disableDeriveds: true });\n const applicationIconX03 = ApplicationDocumentSelector({ resources: props.siteSettingPayload?.resources, resourceType: EResourceType.LOGO_ONLY, sizeType: ESizeType.X03, type: \"find\", disableDeriveds: true });\n const applicationIconX06 = ApplicationDocumentSelector({ resources: props.siteSettingPayload?.resources, resourceType: EResourceType.LOGO_ONLY, sizeType: ESizeType.X06, type: \"find\", disableDeriveds: true });\n const defaultApplicationDocument = ApplicationDocumentSelector({ resources: props.siteSettingPayload?.resources, resourceType: EResourceType.LOGO_DEFAULT, sizeType: ESizeType.X06, type: \"find\", disableDeriveds: true });\n\n const contentOuterApplicationDocument = ApplicationDocumentSelector({ resources: props.contentPayload?.resources, resourceType: EResourceType.OUTER_IMAGE, type: \"find\" });\n const contentInnerApplicationDocument = ApplicationDocumentSelector({ resources: props.contentPayload?.resources, resourceType: EResourceType.INNER_IMAGE, type: \"find\" });\n const contentImage = reject([contentInnerApplicationDocument, contentOuterApplicationDocument], isEmpty)?.[0];\n\n const _resourcePayload = {\n \n applicationIconX01,\n applicationIconX02,\n applicationIconX03,\n applicationIconX06,\n defaultApplicationDocument,\n\n contentOuterApplicationDocument,\n contentInnerApplicationDocument,\n contentImage,\n\n }\n\n let _props = { ...props };\n\n if ( props.type === \"header\" ) {\n\n _props.enableIcon = true;\n _props.enableAuthor = true;\n _props.enableLDJSONSearch = false;\n _props.enableLDJSONOrganization = true;\n\n }\n else if ( props.type === \"home-page\" || props.type === \"content-page\" || props.type === \"showroom-page\" ) {\n\n _props.enableTitle = true;\n _props.enableAnalytics = true;\n _props.enableDescription = true;\n _props.enableKeywords = true;\n _props.enableBase = true;\n _props.enableTwitter = true;\n _props.enableCanonical = false;\n _props.enableOpenGraph = true;\n \n // if ( props.type === \"home-page\" || props.type === \"content-page\" ) {\n // _props.enableCanonical = true;\n // }\n\n }\n \n enableTitle( _props, _languagePayload, _resourcePayload, payload );\n enableIcon( _props, _languagePayload, _resourcePayload, payload );\n enableAuthor( _props, _languagePayload, _resourcePayload, payload );\n enableDescription( _props, _languagePayload, _resourcePayload, payload );\n enableKeywords( _props, _languagePayload, _resourcePayload, payload );\n enableBase( _props, _languagePayload, _resourcePayload, payload );\n enableTwitter( _props, _languagePayload, _resourcePayload, payload );\n enableCanonical( _props, _languagePayload, _resourcePayload, payload );\n enableOpenGraph( _props, _languagePayload, _resourcePayload, payload );\n enableGoogleSiteVerification( _props, _languagePayload, _resourcePayload, payload );\n\n enableLDJSONSearch( _props, _languagePayload, _resourcePayload, payload );\n enableLDJSONOrganization( _props, _languagePayload, _resourcePayload, payload );\n\n if ( !isEmpty(payload) && payload ) {\n\n return ({payload})\n\n }\n\n return null;\n\n}\n\nSEO.defaultProps = {\n\n enableTitle : false,\n enableIcon : false,\n enableAuthor : false,\n\n enableDescription : false,\n enableKeywords : false,\n\n enableAnalytics : false,\n\n enableBase : false,\n enableTwitter : false,\n enableCanonical : false,\n enableOpenGraph : false,\n\n enableLDJSONSearch : false,\n enableLDJSONOrganization : false,\n\n}\n\nexport type {\n TSEO\n};\nexport default SEO;\n","import React, { useEffect } from \"react\";\r\nimport { connect, ConnectedProps } from \"react-redux\"\r\n// components\r\n// actions\r\nimport CoreAction from \"core/actions/common/CoreAction\";\r\n// enums\r\nimport { Link } from \"react-router-dom\";\r\nimport { Dispatch } from \"@reduxjs/toolkit\";\r\nimport { EContentType } from \"cms/enums/EContentType\";\r\nimport { EViewType } from \"cms/enums/EViewType\";\r\nimport { EView } from \"cms/enums/EView\";\r\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\r\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\r\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\r\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\r\n\r\n\r\nfunction mapStateToProps ( state: any ) {\r\n console.log(\"MNPG002.mapStateToProps: \", state);\r\n\r\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\r\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\r\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\r\n\r\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\r\n\r\n return {\r\n\r\n webApplicationLanguage,\r\n webApplicationLanguageCode,\r\n webApplicationLanguageISOCode,\r\n\r\n siteSettingDetailPayload\r\n\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\r\n console.log(\"Error404.mapDispatchToProps\");\r\n\r\n const coreAction = new CoreAction(dispatch);\r\n\r\n return {\r\n\r\n _hideLoader: () => {\r\n coreAction.hideLoader()\r\n },\r\n _showLoader: () => {\r\n coreAction.showLoader()\r\n }\r\n\r\n }\r\n}\r\n\r\nconst connector = connect( mapStateToProps, mapDispatchToProps );\r\n\r\n/* types */\r\ntype PropsFromRedux = ConnectedProps\r\n\r\ntype TError404 = {\r\n\r\n} & T;\r\n\r\n\r\n/* component */\r\nfunction Error404Loader () {\r\n\r\n return (\r\n <>\r\n )\r\n\r\n}\r\n\r\nfunction Error404 ( props: TError404 ) {\r\n console.log(\"Error404.rendered:\", props)\r\n\r\n const line1 = LanguageVersionSelector({\r\n languageVersions: props.siteSettingDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"404PageLine1\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const line2 = LanguageVersionSelector({\r\n languageVersions: props.siteSettingDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"404PageLine2\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const backToHome = LanguageVersionSelector({\r\n languageVersions: props.siteSettingDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"backToHome\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n\r\n useEffect(\r\n () => {\r\n\r\n props._hideLoader();\r\n \r\n return function clenup() {\r\n props._showLoader();\r\n }\r\n\r\n }, []\r\n )\r\n\r\n return (\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

404

\r\n
\r\n

{line1?.value}

\r\n

{line2?.value}

\r\n {backToHome?.value}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n};\r\n\r\nconst Component = React.memo(Error404, ( prevProps: TError404, nextProps: TError404 ) => {\r\n console.log(\"Error404.memo\", { prevProps, nextProps });\r\n\r\n console.log(\"Error404.doNotRender\");\r\n return true;\r\n});\r\n\r\nexport default connector(Component);\r\n","import React from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\"\nimport Lodash, { isEmpty } from 'lodash';\nimport { Outlet, useParams, useLocation } from \"react-router-dom\";\n// components\nimport SEO from \"components/SEO\";\n//\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport TValidations from \"cms/types/TValidations\";\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\nimport Error404 from \"components/Error404\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"WebApplicationLayout.mapStateToProps: \", state);\n\n const languageStorePayload:IClientLanguage[] = state.LanguageStore.list?.payload;\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n const siteSettingDetailError:TValidations[]|null = state.SiteSettingStore.details?.error;\n const siteSettingDetailIsLoading:boolean = state.SiteSettingStore.details?.isLoading;\n\n const error:TValidations[]|null|undefined = Lodash.reject( [siteSettingDetailError], Lodash.isEmpty )[0] || [];\n const isLoading:boolean = [siteSettingDetailIsLoading].includes(true);\n\n return {\n\n languageStorePayload,\n \n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload,\n\n error,\n isLoading\n\n }\n}\n\nfunction mapDispatchToProps ( dispatch:Dispatch ) {\n console.log(\"WebApplicationLayout.mapDispatchToProps\");\n\n return {\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\ntype TWebApplicationLayout = {\n \n} & T;\n\n\n/* component */\nfunction WebApplicationLayoutLoader () {\n\n return (\n <>\n )\n\n}\n\nconst WebApplicationLayout = ( props:TWebApplicationLayout ) => {\n console.log(\"WebApplicationLayout.rendered: \", props);\n\n const location = useLocation();\n const { language, category, categoryId, content, contentName, contentId } = useParams();\n \n const languageIsExists = !isEmpty(props.languageStorePayload.find((item) => item.twoLetterISOName === language));\n if ( languageIsExists ) {\n return (\n <>\n \n \n \n )\n }\n\n return \n \n\n\n};\n\n\n\nconst Component = React.memo(WebApplicationLayout, ( prevProps:TWebApplicationLayout, nextProps:TWebApplicationLayout ) => {\n console.log(\"WebApplicationLayout.memo\", { prevProps, nextProps });\n\n return !(\n prevProps.isLoading !== nextProps.isLoading\n || prevProps.webApplicationLanguageCode !== nextProps.webApplicationLanguageCode\n )\n});\n\nexport default connector(Component);\n","import { Dispatch } from \"@reduxjs/toolkit\";\nimport _ClientMainPageItemsServiceAction from \"cms/actions/services/ClientMainPageItemsServiceAction\";\n\n\nconst screenCode = \"200\";\nclass ClientMainPageItemsServiceAction extends _ClientMainPageItemsServiceAction {\n\n constructor( dispatch: Dispatch ) {\n super(dispatch, screenCode);\n }\n \n}\n\nexport default ClientMainPageItemsServiceAction;\n","import { isEmpty } from 'lodash';\nimport { TFooterComponent } from '../type';\nimport LanguageVersionSelector from 'cms/utilities/LanguageVersionSelector';\nimport ILanguageVersionList from 'cms/interfaces/ILanguageVersionList';\nimport { EView } from 'cms/enums/EView';\nimport SanitizeHTMLString from 'cms/utilities/SanitizeHTMLString';\n\n\nfunction BottomBarLoader () {\n\n return (\n <>\n )\n\n}\n\nfunction BottomBar ( props:TFooterComponent ) {\n console.log(\"BottomBar.rendered\", props)\n\n const parentItem = props.payload?.find((item) => item.layouts?.filter((litem) => litem.layoutName === props.layoutName).length > 0);\n\n if ( parentItem && !isEmpty(parentItem) ) {\n\n const childItems = props.payload?.filter((item) => item.parentId === parentItem.id);\n\n const copyrightString = LanguageVersionSelector({\n languageVersions: childItems?.[0]?.languageVersions,\n filters: [\n { view: EView.META_DATA, name: \"copyrightString\" }\n ],\n type: \"find\"\n });\n\n return (\n \n );\n\n }\n\n return ;\n \n \n}\n\nexport default BottomBar;\n","// types\nimport { TSocialMedia } from \"../type\";\nimport {\n IoLogoInstagram,\n IoLogoFacebook,\n IoLogoYoutube,\n IoLogoLinkedin,\n} from 'react-icons/io5';\nimport {\n FaXTwitter\n} from 'react-icons/fa6';\n\n\nfunction SocialMedia01 ( props:TSocialMedia ) {\n console.log(\"SocialMedia01: \", props);\n\n const facebook = props?.payload?.find((item) => item.name === \"facebook\");\n const x = props?.payload?.find((item) => item.name === \"x\");\n const instagram = props?.payload?.find((item) => item.name === \"instagram\");\n const linkedin = props?.payload?.find((item) => item.name === \"linkedin\");\n const youtube = props?.payload?.find((item) => item.name === \"youtube\");\n\n if ( props?.payload ) {\n return (\n
    \n { facebook &&
  • }\n { x &&
  • }\n { linkedin &&
  • }\n { instagram &&
  • }\n { youtube &&
  • }\n
\n );\n }\n \n return (\n
    \n \n \n \n \n
\n );\n\n}\n\nexport default SocialMedia01;\n","import React, { useState } from \"react\";\nimport cn from \"classnames\";\n// components\nimport RMDRLink from \"./RMDRLink\";\nimport RMDRImage from \"./RMDRImage\";\n// interfaces\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\n// enums\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\nimport ESizeType from \"cms/enums/ESizeType\";\nimport ERedirectType from \"cms/enums/ERedirectType\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionDetail from \"cms/interfaces/ILanguageVersionDetail\";\n\n\n/* types */\ntype TLogo = {\n \n siteSettingPayload:IClientSiteSettingDetail;\n webApplicationLanguageISOCode:string;\n \n resourceType: EResourceType.LOGO_DEFAULT|EResourceType.LOGO_ONLY\n sizeType:ESizeType;\n\n className?:string;\n logoClassName?:string;\n};\n\n\n/* component */\nfunction LogoLoader () {\n\n return (\n <>\n )\n\n}\n\nfunction Logo ( props: TLogo ) {\n console.log(\"Logo: \", props);\n\n const languageVersion = LanguageVersionSelector({\n languageVersions: props.siteSettingPayload.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n return (\n \n \n \n\n );\n\n};\n\nLogo.defaultProps = {\n\n resourceType: EResourceType.LOGO_DEFAULT,\n sizeType: ESizeType.X06,\n logoClassName: \"tw-h-14 tw-w-auto\",\n\n}\n\nexport default Logo;\n","import React from \"react\";\n// types\nimport { TFooterComponent } from '../type';\nimport RMDRLink from \"components/RMDRLink\";\nimport RMDRImage from \"components/RMDRImage\";\nimport ERedirectType from \"cms/enums/ERedirectType\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport ESizeType from \"cms/enums/ESizeType\";\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\nimport SocialMedia01 from \"components/SocialMedia/components/SocialMedia01\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport Logo from \"components/Logo\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\n\n\nfunction CompanyIntroductionLoader () {\n\n return (\n <>\n )\n\n}\n\nconst CompanyIntroduction = ( props:TFooterComponent ) => {\n console.log(\"CompanyIntroduction.rendered\", props);\n\n if ( props.parentPayload?.id ) {\n\n const childItems = props.payload?.filter((item) => item.parentId === props.parentPayload?.id);\n\n const siteSettingsLanguageVersion = LanguageVersionSelector({\n languageVersions: childItems?.[0]?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n const aboutUsLanguageVersion = LanguageVersionSelector({\n languageVersions: childItems?.[1]?.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n return (\n
\n
\n
\n \n
\n

\n \n

\n
\n \n // \n //
\n \n // \n // \n // \n\n //

\n\n // \n\n //

\n // \n ); \n\n }\n\n return \n \n}\n\nexport default CompanyIntroduction;\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\n// components\n// types\nimport { TFooterComponent } from '../type';\nimport { Link } from \"react-router-dom\";\nimport Logo from \"components/Logo\";\nimport CompanyIntroduction from \"./CompanyIntroduction\";\nimport { ELayoutType } from \"cms/enums/ELayoutType\";\nimport RMDRImage from \"components/RMDRImage\";\n\n\nfunction MiddleBarLoader () {\n\n return (\n <>\n )\n\n}\n\nconst MiddleBar = ( props:TFooterComponent ) => {\n console.log(\"MiddleBar.rendered\", props);\n\n const parentItem = props.payload?.find((item) => item.layouts?.filter((litem) => litem.layoutName === props.layoutName).length > 0);\n\n if ( parentItem && !isEmpty(parentItem) ) {\n\n const childItems = props.payload?.filter((item) => item.parentId === parentItem.id);\n\n console.log(\"childItems: \", props, childItems);\n\n return (\n <>\n
\n \n
\n
\n
\n
\n
\n\n {\n childItems?.map((item) => {\n\n const layout = item.layouts.find((item) => item.layoutType === ELayoutType.MAIN_PAGE);\n\n if ( layout?.layoutName === \"MNPG_008\" ) {\n return (\n \n )\n }\n\n return null;\n })\n }\n \n
\n
\n
\n
\n \n )\n }\n\n return ;\n\n}\n\nexport default MiddleBar;\n","import React, { useEffect } from 'react';\r\nimport { connect, ConnectedProps } from \"react-redux\";\r\nimport Lodash from \"lodash\";\r\nimport { Dispatch } from '@reduxjs/toolkit';\r\n// actions\r\nimport ClientMainPageItemsServiceAction from \"cms/actions/components/Footer/ClientMainPageItemsServiceAction\";\r\n// interfaces\r\nimport IOdataQueryOptions from 'core/interfaces/IOdataQueryOptions';\r\n// enums\r\nimport { EContentStatus } from 'cms/enums/EContentStatus';\r\nimport IClientLanguage from 'core/interfaces/IClientLanguage';\r\nimport IClientMainPageItemList from 'cms/interfaces/IClientMainPageItemList';\r\nimport TValidations from 'cms/types/TValidations';\r\nimport BottomBar from './components/BottomBar';\r\nimport MiddleBar from './components/MiddleBar';\r\n\r\n\r\nfunction mapStateToProps ( state: any ) {\r\n console.log(\"Footer.mapStateToProps: \", state);\r\n\r\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\r\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\r\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode.payload;\r\n\r\n const mainPageItemsListPayload:IClientMainPageItemList[]|null = state.FooterStore.ClientMainPageItemsStore.list?.payload;\r\n const mainPageItemsListError:TValidations[]|null = state.FooterStore.ClientMainPageItemsStore.list?.error;\r\n const mainPageItemsListIsLoading:boolean = state.FooterStore.ClientMainPageItemsStore.list?.isLoading;\r\n\r\n return {\r\n\r\n webApplicationLanguage,\r\n webApplicationLanguageCode,\r\n webApplicationLanguageISOCode,\r\n\r\n mainPageItemsListPayload,\r\n mainPageItemsListError,\r\n mainPageItemsListIsLoading,\r\n\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\r\n console.log(\"Footer.mapDispatchToProps\");\r\n\r\n const clientMainPageItemsServiceAction = new ClientMainPageItemsServiceAction(dispatch);\r\n\r\n return {\r\n\r\n // list\r\n _listClientMainPageItems: ( mapLayoutName:string, webApplicationLanguageCode:string ) => {\r\n let queryOptions:IOdataQueryOptions = {\r\n filter: [`mapLayoutName eq '${mapLayoutName}'`, \"and\", `status eq ${EContentStatus.ACTIVE}`],\r\n orderBy: [\"order asc\"],\r\n top: 1000\r\n };\r\n\r\n clientMainPageItemsServiceAction.list({ servicePayload: { queryOptions, language: webApplicationLanguageCode } });\r\n }\r\n }\r\n\r\n}\r\n\r\nconst connector = connect(mapStateToProps, mapDispatchToProps);\r\n\r\n\r\n/* types */\r\ntype PropsFromRedux = ConnectedProps\r\n\r\ntype TFooter = {\r\n\r\n mapLayoutName:string|null;\r\n\r\n} & T;\r\n\r\n\r\nfunction Footer ( props:TFooter ) {\r\n console.log(\"Footer.rendered: \", props);\r\n\r\n useEffect(\r\n () => {\r\n if ( !Lodash.isEmpty(props.mapLayoutName) && props.mapLayoutName ) {\r\n props._listClientMainPageItems( props.mapLayoutName, props.webApplicationLanguageCode );\r\n }\r\n }, []\r\n )\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nconst Component = React.memo(Footer, ( prevProps:TFooter, nextProps:TFooter ) => {\r\n console.log(\"MainPageItem.memo\", { prevProps, nextProps });\r\n return !(prevProps.mainPageItemsListIsLoading !== nextProps.mainPageItemsListIsLoading );\r\n});\r\n\r\nexport default connector(Component);\r\n","import ActionCore from 'core/actions/ActionCore';\n\n\nconst screenCode = \"CMS\";\nclass CMSAction extends ActionCore {\n\n constructor( dispatch:any ) {\n super( dispatch, \"\", screenCode);\n\n this.serviceCode = \"Core\";\n }\n\n // sidebar\n openMobileMenu () {\n this.fetching(\"MM\")\n }\n\n closeMobileMenu () {\n this.clean(\"MM\");\n }\n\n // mobile search\n openMobileSearch () {\n this.fetching(\"MS\")\n }\n\n closeMobileSearch () {\n this.clean(\"MS\");\n }\n\n}\n\nexport default CMSAction;\n","// action\nimport OdataActionBase from \"core/actions/OdataActionBase\";\n// service\nimport ContentMetricsService from \"core/services/metrics/ContentMetricsService\";\n\n\nclass ContentMetricsServiceAction extends OdataActionBase {\n\n constructor( dispatch: any, screenCode:string ) {\n\n super(dispatch, ContentMetricsService, screenCode);\n \n }\n\n}\n\nexport default ContentMetricsServiceAction;\n","import _ContentMetricsServiceAction from \"core/actions/services/metrics/ContentMetricsServiceAction\";\n\n\nconst screenCode = \"201\";\nclass ContentMetricsServiceAction extends _ContentMetricsServiceAction {\n\n constructor( dispatch: any ) {\n super(dispatch, screenCode);\n }\n \n}\n\nexport default ContentMetricsServiceAction;\n","// action \nimport OdataReadOnlyActionBase from \"core/actions/OdataReadOnlyActionBase\";\n// service\nimport ClientMenuItemService from \"cms/services/ClientMenuItemService\";\n\n\nclass ClientMenuItemServiceAction extends OdataReadOnlyActionBase {\n\n constructor( dispatch: any, screenCode:string ) {\n super(dispatch, ClientMenuItemService, screenCode);\n }\n\n}\n\nexport default ClientMenuItemServiceAction;\n","import _ClientMenuItemServiceAction from \"cms/actions/services/ClientMenuItemServiceAction\";\n\n\nconst screenCode = \"201\";\nclass ClientMenuItemServiceAction extends _ClientMenuItemServiceAction {\n\n constructor( dispatch:any ) {\n super( dispatch, screenCode);\n }\n\n}\n\nexport default ClientMenuItemServiceAction;\n","import { isEmpty } from 'lodash';\nimport IClientMenuItemList from \"cms/interfaces/IClientMenuItemList\";\nimport TMenu from 'cms/types/TMenu';\n\n\nfunction MenuComposer ( value:IClientMenuItemList[]|null, parentMenuItems:IClientMenuItemList[]|undefined|null ) {\n\n let _value:TMenu[] = [];\n\n if ( value && parentMenuItems && !isEmpty(value) && !isEmpty(parentMenuItems) ) {\n\n for ( let parentMenuItem of parentMenuItems ) {\n \n let _parentMenuItem:TMenu = {...parentMenuItem};\n \n let childMenuItems = value.filter((item:any) => item.parentId === parentMenuItem.id);\n if ( childMenuItems.length > 0 ) {\n let response = MenuComposer(value, childMenuItems);\n if ( response.length > 0 ) {\n _value.push({ ..._parentMenuItem, items: response });\n }\n }\n else {\n _value.push(_parentMenuItem);\n }\n }\n\n }\n\n return _value;\n\n}\n\nexport default MenuComposer;\n","import { CSSProperties, JSXElementConstructor, ReactNode } from \"react\";\nimport { isEmpty, isNaN, isNumber, reject } from \"lodash\";\nimport { NavLink } from \"react-router-dom\";\n// enums\nimport ERedirectType from 'cms/enums/ERedirectType';\n\n\ntype Variant = 'a' | 'div';\n\ntype TRMDRNavLink = {\n\n text?: string|null;\n title?: string|null;\n\n hasNavigationDestination?: boolean|null;\n hasActive?: boolean|null;\n isShowAlways?: boolean|null;\n\n navigationURL?: string|null;\n\n redirectType?: ERedirectType;\n redirectUrl?: string|null;\n\n className?: string;\n activeClassName?: string;\n style?: CSSProperties;\n\n children?: ReactNode;\n\n onClick?: (event:any) => void;\n\n variant?: Variant;\n}\n\nfunction RMDRNavLink ( props:Readonly ) {\n \n const _target = ((props.redirectType === ERedirectType.STAY_CURRENT_PAGE || !isNumber(props.redirectType)) && \"_self\") || (props.redirectType === ERedirectType.REDIRECT_NEW_TAB && \"_blank\") || \"\";\n\n if ( props.hasNavigationDestination && !isEmpty(props.redirectUrl) && props.redirectUrl ) {\n\n return \n { reject( [props.text, props.children, props.redirectUrl], isEmpty )?.[0] }\n \n\n }\n\n if ( props.hasNavigationDestination && !isEmpty(props.navigationURL) && props.navigationURL ) {\n\n return `${props.className} ${isActive||props.hasActive?props.activeClassName:\"\"}`} \n style={props.style}\n to={props.navigationURL}\n target={_target}\n onClick={props.onClick}\n title={props.title||\"\"}\n >\n { reject( [props.text, props.children, props.navigationURL], isEmpty )?.[0] }\n \n\n }\n\n if ( !isEmpty(props.onClick) ) {\n \n return `${props.className} ${isActive||props.hasActive?props.activeClassName:\"\"}`} \n style={props.style}\n to={\"#\"}\n onClick={props.onClick}\n title={props.title||\"\"}\n >\n { reject( [props.text, props.children], isEmpty )?.[0] }\n \n\n }\n\n if ( props.isShowAlways ) {\n\n const componentsMap: {\n [P in Variant]: React.ComponentType | string;\n } = {\n a: 'a',\n div: 'div'\n };\n \n const Component: JSXElementConstructor | React.ReactElement | React.ComponentType | string = componentsMap![props.variant!];\n\n return \n { reject( [props.text, props.redirectUrl, props.children], isEmpty )?.[0] }\n ;\n \n }\n \n return null;\n\n}\n\nRMDRNavLink.defaultProps = {\n\n hasNavigationDestination: false,\n hasActive: false,\n isShowAlways: false,\n className : \"\",\n activeClassName : \"\",\n variant: \"a\"\n\n};\n\nexport default RMDRNavLink;\nexport type {\n TRMDRNavLink\n};\n","import React, { useEffect, useState } from \"react\";\nimport { isEmpty } from \"lodash\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\nimport { connect, ConnectedProps } from \"react-redux\";\n// types\nimport TValidations from \"cms/types/TValidations\";\nimport TMenu from \"cms/types/TMenu\";\n// actions\nimport ClientMenuItemServiceAction from \"cms/actions/components/Header/ClientMenuItemServiceAction\";\n// interfaces\nimport IOdataQueryOptions from \"core/interfaces/IOdataQueryOptions\";\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport IClientMenuItemList from 'cms/interfaces/IClientMenuItemList';\n// enums\nimport { EContentStatus } from \"cms/enums/EContentStatus\";\n// utilities\nimport MenuComposer from \"cms/utilities/MenuComposer\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\nimport RMDRNavLink from \"components/RMDRNavLink\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"HeaderMenu.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const clientMenuItemGet:IClientMenuItemList[]|null = state.HeaderStore.ClientMenuItemStore.get?.[\"MNGRP001\"];\n const clientMenuItemGetError:TValidations[]|null = state.HeaderStore.ClientMenuItemStore.get?.error;\n const clientMenuItemGetIsLoading:boolean = state.HeaderStore.ClientMenuItemStore.get?.isLoading;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n clientMenuItemGet,\n clientMenuItemGetError,\n clientMenuItemGetIsLoading\n \n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"HeaderMenu.mapDispatchToProps\");\n\n const clientMenuItemServiceAction = new ClientMenuItemServiceAction(dispatch);\n\n return {\n \n _getClientMenuItems: ( webApplicationLanguageCode:string, mapLayoutName:string, destinationName:string ) => {\n let queryOptions:IOdataQueryOptions = {\n filter: [`mapLayoutName eq '${mapLayoutName}'`, \"and\", `status eq ${EContentStatus.ACTIVE}`],\n orderBy: [\"order asc\"],\n top: 1000\n };\n\n clientMenuItemServiceAction.get({ \n servicePayload: { queryOptions, language: webApplicationLanguageCode },\n args: { storeMapOptions: [{ destinationName, sourceName: \"value\" }] } \n });\n }\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\ntype TMenuProps = {\n\n onClick: (event:React.MouseEvent, contentId:string) => void;\n\n} & T;\n\n\n/* component */\nfunction HeaderMenuLoader () {\n\n return (\n <>\n )\n\n}\n\nfunction HeaderMenu ( props:TMenuProps ) {\n\n const [ navigation, setNavigation ] = useState(null);\n\n useEffect(\n () => {\n if ( !isEmpty(props.webApplicationLanguageCode)) {\n props._getClientMenuItems(props.webApplicationLanguageCode, \"MNGRP_001\", \"MNGRP001\");\n }\n }, [ props.webApplicationLanguageCode ]\n )\n\n useEffect(\n () => {\n\n if ( !isEmpty(props.clientMenuItemGet) ) {\n let parentMenuItems = props.clientMenuItemGet?.filter((item:any) => item.parentId === null);\n let navigation = MenuComposer(props.clientMenuItemGet, parentMenuItems);\n setNavigation(navigation);\n }\n\n }, [ props.clientMenuItemGet ]\n )\n\n\n return (\n
    \n {\n navigation?.map((item, index) => {\n const languageVersion = LanguageVersionSelector({\n languageVersions: item.languageVersions,\n filters:[{ view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }],\n type: \"find\"\n });\n\n const redirectUrl = LanguageVersionSelector({\n languageVersions: item.languageVersions,\n filters:[{ view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"redirectUrl\" }],\n type: \"find\"\n });\n\n return (\n
  • 0 ? \"dropdown\" : \"\"}`}>\n { props.onClick(event, item.id) }}\n variant=\"div\"\n />\n {\n item?.items && item.items?.length > 0 ? \n (\n
      \n {\n item.items.map((cItem) => {\n const cLanguageVersion = LanguageVersionSelector({\n languageVersions: cItem.languageVersions,\n filters:[{ view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }],\n type: \"find\"\n });\n \n const cRedirectUrl = LanguageVersionSelector({\n languageVersions: cItem.languageVersions,\n filters:[{ view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"redirectUrl\" }],\n type: \"find\"\n });\n\n return (\n
    • \n { props.onClick(event, item.id) }}\n variant=\"div\"\n />\n
    • \n )\n })\n }\n
    \n ) : null\n }\n
  • \n );\n })\n }\n
\n );\n\n};\n\nconst Component = React.memo(HeaderMenu, ( prevProps:TMenuProps, nextProps:TMenuProps ) => {\n console.log(\"HeaderMenu.memo\", { prevProps, nextProps });\n\n return !(\n prevProps.clientMenuItemGet !== nextProps.clientMenuItemGet\n );\n});\n\nexport default connector(Component);\n","import React, { useEffect, useState } from 'react'\nimport { connect, ConnectedProps } from \"react-redux\"\nimport CMSAction from 'cms/actions/common/CMSAction';\nimport { Dispatch } from '@reduxjs/toolkit';\nimport IClientLanguage from 'core/interfaces/IClientLanguage';\nimport IClientSiteSettingDetail from 'cms/interfaces/IClientSiteSettingDetail';\nimport TMenu from 'cms/types/TMenu';\nimport IClientMenuItemList from 'cms/interfaces/IClientMenuItemList';\nimport TValidations from 'cms/types/TValidations';\nimport MenuComposer from 'cms/utilities/MenuComposer';\nimport { isEmpty } from 'lodash';\nimport Logo from 'components/Logo';\nimport SocialMedia01 from 'components/SocialMedia/components/SocialMedia01';\nimport LanguageVersionSelector from 'cms/utilities/LanguageVersionSelector';\nimport ILanguageVersionList from 'cms/interfaces/ILanguageVersionList';\nimport { EContentType } from 'cms/enums/EContentType';\nimport { EViewType } from 'cms/enums/EViewType';\nimport { EView } from 'cms/enums/EView';\nimport RMDRNavLink from 'components/RMDRNavLink';\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"MobileMenu.mapStateToProps: \", state);\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const clientMenuItemGet:IClientMenuItemList[]|null = state.HeaderStore.ClientMenuItemStore.get?.[\"MNGRP001\"];\n const clientMenuItemGetError:TValidations[]|null = state.HeaderStore.ClientMenuItemStore.get?.error;\n const clientMenuItemGetIsLoading:boolean = state.HeaderStore.ClientMenuItemStore.get?.isLoading;\n\n return {\n\n siteSettingDetailPayload,\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n clientMenuItemGet,\n clientMenuItemGetError,\n clientMenuItemGetIsLoading\n\n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"MobileMenu.mapDispatchToProps\");\n\n const cmsAction = new CMSAction(dispatch);\n\n return {\n \n _openMobileMenu: () => {\n cmsAction.openMobileMenu();\n },\n\n _closeMobileMenu: () => {\n cmsAction.closeMobileMenu();\n }\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\ntype TMobileMenu = {\n \n onClick: (event:React.MouseEvent, contentId:string) => void;\n\n} & T;\n\ntype TIsActive = {\n status: boolean;\n key:any;\n subMenuKey: any\n}\n\n\n/* component */\nfunction MobileMenuLoader () {\n\n return (\n <>\n )\n\n}\n\nfunction MobileMenu ( props:TMobileMenu ) {\n console.log(\"MobileMenu.rendered: \", props);\n\n const [ navigation, setNavigation ] = useState(null);\n const [isActive, setIsActive] = useState({status: false, key:null, subMenuKey: null });\n\n useEffect(\n () => {\n\n if ( !isEmpty(props.clientMenuItemGet) ) {\n let parentMenuItems = props.clientMenuItemGet?.filter((item:any) => item.parentId === null);\n let navigation = MenuComposer(props.clientMenuItemGet, parentMenuItems);\n setNavigation(navigation);\n }\n\n }, [ props.clientMenuItemGet ]\n )\n\n function handleToggle ( key:string, subMenuKey:string|null = null) {\n if (isActive.key === key && isActive.subMenuKey === subMenuKey) {\n setIsActive({ status: false, key: null, subMenuKey: null });\n } else {\n setIsActive({ status: true, key, subMenuKey });\n }\n }\n \n return (\n
\n
{ props.onClick(event, \"\") }} >
\n
\n { props.onClick(event, \"\") }} >\n\n
\n \n
\n\n
\n
\n
    \n {\n navigation?.map((item, index) => {\n const languageVersion = LanguageVersionSelector({\n languageVersions: item.languageVersions,\n filters:[{ view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }],\n type: \"find\"\n });\n\n const redirectUrl = LanguageVersionSelector({\n languageVersions: item.languageVersions,\n filters:[{ view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"redirectUrl\" }],\n type: \"find\"\n });\n\n return (\n
  • 0 ? \"dropdown\" : \"\"} ${isActive.key === item.id ? \"current\" : \"\"}`}>\n { props.onClick(event, item.id) }}\n variant='div'\n />\n {\n item?.items && item.items?.length > 0 ? \n (\n <>\n
      \n {\n item.items.map((cItem) => {\n const cLanguageVersion = LanguageVersionSelector({\n languageVersions: cItem.languageVersions,\n filters:[{ view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }],\n type: \"find\"\n });\n \n const cRedirectUrl = LanguageVersionSelector({\n languageVersions: cItem.languageVersions,\n filters:[{ view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"redirectUrl\" }],\n type: \"find\"\n });\n\n return (\n
    • \n { props.onClick(event, cItem.id) }}\n variant='div'\n />\n
    • \n )\n })\n }\n
    \n \n \n \n ) : null\n }\n
  • \n );\n })\n }\n
\n
\n
\n
\n \n
\n
\n
\n );\n}\n\n\n\n\nconst Component = React.memo(MobileMenu, ( prevProps:TMobileMenu, nextProps:TMobileMenu ) => {\n return false;\n});\n\nexport default connector(Component);\n","const EContentMetricsTypeDataSource = {\n\n LIKE : { id: 1, name: \"Like\", description: \"Like\" },\n COPY_PATH : { id: 2, name: \"CopyPath\", description: \"CopyPath\" },\n VIEV : { id: 3, name: \"View\", description: \"View\" },\n DOWNLOAD : { id: 4, name: \"Download\", description: \"Download\" }\n\n}\n\n\nenum EContentMetricsType {\n\n LIKE = 1,\n COPY_PATH = 2,\n VIEV = 3,\n DOWNLOAD = 4\n\n}\n\nexport default EContentMetricsTypeDataSource;\nexport {\n\n EContentMetricsType\n\n}\n","import React, { useEffect, useState } from 'react'\r\nimport { connect, ConnectedProps } from \"react-redux\"\r\nimport { Dispatch } from '@reduxjs/toolkit';\r\nimport WOW from 'wowjs';\r\n// components\r\nimport Logo from 'components/Logo';\r\n// actions\r\nimport CoreAction from \"core/actions/common/CoreAction\";\r\nimport CMSAction from 'cms/actions/common/CMSAction';\r\nimport ContentMetricsServiceAction from \"cms/actions/components/Header/ContentMetricsServiceAction\";\r\n// interfaces\r\nimport IClientLanguage from 'core/interfaces/IClientLanguage';\r\nimport IClientSiteSettingDetail from 'cms/interfaces/IClientSiteSettingDetail';\r\nimport HeaderMenu from './components/HeaderMenu';\r\nimport MobileMenu from './components/MobileMenu';\r\nimport { EContentMetricsType } from 'core/enums/EContentMetricsType';\r\nimport { isEmpty } from 'lodash';\r\n\r\n\r\nfunction mapStateToProps ( state: any ) {\r\n console.log(\"Header.mapStateToProps: \", state);\r\n\r\n const languageStorePayload:IClientLanguage[] = state.LanguageStore.list?.payload;\r\n\r\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\r\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\r\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\r\n\r\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\r\n\r\n return {\r\n\r\n languageStorePayload,\r\n\r\n webApplicationLanguage,\r\n webApplicationLanguageCode,\r\n webApplicationLanguageISOCode,\r\n\r\n siteSettingDetailPayload,\r\n \r\n }\r\n}\r\n\r\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\r\n console.log(\"Header.mapDispatchToProps\");\r\n\r\n const coreAction = new CoreAction(dispatch);\r\n const cmsAction = new CMSAction(dispatch);\r\n const contentMetricsServiceAction = new ContentMetricsServiceAction(dispatch);\r\n \r\n return {\r\n \r\n _viewEvent: ( contentId:string, webApplicationLanguageCode:string ) => {\r\n contentMetricsServiceAction.post({ \r\n servicePayload: { \r\n body: {\r\n contentId: contentId,\r\n metricType: EContentMetricsType.VIEV\r\n }, \r\n language: webApplicationLanguageCode \r\n } \r\n });\r\n },\r\n\r\n // \r\n _openMobileMenu: () => {\r\n cmsAction.openMobileMenu();\r\n },\r\n\r\n _closeMobileMenu: () => {\r\n cmsAction.closeMobileMenu();\r\n },\r\n\r\n // other\r\n _hideLoader: () => { \r\n coreAction.hideLoader(); \r\n },\r\n\r\n _showLoader: () => { \r\n coreAction.showLoader(); \r\n }\r\n\r\n }\r\n}\r\n\r\nconst connector = connect(mapStateToProps, mapDispatchToProps);\r\n\r\n\r\n/* types */\r\ntype PropsFromRedux = ConnectedProps\r\ntype THeader = {\r\n \r\n site_header?: {\r\n categoryMenu: {},\r\n menu: {}\r\n };\r\n\r\n} & T;\r\n\r\n\r\n/* component */\r\nfunction HeaderLoader () {\r\n\r\n \r\n\r\n return (\r\n <>\r\n \r\n \r\n )\r\n\r\n}\r\n\r\nfunction Header ( props:THeader ) {\r\n console.log(\"Header.rendered:\", props);\r\n \r\n const [ scroll, setScroll] = useState(false);\r\n const [ isMobileMenuOpen, setIsMobileMenuOpen] = useState(false)\r\n\r\n useEffect(\r\n () => {\r\n new WOW.WOW({ live: false }).init();\r\n document.addEventListener(\"scroll\", () => {\r\n const scrollCheck = window.scrollY > 100;\r\n setScroll(scrollCheck)\r\n })\r\n }, []\r\n )\r\n\r\n function viewEvent ( event:React.MouseEvent, contentId:string ) {\r\n if ( !isEmpty(contentId) ) {\r\n props._viewEvent( contentId, props.webApplicationLanguageCode )\r\n }\r\n }\r\n\r\n function handleMobileMenu ( event:React.MouseEvent, contentId:string ) {\r\n viewEvent( event, contentId );\r\n setIsMobileMenuOpen(!isMobileMenuOpen);\r\n !isMobileMenuOpen ? document.body.classList.add(\"mobile-menu-visible\") : document.body.classList.remove(\"mobile-menu-visible\")\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n \r\n}\r\n\r\nconst Component = React.memo(Header, ( prevProps:THeader, nextProps:THeader ) => {\r\n console.log(\"Header.memo\", { prevProps, nextProps });\r\n\r\n return !( \r\n prevProps.webApplicationLanguage !== nextProps.webApplicationLanguage\r\n || prevProps.siteSettingDetailPayload !== nextProps.siteSettingDetailPayload\r\n );\r\n});\r\n\r\nexport default connector(Component);\r\n","import ReadOnlyOdataServiceBase from \"core/services/OdataReadOnlyServiceBase\";\n\n\nclass ClientSiteSettingService extends ReadOnlyOdataServiceBase {\n\n static code = \"205\";\n code = \"205\";\n\n constructor () {\n super({\n sourcePath: \"client-site-settings\"\n });\n }\n\n}\n\nexport default ClientSiteSettingService;\n","// action \nimport OdataReadOnlyActionBase from \"core/actions/OdataReadOnlyActionBase\";\n// service\nimport ClientSiteSettingService from \"cms/services/ClientSiteSettingService\";\n\n\nclass ClientSiteSettingServiceAction extends OdataReadOnlyActionBase {\n\n constructor( dispatch: any, screenCode:string ) {\n super(dispatch, ClientSiteSettingService, screenCode);\n }\n\n}\n\nexport default ClientSiteSettingServiceAction;\n","import _SiteSettingServiceAction from \"cms/actions/services/ClientSiteSettingServiceAction\";\n\n\nconst screenCode = \"COM\";\nclass SiteSettingServiceAction extends _SiteSettingServiceAction {\n\n constructor( dispatch:any ) {\n super( dispatch, screenCode);\n\n this.serviceCode = \"SS\";\n }\n\n}\n\nexport default SiteSettingServiceAction;\n","import { isEmpty } from 'lodash';\nimport CoreDefault from \"core/Defaults\";\n// enums\nimport { EResourceType } from \"cms/enums/EResourceType\";\nimport ESizeType from \"cms/enums/ESizeType\";\nimport { EView } from 'cms/enums/EView';\nimport { EViewType } from 'cms/enums/EViewType';\n// interfaces\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport ApplicationDocumentSelector from './ApplicationDocumentSelector';\nimport LanguageVersionSelector from './LanguageVersionSelector';\nimport ILanguageVersionDetail from 'cms/interfaces/ILanguageVersionDetail';\nimport IApplicationDocument from 'cms/interfaces/IApplicationDocument';\n\n\nfunction PutManifestFileDynamic( document: any, siteSettingPayload:IClientSiteSettingDetail ) {\n\n let dynamicManifest = {\n name: \"\",\n short_name: \"\",\n start_url: document.location.origin,\n display: \"standalone\",\n background_color: \"#ffffff\",\n theme_color: \"#ffffff\",\n description: \"\",\n icons: []\n }\n\n // icon\n if ( siteSettingPayload.resources && !isEmpty(siteSettingPayload.resources) ) {\n\n let logo_x01 = ApplicationDocumentSelector({\n resources: siteSettingPayload.resources,\n resourceType: EResourceType.LOGO_ONLY,\n sizeType: ESizeType.X01,\n type: \"find\",\n disableDeriveds: true\n });\n if ( logo_x01 ) {\n dynamicManifest[\"icons\"].push({\n \"src\": `${CoreDefault.cdn}/${logo_x01.filePath}`,\n \"type\": logo_x01.contentType,\n \"sizes\": `${logo_x01.width}x${logo_x01.height}`\n } as never);\n }\n\n let logo_x02 = ApplicationDocumentSelector({\n resources: siteSettingPayload.resources,\n resourceType: EResourceType.LOGO_ONLY,\n sizeType: ESizeType.X02,\n type: \"find\",\n disableDeriveds: true\n });\n if ( logo_x02 ) {\n dynamicManifest[\"icons\"].push({\n \"src\": `${CoreDefault.cdn}/${logo_x02.filePath}`,\n \"type\": logo_x01.contentType,\n \"sizes\": `${logo_x01.width}x${logo_x01.height}`\n } as never);\n }\n\n let logo_x03 = ApplicationDocumentSelector({\n resources: siteSettingPayload.resources,\n resourceType: EResourceType.LOGO_ONLY,\n sizeType: ESizeType.X03,\n type: \"find\",\n disableDeriveds: true\n });\n if ( logo_x03 ) {\n dynamicManifest[\"icons\"].push({\n \"src\": `${CoreDefault.cdn}/${logo_x03.filePath}`,\n \"type\": logo_x01.contentType,\n \"sizes\": `${logo_x01.width}x${logo_x01.height}`\n } as never);\n }\n\n let logo_x06 = ApplicationDocumentSelector({\n resources: siteSettingPayload.resources,\n resourceType: EResourceType.LOGO_ONLY,\n sizeType: ESizeType.X06,\n type: \"find\",\n disableDeriveds: true\n });\n if ( logo_x06 ) {\n dynamicManifest[\"icons\"].push({\n \"src\": `${CoreDefault.cdn}/${logo_x06.filePath}`,\n \"type\": logo_x01.contentType,\n \"sizes\": `${logo_x01.width}x${logo_x01.height}`\n } as never);\n }\n\n }\n\n // language version\n const languageVersion = LanguageVersionSelector({\n languageVersions: siteSettingPayload.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION }\n ],\n type: \"find\"\n });\n\n const description = LanguageVersionSelector({\n languageVersions: siteSettingPayload.languageVersions,\n filters: [\n { view: EView.META_DATA, viewType: EViewType.TEXT, name: \"metaDescription\" }\n ],\n type: \"find\"\n });\n\n dynamicManifest[\"name\"] = languageVersion?.name||\"\";\n dynamicManifest[\"short_name\"] = languageVersion?.name||\"\";\n dynamicManifest[\"description\"] = description?.value||\"\";\n \n // \n const stringManifest = JSON.stringify(dynamicManifest);\n const blobManifest = new Blob([stringManifest], { type: 'application/json' });\n const manifestURL = URL.createObjectURL(blobManifest);\n document?.querySelector('#my-manifest-placeholder').setAttribute('href', manifestURL);\n\n}\n\nexport default PutManifestFileDynamic;\n","import { useEffect, useState } from \"react\";\nimport WOW from 'wowjs';\n\n\nfunction BackToTop () {\n\n const [ scroll, setScroll] = useState(false);\n\n useEffect(\n () => {\n new WOW.WOW({ live: false }).init();\n document.addEventListener(\"scroll\", () => {\n const scrollCheck = window.scrollY > 100;\n setScroll(scrollCheck)\n })\n }, []\n )\n\n return (\n <>\n {\n scroll && \n (\n
{\n const releventDiv:any = document.getElementById(\"top\");\n releventDiv?.scrollIntoView({behavior: \"smooth\"});\n }}>\n \n
\n )\n }\n \n )\n\n}\n\nexport default BackToTop;","import React, { useEffect } from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\"\nimport Lodash from 'lodash';\nimport { Outlet } from \"react-router-dom\";\n// components\nimport Footer from 'components/Footer';\nimport Header from \"components/Header\";\n//\nimport SiteSettingServiceAction from \"cms/actions/common/SiteSettingServiceAction\";\nimport PutManifestFileDynamic from \"cms/utilities/PutManifestFileDynamic\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\nimport IClientSiteSettingList from \"cms/interfaces/IClientSiteSettingList\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport TValidations from \"cms/types/TValidations\";\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport BackToTop from \"components/BackToTop\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"WebApplicationWrapperLayout.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingListPayload:IClientSiteSettingList[]|null = state.SiteSettingStore.list?.payload;\n const siteSettingListError:TValidations[]|null = state.SiteSettingStore.list?.error;\n const siteSettingListIsLoading:boolean = state.SiteSettingStore.list?.isLoading;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail|null = state.SiteSettingStore.details?.payload;\n const siteSettingDetailError:TValidations[]|null = state.SiteSettingStore.details?.error;\n const siteSettingDetailIsLoading:boolean = state.SiteSettingStore.details?.isLoading;\n\n const error:TValidations[]|null|undefined = Lodash.reject( [siteSettingListError, siteSettingDetailError], Lodash.isEmpty )[0] || [];\n const isLoading:boolean = [siteSettingListIsLoading, siteSettingDetailIsLoading].includes(true);\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingListPayload,\n siteSettingDetailPayload,\n\n error,\n isLoading\n\n }\n}\n\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\n console.log(\"WebApplicationWrapperLayout.mapDispatchToProps\");\n\n const siteSettingServiceAction = new SiteSettingServiceAction(dispatch);\n\n return {\n\n // list\n _listSiteSetting: ( webApplicationLanguageCode:string ) => {\n siteSettingServiceAction.list({ servicePayload: { language: webApplicationLanguageCode } });\n },\n\n // details\n _detailsSiteSetting: ( id:string, webApplicationLanguageCode:string ) => {\n siteSettingServiceAction.details({ servicePayload: { key: id, language: webApplicationLanguageCode } });\n }\n\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\ntype TWebApplicationWrapperLayout = {\n \n} & T;\n\n\n/* component */\nfunction WebApplicationWrapperLayoutLoader () {\n\n return (\n <>\n )\n\n}\n\nfunction WebApplicationWrapperLayout ( props:TWebApplicationWrapperLayout ) {\n console.log(\"WebApplicationWrapperLayout.rendered: \", props);\n\n useEffect(\n () => {\n if ( !Lodash.isEmpty(props.webApplicationLanguageCode)) {\n props._listSiteSetting(props.webApplicationLanguageCode);\n }\n }, [ props.webApplicationLanguageCode ]\n )\n\n useEffect (\n () => {\n if ( !Lodash.isEmpty(props.siteSettingListPayload) && props.siteSettingListPayload && props.siteSettingListPayload.length > 0 ) {\n props._detailsSiteSetting(props.siteSettingListPayload[0].id, props.webApplicationLanguageCode)\n }\n }, [ props.siteSettingListPayload ]\n )\n\n if ( !Lodash.isEmpty(props.siteSettingListPayload) && !Lodash.isEmpty(props.siteSettingDetailPayload) ) {\n\n PutManifestFileDynamic(document, props.siteSettingDetailPayload);\n\n return (\n
\n
\n \n
\n \n
\n )\n\n }\n \n return null;\n\n};\n\nconst Component = React.memo(WebApplicationWrapperLayout, ( prevProps:TWebApplicationWrapperLayout, nextProps:TWebApplicationWrapperLayout ) => {\n return !(\n prevProps.isLoading !== nextProps.isLoading\n || prevProps.webApplicationLanguageCode !== nextProps.webApplicationLanguageCode\n || prevProps.siteSettingDetailPayload !== nextProps.siteSettingDetailPayload\n )\n});\n\nexport default connector(Component);\n","import React, { Suspense, useEffect } from \"react\";\r\nimport { connect, ConnectedProps } from \"react-redux\";\r\nimport { Dispatch } from \"@reduxjs/toolkit\";\r\n// components\r\nimport SEO from \"components/SEO\";\r\n// import CookieModal from \"cms/components/CookieModal\";\r\n// actions\r\nimport CoreAction from \"core/actions/common/CoreAction\";\r\n// styles\r\nimport 'react-tabs/style/react-tabs.css';\r\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\r\nconst SliderLazy = React.lazy(() => import(\"components/Slider\"));\r\nconst MainPageItemsLazy = React.lazy(() => import(\"components/MainPageItems\"));\r\n\r\n\r\nfunction mapStateToProps ( state: any ) {\r\n console.log(\"Home.mapStateToProps: \", state);\r\n\r\n const siteSettingDetailPayload:IClientSiteSettingDetail|null = state.SiteSettingStore.details?.payload;\r\n \r\n return {\r\n \r\n siteSettingDetailPayload\r\n\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\r\n console.log(\"Home.mapDispatchToProps\");\r\n\r\n const coreAction = new CoreAction(dispatch);\r\n\r\n return {\r\n\r\n // others\r\n _hideLoader: () => {\r\n coreAction.hideLoader();\r\n },\r\n\r\n _showLoader: () => {\r\n coreAction.showLoader();\r\n },\r\n\r\n }\r\n}\r\n\r\nconst connector = connect(mapStateToProps, mapDispatchToProps);\r\n\r\n\r\n/* types */\r\ntype PropsFromRedux = ConnectedProps\r\n\r\ntype THome = {\r\n\r\n} & T;\r\n\r\n\r\n/* component */\r\nfunction WebApplicationStarterLoader () {\r\n\r\n return (\r\n <>\r\n )\r\n\r\n}\r\n\r\nfunction Home ( props:THome ) {\r\n console.log(\"Home.rendered: \", props);\r\n\r\n useEffect(\r\n () => {\r\n\r\n return function clenup() {\r\n props._showLoader();\r\n }\r\n\r\n }, []\r\n )\r\n\r\n return (\r\n <>\r\n \r\n
\r\n }>\r\n \r\n \r\n\r\n }>\r\n \r\n \r\n
\r\n \r\n )\r\n}\r\n\r\n\r\n\r\nconst Component = React.memo(Home, ( prevProps:THome, nextProps:THome ) => {\r\n console.log(\"Home.memo\", { prevProps, nextProps });\r\n return true;\r\n});\r\n\r\nexport default connector(Component);\r\n","// action \nimport OdataReadOnlyActionBase from \"core/actions/OdataReadOnlyActionBase\";\n// service\nimport ClientContentsService from \"cms/services/ClientContentsService\";\n\n\nclass ClientContentsServiceAction extends OdataReadOnlyActionBase {\n\n constructor( dispatch: any, screenCode:string ) {\n super(dispatch, ClientContentsService, screenCode);\n }\n\n}\n\nexport default ClientContentsServiceAction;\n","import _ClientContentsServiceAction from \"cms/actions/services/ClientContentsServiceAction\";\n\n\nconst screenCode = \"20B\";\nclass ClientContentsServiceAction extends _ClientContentsServiceAction {\n\n constructor( dispatch: any ) {\n super(dispatch, screenCode);\n }\n \n}\n\nexport default ClientContentsServiceAction;\n","import _ContentMetricsServiceAction from \"core/actions/services/metrics/ContentMetricsServiceAction\";\n\n\nconst screenCode = \"20B\";\nclass ContentMetricsServiceAction extends _ContentMetricsServiceAction {\n\n constructor( dispatch: any ) {\n super(dispatch, screenCode);\n }\n \n}\n\nexport default ContentMetricsServiceAction;\n","import React, { JSXElementConstructor } from 'react';\nimport SanitizeHTMLString from 'cms/utilities/SanitizeHTMLString';\nimport cn from \"classnames\";\n\n\ninterface Props {\n\n variant?: Variant;\n html?: string|null;\n children?: React.ReactNode | any;\n\n className?:string;\n}\n\ntype Variant = 'mediumHeading' | 'heading' | 'body' | 'pageHeading' | 'subHeading';\n\nfunction RenderText(props: Props) {\n\n const componentsMap: {\n [P in Variant]: React.ComponentType | string;\n } = {\n body: 'p',\n mediumHeading: 'h3',\n heading: 'h4',\n pageHeading: 'h1',\n subHeading: 'h2',\n };\n\n const Component: JSXElementConstructor | React.ReactElement | React.ComponentType | string = componentsMap![props.variant!];\n\n const htmlContentProps = props.html\n ? {\n dangerouslySetInnerHTML: { __html: SanitizeHTMLString(props.html) },\n }\n : {};\n \n return (\n \n {props.children}\n \n );\n};\n\nRenderText.defaultProps = {\n\n variant: \"body\"\n\n}\n\nexport default RenderText;\n","import CoreDefault from 'core/Defaults';\n// types\nimport ApplicationDocumentSelector, { TApplicationDocumentSelector } from 'cms/utilities/ApplicationDocumentSelector';\nimport { isEmpty, reject } from 'lodash';\nimport RenderText from './RenderText';\nimport IApplicationDocument from 'cms/interfaces/IApplicationDocument';\nimport useProgressiveImage from 'core/hooks/useProgressiveImage';\n\n\ntype TContentHeaderRow = {\n\n title?: string|null;\n description?: string|null;\n imagePath?: string|null;\n \n} & TApplicationDocumentSelector;\n\nfunction ContentHeaderRow(props: TContentHeaderRow) {\n console.log(\"ContentHeaderRow: \", props);\n\n const applicationDocument = ApplicationDocumentSelector({\n resources: props.resources,\n resourceType: props.resourceType,\n sizeType: props.sizeType,\n type: \"find\"\n });\n\n const image = reject([\n props.imagePath ? `${CoreDefault.cdn}/${props.imagePath.replace(\"\\\\\", \"/\")}` : null,\n applicationDocument?.filePath ? `${CoreDefault.cdn}/${applicationDocument.filePath.replace(\"\\\\\", \"/\")}` : null\n ], isEmpty)?.[0];\n\n const loaded = useProgressiveImage({ src:image ? `${image}` : null });\n\n return (\n
\n
\n
\n
\n

{props.title}

\n {\n props.description ? : null\n }\n
\n
\n
\n )\n\n}\n\nexport default ContentHeaderRow;\nexport type {\n TContentHeaderRow\n};\n\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\nimport cn from \"classnames\";\n// enums\nimport { EViewType } from \"cms/enums/EViewType\";\n// utilities\nimport SanitizeHTMLString from \"cms/utilities/SanitizeHTMLString\";\n// interfaces\nimport ILanguageVersionDetail from \"cms/interfaces/ILanguageVersionDetail\";\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\";\n\n\ntype TRMDRTextContent = {\n\n languageVersion?: ILanguageVersionList|ILanguageVersionDetail|null;\n languageVersions?: ILanguageVersionList[]|ILanguageVersionDetail[]|null;\n\n isLoading?:boolean;\n showNameField?:boolean;\n\n titleClassName?:string;\n contentClassName?:string;\n\n}\n\nconst RMDRTextContent = ( props:TRMDRTextContent ) => {\n console.log(\"RMDRTextContent.rendered\", props)\n\n if ( props.languageVersion && !isEmpty(props.languageVersion) && props.languageVersion?.viewType === EViewType.TEXT ) {\n \n return (\n <>\n { props.showNameField ?

{props.languageVersion.name}

: (null)}\n
\n \n \n );\n\n }\n\n return null;\n}\n\nconst Component = React.memo(RMDRTextContent, (prevProps:TRMDRTextContent, nextProps:TRMDRTextContent) => {\n console.log(\"RMDRTextContent.memo\", { prevProps, nextProps });\n\n return !( \n prevProps.isLoading !== nextProps.isLoading \n || prevProps.languageVersion !== nextProps.languageVersion\n )\n});\n\nexport default Component;\nexport type {\n TRMDRTextContent\n};\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","import { createContext } from 'react';\n\nconst MotionContext = createContext({});\n\nexport { MotionContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","const isBrowser = typeof document !== \"undefined\";\n\nexport { isBrowser };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\n","import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\n","const MotionGlobalConfig = {\n skipAnimations: false,\n useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\n","class Queue {\n constructor() {\n this.order = [];\n this.scheduled = new Set();\n }\n add(process) {\n if (!this.scheduled.has(process)) {\n this.scheduled.add(process);\n this.order.push(process);\n return true;\n }\n }\n remove(process) {\n const index = this.order.indexOf(process);\n if (index !== -1) {\n this.order.splice(index, 1);\n this.scheduled.delete(process);\n }\n }\n clear() {\n this.order.length = 0;\n this.scheduled.clear();\n }\n}\nfunction createRenderStep(runNextFrame) {\n /**\n * We create and reuse two queues, one to queue jobs for the current frame\n * and one for the next. We reuse to avoid triggering GC after x frames.\n */\n let thisFrame = new Queue();\n let nextFrame = new Queue();\n let numToRun = 0;\n /**\n * Track whether we're currently processing jobs in this step. This way\n * we can decide whether to schedule new jobs for this frame or next.\n */\n let isProcessing = false;\n let flushNextFrame = false;\n /**\n * A set of processes which were marked keepAlive when scheduled.\n */\n const toKeepAlive = new WeakSet();\n const step = {\n /**\n * Schedule a process to run on the next frame.\n */\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const queue = addToCurrentFrame ? thisFrame : nextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n if (queue.add(callback) && addToCurrentFrame && isProcessing) {\n // If we're adding it to the currently running queue, update its measured size\n numToRun = thisFrame.order.length;\n }\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n nextFrame.remove(callback);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (frameData) => {\n /**\n * If we're already processing we've probably been triggered by a flushSync\n * inside an existing process. Instead of executing, mark flushNextFrame\n * as true and ensure we flush the following frame at the end of this one.\n */\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n [thisFrame, nextFrame] = [nextFrame, thisFrame];\n // Clear the next frame queue\n nextFrame.clear();\n // Execute this frame\n numToRun = thisFrame.order.length;\n if (numToRun) {\n for (let i = 0; i < numToRun; i++) {\n const callback = thisFrame.order[i];\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n callback(frameData);\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 { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { createRenderStep } from './render-step.mjs';\n\nconst stepsOrder = [\n \"read\", // Read\n \"resolveKeyframes\", // Write/Read/Write/Read\n \"update\", // Compute\n \"preRender\", // Compute\n \"render\", // Write\n \"postRender\", // Compute\n];\nconst maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n let runNextFrame = false;\n let useDefaultElapsed = true;\n const state = {\n delta: 0,\n timestamp: 0,\n isProcessing: false,\n };\n const flagRunNextFrame = () => (runNextFrame = true);\n const steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(flagRunNextFrame);\n return acc;\n }, {});\n const { read, resolveKeyframes, update, preRender, render, postRender } = steps;\n const processBatch = () => {\n const timestamp = MotionGlobalConfig.useManualTiming\n ? state.timestamp\n : performance.now();\n runNextFrame = false;\n state.delta = useDefaultElapsed\n ? 1000 / 60\n : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n state.timestamp = timestamp;\n state.isProcessing = true;\n // Unrolled render loop for better per-frame performance\n read.process(state);\n resolveKeyframes.process(state);\n update.process(state);\n preRender.process(state);\n render.process(state);\n postRender.process(state);\n state.isProcessing = false;\n if (runNextFrame && allowKeepAlive) {\n useDefaultElapsed = false;\n scheduleNextBatch(processBatch);\n }\n };\n const wake = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!state.isProcessing) {\n scheduleNextBatch(processBatch);\n }\n };\n const schedule = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n wake();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n }, {});\n const cancel = (process) => {\n for (let i = 0; i < stepsOrder.length; i++) {\n steps[stepsOrder[i]].cancel(process);\n }\n };\n return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher, stepsOrder };\n","import { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\nexport { cancelMicrotask, microtask };\n","function isRefObject(ref) {\n return (ref &&\n typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","import { useContext, useRef, useInsertionEffect, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\nimport { optimizedAppearDataAttribute } from '../../animation/optimized-appear/data-id.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { SwitchLayoutGroupContext } from '../../context/SwitchLayoutGroupContext.mjs';\n\nlet scheduleHandoffComplete = false;\nfunction useVisualElement(Component, visualState, props, createVisualElement, ProjectionNodeConstructor) {\n const { visualElement: parent } = useContext(MotionContext);\n const lazyContext = useContext(LazyContext);\n const presenceContext = useContext(PresenceContext);\n const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n const visualElementRef = useRef();\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n createVisualElement = createVisualElement || lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState,\n parent,\n props,\n presenceContext,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\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 const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n if (visualElement &&\n !visualElement.projection &&\n ProjectionNodeConstructor &&\n (visualElement.type === \"html\" || visualElement.type === \"svg\")) {\n createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);\n }\n useInsertionEffect(() => {\n visualElement && visualElement.update(props, presenceContext);\n });\n /**\n * Cache this value as we want to know whether HandoffAppearAnimations\n * was present on initial render - it will be deleted after this.\n */\n const wantsHandoff = useRef(Boolean(props[optimizedAppearDataAttribute] &&\n !window.HandoffComplete));\n useIsomorphicLayoutEffect(() => {\n if (!visualElement)\n return;\n visualElement.updateFeatures();\n microtask.render(visualElement.render);\n /**\n * Ideally this function would always run in a useEffect.\n *\n * However, if we have optimised appear animations to handoff from,\n * it needs to happen synchronously to ensure there's no flash of\n * incorrect styles in the event of a hydration error.\n *\n * So if we detect a situtation where optimised appear animations\n * are running, we use useLayoutEffect to trigger animations.\n */\n if (wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n });\n useEffect(() => {\n if (!visualElement)\n return;\n if (!wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n if (wantsHandoff.current) {\n wantsHandoff.current = false;\n // This ensures all future calls to animateChanges() will run in useEffect\n if (!scheduleHandoffComplete) {\n scheduleHandoffComplete = true;\n queueMicrotask(completeHandoff);\n }\n }\n });\n return visualElement;\n}\nfunction completeHandoff() {\n window.HandoffComplete = true;\n}\nfunction createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {\n const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = props;\n visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props[\"data-framer-portal-id\"]\n ? undefined\n : getClosestProjectingNode(visualElement.parent));\n visualElement.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) || (dragConstraints && isRefObject(dragConstraints)),\n visualElement,\n scheduleRender: () => 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,\n layoutScroll,\n layoutRoot,\n });\n}\nfunction getClosestProjectingNode(visualElement) {\n if (!visualElement)\n return undefined;\n return visualElement.options.allowProjection !== false\n ? visualElement.projection\n : getClosestProjectingNode(visualElement.parent);\n}\n\nexport { useVisualElement };\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((instance) => {\n instance && visualState.mount && visualState.mount(instance);\n if (visualElement) {\n if (instance) {\n visualElement.mount(instance);\n }\n else {\n visualElement.unmount();\n }\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","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n","function isAnimationControls(v) {\n return (v !== null &&\n typeof v === \"object\" &&\n typeof v.start === \"function\");\n}\n\nexport { isAnimationControls };\n","const variantPriorityOrder = [\n \"animate\",\n \"whileInView\",\n \"whileFocus\",\n \"whileHover\",\n \"whileTap\",\n \"whileDrag\",\n \"exit\",\n];\nconst variantProps = [\"initial\", ...variantPriorityOrder];\n\nexport { variantPriorityOrder, variantProps };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nfunction isControllingVariants(props) {\n return (isAnimationControls(props.animate) ||\n variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n","import { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","import { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\nimport { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (isControllingVariants(props)) {\n const { initial, animate } = props;\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","const featureProps = {\n animation: [\n \"animate\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"exit\",\n \"whileInView\",\n \"whileFocus\",\n \"whileDrag\",\n ],\n exit: [\"exit\"],\n drag: [\"drag\", \"dragControls\"],\n focus: [\"whileFocus\"],\n hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n layout: [\"layout\", \"layoutId\"],\n};\nconst featureDefinitions = {};\nfor (const key in featureProps) {\n featureDefinitions[key] = {\n isEnabled: (props) => featureProps[key].some((name) => !!props[name]),\n };\n}\n\nexport { featureDefinitions };\n","import { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","import { jsxs, jsx } from 'react/jsx-runtime';\nimport { forwardRef, useContext } from 'react';\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 } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\nimport { warning, invariant } from '../utils/errors.mjs';\nimport { featureDefinitions } from './features/definitions.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 */\nfunction createMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState, Component, }) {\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n /**\n * If we need to measure the element we load this functionality in a\n * separate class component in order to gain access to getSnapshotBeforeUpdate.\n */\n let MeasureLayout;\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n const context = useCreateMotionContext(props);\n const visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n useStrictMode(configAndProps, preloadedFeatures);\n const layoutProjection = getProjectionFunctionality(configAndProps);\n MeasureLayout = layoutProjection.MeasureLayout;\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, configAndProps, createVisualElement, layoutProjection.ProjectionNode);\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 (jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout && context.visualElement ? (jsx(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null, useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] }));\n }\n const ForwardRefComponent = forwardRef(MotionComponent);\n ForwardRefComponent[motionComponentSymbol] = Component;\n return ForwardRefComponent;\n}\nfunction useLayoutId({ layoutId }) {\n const layoutGroupId = useContext(LayoutGroupContext).id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n const isStrict = useContext(LazyContext).strict;\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 isStrict) {\n const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n configAndProps.ignoreStrict\n ? warning(false, strictMessage)\n : invariant(false, strictMessage);\n }\n}\nfunction getProjectionFunctionality(props) {\n const { drag, layout } = featureDefinitions;\n if (!drag && !layout)\n return {};\n const combined = { ...drag, ...layout };\n return {\n MeasureLayout: (drag === null || drag === void 0 ? void 0 : drag.isEnabled(props)) || (layout === null || layout === void 0 ? void 0 : layout.isEnabled(props))\n ? combined.MeasureLayout\n : undefined,\n ProjectionNode: combined.ProjectionNode,\n };\n}\n\nexport { createMotionComponent };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n for (const key in features) {\n featureDefinitions[key] = {\n ...featureDefinitions[key],\n ...features[key],\n };\n }\n}\n\nexport { loadFeatures };\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 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 const 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: (_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","/**\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 */\nconst 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 \"switch\",\n \"symbol\",\n \"svg\",\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]/u.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n \"transformPerspective\",\n \"x\",\n \"y\",\n \"z\",\n \"translateX\",\n \"translateY\",\n \"translateZ\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { transformProps } from '../../render/html/utils/transform.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n return (transformProps.has(key) ||\n key.startsWith(\"origin\") ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\n","import { transformPropOrder } from './transform.mjs';\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\nconst numTransforms = transformPropOrder.length;\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(transform, { enableHardwareAcceleration = true, allowTransformNone = true, }, transformIsDefault, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n /**\n * Loop over all possible transforms in order, adding the ones that\n * are present to the transform string.\n */\n for (let i = 0; i < numTransforms; i++) {\n const key = transformPropOrder[i];\n if (transform[key] !== undefined) {\n const transformName = translateAlias[key] || key;\n transformString += `${transformName}(${transform[key]}) `;\n }\n }\n if (enableHardwareAcceleration && !transform.z) {\n transformString += \"translateZ(0)\";\n }\n transformString = transformString.trim();\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\nexport { buildTransform };\n","const checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = checkStringStartsWith(\"--\");\nconst startsAsVariableToken = checkStringStartsWith(\"var(--\");\nconst isCSSVariableToken = (value) => {\n const startsWithToken = startsAsVariableToken(value);\n if (!startsWithToken)\n return false;\n // Ensure any comments are stripped from the value as this can harm performance of the regex.\n return singleCssVariableRegex.test(value.split(\"/*\")[0].trim());\n};\nconst singleCssVariableRegex = /var\\(--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)$/iu;\n\nexport { isCSSVariableName, isCSSVariableToken };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","const clamp = (min, max, v) => {\n if (v > max)\n return max;\n if (v < min)\n return min;\n return v;\n};\n\nexport { clamp };\n","import { clamp } from '../../../utils/clamp.mjs';\n\nconst number = {\n test: (v) => typeof v === \"number\",\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = {\n ...number,\n transform: (v) => clamp(0, 1, v),\n};\nconst scale = {\n ...number,\n default: 1,\n};\n\nexport { alpha, number, scale };\n","/**\n * TODO: When we move from string as a source of truth to data models\n * everything in this folder should probably be referred to as models vs types\n */\n// If this number is a decimal, make it just five decimal places\n// to avoid exponents\nconst sanitize = (v) => Math.round(v * 100000) / 100000;\nconst floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\nconst colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\nconst singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\nfunction isString(v) {\n return typeof v === \"string\";\n}\nfunction isNullish(v) {\n return v == null;\n}\n\nexport { colorRegex, floatRegex, isNullish, isString, sanitize, singleColorRegex };\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 = {\n ...percent,\n parse: (v) => percent.parse(v) / 100,\n transform: (v) => percent.transform(v * 100),\n};\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { number } from '../../../value/types/numbers/index.mjs';\n\nconst int = {\n ...number,\n transform: Math.round,\n};\n\nexport { int };\n","import { scale, alpha } from '../../../value/types/numbers/index.mjs';\nimport { px, degrees, progressPercentage } from '../../../value/types/numbers/units.mjs';\nimport { int } from './type-int.mjs';\n\nconst 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,\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 backgroundPositionX: px,\n backgroundPositionY: px,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { buildTransform } from './build-transform.mjs';\nimport { isCSSVariableName } from '../../dom/utils/is-css-variable.mjs';\nimport { transformProps } 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 const { style, vars, transform, transformOrigin } = state;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n let 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 (const key in latestValues) {\n const value = latestValues[key];\n /**\n * If this is a CSS variable we don't do any further processing.\n */\n if (isCSSVariableName(key)) {\n vars[key] = value;\n continue;\n }\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueType = numberValueTypes[key];\n const valueAsType = getValueAsType(value, valueType);\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\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 !== (valueType.default || 0))\n transformIsNone = false;\n }\n else if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] = valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(state.transform, options, transformIsNone, transformTemplate);\n }\n else if (style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nexport { buildHTMLStyles };\n","const createHtmlRenderState = () => ({\n style: {},\n transform: {},\n transformOrigin: {},\n vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { 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 (const key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState, isStatic) {\n return useMemo(() => {\n const state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n return Object.assign({}, state.vars, state.style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n const styleProp = props.style || {};\n const 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 return style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState, isStatic);\n if (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-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n }\n if (props.tabIndex === undefined &&\n (props.onTap || props.onTapStart || props.whileTap)) {\n htmlProps.tabIndex = 0;\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n \"animate\",\n \"exit\",\n \"variants\",\n \"initial\",\n \"style\",\n \"values\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"custom\",\n \"inherit\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"_dragX\",\n \"_dragY\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"globalTapTarget\",\n \"ignoreStrict\",\n \"viewport\",\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 (key.startsWith(\"while\") ||\n (key.startsWith(\"drag\") && key !== \"draggable\") ||\n key.startsWith(\"layout\") ||\n key.startsWith(\"onTap\") ||\n key.startsWith(\"onPan\") ||\n key.startsWith(\"onLayout\") ||\n validMotionProps.has(key));\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n if (!isValidProp)\n return;\n // Explicitly filter our events\n shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\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 /**\n * We attempt to import this package but require won't be defined in esm environments, in that case\n * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n * in favour of explicit injection.\n */\n loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\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 const filteredProps = {};\n for (const key in props) {\n /**\n * values is considered a valid prop by Emotion, so if it's present\n * this will be rendered out to the DOM unless explicitly filtered.\n *\n * We check the type as it could be used with the `feColorMatrix`\n * element, which we support.\n */\n if (key === \"values\" && typeof props.values === \"object\")\n continue;\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\"] &&\n key.startsWith(\"onDrag\"))) {\n filteredProps[key] =\n props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","import { px } from '../../../value/types/numbers/units.mjs';\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 const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return `${pxOriginX} ${pxOriginY}`;\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst 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 = 1, offset = 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 const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n const pathLength = px.transform(length);\n const pathSpacing = px.transform(spacing);\n attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { 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, { attrX, attrY, attrScale, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, options, isSVGTag, transformTemplate) {\n buildHTMLStyles(state, latest, options, transformTemplate);\n /**\n * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n * as normal HTML tags.\n */\n if (isSVGTag) {\n if (state.style.viewBox) {\n state.attrs.viewBox = state.style.viewBox;\n }\n return;\n }\n state.attrs = state.style;\n state.style = {};\n const { attrs, style, dimensions } = state;\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 // Render attrX/attrY/attrScale as attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n if (attrScale !== undefined)\n attrs.scale = attrScale;\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","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\n","import { 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';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nfunction useSVGProps(props, visualState, _isStatic, Component) {\n const visualProps = useMemo(() => {\n const state = createSvgRenderState();\n buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, isSVGTag(Component), props.transformTemplate);\n return {\n ...state.attrs,\n style: { ...state.style },\n };\n }, [visualState]);\n if (props.style) {\n const rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = { ...rawStyles, ...visualProps.style };\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { Fragment, useMemo, 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';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction createUseRender(forwardMotionProps = false) {\n const useRender = (Component, props, ref, { latestValues }, isStatic) => {\n const useVisualProps = isSVGComponent(Component)\n ? useSVGProps\n : useHTMLProps;\n const visualProps = useVisualProps(props, latestValues, isStatic, Component);\n const filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n const elementProps = Component !== Fragment\n ? { ...filteredProps, ...visualProps, ref }\n : {};\n /**\n * If component has been handed a motion value as its child,\n * memoise its initial value and render that. Subsequent updates\n * will be handled by the onChange handler\n */\n const { children } = props;\n const renderedChildren = useMemo(() => (isMotionValue(children) ? children.get() : children), [children]);\n return createElement(Component, {\n ...elementProps,\n children: renderedChildren,\n });\n };\n return useRender;\n}\n\nexport { createUseRender };\n","function renderHTML(element, { style, vars }, styleProp, projection) {\n Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n // Loop over any CSS variables and assign those.\n for (const key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst 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 \"startOffset\",\n \"textLength\",\n \"lengthAdjust\",\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, _styleProp, projection) {\n renderHTML(element, renderState, undefined, projection);\n for (const key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n var _a;\n const { style } = props;\n const newValues = {};\n for (const key in style) {\n if (isMotionValue(style[key]) ||\n (prevProps.style &&\n isMotionValue(prevProps.style[key])) ||\n isForcedMotionValue(key, props) ||\n ((_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.liveStyle) !== undefined) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);\n for (const key in props) {\n if (isMotionValue(props[key]) ||\n isMotionValue(prevProps[key])) {\n const targetKey = transformPropOrder.indexOf(key) !== -1\n ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1)\n : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","function getValueState(visualElement) {\n const state = [{}, {}];\n visualElement === null || visualElement === void 0 ? void 0 : visualElement.values.forEach((value, key) => {\n state[0][key] = value.get();\n state[1][key] = value.getVelocity();\n });\n return state;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n const [current, velocity] = getValueState(visualElement);\n definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\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 = props.variants && props.variants[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 const [current, velocity] = getValueState(visualElement);\n definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n }\n return definition;\n}\n\nexport { resolveVariantFromProps };\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 const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","const isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (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 { 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 */\nfunction resolveMotionValue(value) {\n const unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-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';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = (instance) => onMount(props, instance, state);\n }\n return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n const context = useContext(MotionContext);\n const presenceContext = useContext(PresenceContext);\n const make = () => makeState(config, props, context, presenceContext);\n return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n const values = {};\n const motionValues = scrapeMotionValues(props, {});\n for (const key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n let { initial, animate } = props;\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n if (context &&\n isVariantNode$1 &&\n !isControllingVariants$1 &&\n props.inherit !== false) {\n if (initial === undefined)\n initial = context.initial;\n if (animate === undefined)\n animate = context.animate;\n }\n let isInitialAnimationBlocked = presenceContext\n ? presenceContext.initial === false\n : false;\n isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n const variantToSet = isInitialAnimationBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n list.forEach((definition) => {\n const resolved = resolveVariantFromProps(props, definition);\n if (!resolved)\n return;\n const { transitionEnd, transition, ...target } = resolved;\n for (const key in target) {\n let 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 const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (const key in transitionEnd)\n values[key] = transitionEnd[key];\n });\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","const noop = (any) => any;\n\nexport { noop };\n","import { noop } from '../utils/noop.mjs';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps, } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, steps };\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';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: (props, instance, { renderState, latestValues }) => {\n frame.read(() => {\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 });\n frame.render(() => {\n buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, isSVGTag(instance.tagName), props.transformTemplate);\n renderSVG(instance, renderState);\n });\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\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","function addDomEvent(target, eventName, handler, options = { passive: true }) {\n target.addEventListener(eventName, handler, options);\n return () => target.removeEventListener(eventName, handler);\n}\n\nexport { addDomEvent };\n","const isPrimaryPointer = (event) => {\n if (event.pointerType === \"mouse\") {\n return typeof event.button !== \"number\" || event.button <= 0;\n }\n else {\n /**\n * isPrimary is true for all mice buttons, whereas every touch point\n * is regarded as its own input. So subsequent concurrent touch points\n * will be false.\n *\n * Specifically match against false here as incomplete versions of\n * PointerEvents in very old browser might have it set as undefined.\n */\n return event.isPrimary !== false;\n }\n};\n\nexport { isPrimaryPointer };\n","import { isPrimaryPointer } from './utils/is-primary-pointer.mjs';\n\nfunction extractEventInfo(event, pointType = \"page\") {\n return {\n point: {\n x: event[`${pointType}X`],\n y: event[`${pointType}Y`],\n },\n };\n}\nconst addPointerInfo = (handler) => {\n return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\nexport { addPointerInfo, extractEventInfo };\n","import { addDomEvent } from './add-dom-event.mjs';\nimport { addPointerInfo } from './event-info.mjs';\n\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\nexport { addPointerEvent };\n","/**\n * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param {...functions} transformers\n * @return {function}\n */\nconst combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","function createLock(name) {\n let lock = null;\n return () => {\n const openLock = () => {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nconst globalHorizontalLock = createLock(\"dragHorizontal\");\nconst globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n let lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n const openHorizontal = globalHorizontalLock();\n const openVertical = globalVerticalLock();\n if (openHorizontal && openVertical) {\n lock = () => {\n openHorizontal();\n openVertical();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal)\n openHorizontal();\n if (openVertical)\n openVertical();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n const openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","class Feature {\n constructor(node) {\n this.isMounted = false;\n this.node = node;\n }\n update() { }\n}\n\nexport { Feature };\n","import { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction addHoverEvent(node, isActive) {\n const eventName = isActive ? \"pointerenter\" : \"pointerleave\";\n const callbackName = isActive ? \"onHoverStart\" : \"onHoverEnd\";\n const handleEvent = (event, info) => {\n if (event.pointerType === \"touch\" || isDragActive())\n return;\n const props = node.getProps();\n if (node.animationState && props.whileHover) {\n node.animationState.setActive(\"whileHover\", isActive);\n }\n const callback = props[callbackName];\n if (callback) {\n frame.postRender(() => callback(event, info));\n }\n };\n return addPointerEvent(node.current, eventName, handleEvent, {\n passive: !node.getProps()[callbackName],\n });\n}\nclass HoverGesture extends Feature {\n mount() {\n this.unmount = pipe(addHoverEvent(this.node, true), addHoverEvent(this.node, false));\n }\n unmount() { }\n}\n\nexport { HoverGesture };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n if (!child) {\n return false;\n }\n else if (parent === child) {\n return true;\n }\n else {\n return isNodeOrChild(parent, child.parentElement);\n }\n};\n\nexport { isNodeOrChild };\n","import { extractEventInfo } from '../events/event-info.mjs';\nimport { addDomEvent } from '../events/add-dom-event.mjs';\nimport { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { noop } from '../utils/noop.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction fireSyntheticPointerEvent(name, handler) {\n if (!handler)\n return;\n const syntheticPointerEvent = new PointerEvent(\"pointer\" + name);\n handler(syntheticPointerEvent, extractEventInfo(syntheticPointerEvent));\n}\nclass PressGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removeStartListeners = noop;\n this.removeEndListeners = noop;\n this.removeAccessibleListeners = noop;\n this.startPointerPress = (startEvent, startInfo) => {\n if (this.isPressing)\n return;\n this.removeEndListeners();\n const props = this.node.getProps();\n const endPointerPress = (endEvent, endInfo) => {\n if (!this.checkPressEnd())\n return;\n const { onTap, onTapCancel, globalTapTarget } = this.node.getProps();\n /**\n * We only count this as a tap gesture if the event.target is the same\n * as, or a child of, this component's element\n */\n const handler = !globalTapTarget &&\n !isNodeOrChild(this.node.current, endEvent.target)\n ? onTapCancel\n : onTap;\n if (handler) {\n frame.update(() => handler(endEvent, endInfo));\n }\n };\n const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, {\n passive: !(props.onTap || props[\"onPointerUp\"]),\n });\n const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), {\n passive: !(props.onTapCancel ||\n props[\"onPointerCancel\"]),\n });\n this.removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n this.startPress(startEvent, startInfo);\n };\n this.startAccessiblePress = () => {\n const handleKeydown = (keydownEvent) => {\n if (keydownEvent.key !== \"Enter\" || this.isPressing)\n return;\n const handleKeyup = (keyupEvent) => {\n if (keyupEvent.key !== \"Enter\" || !this.checkPressEnd())\n return;\n fireSyntheticPointerEvent(\"up\", (event, info) => {\n const { onTap } = this.node.getProps();\n if (onTap) {\n frame.postRender(() => onTap(event, info));\n }\n });\n };\n this.removeEndListeners();\n this.removeEndListeners = addDomEvent(this.node.current, \"keyup\", handleKeyup);\n fireSyntheticPointerEvent(\"down\", (event, info) => {\n this.startPress(event, info);\n });\n };\n const removeKeydownListener = addDomEvent(this.node.current, \"keydown\", handleKeydown);\n const handleBlur = () => {\n if (!this.isPressing)\n return;\n fireSyntheticPointerEvent(\"cancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo));\n };\n const removeBlurListener = addDomEvent(this.node.current, \"blur\", handleBlur);\n this.removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n };\n }\n startPress(event, info) {\n this.isPressing = true;\n const { onTapStart, whileTap } = this.node.getProps();\n /**\n * Ensure we trigger animations before firing event callback\n */\n if (whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", true);\n }\n if (onTapStart) {\n frame.postRender(() => onTapStart(event, info));\n }\n }\n checkPressEnd() {\n this.removeEndListeners();\n this.isPressing = false;\n const props = this.node.getProps();\n if (props.whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", false);\n }\n return !isDragActive();\n }\n cancelPress(event, info) {\n if (!this.checkPressEnd())\n return;\n const { onTapCancel } = this.node.getProps();\n if (onTapCancel) {\n frame.postRender(() => onTapCancel(event, info));\n }\n }\n mount() {\n const props = this.node.getProps();\n const removePointerListener = addPointerEvent(props.globalTapTarget ? window : this.node.current, \"pointerdown\", this.startPointerPress, {\n passive: !(props.onTapStart ||\n props[\"onPointerStart\"]),\n });\n const removeFocusListener = addDomEvent(this.node.current, \"focus\", this.startAccessiblePress);\n this.removeStartListeners = pipe(removePointerListener, removeFocusListener);\n }\n unmount() {\n this.removeStartListeners();\n this.removeEndListeners();\n this.removeAccessibleListeners();\n }\n}\n\nexport { PressGesture };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n const callback = observerCallbacks.get(entry.target);\n callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n const lookupRoot = root || document;\n /**\n * If we don't have an observer lookup map for this root, create one.\n */\n if (!observers.has(lookupRoot)) {\n observers.set(lookupRoot, {});\n }\n const rootObservers = observers.get(lookupRoot);\n const key = JSON.stringify(options);\n /**\n * If we don't have an observer for this combination of root and settings,\n * create one.\n */\n if (!rootObservers[key]) {\n rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n }\n return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n const rootInteresectionObserver = initIntersectionObserver(options);\n observerCallbacks.set(element, callback);\n rootInteresectionObserver.observe(element);\n return () => {\n observerCallbacks.delete(element);\n rootInteresectionObserver.unobserve(element);\n };\n}\n\nexport { observeIntersection };\n","import { Feature } from '../Feature.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nclass InViewFeature extends Feature {\n constructor() {\n super(...arguments);\n this.hasEnteredView = false;\n this.isInView = false;\n }\n startObserver() {\n this.unmount();\n const { viewport = {} } = this.node.getProps();\n const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n const options = {\n root: root ? root.current : undefined,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const onIntersectionUpdate = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (this.isInView === isIntersecting)\n return;\n this.isInView = isIntersecting;\n /**\n * Handle hasEnteredView. If this is only meant to run once, and\n * element isn't visible, early return. Otherwise set hasEnteredView to true.\n */\n if (once && !isIntersecting && this.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n this.hasEnteredView = true;\n }\n if (this.node.animationState) {\n this.node.animationState.setActive(\"whileInView\", isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\n */\n const { onViewportEnter, onViewportLeave } = this.node.getProps();\n const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n callback && callback(entry);\n };\n return observeIntersection(this.node.current, options, onIntersectionUpdate);\n }\n mount() {\n this.startObserver();\n }\n update() {\n if (typeof IntersectionObserver === \"undefined\")\n return;\n const { props, prevProps } = this.node;\n const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n if (hasOptionsChanged) {\n this.startObserver();\n }\n }\n unmount() { }\n}\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n return (name) => viewport[name] !== prevViewport[name];\n}\n\nexport { InViewFeature };\n","import { HoverGesture } from '../../gestures/hover.mjs';\nimport { FocusGesture } from '../../gestures/focus.mjs';\nimport { PressGesture } from '../../gestures/press.mjs';\nimport { InViewFeature } from './viewport/index.mjs';\n\nconst gestureAnimations = {\n inView: {\n Feature: InViewFeature,\n },\n tap: {\n Feature: PressGesture,\n },\n focus: {\n Feature: FocusGesture,\n },\n hover: {\n Feature: HoverGesture,\n },\n};\n\nexport { gestureAnimations };\n","import { addDomEvent } from '../events/add-dom-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\n\nclass FocusGesture extends Feature {\n constructor() {\n super(...arguments);\n this.isActive = false;\n }\n onFocus() {\n let isFocusVisible = false;\n /**\n * If this element doesn't match focus-visible then don't\n * apply whileHover. But, if matches throws that focus-visible\n * is not a valid selector then in that browser outline styles will be applied\n * to the element by default and we want to match that behaviour with whileFocus.\n */\n try {\n isFocusVisible = this.node.current.matches(\":focus-visible\");\n }\n catch (e) {\n isFocusVisible = true;\n }\n if (!isFocusVisible || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", true);\n this.isActive = true;\n }\n onBlur() {\n if (!this.isActive || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", false);\n this.isActive = false;\n }\n mount() {\n this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n }\n unmount() { }\n}\n\nexport { FocusGesture };\n","function shallowCompare(next, prev) {\n if (!Array.isArray(prev))\n return false;\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { shallowCompare };\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\nfunction resolveVariant(visualElement, definition, custom) {\n const props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, visualElement);\n}\n\nexport { resolveVariant };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\n\nconst underDampedSpring = {\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n};\nconst criticallyDampedSpring = (target) => ({\n type: \"spring\",\n stiffness: 550,\n damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst keyframesTransition = {\n type: \"keyframes\",\n duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n type: \"keyframes\",\n ease: [0.25, 0.1, 0.35, 1],\n duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n if (keyframes.length > 2) {\n return keyframesTransition;\n }\n else if (transformProps.has(valueKey)) {\n return valueKey.startsWith(\"scale\")\n ? criticallyDampedSpring(keyframes[1])\n : underDampedSpring;\n }\n return ease;\n};\n\nexport { getDefaultTransition };\n","/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n return !!Object.keys(transition).length;\n}\nfunction getValueTransition(transition, key) {\n return (transition[key] ||\n transition[\"default\"] ||\n transition);\n}\n\nexport { getValueTransition, isTransitionDefined };\n","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\n","const isNotNull = (value) => value !== null;\nfunction getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }, finalKeyframe) {\n const resolvedKeyframes = keyframes.filter(isNotNull);\n const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1\n ? 0\n : resolvedKeyframes.length - 1;\n return !index || finalKeyframe === undefined\n ? resolvedKeyframes[index]\n : finalKeyframe;\n}\n\nexport { getFinalKeyframe };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { frameData } from './frame.mjs';\n\nlet now;\nfunction clearTime() {\n now = undefined;\n}\n/**\n * An eventloop-synchronous alternative to performance.now().\n *\n * Ensures that time measurements remain consistent within a synchronous context.\n * Usually calling performance.now() twice within the same synchronous context\n * will return different values which isn't useful for animations when we're usually\n * trying to sync animations to the same frame.\n */\nconst time = {\n now: () => {\n if (now === undefined) {\n time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming\n ? frameData.timestamp\n : performance.now());\n }\n return now;\n },\n set: (newTime) => {\n now = newTime;\n queueMicrotask(clearTime);\n },\n};\n\nexport { time };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\nexport { isZeroValueString };\n","import { noop } from './noop.mjs';\n\nlet warning = noop;\nlet invariant = noop;\nif (process.env.NODE_ENV !== \"production\") {\n warning = (check, message) => {\n if (!check && typeof console !== \"undefined\") {\n console.warn(message);\n }\n };\n invariant = (check, message) => {\n if (!check) {\n throw new Error(message);\n }\n };\n}\n\nexport { invariant, warning };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\nexport { isNumericalString };\n","import { invariant } from '../../../utils/errors.mjs';\nimport { isNumericalString } from '../../../utils/is-numerical-string.mjs';\nimport { isCSSVariableToken } from './is-css-variable.mjs';\n\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst splitCSSVariableRegex = \n// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n/^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u;\nfunction parseCSSVariable(current) {\n const match = splitCSSVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token1, token2, fallback] = match;\n return [`--${token1 !== null && token1 !== void 0 ? token1 : token2}`, fallback];\n}\nconst maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n const [token, fallback] = parseCSSVariable(current);\n // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n const resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n const trimmed = resolved.trim();\n return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n }\n return isCSSVariableToken(fallback)\n ? getVariableValue(fallback, element, depth + 1)\n : fallback;\n}\n\nexport { getVariableValue, parseCSSVariable };\n","import { transformPropOrder } from '../../html/utils/transform.mjs';\nimport { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"x\",\n \"y\",\n \"translateX\",\n \"translateY\",\n]);\nconst isNumOrPxType = (v) => v === number || v === px;\nconst getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nconst getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {\n if (transform === \"none\" || !transform)\n return 0;\n const matrix3d = transform.match(/^matrix3d\\((.+)\\)$/u);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/u);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n};\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n const removedTransforms = [];\n nonTranslationalTransformKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n return removedTransforms;\n}\nconst positionalValues = {\n // Dimensions\n width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n top: (_bbox, { top }) => parseFloat(top),\n left: (_bbox, { left }) => parseFloat(left),\n bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n // Transform\n x: getTranslateFromMatrix(4, 13),\n y: getTranslateFromMatrix(5, 14),\n};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\nexport { isNumOrPxType, positionalKeys, positionalValues, removeNonTranslationalTransform };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px, percent, degrees, vw, vh } from '../../../value/types/numbers/units.mjs';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\nexport { auto };\n","import { removeNonTranslationalTransform } from '../dom/utils/unit-conversion.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst toResolve = new Set();\nlet isScheduled = false;\nlet anyNeedsMeasurement = false;\nfunction measureAllKeyframes() {\n if (anyNeedsMeasurement) {\n const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n const transformsToRestore = new Map();\n /**\n * Write pass\n * If we're measuring elements we want to remove bounding box-changing transforms.\n */\n elementsToMeasure.forEach((element) => {\n const removedTransforms = removeNonTranslationalTransform(element);\n if (!removedTransforms.length)\n return;\n transformsToRestore.set(element, removedTransforms);\n element.render();\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n // Write\n elementsToMeasure.forEach((element) => {\n element.render();\n const restore = transformsToRestore.get(element);\n if (restore) {\n restore.forEach(([key, value]) => {\n var _a;\n (_a = element.getValue(key)) === null || _a === void 0 ? void 0 : _a.set(value);\n });\n }\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n // Write\n resolversToMeasure.forEach((resolver) => {\n if (resolver.suspendedScrollY !== undefined) {\n window.scrollTo(0, resolver.suspendedScrollY);\n }\n });\n }\n anyNeedsMeasurement = false;\n isScheduled = false;\n toResolve.forEach((resolver) => resolver.complete());\n toResolve.clear();\n}\nfunction readAllKeyframes() {\n toResolve.forEach((resolver) => {\n resolver.readKeyframes();\n if (resolver.needsMeasurement) {\n anyNeedsMeasurement = true;\n }\n });\n}\nfunction flushKeyframeResolvers() {\n readAllKeyframes();\n measureAllKeyframes();\n}\nclass KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) {\n /**\n * Track whether this resolver has completed. Once complete, it never\n * needs to attempt keyframe resolution again.\n */\n this.isComplete = false;\n /**\n * Track whether this resolver is async. If it is, it'll be added to the\n * resolver queue and flushed in the next frame. Resolvers that aren't going\n * to trigger read/write thrashing don't need to be async.\n */\n this.isAsync = false;\n /**\n * Track whether this resolver needs to perform a measurement\n * to resolve its keyframes.\n */\n this.needsMeasurement = false;\n /**\n * Track whether this resolver is currently scheduled to resolve\n * to allow it to be cancelled and resumed externally.\n */\n this.isScheduled = false;\n this.unresolvedKeyframes = [...unresolvedKeyframes];\n this.onComplete = onComplete;\n this.name = name;\n this.motionValue = motionValue;\n this.element = element;\n this.isAsync = isAsync;\n }\n scheduleResolve() {\n this.isScheduled = true;\n if (this.isAsync) {\n toResolve.add(this);\n if (!isScheduled) {\n isScheduled = true;\n frame.read(readAllKeyframes);\n frame.resolveKeyframes(measureAllKeyframes);\n }\n }\n else {\n this.readKeyframes();\n this.complete();\n }\n }\n readKeyframes() {\n const { unresolvedKeyframes, name, element, motionValue } = this;\n /**\n * If a keyframe is null, we hydrate it either by reading it from\n * the instance, or propagating from previous keyframes.\n */\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n if (unresolvedKeyframes[i] === null) {\n /**\n * If the first keyframe is null, we need to find its value by sampling the element\n */\n if (i === 0) {\n const currentValue = motionValue === null || motionValue === void 0 ? void 0 : motionValue.get();\n const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n if (currentValue !== undefined) {\n unresolvedKeyframes[0] = currentValue;\n }\n else if (element && name) {\n const valueAsRead = element.readValue(name, finalKeyframe);\n if (valueAsRead !== undefined && valueAsRead !== null) {\n unresolvedKeyframes[0] = valueAsRead;\n }\n }\n if (unresolvedKeyframes[0] === undefined) {\n unresolvedKeyframes[0] = finalKeyframe;\n }\n if (motionValue && currentValue === undefined) {\n motionValue.set(unresolvedKeyframes[0]);\n }\n }\n else {\n unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];\n }\n }\n }\n }\n setFinalKeyframe() { }\n measureInitialState() { }\n renderEndStyles() { }\n measureEndState() { }\n complete() {\n this.isComplete = true;\n this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);\n toResolve.delete(this);\n }\n cancel() {\n if (!this.isComplete) {\n this.isScheduled = false;\n toResolve.delete(this);\n }\n }\n resume() {\n if (!this.isComplete)\n this.scheduleResolve();\n }\n}\n\nexport { KeyframeResolver, flushKeyframeResolvers };\n","import { isString, singleColorRegex, isNullish, floatRegex } from '../utils.mjs';\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp &&\n !isNullish(v) &&\n Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { clamp } from '../../../utils/clamp.mjs';\nimport { alpha, number } from '../numbers/index.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n ...number,\n transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n test: isColorString(\"rgb\", \"red\"),\n parse: splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\n if (v.length > 5) {\n r = v.substring(1, 3);\n g = v.substring(3, 5);\n b = v.substring(5, 7);\n a = v.substring(7, 9);\n // Or we have 3 characters, ie #F00\n }\n else {\n r = v.substring(1, 2);\n g = v.substring(2, 3);\n b = v.substring(3, 4);\n a = v.substring(4, 5);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString(\"hsl\", \"hue\"),\n parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nexport { hsla };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty(\"red\")\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { color } from '../color/index.mjs';\nimport { isString, floatRegex, colorRegex, sanitize } from '../utils.mjs';\n\nfunction test(v) {\n var _a, _b;\n return (isNaN(v) &&\n isString(v) &&\n (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) +\n (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) >\n 0);\n}\nconst NUMBER_TOKEN = \"number\";\nconst COLOR_TOKEN = \"color\";\nconst VAR_TOKEN = \"var\";\nconst VAR_FUNCTION_TOKEN = \"var(\";\nconst SPLIT_TOKEN = \"${}\";\n// this regex consists of the `singleCssVariableRegex|rgbHSLValueRegex|digitRegex`\nconst complexRegex = /var\\s*\\(\\s*--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)|#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\)|-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/giu;\nfunction analyseComplexValue(value) {\n const originalValue = value.toString();\n const values = [];\n const indexes = {\n color: [],\n number: [],\n var: [],\n };\n const types = [];\n let i = 0;\n const tokenised = originalValue.replace(complexRegex, (parsedValue) => {\n if (color.test(parsedValue)) {\n indexes.color.push(i);\n types.push(COLOR_TOKEN);\n values.push(color.parse(parsedValue));\n }\n else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {\n indexes.var.push(i);\n types.push(VAR_TOKEN);\n values.push(parsedValue);\n }\n else {\n indexes.number.push(i);\n types.push(NUMBER_TOKEN);\n values.push(parseFloat(parsedValue));\n }\n ++i;\n return SPLIT_TOKEN;\n });\n const split = tokenised.split(SPLIT_TOKEN);\n return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n const { split, types } = analyseComplexValue(source);\n const numSections = split.length;\n return (v) => {\n let output = \"\";\n for (let i = 0; i < numSections; i++) {\n output += split[i];\n if (v[i] !== undefined) {\n const type = types[i];\n if (type === NUMBER_TOKEN) {\n output += sanitize(v[i]);\n }\n else if (type === COLOR_TOKEN) {\n output += color.transform(v[i]);\n }\n else {\n output += v[i];\n }\n }\n }\n return output;\n };\n}\nconst convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n const parsed = parseComplexValue(v);\n const transformer = createTransformer(v);\n return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = {\n test,\n parse: parseComplexValue,\n createTransformer,\n getAnimatableNone,\n};\n\nexport { analyseComplexValue, complex };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils.mjs';\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n const [name, value] = v.slice(0, -1).split(\"(\");\n if (name === \"drop-shadow\")\n return v;\n const [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, \"\");\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /\\b([a-z-]*)\\(.*?\\)/gu;\nconst filter = {\n ...complex,\n getAnimatableNone: (v) => {\n const functions = v.match(functionRegex);\n return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n },\n};\n\nexport { filter };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n ...numberValueTypes,\n // Color props\n color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n filter,\n WebkitFilter: filter,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { complex } from '../../../value/types/complex/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n let defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return defaultValueType.getAnimatableNone\n ? defaultValueType.getAnimatableNone(value)\n : undefined;\n}\n\nexport { getAnimatableNone };\n","import { analyseComplexValue } from '../../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../../dom/value-types/animatable-none.mjs';\n\n/**\n * If we encounter keyframes like \"none\" or \"0\" and we also have keyframes like\n * \"#fff\" or \"200px 200px\" we want to find a keyframe to serve as a template for\n * the \"none\" keyframes. In this case \"#fff\" or \"200px 200px\" - then these get turned into\n * zero equivalents, i.e. \"#fff0\" or \"0px 0px\".\n */\nconst invalidTemplates = new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n let i = 0;\n let animatableTemplate = undefined;\n while (i < unresolvedKeyframes.length && !animatableTemplate) {\n const keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\" &&\n !invalidTemplates.has(keyframe) &&\n analyseComplexValue(keyframe).values.length) {\n animatableTemplate = unresolvedKeyframes[i];\n }\n i++;\n }\n if (animatableTemplate && name) {\n for (const noneIndex of noneKeyframeIndexes) {\n unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);\n }\n }\n}\n\nexport { makeNoneKeyframesAnimatable };\n","import { isNone } from '../../animation/utils/is-none.mjs';\nimport { getVariableValue } from './utils/css-variables-conversion.mjs';\nimport { isCSSVariableToken } from './utils/is-css-variable.mjs';\nimport { positionalKeys, isNumOrPxType, positionalValues } from './utils/unit-conversion.mjs';\nimport { findDimensionValueType } from './value-types/dimensions.mjs';\nimport { KeyframeResolver } from '../utils/KeyframesResolver.mjs';\nimport { makeNoneKeyframesAnimatable } from '../html/utils/make-none-animatable.mjs';\n\nclass DOMKeyframesResolver extends KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue) {\n super(unresolvedKeyframes, onComplete, name, motionValue, motionValue === null || motionValue === void 0 ? void 0 : motionValue.owner, true);\n }\n readKeyframes() {\n const { unresolvedKeyframes, element, name } = this;\n if (!element.current)\n return;\n super.readKeyframes();\n /**\n * If any keyframe is a CSS variable, we need to find its value by sampling the element\n */\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n let keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\") {\n keyframe = keyframe.trim();\n if (isCSSVariableToken(keyframe)) {\n const resolved = getVariableValue(keyframe, element.current);\n if (resolved !== undefined) {\n unresolvedKeyframes[i] = resolved;\n }\n if (i === unresolvedKeyframes.length - 1) {\n this.finalKeyframe = keyframe;\n }\n }\n }\n }\n /**\n * Resolve \"none\" values. We do this potentially twice - once before and once after measuring keyframes.\n * This could be seen as inefficient but it's a trade-off to avoid measurements in more situations, which\n * have a far bigger performance impact.\n */\n this.resolveNoneKeyframes();\n /**\n * Check to see if unit type has changed. If so schedule jobs that will\n * temporarily set styles to the destination keyframes.\n * Skip if we have more than two keyframes or this isn't a positional value.\n * TODO: We can throw if there are multiple keyframes and the value type changes.\n */\n if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n return;\n }\n const [origin, target] = unresolvedKeyframes;\n const originType = findDimensionValueType(origin);\n const targetType = findDimensionValueType(target);\n /**\n * Either we don't recognise these value types or we can animate between them.\n */\n if (originType === targetType)\n return;\n /**\n * If both values are numbers or pixels, we can animate between them by\n * converting them to numbers.\n */\n if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n const value = unresolvedKeyframes[i];\n if (typeof value === \"string\") {\n unresolvedKeyframes[i] = parseFloat(value);\n }\n }\n }\n else {\n /**\n * Else, the only way to resolve this is by measuring the element.\n */\n this.needsMeasurement = true;\n }\n }\n resolveNoneKeyframes() {\n const { unresolvedKeyframes, name } = this;\n const noneKeyframeIndexes = [];\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n if (isNone(unresolvedKeyframes[i])) {\n noneKeyframeIndexes.push(i);\n }\n }\n if (noneKeyframeIndexes.length) {\n makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n }\n }\n measureInitialState() {\n const { element, unresolvedKeyframes, name } = this;\n if (!element.current)\n return;\n if (name === \"height\") {\n this.suspendedScrollY = window.pageYOffset;\n }\n this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n unresolvedKeyframes[0] = this.measuredOrigin;\n // Set final key frame to measure after next render\n const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n if (measureKeyframe !== undefined) {\n element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n }\n }\n measureEndState() {\n var _a;\n const { element, name, unresolvedKeyframes } = this;\n if (!element.current)\n return;\n const value = element.getValue(name);\n value && value.jump(this.measuredOrigin, false);\n const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n if (finalKeyframe !== null && this.finalKeyframe === undefined) {\n this.finalKeyframe = finalKeyframe;\n }\n // If we removed transform values, reapply them before the next render\n if ((_a = this.removedTransforms) === null || _a === void 0 ? void 0 : _a.length) {\n this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n element\n .getValue(unsetTransformName)\n .set(unsetTransformValue);\n });\n }\n this.resolveNoneKeyframes();\n }\n}\n\nexport { DOMKeyframesResolver };\n","import { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\n\nfunction isNone(value) {\n if (typeof value === \"number\") {\n return value === 0;\n }\n else if (value !== null) {\n return value === \"none\" || value === \"0\" || isZeroValueString(value);\n }\n else {\n return true;\n }\n}\n\nexport { isNone };\n","function memo(callback) {\n let result;\n return () => {\n if (result === undefined)\n result = callback();\n return result;\n };\n}\n\nexport { memo };\n","import { complex } from '../../value/types/complex/index.mjs';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (value, name) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (name === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nexport { isAnimatable };\n","import { flushKeyframeResolvers } from '../../render/utils/KeyframesResolver.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { canAnimate } from './utils/can-animate.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\nclass BaseAnimation {\n constructor({ autoplay = true, delay = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", ...options }) {\n // Track whether the animation has been stopped. Stopped animations won't restart.\n this.isStopped = false;\n this.hasAttemptedResolve = false;\n this.options = {\n autoplay,\n delay,\n type,\n repeat,\n repeatDelay,\n repeatType,\n ...options,\n };\n this.updateFinishedPromise();\n }\n /**\n * A getter for resolved data. If keyframes are not yet resolved, accessing\n * this.resolved will synchronously flush all pending keyframe resolvers.\n * This is a deoptimisation, but at its worst still batches read/writes.\n */\n get resolved() {\n if (!this._resolved && !this.hasAttemptedResolve) {\n flushKeyframeResolvers();\n }\n return this._resolved;\n }\n /**\n * A method to be called when the keyframes resolver completes. This method\n * will check if its possible to run the animation and, if not, skip it.\n * Otherwise, it will call initPlayback on the implementing class.\n */\n onKeyframesResolved(keyframes, finalKeyframe) {\n this.hasAttemptedResolve = true;\n const { name, type, velocity, delay, onComplete, onUpdate, isGenerator, } = this.options;\n /**\n * If we can't animate this value with the resolved keyframes\n * then we should complete it immediately.\n */\n if (!isGenerator && !canAnimate(keyframes, name, type, velocity)) {\n // Finish immediately\n if (instantAnimationState.current || !delay) {\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n onComplete === null || onComplete === void 0 ? void 0 : onComplete();\n this.resolveFinishedPromise();\n return;\n }\n // Finish after a delay\n else {\n this.options.duration = 0;\n }\n }\n const resolvedAnimation = this.initPlayback(keyframes, finalKeyframe);\n if (resolvedAnimation === false)\n return;\n this._resolved = {\n keyframes,\n finalKeyframe,\n ...resolvedAnimation,\n };\n this.onPostResolved();\n }\n onPostResolved() { }\n /**\n * Allows the returned animation to be awaited or promise-chained. Currently\n * resolves when the animation finishes at all but in a future update could/should\n * reject if its cancels.\n */\n then(resolve, reject) {\n return this.currentFinishedPromise.then(resolve, reject);\n }\n updateFinishedPromise() {\n this.currentFinishedPromise = new Promise((resolve) => {\n this.resolveFinishedPromise = resolve;\n });\n }\n}\n\nexport { BaseAnimation };\n","import { warning } from '../../../utils/errors.mjs';\nimport { isAnimatable } from '../../utils/is-animatable.mjs';\n\nfunction hasKeyframesChanged(keyframes) {\n const current = keyframes[0];\n if (keyframes.length === 1)\n return true;\n for (let i = 0; i < keyframes.length; i++) {\n if (keyframes[i] !== current)\n return true;\n }\n}\nfunction canAnimate(keyframes, name, type, velocity) {\n /**\n * Check if we're able to animate between the start and end keyframes,\n * and throw a warning if we're attempting to animate between one that's\n * animatable and another that isn't.\n */\n const originKeyframe = keyframes[0];\n if (originKeyframe === null)\n return false;\n /**\n * These aren't traditionally animatable but we do support them.\n * In future we could look into making this more generic or replacing\n * this function with mix() === mixImmediate\n */\n if (name === \"display\" || name === \"visibility\")\n return true;\n const targetKeyframe = keyframes[keyframes.length - 1];\n const isOriginAnimatable = isAnimatable(originKeyframe, name);\n const isTargetAnimatable = isAnimatable(targetKeyframe, name);\n warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n // Always skip if any of these are true\n if (!isOriginAnimatable || !isTargetAnimatable) {\n return false;\n }\n return hasKeyframesChanged(keyframes) || (type === \"spring\" && velocity);\n}\n\nexport { canAnimate };\n","/*\n Convert velocity into velocity per second\n\n @param [number]: Unit per frame\n @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n const prevT = Math.max(t - velocitySampleDuration, 0);\n return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","import { warning } from '../../../utils/errors.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n let envelope;\n let derivative;\n warning(duration <= secondsToMilliseconds(maxDuration), \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = secondsToMilliseconds(duration);\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { findSpring, calcAngularFreq } from './find.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = {\n velocity: 0.0,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n const derived = findSpring(options);\n springOptions = {\n ...springOptions,\n ...derived,\n mass: 1.0,\n };\n springOptions.isResolvedFromDuration = true;\n }\n return springOptions;\n}\nfunction spring({ keyframes, restDelta, restSpeed, ...options }) {\n const origin = keyframes[0];\n const target = keyframes[keyframes.length - 1];\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = { done: false, value: origin };\n const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration, } = getSpringOptions({\n ...options,\n velocity: -millisecondsToSeconds(options.velocity || 0),\n });\n const initialVelocity = velocity || 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const initialDelta = target - origin;\n const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n /**\n * If we're working on a granular scale, use smaller defaults for determining\n * when the spring is finished.\n *\n * These defaults have been selected emprically based on what strikes a good\n * ratio between feeling good and finishing as soon as changes are imperceptible.\n */\n const isGranularScale = Math.abs(initialDelta) < 5;\n restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n restDelta || (restDelta = isGranularScale ? 0.005 : 0.5);\n let resolveSpring;\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n // Underdamped spring\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (target -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n // Critically damped spring\n resolveSpring = (t) => target -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) * t);\n }\n else {\n // Overdamped spring\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n // When performing sinh or cosh values can hit Infinity so we cap them here\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (target -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n }\n return {\n calculatedDuration: isResolvedFromDuration ? duration || null : null,\n next: (t) => {\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n let currentVelocity = initialVelocity;\n if (t !== 0) {\n /**\n * We only need to calculate velocity for under-damped springs\n * as over- and critically-damped springs can't overshoot, so\n * checking only for displacement is enough.\n */\n if (dampingRatio < 1) {\n currentVelocity = calcGeneratorVelocity(resolveSpring, t, current);\n }\n else {\n currentVelocity = 0;\n }\n }\n const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? target : current;\n return state;\n },\n };\n}\n\nexport { spring };\n","import { spring } from './spring/index.mjs';\nimport { calcGeneratorVelocity } from './utils/velocity.mjs';\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n const origin = keyframes[0];\n const state = {\n done: false,\n value: origin,\n };\n const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n const nearestBoundary = (v) => {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n };\n let amplitude = power * velocity;\n const ideal = origin + amplitude;\n const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n /**\n * If the target has changed we need to re-calculate the amplitude, otherwise\n * the animation will start from the wrong position.\n */\n if (target !== ideal)\n amplitude = target - origin;\n const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n const calcLatest = (t) => target + calcDelta(t);\n const applyFriction = (t) => {\n const delta = calcDelta(t);\n const latest = calcLatest(t);\n state.done = Math.abs(delta) <= restDelta;\n state.value = state.done ? target : latest;\n };\n /**\n * Ideally this would resolve for t in a stateless way, we could\n * do that by always precalculating the animation but as we know\n * this will be done anyway we can assume that spring will\n * be discovered during that.\n */\n let timeReachedBoundary;\n let spring$1;\n const checkCatchBoundary = (t) => {\n if (!isOutOfBounds(state.value))\n return;\n timeReachedBoundary = t;\n spring$1 = spring({\n keyframes: [state.value, nearestBoundary(state.value)],\n velocity: calcGeneratorVelocity(calcLatest, t, state.value), // TODO: This should be passing * 1000\n damping: bounceDamping,\n stiffness: bounceStiffness,\n restDelta,\n restSpeed,\n });\n };\n checkCatchBoundary(0);\n return {\n calculatedDuration: null,\n next: (t) => {\n /**\n * We need to resolve the friction to figure out if we need a\n * spring but we don't want to do this twice per frame. So here\n * we flag if we updated for this frame and later if we did\n * we can skip doing it again.\n */\n let hasUpdatedFrame = false;\n if (!spring$1 && timeReachedBoundary === undefined) {\n hasUpdatedFrame = true;\n applyFriction(t);\n checkCatchBoundary(t);\n }\n /**\n * If we have a spring and the provided t is beyond the moment the friction\n * animation crossed the min/max boundary, use the spring.\n */\n if (timeReachedBoundary !== undefined && t >= timeReachedBoundary) {\n return spring$1.next(t - timeReachedBoundary);\n }\n else {\n !hasUpdatedFrame && applyFriction(t);\n return state;\n }\n },\n };\n}\n\nexport { inertia };\n","import { noop } from '../utils/noop.mjs';\n\n/*\n Bezier function generator\n This has been modified from Gaëtan Renaudeau's BezierEasing\n https://github.com/gre/bezier-easing/blob/master/src/index.js\n https://github.com/gre/bezier-easing/blob/master/LICENSE\n \n I've removed the newtonRaphsonIterate algo because in benchmarking it\n wasn't noticiably faster than binarySubdivision, indeed removing it\n usually improved times, depending on the curve.\n I also removed the lookup table, as for the added bundle size and loop we're\n only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n to 12 to compensate and this still tended to be faster for no perceivable\n loss in accuracy.\n Usage\n const easeOut = cubicBezier(.17,.67,.83,.67);\n const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { cubicBezier } from './cubic-bezier.mjs';\n\nconst easeIn = cubicBezier(0.42, 0, 1, 1);\nconst easeOut = cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = cubicBezier(0.42, 0, 0.58, 1);\n\nexport { easeIn, easeInOut, easeOut };\n","// Accepts an easing function and returns a new one that outputs mirrored values for\n// the second half of the animation. Turns easeIn into easeInOut.\nconst mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\nexport { mirrorEasing };\n","// Accepts an easing function and returns a new one that outputs reversed values.\n// Turns easeIn into easeOut.\nconst reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\nexport { reverseEasing };\n","import { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst circIn = (p) => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circIn);\n\nexport { circIn, circInOut, circOut };\n","import { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = reverseEasing(backOut);\nconst backInOut = mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n","import { invariant } from '../../utils/errors.mjs';\nimport { cubicBezier } from '../cubic-bezier.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { easeIn, easeInOut, easeOut } from '../ease.mjs';\nimport { circIn, circInOut, circOut } from '../circ.mjs';\nimport { backIn, backInOut, backOut } from '../back.mjs';\nimport { anticipate } from '../anticipate.mjs';\n\nconst easingLookup = {\n linear: noop,\n easeIn,\n easeInOut,\n easeOut,\n circIn,\n circInOut,\n circOut,\n backIn,\n backInOut,\n backOut,\n anticipate,\n};\nconst easingDefinitionToFunction = (definition) => {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n const [x1, y1, x2, y2] = definition;\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);\n return easingLookup[definition];\n }\n return definition;\n};\n\nexport { easingDefinitionToFunction };\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n","/*\n Progress within given range\n\n Given a lower limit and an upper limit, we return the progress\n (expressed as a number 0-1) represented by the given value, and\n limit that progress to within 0-1.\n\n @param [number]: Lower limit\n @param [number]: Upper limit\n @param [number]: Value to find progress within given range\n @return [number]: Progress of value within range as expressed 0-1\n*/\nconst progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","/*\n Value in range from progress\n\n Given a lower limit and an upper limit, we return the value within\n that range as expressed by progress (usually a number from 0 to 1)\n\n So progress = 0.5 would change\n\n from -------- to\n\n to\n\n from ---- to\n\n E.g. from = 10, to = 20, progress = 0.5 => 15\n\n @param [number]: Lower limit of range\n @param [number]: Upper limit of range\n @param [number]: The progress between lower and upper limits expressed 0-1\n @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mixNumber = (from, to, progress) => {\n return from + (to - from) * progress;\n};\n\nexport { mixNumber };\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","function mixImmediate(a, b) {\n return (p) => (p > 0 ? b : a);\n}\n\nexport { mixImmediate };\n","import { mixNumber } from './number.mjs';\nimport { warning } from '../errors.mjs';\nimport { hslaToRgba } from '../hsla-to-rgba.mjs';\nimport { hex } from '../../value/types/color/hex.mjs';\nimport { rgba } from '../../value/types/color/rgba.mjs';\nimport { hsla } from '../../value/types/color/hsla.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n const expo = v * (to * to - fromExpo) + fromExpo;\n return expo < 0 ? 0 : Math.sqrt(expo);\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n const type = getColorType(color);\n warning(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n if (!Boolean(type))\n return false;\n let model = type.parse(color);\n if (type === hsla) {\n // TODO Remove this cast - needed since Framer Motion's stricter typing\n model = hslaToRgba(model);\n }\n return model;\n}\nconst mixColor = (from, to) => {\n const fromRGBA = asRGBA(from);\n const toRGBA = asRGBA(to);\n if (!fromRGBA || !toRGBA) {\n return mixImmediate(from, to);\n }\n const blended = { ...fromRGBA };\n return (v) => {\n blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n return rgba.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","const invisibleValues = new Set([\"none\", \"hidden\"]);\n/**\n * Returns a function that, when provided a progress value between 0 and 1,\n * will return the \"none\" or \"hidden\" string only when the progress is that of\n * the origin or target.\n */\nfunction mixVisibility(origin, target) {\n if (invisibleValues.has(origin)) {\n return (p) => (p <= 0 ? origin : target);\n }\n else {\n return (p) => (p >= 1 ? target : origin);\n }\n}\n\nexport { invisibleValues, mixVisibility };\n","import { mixNumber as mixNumber$1 } from './number.mjs';\nimport { mixColor } from './color.mjs';\nimport { pipe } from '../pipe.mjs';\nimport { warning } from '../errors.mjs';\nimport { color } from '../../value/types/color/index.mjs';\nimport { complex, analyseComplexValue } from '../../value/types/complex/index.mjs';\nimport { isCSSVariableToken } from '../../render/dom/utils/is-css-variable.mjs';\nimport { invisibleValues, mixVisibility } from './visibility.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\nfunction mixNumber(a, b) {\n return (p) => mixNumber$1(a, b, p);\n}\nfunction getMixer(a) {\n if (typeof a === \"number\") {\n return mixNumber;\n }\n else if (typeof a === \"string\") {\n return isCSSVariableToken(a)\n ? mixImmediate\n : color.test(a)\n ? mixColor\n : mixComplex;\n }\n else if (Array.isArray(a)) {\n return mixArray;\n }\n else if (typeof a === \"object\") {\n return color.test(a) ? mixColor : mixObject;\n }\n return mixImmediate;\n}\nfunction mixArray(a, b) {\n const output = [...a];\n const numValues = output.length;\n const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n return (p) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](p);\n }\n return output;\n };\n}\nfunction mixObject(a, b) {\n const output = { ...a, ...b };\n const blendValue = {};\n for (const key in output) {\n if (a[key] !== undefined && b[key] !== undefined) {\n blendValue[key] = getMixer(a[key])(a[key], b[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n}\nfunction matchOrder(origin, target) {\n var _a;\n const orderedOrigin = [];\n const pointers = { color: 0, var: 0, number: 0 };\n for (let i = 0; i < target.values.length; i++) {\n const type = target.types[i];\n const originIndex = origin.indexes[type][pointers[type]];\n const originValue = (_a = origin.values[originIndex]) !== null && _a !== void 0 ? _a : 0;\n orderedOrigin[i] = originValue;\n pointers[type]++;\n }\n return orderedOrigin;\n}\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyseComplexValue(origin);\n const targetStats = analyseComplexValue(target);\n const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length &&\n originStats.indexes.color.length === targetStats.indexes.color.length &&\n originStats.indexes.number.length >= targetStats.indexes.number.length;\n if (canInterpolate) {\n if ((invisibleValues.has(origin) &&\n !targetStats.values.length) ||\n (invisibleValues.has(target) &&\n !originStats.values.length)) {\n return mixVisibility(origin, target);\n }\n return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);\n }\n else {\n warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n return mixImmediate(origin, target);\n }\n};\n\nexport { getMixer, mixArray, mixComplex, mixObject };\n","import { getMixer } from './complex.mjs';\nimport { mixNumber } from './number.mjs';\n\nfunction mix(from, to, p) {\n if (typeof from === \"number\" &&\n typeof to === \"number\" &&\n typeof p === \"number\") {\n return mixNumber(from, to, p);\n }\n const mixer = getMixer(from);\n return mixer(from, to);\n}\n\nexport { mix };\n","import { invariant } from './errors.mjs';\nimport { clamp } from './clamp.mjs';\nimport { pipe } from './pipe.mjs';\nimport { progress } from './progress.mjs';\nimport { noop } from './noop.mjs';\nimport { mix } from './mix/index.mjs';\n\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || mix;\n const numMixers = output.length - 1;\n for (let i = 0; i < numMixers; i++) {\n let mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n const easingFunction = Array.isArray(ease) ? ease[i] || noop : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\n/**\n * Create a function that maps from a numerical input array to a generic output array.\n *\n * Accepts:\n * - Numbers\n * - Colors (hex, hsl, hsla, rgb, rgba)\n * - Complex (combinations of one or more numbers or strings)\n *\n * ```jsx\n * const mixColor = interpolate([0, 1], ['#fff', '#000'])\n *\n * mixColor(0.5) // 'rgba(128, 128, 128, 1)'\n * ```\n *\n * TODO Revist this approach once we've moved to data models for values,\n * probably not needed to pregenerate mixer functions.\n *\n * @public\n */\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n const inputLength = input.length;\n invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n /**\n * If we're only provided a single input, we can just make a function\n * that returns the output.\n */\n if (inputLength === 1)\n return () => output[0];\n if (inputLength === 2 && input[0] === input[1])\n return () => output[1];\n // If input runs highest -> lowest, reverse both arrays\n if (input[0] > input[inputLength - 1]) {\n input = [...input].reverse();\n output = [...output].reverse();\n }\n const mixers = createMixers(output, ease, mixer);\n const numMixers = mixers.length;\n const interpolator = (v) => {\n let i = 0;\n if (numMixers > 1) {\n for (; i < input.length - 2; i++) {\n if (v < input[i + 1])\n break;\n }\n }\n const progressInRange = progress(input[i], input[i + 1], v);\n return mixers[i](progressInRange);\n };\n return isClamp\n ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n : interpolator;\n}\n\nexport { interpolate };\n","import { fillOffset } from './fill.mjs';\n\nfunction defaultOffset(arr) {\n const offset = [0];\n fillOffset(offset, arr.length - 1);\n return offset;\n}\n\nexport { defaultOffset };\n","import { mixNumber } from '../mix/number.mjs';\nimport { progress } from '../progress.mjs';\n\nfunction fillOffset(offset, remaining) {\n const min = offset[offset.length - 1];\n for (let i = 1; i <= remaining; i++) {\n const offsetProgress = progress(0, remaining, i);\n offset.push(mixNumber(min, 1, offsetProgress));\n }\n}\n\nexport { fillOffset };\n","import { easeInOut } from '../../easing/ease.mjs';\nimport { isEasingArray } from '../../easing/utils/is-easing-array.mjs';\nimport { easingDefinitionToFunction } from '../../easing/utils/map.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\nimport { defaultOffset } from '../../utils/offsets/default.mjs';\nimport { convertOffsetToTimes } from '../../utils/offsets/time.mjs';\n\nfunction defaultEasing(values, easing) {\n return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease = \"easeInOut\", }) {\n /**\n * Easing functions can be externally defined as strings. Here we convert them\n * into actual functions.\n */\n const easingFunctions = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = {\n done: false,\n value: keyframeValues[0],\n };\n /**\n * Create a times array based on the provided 0-1 offsets\n */\n const absoluteTimes = convertOffsetToTimes(\n // Only use the provided offsets if they're the correct length\n // TODO Maybe we should warn here if there's a length mismatch\n times && times.length === keyframeValues.length\n ? times\n : defaultOffset(keyframeValues), duration);\n const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n ease: Array.isArray(easingFunctions)\n ? easingFunctions\n : defaultEasing(keyframeValues, easingFunctions),\n });\n return {\n calculatedDuration: duration,\n next: (t) => {\n state.value = mapTimeToKeyframe(t);\n state.done = t >= duration;\n return state;\n },\n };\n}\n\nexport { defaultEasing, keyframes };\n","const isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n","function convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\n\nexport { convertOffsetToTimes };\n","import { time } from '../../../frameloop/sync-time.mjs';\nimport { frame, cancelFrame, frameData } from '../../../frameloop/frame.mjs';\n\nconst frameloopDriver = (update) => {\n const passTimestamp = ({ timestamp }) => update(timestamp);\n return {\n start: () => frame.update(passTimestamp, true),\n stop: () => cancelFrame(passTimestamp),\n /**\n * If we're processing this frame we can use the\n * framelocked timestamp to keep things in sync.\n */\n now: () => (frameData.isProcessing ? frameData.timestamp : time.now()),\n };\n};\n\nexport { frameloopDriver };\n","import { KeyframeResolver } from '../../render/utils/KeyframesResolver.mjs';\nimport { spring } from '../generators/spring/index.mjs';\nimport { inertia } from '../generators/inertia.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { mix } from '../../utils/mix/index.mjs';\nimport { calcGeneratorDuration } from '../generators/utils/calc-duration.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { invariant } from '../../utils/errors.mjs';\nimport { frameloopDriver } from './drivers/driver-frameloop.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\nconst generators = {\n decay: inertia,\n inertia,\n tween: keyframes,\n keyframes: keyframes,\n spring,\n};\nconst percentToProgress = (percent) => percent / 100;\n/**\n * Animation that runs on the main thread. Designed to be WAAPI-spec in the subset of\n * features we expose publically. Mostly the compatibility is to ensure visual identity\n * between both WAAPI and main thread animations.\n */\nclass MainThreadAnimation extends BaseAnimation {\n constructor({ KeyframeResolver: KeyframeResolver$1 = KeyframeResolver, ...options }) {\n super(options);\n /**\n * The time at which the animation was paused.\n */\n this.holdTime = null;\n /**\n * The time at which the animation was started.\n */\n this.startTime = null;\n /**\n * The time at which the animation was cancelled.\n */\n this.cancelTime = null;\n /**\n * The current time of the animation.\n */\n this.currentTime = 0;\n /**\n * Playback speed as a factor. 0 would be stopped, -1 reverse and 2 double speed.\n */\n this.playbackSpeed = 1;\n /**\n * The state of the animation to apply when the animation is resolved. This\n * allows calls to the public API to control the animation before it is resolved,\n * without us having to resolve it first.\n */\n this.pendingPlayState = \"running\";\n this.state = \"idle\";\n /**\n * This method is bound to the instance to fix a pattern where\n * animation.stop is returned as a reference from a useEffect.\n */\n this.stop = () => {\n this.resolver.cancel();\n this.isStopped = true;\n if (this.state === \"idle\")\n return;\n this.teardown();\n const { onStop } = this.options;\n onStop && onStop();\n };\n const { name, motionValue, keyframes } = this.options;\n const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);\n if (name && motionValue && motionValue.owner) {\n this.resolver = motionValue.owner.resolveKeyframes(keyframes, onResolved, name, motionValue);\n }\n else {\n this.resolver = new KeyframeResolver$1(keyframes, onResolved, name, motionValue);\n }\n this.resolver.scheduleResolve();\n }\n initPlayback(keyframes$1) {\n const { type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType, velocity = 0, } = this.options;\n const generatorFactory = generators[type] || keyframes;\n /**\n * If our generator doesn't support mixing numbers, we need to replace keyframes with\n * [0, 100] and then make a function that maps that to the actual keyframes.\n *\n * 100 is chosen instead of 1 as it works nicer with spring animations.\n */\n let mapPercentToKeyframes;\n let mirroredGenerator;\n if (generatorFactory !== keyframes &&\n typeof keyframes$1[0] !== \"number\") {\n if (process.env.NODE_ENV !== \"production\") {\n invariant(keyframes$1.length === 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`);\n }\n mapPercentToKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n keyframes$1 = [0, 100];\n }\n const generator = generatorFactory({ ...this.options, keyframes: keyframes$1 });\n /**\n * If we have a mirror repeat type we need to create a second generator that outputs the\n * mirrored (not reversed) animation and later ping pong between the two generators.\n */\n if (repeatType === \"mirror\") {\n mirroredGenerator = generatorFactory({\n ...this.options,\n keyframes: [...keyframes$1].reverse(),\n velocity: -velocity,\n });\n }\n /**\n * If duration is undefined and we have repeat options,\n * we need to calculate a duration from the generator.\n *\n * We set it to the generator itself to cache the duration.\n * Any timeline resolver will need to have already precalculated\n * the duration by this step.\n */\n if (generator.calculatedDuration === null) {\n generator.calculatedDuration = calcGeneratorDuration(generator);\n }\n const { calculatedDuration } = generator;\n const resolvedDuration = calculatedDuration + repeatDelay;\n const totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n return {\n generator,\n mirroredGenerator,\n mapPercentToKeyframes,\n calculatedDuration,\n resolvedDuration,\n totalDuration,\n };\n }\n onPostResolved() {\n const { autoplay = true } = this.options;\n this.play();\n if (this.pendingPlayState === \"paused\" || !autoplay) {\n this.pause();\n }\n else {\n this.state = this.pendingPlayState;\n }\n }\n tick(timestamp, sample = false) {\n const { resolved } = this;\n // If the animations has failed to resolve, return the final keyframe.\n if (!resolved) {\n const { keyframes } = this.options;\n return { done: true, value: keyframes[keyframes.length - 1] };\n }\n const { finalKeyframe, generator, mirroredGenerator, mapPercentToKeyframes, keyframes, calculatedDuration, totalDuration, resolvedDuration, } = resolved;\n if (this.startTime === null)\n return generator.next(0);\n const { delay, repeat, repeatType, repeatDelay, onUpdate } = this.options;\n /**\n * requestAnimationFrame timestamps can come through as lower than\n * the startTime as set by performance.now(). Here we prevent this,\n * though in the future it could be possible to make setting startTime\n * a pending operation that gets resolved here.\n */\n if (this.speed > 0) {\n this.startTime = Math.min(this.startTime, timestamp);\n }\n else if (this.speed < 0) {\n this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);\n }\n // Update currentTime\n if (sample) {\n this.currentTime = timestamp;\n }\n else if (this.holdTime !== null) {\n this.currentTime = this.holdTime;\n }\n else {\n // Rounding the time because floating point arithmetic is not always accurate, e.g. 3000.367 - 1000.367 =\n // 2000.0000000000002. This is a problem when we are comparing the currentTime with the duration, for\n // example.\n this.currentTime =\n Math.round(timestamp - this.startTime) * this.speed;\n }\n // Rebase on delay\n const timeWithoutDelay = this.currentTime - delay * (this.speed >= 0 ? 1 : -1);\n const isInDelayPhase = this.speed >= 0\n ? timeWithoutDelay < 0\n : timeWithoutDelay > totalDuration;\n this.currentTime = Math.max(timeWithoutDelay, 0);\n // If this animation has finished, set the current time to the total duration.\n if (this.state === \"finished\" && this.holdTime === null) {\n this.currentTime = totalDuration;\n }\n let elapsed = this.currentTime;\n let frameGenerator = generator;\n if (repeat) {\n /**\n * Get the current progress (0-1) of the animation. If t is >\n * than duration we'll get values like 2.5 (midway through the\n * third iteration)\n */\n const progress = Math.min(this.currentTime, totalDuration) / resolvedDuration;\n /**\n * Get the current iteration (0 indexed). For instance the floor of\n * 2.5 is 2.\n */\n let currentIteration = Math.floor(progress);\n /**\n * Get the current progress of the iteration by taking the remainder\n * so 2.5 is 0.5 through iteration 2\n */\n let iterationProgress = progress % 1.0;\n /**\n * If iteration progress is 1 we count that as the end\n * of the previous iteration.\n */\n if (!iterationProgress && progress >= 1) {\n iterationProgress = 1;\n }\n iterationProgress === 1 && currentIteration--;\n currentIteration = Math.min(currentIteration, repeat + 1);\n /**\n * Reverse progress if we're not running in \"normal\" direction\n */\n const isOddIteration = Boolean(currentIteration % 2);\n if (isOddIteration) {\n if (repeatType === \"reverse\") {\n iterationProgress = 1 - iterationProgress;\n if (repeatDelay) {\n iterationProgress -= repeatDelay / resolvedDuration;\n }\n }\n else if (repeatType === \"mirror\") {\n frameGenerator = mirroredGenerator;\n }\n }\n elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;\n }\n /**\n * If we're in negative time, set state as the initial keyframe.\n * This prevents delay: x, duration: 0 animations from finishing\n * instantly.\n */\n const state = isInDelayPhase\n ? { done: false, value: keyframes[0] }\n : frameGenerator.next(elapsed);\n if (mapPercentToKeyframes) {\n state.value = mapPercentToKeyframes(state.value);\n }\n let { done } = state;\n if (!isInDelayPhase && calculatedDuration !== null) {\n done =\n this.speed >= 0\n ? this.currentTime >= totalDuration\n : this.currentTime <= 0;\n }\n const isAnimationFinished = this.holdTime === null &&\n (this.state === \"finished\" || (this.state === \"running\" && done));\n if (isAnimationFinished && finalKeyframe !== undefined) {\n state.value = getFinalKeyframe(keyframes, this.options, finalKeyframe);\n }\n if (onUpdate) {\n onUpdate(state.value);\n }\n if (isAnimationFinished) {\n this.finish();\n }\n return state;\n }\n get duration() {\n const { resolved } = this;\n return resolved ? millisecondsToSeconds(resolved.calculatedDuration) : 0;\n }\n get time() {\n return millisecondsToSeconds(this.currentTime);\n }\n set time(newTime) {\n newTime = secondsToMilliseconds(newTime);\n this.currentTime = newTime;\n if (this.holdTime !== null || this.speed === 0) {\n this.holdTime = newTime;\n }\n else if (this.driver) {\n this.startTime = this.driver.now() - newTime / this.speed;\n }\n }\n get speed() {\n return this.playbackSpeed;\n }\n set speed(newSpeed) {\n const hasChanged = this.playbackSpeed !== newSpeed;\n this.playbackSpeed = newSpeed;\n if (hasChanged) {\n this.time = millisecondsToSeconds(this.currentTime);\n }\n }\n play() {\n if (!this.resolver.isScheduled) {\n this.resolver.resume();\n }\n if (!this._resolved) {\n this.pendingPlayState = \"running\";\n return;\n }\n if (this.isStopped)\n return;\n const { driver = frameloopDriver, onPlay } = this.options;\n if (!this.driver) {\n this.driver = driver((timestamp) => this.tick(timestamp));\n }\n onPlay && onPlay();\n const now = this.driver.now();\n if (this.holdTime !== null) {\n this.startTime = now - this.holdTime;\n }\n else if (!this.startTime || this.state === \"finished\") {\n this.startTime = now;\n }\n if (this.state === \"finished\") {\n this.updateFinishedPromise();\n }\n this.cancelTime = this.startTime;\n this.holdTime = null;\n /**\n * Set playState to running only after we've used it in\n * the previous logic.\n */\n this.state = \"running\";\n this.driver.start();\n }\n pause() {\n var _a;\n if (!this._resolved) {\n this.pendingPlayState = \"paused\";\n return;\n }\n this.state = \"paused\";\n this.holdTime = (_a = this.currentTime) !== null && _a !== void 0 ? _a : 0;\n }\n complete() {\n if (this.state !== \"running\") {\n this.play();\n }\n this.pendingPlayState = this.state = \"finished\";\n this.holdTime = null;\n }\n finish() {\n this.teardown();\n this.state = \"finished\";\n const { onComplete } = this.options;\n onComplete && onComplete();\n }\n cancel() {\n if (this.cancelTime !== null) {\n this.tick(this.cancelTime);\n }\n this.teardown();\n this.updateFinishedPromise();\n }\n teardown() {\n this.state = \"idle\";\n this.stopDriver();\n this.resolveFinishedPromise();\n this.updateFinishedPromise();\n this.startTime = this.cancelTime = null;\n this.resolver.cancel();\n }\n stopDriver() {\n if (!this.driver)\n return;\n this.driver.stop();\n this.driver = undefined;\n }\n sample(time) {\n this.startTime = 0;\n return this.tick(time, true);\n }\n}\n// Legacy interface\nfunction animateValue(options) {\n return new MainThreadAnimation(options);\n}\n\nexport { MainThreadAnimation, animateValue };\n","/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxGeneratorDuration = 20000;\nfunction calcGeneratorDuration(generator) {\n let duration = 0;\n const timeStep = 50;\n let state = generator.next(duration);\n while (!state.done && duration < maxGeneratorDuration) {\n duration += timeStep;\n state = generator.next(duration);\n }\n return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\nexport { calcGeneratorDuration, maxGeneratorDuration };\n","const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\nexport { isBezierDefinition };\n","import { isBezierDefinition } from '../../../easing/utils/is-bezier-definition.mjs';\n\nfunction isWaapiSupportedEasing(easing) {\n return Boolean(!easing ||\n (typeof easing === \"string\" && easing in supportedWaapiEasing) ||\n isBezierDefinition(easing) ||\n (Array.isArray(easing) && easing.every(isWaapiSupportedEasing)));\n}\nconst cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nconst supportedWaapiEasing = {\n linear: \"linear\",\n ease: \"ease\",\n easeIn: \"ease-in\",\n easeOut: \"ease-out\",\n easeInOut: \"ease-in-out\",\n circIn: cubicBezierAsString([0, 0.65, 0.55, 1]),\n circOut: cubicBezierAsString([0.55, 0, 1, 0.45]),\n backIn: cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n backOut: cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\nfunction mapEasingToNativeEasingWithDefault(easing) {\n return (mapEasingToNativeEasing(easing) ||\n supportedWaapiEasing.easeOut);\n}\nfunction mapEasingToNativeEasing(easing) {\n if (!easing) {\n return undefined;\n }\n else if (isBezierDefinition(easing)) {\n return cubicBezierAsString(easing);\n }\n else if (Array.isArray(easing)) {\n return easing.map(mapEasingToNativeEasingWithDefault);\n }\n else {\n return supportedWaapiEasing[easing];\n }\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\n","import { time } from '../../frameloop/sync-time.mjs';\nimport { DOMKeyframesResolver } from '../../render/dom/DOMKeyframesResolver.mjs';\nimport { memo } from '../../utils/memo.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { MainThreadAnimation } from './MainThreadAnimation.mjs';\nimport { animateStyle } from './waapi/index.mjs';\nimport { isWaapiSupportedEasing } from './waapi/easing.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\nconst supportsWaapi = memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n \"opacity\",\n \"clipPath\",\n \"filter\",\n \"transform\",\n // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n // or until we implement support for linear() easing.\n // \"background-color\"\n]);\n/**\n * 10ms is chosen here as it strikes a balance between smooth\n * results (more than one keyframe per frame at 60fps) and\n * keyframe quantity.\n */\nconst sampleDelta = 10; //ms\n/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxDuration = 20000;\n/**\n * Check if an animation can run natively via WAAPI or requires pregenerated keyframes.\n * WAAPI doesn't support spring or function easings so we run these as JS animation before\n * handing off.\n */\nfunction requiresPregeneratedKeyframes(options) {\n return (options.type === \"spring\" ||\n options.name === \"backgroundColor\" ||\n !isWaapiSupportedEasing(options.ease));\n}\nfunction pregenerateKeyframes(keyframes, options) {\n /**\n * Create a main-thread animation to pregenerate keyframes.\n * We sample this at regular intervals to generate keyframes that we then\n * linearly interpolate between.\n */\n const sampleAnimation = new MainThreadAnimation({\n ...options,\n keyframes,\n repeat: 0,\n delay: 0,\n isGenerator: true,\n });\n let state = { done: false, value: keyframes[0] };\n const pregeneratedKeyframes = [];\n /**\n * Bail after 20 seconds of pre-generated keyframes as it's likely\n * we're heading for an infinite loop.\n */\n let t = 0;\n while (!state.done && t < maxDuration) {\n state = sampleAnimation.sample(t);\n pregeneratedKeyframes.push(state.value);\n t += sampleDelta;\n }\n return {\n times: undefined,\n keyframes: pregeneratedKeyframes,\n duration: t - sampleDelta,\n ease: \"linear\",\n };\n}\nclass AcceleratedAnimation extends BaseAnimation {\n constructor(options) {\n super(options);\n const { name, motionValue, keyframes } = this.options;\n this.resolver = new DOMKeyframesResolver(keyframes, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue);\n this.resolver.scheduleResolve();\n }\n initPlayback(keyframes, finalKeyframe) {\n var _a;\n let { duration = 300, times, ease, type, motionValue, name, } = this.options;\n /**\n * If element has since been unmounted, return false to indicate\n * the animation failed to initialised.\n */\n if (!((_a = motionValue.owner) === null || _a === void 0 ? void 0 : _a.current)) {\n return false;\n }\n /**\n * If this animation needs pre-generated keyframes then generate.\n */\n if (requiresPregeneratedKeyframes(this.options)) {\n const { onComplete, onUpdate, motionValue, ...options } = this.options;\n const pregeneratedAnimation = pregenerateKeyframes(keyframes, options);\n keyframes = pregeneratedAnimation.keyframes;\n // If this is a very short animation, ensure we have\n // at least two keyframes to animate between as older browsers\n // can't animate between a single keyframe.\n if (keyframes.length === 1) {\n keyframes[1] = keyframes[0];\n }\n duration = pregeneratedAnimation.duration;\n times = pregeneratedAnimation.times;\n ease = pregeneratedAnimation.ease;\n type = \"keyframes\";\n }\n const animation = animateStyle(motionValue.owner.current, name, keyframes, { ...this.options, duration, times, ease });\n // Override the browser calculated startTime with one synchronised to other JS\n // and WAAPI animations starting this event loop.\n animation.startTime = time.now();\n if (this.pendingTimeline) {\n animation.timeline = this.pendingTimeline;\n this.pendingTimeline = undefined;\n }\n else {\n /**\n * Prefer the `onfinish` prop as it's more widely supported than\n * the `finished` promise.\n *\n * Here, we synchronously set the provided MotionValue to the end\n * keyframe. If we didn't, when the WAAPI animation is finished it would\n * be removed from the element which would then revert to its old styles.\n */\n animation.onfinish = () => {\n const { onComplete } = this.options;\n motionValue.set(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n onComplete && onComplete();\n this.cancel();\n this.resolveFinishedPromise();\n };\n }\n return {\n animation,\n duration,\n times,\n type,\n ease,\n keyframes: keyframes,\n };\n }\n get duration() {\n const { resolved } = this;\n if (!resolved)\n return 0;\n const { duration } = resolved;\n return millisecondsToSeconds(duration);\n }\n get time() {\n const { resolved } = this;\n if (!resolved)\n return 0;\n const { animation } = resolved;\n return millisecondsToSeconds(animation.currentTime || 0);\n }\n set time(newTime) {\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n animation.currentTime = secondsToMilliseconds(newTime);\n }\n get speed() {\n const { resolved } = this;\n if (!resolved)\n return 1;\n const { animation } = resolved;\n return animation.playbackRate;\n }\n set speed(newSpeed) {\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n animation.playbackRate = newSpeed;\n }\n get state() {\n const { resolved } = this;\n if (!resolved)\n return \"idle\";\n const { animation } = resolved;\n return animation.playState;\n }\n /**\n * Replace the default DocumentTimeline with another AnimationTimeline.\n * Currently used for scroll animations.\n */\n attachTimeline(timeline) {\n if (!this._resolved) {\n this.pendingTimeline = timeline;\n }\n else {\n const { resolved } = this;\n if (!resolved)\n return noop;\n const { animation } = resolved;\n animation.timeline = timeline;\n animation.onfinish = null;\n }\n return noop;\n }\n play() {\n if (this.isStopped)\n return;\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n if (animation.playState === \"finished\") {\n this.updateFinishedPromise();\n }\n animation.play();\n }\n pause() {\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n animation.pause();\n }\n stop() {\n this.resolver.cancel();\n this.isStopped = true;\n if (this.state === \"idle\")\n return;\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation, keyframes, duration, type, ease, times } = resolved;\n if (animation.playState === \"idle\" ||\n animation.playState === \"finished\") {\n return;\n }\n /**\n * WAAPI doesn't natively have any interruption capabilities.\n *\n * Rather than read commited styles back out of the DOM, we can\n * create a renderless JS animation and sample it twice to calculate\n * its current value, \"previous\" value, and therefore allow\n * Motion to calculate velocity for any subsequent animation.\n */\n if (this.time) {\n const { motionValue, onUpdate, onComplete, ...options } = this.options;\n const sampleAnimation = new MainThreadAnimation({\n ...options,\n keyframes,\n duration,\n type,\n ease,\n times,\n isGenerator: true,\n });\n const sampleTime = secondsToMilliseconds(this.time);\n motionValue.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);\n }\n this.cancel();\n }\n complete() {\n const { resolved } = this;\n if (!resolved)\n return;\n resolved.animation.finish();\n }\n cancel() {\n const { resolved } = this;\n if (!resolved)\n return;\n resolved.animation.cancel();\n }\n static supports(options) {\n const { motionValue, name, repeatDelay, repeatType, damping, type } = options;\n return (supportsWaapi() &&\n name &&\n acceleratedValues.has(name) &&\n motionValue &&\n motionValue.owner &&\n motionValue.owner.current instanceof HTMLElement &&\n /**\n * If we're outputting values to onUpdate then we can't use WAAPI as there's\n * no way to read the value from WAAPI every frame.\n */\n !motionValue.owner.getProps().onUpdate &&\n !repeatDelay &&\n repeatType !== \"mirror\" &&\n damping !== 0 &&\n type !== \"inertia\");\n }\n}\n\nexport { AcceleratedAnimation };\n","import { mapEasingToNativeEasing } from './easing.mjs';\n\nfunction animateStyle(element, valueName, keyframes, { delay = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease, times, } = {}) {\n const keyframeOptions = { [valueName]: keyframes };\n if (times)\n keyframeOptions.offset = times;\n const easing = mapEasingToNativeEasing(ease);\n /**\n * If this is an easing array, apply to keyframes, not animation as a whole\n */\n if (Array.isArray(easing))\n keyframeOptions.easing = easing;\n return element.animate(keyframeOptions, {\n delay,\n duration,\n easing: !Array.isArray(easing) ? easing : \"linear\",\n fill: \"both\",\n iterations: repeat + 1,\n direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\",\n });\n}\n\nexport { animateStyle };\n","import { memo } from '../../../utils/memo.mjs';\n\nconst supportsScrollTimeline = memo(() => window.ScrollTimeline !== undefined);\n\nexport { supportsScrollTimeline };\n","import { observeTimeline } from '../render/dom/scroll/observe.mjs';\nimport { supportsScrollTimeline } from '../render/dom/scroll/supports.mjs';\n\nclass GroupPlaybackControls {\n constructor(animations) {\n // Bound to accomodate common `return animation.stop` pattern\n this.stop = () => this.runAll(\"stop\");\n this.animations = animations.filter(Boolean);\n }\n then(onResolve, onReject) {\n return Promise.all(this.animations).then(onResolve).catch(onReject);\n }\n /**\n * TODO: Filter out cancelled or stopped animations before returning\n */\n getAll(propName) {\n return this.animations[0][propName];\n }\n setAll(propName, newValue) {\n for (let i = 0; i < this.animations.length; i++) {\n this.animations[i][propName] = newValue;\n }\n }\n attachTimeline(timeline) {\n const cancelAll = this.animations.map((animation) => {\n if (supportsScrollTimeline() && animation.attachTimeline) {\n animation.attachTimeline(timeline);\n }\n else {\n animation.pause();\n return observeTimeline((progress) => {\n animation.time = animation.duration * progress;\n }, timeline);\n }\n });\n return () => {\n cancelAll.forEach((cancelTimeline, i) => {\n if (cancelTimeline)\n cancelTimeline();\n this.animations[i].stop();\n });\n };\n }\n get time() {\n return this.getAll(\"time\");\n }\n set time(time) {\n this.setAll(\"time\", time);\n }\n get speed() {\n return this.getAll(\"speed\");\n }\n set speed(speed) {\n this.setAll(\"speed\", speed);\n }\n get duration() {\n let max = 0;\n for (let i = 0; i < this.animations.length; i++) {\n max = Math.max(max, this.animations[i].duration);\n }\n return max;\n }\n runAll(methodName) {\n this.animations.forEach((controls) => controls[methodName]());\n }\n play() {\n this.runAll(\"play\");\n }\n pause() {\n this.runAll(\"pause\");\n }\n cancel() {\n this.runAll(\"cancel\");\n }\n complete() {\n this.runAll(\"complete\");\n }\n}\n\nexport { GroupPlaybackControls };\n","import { frame, cancelFrame } from '../../../frameloop/frame.mjs';\n\nfunction observeTimeline(update, timeline) {\n let prevProgress;\n const onFrame = () => {\n const { currentTime } = timeline;\n const percentage = currentTime === null ? 0 : currentTime.value;\n const progress = percentage / 100;\n if (prevProgress !== progress) {\n update(progress);\n }\n prevProgress = progress;\n };\n frame.update(onFrame, true);\n return () => cancelFrame(onFrame);\n}\n\nexport { observeTimeline };\n","import { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.mjs';\nimport { getValueTransition, isTransitionDefined } from '../utils/transitions.mjs';\nimport { MotionGlobalConfig } from '../../utils/GlobalConfig.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { getFinalKeyframe } from '../animators/waapi/utils/get-final-keyframe.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\nimport { AcceleratedAnimation } from '../animators/AcceleratedAnimation.mjs';\nimport { MainThreadAnimation } from '../animators/MainThreadAnimation.mjs';\nimport { GroupPlaybackControls } from '../GroupPlaybackControls.mjs';\n\nconst animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {\n const valueTransition = getValueTransition(transition, name) || {};\n /**\n * Most transition values are currently completely overwritten by value-specific\n * transitions. In the future it'd be nicer to blend these transitions. But for now\n * delay actually does inherit from the root transition if not value-specific.\n */\n const delay = valueTransition.delay || transition.delay || 0;\n /**\n * Elapsed isn't a public transition option but can be passed through from\n * optimized appear effects in milliseconds.\n */\n let { elapsed = 0 } = transition;\n elapsed = elapsed - secondsToMilliseconds(delay);\n let options = {\n keyframes: Array.isArray(target) ? target : [null, target],\n ease: \"easeOut\",\n velocity: value.getVelocity(),\n ...valueTransition,\n delay: -elapsed,\n onUpdate: (v) => {\n value.set(v);\n valueTransition.onUpdate && valueTransition.onUpdate(v);\n },\n onComplete: () => {\n onComplete();\n valueTransition.onComplete && valueTransition.onComplete();\n },\n name,\n motionValue: value,\n element: isHandoff ? undefined : element,\n };\n /**\n * If there's no transition defined for this value, we can generate\n * unqiue transition settings for this value.\n */\n if (!isTransitionDefined(valueTransition)) {\n options = {\n ...options,\n ...getDefaultTransition(name, options),\n };\n }\n /**\n * Both WAAPI and our internal animation functions use durations\n * as defined by milliseconds, while our external API defines them\n * as seconds.\n */\n if (options.duration) {\n options.duration = secondsToMilliseconds(options.duration);\n }\n if (options.repeatDelay) {\n options.repeatDelay = secondsToMilliseconds(options.repeatDelay);\n }\n if (options.from !== undefined) {\n options.keyframes[0] = options.from;\n }\n let shouldSkip = false;\n if (options.type === false ||\n (options.duration === 0 && !options.repeatDelay)) {\n options.duration = 0;\n if (options.delay === 0) {\n shouldSkip = true;\n }\n }\n if (instantAnimationState.current ||\n MotionGlobalConfig.skipAnimations) {\n shouldSkip = true;\n options.duration = 0;\n options.delay = 0;\n }\n /**\n * If we can or must skip creating the animation, and apply only\n * the final keyframe, do so. We also check once keyframes are resolved but\n * this early check prevents the need to create an animation at all.\n */\n if (shouldSkip && !isHandoff && value.get() !== undefined) {\n const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);\n if (finalKeyframe !== undefined) {\n frame.update(() => {\n options.onUpdate(finalKeyframe);\n options.onComplete();\n });\n // We still want to return some animation controls here rather\n // than returning undefined\n return new GroupPlaybackControls([]);\n }\n }\n /**\n * Animate via WAAPI if possible. If this is a handoff animation, the optimised animation will be running via\n * WAAPI. Therefore, this animation must be JS to ensure it runs \"under\" the\n * optimised animation.\n */\n if (!isHandoff && AcceleratedAnimation.supports(options)) {\n return new AcceleratedAnimation(options);\n }\n else {\n return new MainThreadAnimation(options);\n }\n};\n\nexport { animateMotionValue };\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n","function addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n if (startIndex >= 0 && startIndex < arr.length) {\n const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n const [item] = arr.splice(fromIndex, 1);\n arr.splice(endIndex, 0, item);\n }\n return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\nexport { SubscriptionManager };\n","import { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\n/**\n * Maximum time between the value of two frames, beyond which we\n * assume the velocity has since been 0.\n */\nconst MAX_VELOCITY_DELTA = 30;\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\nconst collectMotionValues = {\n current: undefined,\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n constructor(init, options = {}) {\n /**\n * This will be replaced by the build step with the latest version number.\n * When MotionValues are provided to motion components, warn if versions are mixed.\n */\n this.version = \"11.2.14\";\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = null;\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n this.updateAndNotify = (v, render = true) => {\n const currentTime = time.now();\n /**\n * If we're updating the value during another frame or eventloop\n * than the previous frame, then the we set the previous frame value\n * to current.\n */\n if (this.updatedAt !== currentTime) {\n this.setPrevFrameValue();\n }\n this.prev = this.current;\n this.setCurrent(v);\n // Update update subscribers\n if (this.current !== this.prev && this.events.change) {\n this.events.change.notify(this.current);\n }\n // Update render subscribers\n if (render && this.events.renderRequest) {\n this.events.renderRequest.notify(this.current);\n }\n };\n this.hasAnimated = false;\n this.setCurrent(init);\n this.owner = options.owner;\n }\n setCurrent(current) {\n this.current = current;\n this.updatedAt = time.now();\n if (this.canTrackVelocity === null && current !== undefined) {\n this.canTrackVelocity = isFloat(this.current);\n }\n }\n setPrevFrameValue(prevFrameValue = this.current) {\n this.prevFrameValue = prevFrameValue;\n this.prevUpdatedAt = this.updatedAt;\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.on(\"change\", updateOpacity)\n * const unsubscribeY = y.on(\"change\", updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @param subscriber - A function that receives the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @deprecated\n */\n onChange(subscription) {\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n }\n return this.on(\"change\", subscription);\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n const unsubscribe = this.events[eventName].add(callback);\n if (eventName === \"change\") {\n return () => {\n unsubscribe();\n /**\n * If we have no more change listeners by the start\n * of the next frame, stop active animations.\n */\n frame.read(() => {\n if (!this.events.change.getSize()) {\n this.stop();\n }\n });\n };\n }\n return unsubscribe;\n }\n clearListeners() {\n for (const eventManagers in this.events) {\n this.events[eventManagers].clear();\n }\n }\n /**\n * Attaches a passive effect to the `MotionValue`.\n *\n * @internal\n */\n attach(passiveEffect, stopPassiveEffect) {\n this.passiveEffect = passiveEffect;\n this.stopPassiveEffect = stopPassiveEffect;\n }\n /**\n * Sets the state of the `MotionValue`.\n *\n * @remarks\n *\n * ```jsx\n * const x = useMotionValue(0)\n * x.set(10)\n * ```\n *\n * @param latest - Latest value to set.\n * @param render - Whether to notify render subscribers. Defaults to `true`\n *\n * @public\n */\n set(v, render = true) {\n if (!render || !this.passiveEffect) {\n this.updateAndNotify(v, render);\n }\n else {\n this.passiveEffect(v, this.updateAndNotify);\n }\n }\n setWithVelocity(prev, current, delta) {\n this.set(current);\n this.prev = undefined;\n this.prevFrameValue = prev;\n this.prevUpdatedAt = this.updatedAt - delta;\n }\n /**\n * Set the state of the `MotionValue`, stopping any active animations,\n * effects, and resets velocity to `0`.\n */\n jump(v, endAnimation = true) {\n this.updateAndNotify(v);\n this.prev = v;\n this.prevUpdatedAt = this.prevFrameValue = undefined;\n endAnimation && this.stop();\n if (this.stopPassiveEffect)\n this.stopPassiveEffect();\n }\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n get() {\n if (collectMotionValues.current) {\n collectMotionValues.current.push(this);\n }\n return this.current;\n }\n /**\n * @public\n */\n getPrevious() {\n return this.prev;\n }\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n getVelocity() {\n const currentTime = time.now();\n if (!this.canTrackVelocity ||\n this.prevFrameValue === undefined ||\n currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n return 0;\n }\n const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n // Casts because of parseFloat's poor typing\n return velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prevFrameValue), delta);\n }\n /**\n * Registers a new animation to control this `MotionValue`. Only one\n * animation can drive a `MotionValue` at one time.\n *\n * ```jsx\n * value.start()\n * ```\n *\n * @param animation - A function that starts the provided animation\n *\n * @internal\n */\n start(startAnimation) {\n this.stop();\n return new Promise((resolve) => {\n this.hasAnimated = true;\n this.animation = startAnimation(resolve);\n if (this.events.animationStart) {\n this.events.animationStart.notify();\n }\n }).then(() => {\n if (this.events.animationComplete) {\n this.events.animationComplete.notify();\n }\n this.clearAnimation();\n });\n }\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n stop() {\n if (this.animation) {\n this.animation.stop();\n if (this.events.animationCancel) {\n this.events.animationCancel.notify();\n }\n }\n this.clearAnimation();\n }\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n isAnimating() {\n return !!this.animation;\n }\n clearAnimation() {\n delete this.animation;\n }\n /**\n * Destroy and clean up subscribers to this `MotionValue`.\n *\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n * created a `MotionValue` via the `motionValue` function.\n *\n * @public\n */\n destroy() {\n this.clearListeners();\n this.stop();\n if (this.stopPassiveEffect) {\n this.stopPassiveEffect();\n }\n }\n}\nfunction motionValue(init, options) {\n return new MotionValue(init, options);\n}\n\nexport { MotionValue, collectMotionValues, motionValue };\n","import { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n if (visualElement.hasValue(key)) {\n visualElement.getValue(key).set(value);\n }\n else {\n visualElement.addValue(key, motionValue(value));\n }\n}\nfunction setTarget(visualElement, definition) {\n const resolved = resolveVariant(visualElement, definition);\n let { transitionEnd = {}, transition = {}, ...target } = resolved || {};\n target = { ...target, ...transitionEnd };\n for (const key in target) {\n const value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\n\nexport { setTarget };\n","import { optimizedAppearDataAttribute } from './data-id.mjs';\n\nfunction getOptimisedAppearId(visualElement) {\n return visualElement.getProps()[optimizedAppearDataAttribute];\n}\n\nexport { getOptimisedAppearId };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { getValueTransition } from '../utils/transitions.mjs';\nimport { getOptimisedAppearId } from '../optimized-appear/get-appear-id.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n needsAnimating[key] = false;\n return shouldBlock;\n}\nfunction animateTarget(visualElement, targetAndTransition, { delay = 0, transitionOverride, type } = {}) {\n var _a;\n let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;\n const willChange = visualElement.getValue(\"willChange\");\n if (transitionOverride)\n transition = transitionOverride;\n const animations = [];\n const animationTypeState = type &&\n visualElement.animationState &&\n visualElement.animationState.getState()[type];\n for (const key in target) {\n const value = visualElement.getValue(key, (_a = visualElement.latestValues[key]) !== null && _a !== void 0 ? _a : null);\n const valueTarget = target[key];\n if (valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n const valueTransition = {\n delay,\n elapsed: 0,\n ...getValueTransition(transition || {}, key),\n };\n /**\n * If this is the first time a value is being animated, check\n * to see if we're handling off from an existing animation.\n */\n let isHandoff = false;\n if (window.HandoffAppearAnimations) {\n const appearId = getOptimisedAppearId(visualElement);\n if (appearId) {\n const elapsed = window.HandoffAppearAnimations(appearId, key, value, frame);\n if (elapsed !== null) {\n valueTransition.elapsed = elapsed;\n isHandoff = true;\n }\n }\n }\n value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key)\n ? { type: false }\n : valueTransition, visualElement, isHandoff));\n const animation = value.animation;\n if (animation) {\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n animation.then(() => willChange.remove(key));\n }\n animations.push(animation);\n }\n }\n if (transitionEnd) {\n Promise.all(animations).then(() => {\n frame.update(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\n });\n });\n }\n return animations;\n}\n\nexport { animateTarget };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\n\nfunction animateVariant(visualElement, variant, options = {}) {\n var _a;\n const resolved = resolveVariant(visualElement, variant, options.type === \"exit\"\n ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n : undefined);\n let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n if (options.transitionOverride) {\n transition = options.transitionOverride;\n }\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getAnimation = resolved\n ? () => Promise.all(animateTarget(visualElement, resolved, options))\n : () => Promise.resolve();\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size\n ? (forwardDelay = 0) => {\n const { delayChildren = 0, staggerChildren, staggerDirection, } = transition;\n return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n }\n : () => Promise.resolve();\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n const { when } = transition;\n if (when) {\n const [first, last] = when === \"beforeChildren\"\n ? [getAnimation, getChildAnimations]\n : [getChildAnimations, getAnimation];\n return first().then(() => last());\n }\n else {\n return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n }\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n const animations = [];\n const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n const generateStaggerDuration = staggerDirection === 1\n ? (i = 0) => i * staggerChildren\n : (i = 0) => maxStaggerDuration - i * staggerChildren;\n Array.from(visualElement.variantChildren)\n .sort(sortByTreeOrder)\n .forEach((child, i) => {\n child.notify(\"AnimationStart\", variant);\n animations.push(animateVariant(child, variant, {\n ...options,\n delay: delayChildren + generateStaggerDuration(i),\n }).then(() => child.notify(\"AnimationComplete\", variant)));\n });\n return Promise.all(animations);\n}\nfunction sortByTreeOrder(a, b) {\n return a.sortNodePosition(b);\n}\n\nexport { animateVariant, sortByTreeOrder };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';\nimport { shallowCompare } from '../../utils/shallow-compare.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { variantPriorityOrder } from './variant-props.mjs';\nimport { animateVisualElement } from '../../animation/interfaces/visual-element.mjs';\n\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n let animate = animateList(visualElement);\n let state = createState();\n let isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n const buildResolvedTypeValues = (type) => (acc, definition) => {\n var _a;\n const resolved = resolveVariant(visualElement, definition, type === \"exit\"\n ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n : undefined);\n if (resolved) {\n const { transition, transitionEnd, ...target } = resolved;\n acc = { ...acc, ...target, ...transitionEnd };\n }\n return acc;\n };\n /**\n * This just allows us to inject mocked animation functions\n * @internal\n */\n function setAnimateFunction(makeAnimator) {\n animate = makeAnimator(visualElement);\n }\n /**\n * When we receive new props, we need to:\n * 1. Create a list of protected keys for each type. This is a directory of\n * value keys that are currently being \"handled\" by types of a higher priority\n * so that whenever an animation is played of a given type, these values are\n * protected from being animated.\n * 2. Determine if an animation type needs animating.\n * 3. Determine if any values have been removed from a type and figure out\n * what to animate those to.\n */\n function animateChanges(changedActiveType) {\n const props = visualElement.getProps();\n const context = visualElement.getVariantContext(true) || {};\n /**\n * A list of animations that we'll build into as we iterate through the animation\n * types. This will get executed at the end of the function.\n */\n const animations = [];\n /**\n * Keep track of which values have been removed. Then, as we hit lower priority\n * animation types, we can check if they contain removed values and animate to that.\n */\n const removedKeys = new Set();\n /**\n * A dictionary of all encountered keys. This is an object to let us build into and\n * copy it without iteration. Each time we hit an animation type we set its protected\n * keys - the keys its not allowed to animate - to the latest version of this object.\n */\n let encounteredKeys = {};\n /**\n * If a variant has been removed at a given index, and this component is controlling\n * variant animations, we want to ensure lower-priority variants are forced to animate.\n */\n let removedVariantIndex = Infinity;\n /**\n * Iterate through all animation types in reverse priority order. For each, we want to\n * detect which values it's handling and whether or not they've changed (and therefore\n * need to be animated). If any values have been removed, we want to detect those in\n * lower priority props and flag for animation.\n */\n for (let i = 0; i < numAnimationTypes; i++) {\n const type = reversePriorityOrder[i];\n const typeState = state[type];\n const prop = props[type] !== undefined\n ? props[type]\n : context[type];\n const propIsVariant = isVariantLabel(prop);\n /**\n * If this type has *just* changed isActive status, set activeDelta\n * to that status. Otherwise set to null.\n */\n const activeDelta = type === changedActiveType ? typeState.isActive : null;\n if (activeDelta === false)\n removedVariantIndex = i;\n /**\n * If this prop is an inherited variant, rather than been set directly on the\n * component itself, we want to make sure we allow the parent to trigger animations.\n *\n * TODO: Can probably change this to a !isControllingVariants check\n */\n let isInherited = prop === context[type] &&\n prop !== props[type] &&\n propIsVariant;\n /**\n *\n */\n if (isInherited &&\n isInitialRender &&\n visualElement.manuallyAnimateOnMount) {\n isInherited = false;\n }\n /**\n * Set all encountered keys so far as the protected keys for this type. This will\n * be any key that has been animated or otherwise handled by active, higher-priortiy types.\n */\n typeState.protectedKeys = { ...encounteredKeys };\n // Check if we can skip analysing this prop early\n if (\n // If it isn't active and hasn't *just* been set as inactive\n (!typeState.isActive && activeDelta === null) ||\n // If we didn't and don't have any defined prop for this animation type\n (!prop && !typeState.prevProp) ||\n // Or if the prop doesn't define an animation\n isAnimationControls(prop) ||\n typeof prop === \"boolean\") {\n continue;\n }\n /**\n * As we go look through the values defined on this type, if we detect\n * a changed value or a value that was removed in a higher priority, we set\n * this to true and add this prop to the animation list.\n */\n const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n let shouldAnimateType = variantDidChange ||\n // If we're making this variant active, we want to always make it active\n (type === changedActiveType &&\n typeState.isActive &&\n !isInherited &&\n propIsVariant) ||\n // If we removed a higher-priority variant (i is in reverse order)\n (i > removedVariantIndex && propIsVariant);\n let handledRemovedValues = false;\n /**\n * As animations can be set as variant lists, variants or target objects, we\n * coerce everything to an array if it isn't one already\n */\n const definitionList = Array.isArray(prop) ? prop : [prop];\n /**\n * Build an object of all the resolved values. We'll use this in the subsequent\n * animateChanges calls to determine whether a value has changed.\n */\n let resolvedValues = definitionList.reduce(buildResolvedTypeValues(type), {});\n if (activeDelta === false)\n resolvedValues = {};\n /**\n * Now we need to loop through all the keys in the prev prop and this prop,\n * and decide:\n * 1. If the value has changed, and needs animating\n * 2. If it has been removed, and needs adding to the removedKeys set\n * 3. If it has been removed in a higher priority type and needs animating\n * 4. If it hasn't been removed in a higher priority but hasn't changed, and\n * needs adding to the type's protectedKeys list.\n */\n const { prevResolvedValues = {} } = typeState;\n const allKeys = {\n ...prevResolvedValues,\n ...resolvedValues,\n };\n const markToAnimate = (key) => {\n shouldAnimateType = true;\n if (removedKeys.has(key)) {\n handledRemovedValues = true;\n removedKeys.delete(key);\n }\n typeState.needsAnimating[key] = true;\n const motionValue = visualElement.getValue(key);\n if (motionValue)\n motionValue.liveStyle = false;\n };\n for (const key in allKeys) {\n const next = resolvedValues[key];\n const prev = prevResolvedValues[key];\n // If we've already handled this we can just skip ahead\n if (encounteredKeys.hasOwnProperty(key))\n continue;\n /**\n * If the value has changed, we probably want to animate it.\n */\n let valueHasChanged = false;\n if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n valueHasChanged = !shallowCompare(next, prev);\n }\n else {\n valueHasChanged = next !== prev;\n }\n if (valueHasChanged) {\n if (next !== undefined && next !== null) {\n // If next is defined and doesn't equal prev, it needs animating\n markToAnimate(key);\n }\n else {\n // If it's undefined, it's been removed.\n removedKeys.add(key);\n }\n }\n else if (next !== undefined && removedKeys.has(key)) {\n /**\n * If next hasn't changed and it isn't undefined, we want to check if it's\n * been removed by a higher priority\n */\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we add it to the list of protected values\n * to ensure it doesn't get animated.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n /**\n * Update the typeState so next time animateChanges is called we can compare the\n * latest prop and resolvedValues to these.\n */\n typeState.prevProp = prop;\n typeState.prevResolvedValues = resolvedValues;\n /**\n *\n */\n if (typeState.isActive) {\n encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n }\n if (isInitialRender && visualElement.blockInitialAnimation) {\n shouldAnimateType = false;\n }\n /**\n * If this is an inherited prop we want to hard-block animations\n */\n if (shouldAnimateType && (!isInherited || handledRemovedValues)) {\n animations.push(...definitionList.map((animation) => ({\n animation: animation,\n options: { type },\n })));\n }\n }\n /**\n * If there are some removed value that haven't been dealt with,\n * we need to create a new animation that falls back either to the value\n * defined in the style prop, or the last read value.\n */\n if (removedKeys.size) {\n const fallbackAnimation = {};\n removedKeys.forEach((key) => {\n const fallbackTarget = visualElement.getBaseTarget(key);\n const motionValue = visualElement.getValue(key);\n if (motionValue)\n motionValue.liveStyle = true;\n // @ts-expect-error - @mattgperry to figure if we should do something here\n fallbackAnimation[key] = fallbackTarget !== null && fallbackTarget !== void 0 ? fallbackTarget : null;\n });\n animations.push({ animation: fallbackAnimation });\n }\n let shouldAnimate = Boolean(animations.length);\n if (isInitialRender &&\n (props.initial === false || props.initial === props.animate) &&\n !visualElement.manuallyAnimateOnMount) {\n shouldAnimate = false;\n }\n isInitialRender = false;\n return shouldAnimate ? animate(animations) : Promise.resolve();\n }\n /**\n * Change whether a certain animation type is active.\n */\n function setActive(type, isActive) {\n var _a;\n // If the active state hasn't changed, we can safely do nothing here\n if (state[type].isActive === isActive)\n return Promise.resolve();\n // Propagate active change to children\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => { var _a; return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); });\n state[type].isActive = isActive;\n const animations = animateChanges(type);\n for (const key in state) {\n state[key].protectedKeys = {};\n }\n return animations;\n }\n return {\n animateChanges,\n setActive,\n setAnimateFunction,\n getState: () => state,\n reset: () => {\n state = createState();\n isInitialRender = true;\n },\n };\n}\nfunction checkVariantsDidChange(prev, next) {\n if (typeof next === \"string\") {\n return next !== prev;\n }\n else if (Array.isArray(next)) {\n return !shallowCompare(next, prev);\n }\n return false;\n}\nfunction createTypeState(isActive = false) {\n return {\n isActive,\n protectedKeys: {},\n needsAnimating: {},\n prevResolvedValues: {},\n };\n}\nfunction createState() {\n return {\n animate: createTypeState(true),\n whileInView: createTypeState(),\n whileHover: createTypeState(),\n whileTap: createTypeState(),\n whileDrag: createTypeState(),\n whileFocus: createTypeState(),\n exit: createTypeState(),\n };\n}\n\nexport { checkVariantsDidChange, createAnimationState };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\nimport { animateVariant } from './visual-element-variant.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nfunction animateVisualElement(visualElement, definition, options = {}) {\n visualElement.notify(\"AnimationStart\", definition);\n let animation;\n if (Array.isArray(definition)) {\n const animations = definition.map((variant) => animateVariant(visualElement, variant, options));\n animation = Promise.all(animations);\n }\n else if (typeof definition === \"string\") {\n animation = animateVariant(visualElement, definition, options);\n }\n else {\n const resolvedDefinition = typeof definition === \"function\"\n ? resolveVariant(visualElement, definition, options.custom)\n : definition;\n animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n }\n return animation.then(() => {\n frame.postRender(() => {\n visualElement.notify(\"AnimationComplete\", definition);\n });\n });\n}\n\nexport { animateVisualElement };\n","import { Feature } from '../Feature.mjs';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n constructor() {\n super(...arguments);\n this.id = id++;\n }\n update() {\n if (!this.node.presenceContext)\n return;\n const { isPresent, onExitComplete } = this.node.presenceContext;\n const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n if (!this.node.animationState || isPresent === prevIsPresent) {\n return;\n }\n const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent);\n if (onExitComplete && !isPresent) {\n exitAnimation.then(() => onExitComplete(this.id));\n }\n }\n mount() {\n const { register } = this.node.presenceContext || {};\n if (register) {\n this.unmount = register(this.id);\n }\n }\n unmount() { }\n}\n\nexport { ExitAnimationFeature };\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n animation: {\n Feature: AnimationFeature,\n },\n exit: {\n Feature: ExitAnimationFeature,\n },\n};\n\nexport { animations };\n","import { isAnimationControls } from '../../../animation/utils/is-animation-controls.mjs';\nimport { createAnimationState } from '../../../render/utils/animation-state.mjs';\nimport { Feature } from '../Feature.mjs';\n\nclass AnimationFeature extends Feature {\n /**\n * We dynamically generate the AnimationState manager as it contains a reference\n * to the underlying animation library. We only want to load that if we load this,\n * so people can optionally code split it out using the `m` component.\n */\n constructor(node) {\n super(node);\n node.animationState || (node.animationState = createAnimationState(node));\n }\n updateAnimationControlsSubscription() {\n const { animate } = this.node.getProps();\n if (isAnimationControls(animate)) {\n this.unmountControls = animate.subscribe(this.node);\n }\n }\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n mount() {\n this.updateAnimationControlsSubscription();\n }\n update() {\n const { animate } = this.node.getProps();\n const { animate: prevAnimate } = this.node.prevProps || {};\n if (animate !== prevAnimate) {\n this.updateAnimationControlsSubscription();\n }\n }\n unmount() {\n var _a;\n this.node.animationState.reset();\n (_a = this.unmountControls) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n}\n\nexport { AnimationFeature };\n","const distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n // Multi-dimensional\n const xDelta = distance(a.x, b.x);\n const yDelta = distance(a.y, b.y);\n return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\nexport { distance, distance2D };\n","import { extractEventInfo } from '../../events/event-info.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\nimport { isPrimaryPointer } from '../../events/utils/is-primary-pointer.mjs';\nimport { frame, cancelFrame, frameData } from '../../frameloop/frame.mjs';\n\n/**\n * @internal\n */\nclass PanSession {\n constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false } = {}) {\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n /**\n * @internal\n */\n this.contextWindow = window;\n this.updatePoint = () => {\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const info = getPanInfo(this.lastMoveEventInfo, this.history);\n const isPanStarted = this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n const isDistancePastThreshold = distance2D(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n const { point } = info;\n const { timestamp } = frameData;\n this.history.push({ ...point, timestamp });\n const { onStart, onMove } = this.handlers;\n if (!isPanStarted) {\n onStart && onStart(this.lastMoveEvent, info);\n this.startEvent = this.lastMoveEvent;\n }\n onMove && onMove(this.lastMoveEvent, info);\n };\n this.handlePointerMove = (event, info) => {\n this.lastMoveEvent = event;\n this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n // Throttle mouse move event to once per frame\n frame.update(this.updatePoint, true);\n };\n this.handlePointerUp = (event, info) => {\n this.end();\n const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n if (this.dragSnapToOrigin)\n resumeAnimation && resumeAnimation();\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const panInfo = getPanInfo(event.type === \"pointercancel\"\n ? this.lastMoveEventInfo\n : transformPoint(info, this.transformPagePoint), this.history);\n if (this.startEvent && onEnd) {\n onEnd(event, panInfo);\n }\n onSessionEnd && onSessionEnd(event, panInfo);\n };\n // If we have more than one touch, don't start detecting this gesture\n if (!isPrimaryPointer(event))\n return;\n this.dragSnapToOrigin = dragSnapToOrigin;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n this.contextWindow = contextWindow || window;\n const info = extractEventInfo(event);\n const initialInfo = transformPoint(info, this.transformPagePoint);\n const { point } = initialInfo;\n const { timestamp } = frameData;\n this.history = [{ ...point, timestamp }];\n const { onSessionStart } = handlers;\n onSessionStart &&\n onSessionStart(event, getPanInfo(initialInfo, this.history));\n this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n }\n updateHandlers(handlers) {\n this.handlers = handlers;\n }\n end() {\n this.removeListeners && this.removeListeners();\n cancelFrame(this.updatePoint);\n }\n}\nfunction transformPoint(info, transformPagePoint) {\n return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n return {\n point,\n delta: subtractPoint(point, lastDevicePoint(history)),\n offset: subtractPoint(point, startDevicePoint(history)),\n velocity: getVelocity(history, 0.1),\n };\n}\nfunction startDevicePoint(history) {\n return history[0];\n}\nfunction lastDevicePoint(history) {\n return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n if (history.length < 2) {\n return { x: 0, y: 0 };\n }\n let i = history.length - 1;\n let timestampedPoint = null;\n const lastPoint = lastDevicePoint(history);\n while (i >= 0) {\n timestampedPoint = history[i];\n if (lastPoint.timestamp - timestampedPoint.timestamp >\n secondsToMilliseconds(timeDelta)) {\n break;\n }\n i--;\n }\n if (!timestampedPoint) {\n return { x: 0, y: 0 };\n }\n const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n if (time === 0) {\n return { x: 0, y: 0 };\n }\n const currentVelocity = {\n x: (lastPoint.x - timestampedPoint.x) / time,\n y: (lastPoint.y - timestampedPoint.y) / time,\n };\n if (currentVelocity.x === Infinity) {\n currentVelocity.x = 0;\n }\n if (currentVelocity.y === Infinity) {\n currentVelocity.y = 0;\n }\n return currentVelocity;\n}\n\nexport { PanSession };\n","import { mixNumber } from '../../utils/mix/number.mjs';\n\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target = 0, maxDistance = 0.01) {\n return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n delta.origin = origin;\n delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n if (isNear(delta.scale, 1, 0.0001) || isNaN(delta.scale))\n delta.scale = 1;\n delta.translate =\n mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n if (isNear(delta.translate) || isNaN(delta.translate))\n delta.translate = 0;\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined);\n calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n target.min = parent.min + relative.min;\n target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n calcRelativeAxis(target.x, relative.x, parent.x);\n calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n target.min = layout.min - parent.min;\n target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n calcRelativeAxisPosition(target.x, layout.x, parent.x);\n calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { progress } from '../../../utils/progress.mjs';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { mixNumber } from '../../../utils/mix/number.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n if (min !== undefined && point < min) {\n // If we have a min point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(min, point, elastic.min)\n : Math.max(point, min);\n }\n else if (max !== undefined && point > max) {\n // If we have a max point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(max, point, elastic.max)\n : Math.min(point, max);\n }\n return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n return {\n min: min !== undefined ? axis.min + min : undefined,\n max: max !== undefined\n ? axis.max + max - (axis.max - axis.min)\n : undefined,\n };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n return {\n x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n let min = constraintsAxis.min - layoutAxis.min;\n let max = constraintsAxis.max - layoutAxis.max;\n // If the constraints axis is actually smaller than the layout axis then we can\n // flip the constraints\n if (constraintsAxis.max - constraintsAxis.min <\n layoutAxis.max - layoutAxis.min) {\n [min, max] = [max, min];\n }\n return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n return {\n x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n let origin = 0.5;\n const sourceLength = calcLength(source);\n const targetLength = calcLength(target);\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n }\n else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\n return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n const relativeConstraints = {};\n if (constraints.min !== undefined) {\n relativeConstraints.min = constraints.min - layout.min;\n }\n if (constraints.max !== undefined) {\n relativeConstraints.max = constraints.max - layout.min;\n }\n return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n if (dragElastic === false) {\n dragElastic = 0;\n }\n else if (dragElastic === true) {\n dragElastic = defaultElastic;\n }\n return {\n x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n return {\n min: resolvePointElastic(dragElastic, minLabel),\n max: resolvePointElastic(dragElastic, maxLabel),\n };\n}\nfunction resolvePointElastic(dragElastic, label) {\n return typeof dragElastic === \"number\"\n ? dragElastic\n : dragElastic[label] || 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","const createAxisDelta = () => ({\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n});\nconst createDelta = () => ({\n x: createAxisDelta(),\n y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n x: createAxis(),\n y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n if (!transformPoint)\n return point;\n const topLeft = transformPoint({ x: point.left, y: point.top });\n const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","function isIdentityScale(scale) {\n return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n return (!isIdentityScale(scale) ||\n !isIdentityScale(scaleX) ||\n !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n return (hasScale(values) ||\n has2DTranslate(values) ||\n values.z ||\n values.rotate ||\n values.rotateX ||\n values.rotateY ||\n values.skewX ||\n values.skewY);\n}\nfunction has2DTranslate(values) {\n return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n return value && value !== \"0%\";\n}\n\nexport { has2DTranslate, hasScale, hasTransform };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n const distanceFromOrigin = point - originPoint;\n const scaled = scale * distanceFromOrigin;\n return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n const treeLength = treePath.length;\n if (!treeLength)\n return;\n // Reset the treeScale\n treeScale.x = treeScale.y = 1;\n let node;\n let delta;\n for (let i = 0; i < treeLength; i++) {\n node = treePath[i];\n delta = node.projectionDelta;\n /**\n * TODO: Prefer to remove this, but currently we have motion components with\n * display: contents in Framer.\n */\n const instance = node.instance;\n if (instance &&\n instance.style &&\n instance.style.display === \"contents\") {\n continue;\n }\n if (isSharedTransition &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(box, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (delta) {\n // Incoporate each ancestor's scale into a culmulative treeScale for this component\n treeScale.x *= delta.x.scale;\n treeScale.y *= delta.y.scale;\n // Apply each ancestor's calculated delta into this component's recorded layout box\n applyBoxDelta(box, delta);\n }\n if (isSharedTransition && hasTransform(node.latestValues)) {\n transformBox(box, node.latestValues);\n }\n }\n /**\n * Snap tree scale back to 1 if it's within a non-perceivable threshold.\n * This will help reduce useless scales getting rendered.\n */\n treeScale.x = snapToDefault(treeScale.x);\n treeScale.y = snapToDefault(treeScale.y);\n}\nfunction snapToDefault(scale) {\n if (Number.isInteger(scale))\n return scale;\n return scale > 1.0000000000001 || scale < 0.999999999999 ? scale : 1;\n}\nfunction translateAxis(axis, distance) {\n axis.min = axis.min + distance;\n axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, transforms, [key, scaleKey, originKey]) {\n const axisOrigin = transforms[originKey] !== undefined ? transforms[originKey] : 0.5;\n const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(axis, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n transformAxis(box.x, transform, xKeys);\n transformAxis(box.y, transform, yKeys);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n const viewportBox = measureViewportBox(element, transformPagePoint);\n const { scroll } = rootProjectionNode;\n if (scroll) {\n translateAxis(viewportBox.x, scroll.offset.x);\n translateAxis(viewportBox.y, scroll.offset.y);\n }\n return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","// Fixes https://github.com/framer/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from '../../utils/errors.mjs';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { animateMotionValue } from '../../animation/interfaces/motion-value.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: PointerEvent\nclass VisualElementDragControls {\n constructor(visualElement) {\n // This is a reference to the global drag gesture lock, ensuring only one component\n // can \"capture\" the drag of one or both axes.\n // TODO: Look into moving this into pansession?\n this.openGlobalLock = null;\n this.isDragging = false;\n this.currentDirection = null;\n this.originPoint = { x: 0, y: 0 };\n /**\n * The permitted boundaries of travel, in pixels.\n */\n this.constraints = false;\n this.hasMutatedConstraints = false;\n /**\n * The per-axis resolved elastic values.\n */\n this.elastic = createBox();\n this.visualElement = visualElement;\n }\n start(originEvent, { snapToCursor = false } = {}) {\n /**\n * Don't start dragging if this component is exiting\n */\n const { presenceContext } = this.visualElement;\n if (presenceContext && presenceContext.isPresent === false)\n return;\n const onSessionStart = (event) => {\n const { dragSnapToOrigin } = this.getProps();\n // Stop or pause any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n dragSnapToOrigin ? this.pauseAnimation() : this.stopAnimation();\n if (snapToCursor) {\n this.snapToCursor(extractEventInfo(event, \"page\").point);\n }\n };\n const onStart = (event, info) => {\n // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n const { drag, dragPropagation, onDragStart } = this.getProps();\n if (drag && !dragPropagation) {\n if (this.openGlobalLock)\n this.openGlobalLock();\n this.openGlobalLock = getGlobalLock(drag);\n // If we don 't have the lock, don't start dragging\n if (!this.openGlobalLock)\n return;\n }\n this.isDragging = true;\n this.currentDirection = null;\n this.resolveConstraints();\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = true;\n this.visualElement.projection.target = undefined;\n }\n /**\n * Record gesture origin\n */\n eachAxis((axis) => {\n let current = this.getAxisMotionValue(axis).get() || 0;\n /**\n * If the MotionValue is a percentage value convert to px\n */\n if (percent.test(current)) {\n const { projection } = this.visualElement;\n if (projection && projection.layout) {\n const measuredAxis = projection.layout.layoutBox[axis];\n if (measuredAxis) {\n const length = calcLength(measuredAxis);\n current = length * (parseFloat(current) / 100);\n }\n }\n }\n this.originPoint[axis] = current;\n });\n // Fire onDragStart event\n if (onDragStart) {\n frame.postRender(() => onDragStart(event, info));\n }\n const { animationState } = this.visualElement;\n animationState && animationState.setActive(\"whileDrag\", true);\n };\n const onMove = (event, info) => {\n // latestPointerEvent = event\n const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n // If we didn't successfully receive the gesture lock, early return.\n if (!dragPropagation && !this.openGlobalLock)\n return;\n const { offset } = info;\n // Attempt to detect drag direction if directionLock is true\n if (dragDirectionLock && this.currentDirection === null) {\n this.currentDirection = getCurrentDirection(offset);\n // If we've successfully set a direction, notify listener\n if (this.currentDirection !== null) {\n onDirectionLock && onDirectionLock(this.currentDirection);\n }\n return;\n }\n // Update each point with the latest position\n this.updateAxis(\"x\", info.point, offset);\n this.updateAxis(\"y\", info.point, offset);\n /**\n * Ideally we would leave the renderer to fire naturally at the end of\n * this frame but if the element is about to change layout as the result\n * of a re-render we want to ensure the browser can read the latest\n * bounding box to ensure the pointer and element don't fall out of sync.\n */\n this.visualElement.render();\n /**\n * This must fire after the render call as it might trigger a state\n * change which itself might trigger a layout update.\n */\n onDrag && onDrag(event, info);\n };\n const onSessionEnd = (event, info) => this.stop(event, info);\n const resumeAnimation = () => eachAxis((axis) => {\n var _a;\n return this.getAnimationState(axis) === \"paused\" &&\n ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());\n });\n const { dragSnapToOrigin } = this.getProps();\n this.panSession = new PanSession(originEvent, {\n onSessionStart,\n onStart,\n onMove,\n onSessionEnd,\n resumeAnimation,\n }, {\n transformPagePoint: this.visualElement.getTransformPagePoint(),\n dragSnapToOrigin,\n contextWindow: getContextWindow(this.visualElement),\n });\n }\n stop(event, info) {\n const isDragging = this.isDragging;\n this.cancel();\n if (!isDragging)\n return;\n const { velocity } = info;\n this.startAnimation(velocity);\n const { onDragEnd } = this.getProps();\n if (onDragEnd) {\n frame.postRender(() => onDragEnd(event, info));\n }\n }\n cancel() {\n this.isDragging = false;\n const { projection, animationState } = this.visualElement;\n if (projection) {\n projection.isAnimationBlocked = false;\n }\n this.panSession && this.panSession.end();\n this.panSession = undefined;\n const { dragPropagation } = this.getProps();\n if (!dragPropagation && this.openGlobalLock) {\n this.openGlobalLock();\n this.openGlobalLock = null;\n }\n animationState && animationState.setActive(\"whileDrag\", false);\n }\n updateAxis(axis, _point, offset) {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n return;\n const axisValue = this.getAxisMotionValue(axis);\n let next = this.originPoint[axis] + offset[axis];\n // Apply constraints\n if (this.constraints && this.constraints[axis]) {\n next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n }\n axisValue.set(next);\n }\n resolveConstraints() {\n var _a;\n const { dragConstraints, dragElastic } = this.getProps();\n const layout = this.visualElement.projection &&\n !this.visualElement.projection.layout\n ? this.visualElement.projection.measure(false)\n : (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout;\n const prevConstraints = this.constraints;\n if (dragConstraints && isRefObject(dragConstraints)) {\n if (!this.constraints) {\n this.constraints = this.resolveRefConstraints();\n }\n }\n else {\n if (dragConstraints && layout) {\n this.constraints = calcRelativeConstraints(layout.layoutBox, dragConstraints);\n }\n else {\n this.constraints = false;\n }\n }\n this.elastic = resolveDragElastic(dragElastic);\n /**\n * If we're outputting to external MotionValues, we want to rebase the measured constraints\n * from viewport-relative to component-relative.\n */\n if (prevConstraints !== this.constraints &&\n layout &&\n this.constraints &&\n !this.hasMutatedConstraints) {\n eachAxis((axis) => {\n if (this.constraints !== false &&\n this.getAxisMotionValue(axis)) {\n this.constraints[axis] = rebaseAxisConstraints(layout.layoutBox[axis], this.constraints[axis]);\n }\n });\n }\n }\n resolveRefConstraints() {\n const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n if (!constraints || !isRefObject(constraints))\n return false;\n const constraintsElement = constraints.current;\n invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n const { projection } = this.visualElement;\n // TODO\n if (!projection || !projection.layout)\n return false;\n const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n /**\n * If there's an onMeasureDragConstraints listener we call it and\n * if different constraints are returned, set constraints to that\n */\n if (onMeasureDragConstraints) {\n const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n this.hasMutatedConstraints = !!userConstraints;\n if (userConstraints) {\n measuredConstraints = convertBoundingBoxToBox(userConstraints);\n }\n }\n return measuredConstraints;\n }\n startAnimation(velocity) {\n const { drag, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd, } = this.getProps();\n const constraints = this.constraints || {};\n const momentumAnimations = eachAxis((axis) => {\n if (!shouldDrag(axis, drag, this.currentDirection)) {\n return;\n }\n let transition = (constraints && constraints[axis]) || {};\n if (dragSnapToOrigin)\n transition = { min: 0, max: 0 };\n /**\n * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n * of spring animations so we should look into adding a disable spring option to `inertia`.\n * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n * using the value of `dragElastic`.\n */\n const bounceStiffness = dragElastic ? 200 : 1000000;\n const bounceDamping = dragElastic ? 40 : 10000000;\n const inertia = {\n type: \"inertia\",\n velocity: dragMomentum ? velocity[axis] : 0,\n bounceStiffness,\n bounceDamping,\n timeConstant: 750,\n restDelta: 1,\n restSpeed: 10,\n ...dragTransition,\n ...transition,\n };\n // If we're not animating on an externally-provided `MotionValue` we can use the\n // component's animation controls which will handle interactions with whileHover (etc),\n // otherwise we just have to animate the `MotionValue` itself.\n return this.startAxisValueAnimation(axis, inertia);\n });\n // Run all animations and then resolve the new drag constraints.\n return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n }\n startAxisValueAnimation(axis, transition) {\n const axisValue = this.getAxisMotionValue(axis);\n return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement));\n }\n stopAnimation() {\n eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n }\n pauseAnimation() {\n eachAxis((axis) => { var _a; return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.pause(); });\n }\n getAnimationState(axis) {\n var _a;\n return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.state;\n }\n /**\n * Drag works differently depending on which props are provided.\n *\n * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n * - Otherwise, we apply the delta to the x/y motion values.\n */\n getAxisMotionValue(axis) {\n const dragKey = `_drag${axis.toUpperCase()}`;\n const props = this.visualElement.getProps();\n const externalMotionValue = props[dragKey];\n return externalMotionValue\n ? externalMotionValue\n : this.visualElement.getValue(axis, (props.initial\n ? props.initial[axis]\n : undefined) || 0);\n }\n snapToCursor(point) {\n eachAxis((axis) => {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!shouldDrag(axis, drag, this.currentDirection))\n return;\n const { projection } = this.visualElement;\n const axisValue = this.getAxisMotionValue(axis);\n if (projection && projection.layout) {\n const { min, max } = projection.layout.layoutBox[axis];\n axisValue.set(point[axis] - mixNumber(min, max, 0.5));\n }\n });\n }\n /**\n * When the viewport resizes we want to check if the measured constraints\n * have changed and, if so, reposition the element within those new constraints\n * relative to where it was before the resize.\n */\n scalePositionWithinConstraints() {\n if (!this.visualElement.current)\n return;\n const { drag, dragConstraints } = this.getProps();\n const { projection } = this.visualElement;\n if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n return;\n /**\n * Stop current animations as there can be visual glitching if we try to do\n * this mid-animation\n */\n this.stopAnimation();\n /**\n * Record the relative position of the dragged element relative to the\n * constraints box and save as a progress value.\n */\n const boxProgress = { x: 0, y: 0 };\n eachAxis((axis) => {\n const axisValue = this.getAxisMotionValue(axis);\n if (axisValue && this.constraints !== false) {\n const latest = axisValue.get();\n boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n }\n });\n /**\n * Update the layout of this element and resolve the latest drag constraints\n */\n const { transformTemplate } = this.visualElement.getProps();\n this.visualElement.current.style.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n this.resolveConstraints();\n /**\n * For each axis, calculate the current progress of the layout axis\n * within the new constraints.\n */\n eachAxis((axis) => {\n if (!shouldDrag(axis, drag, null))\n return;\n /**\n * Calculate a new transform based on the previous box progress\n */\n const axisValue = this.getAxisMotionValue(axis);\n const { min, max } = this.constraints[axis];\n axisValue.set(mixNumber(min, max, boxProgress[axis]));\n });\n }\n addListeners() {\n if (!this.visualElement.current)\n return;\n elementDragControls.set(this.visualElement, this);\n const element = this.visualElement.current;\n /**\n * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n */\n const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n const { drag, dragListener = true } = this.getProps();\n drag && dragListener && this.start(event);\n });\n const measureDragConstraints = () => {\n const { dragConstraints } = this.getProps();\n if (isRefObject(dragConstraints) && dragConstraints.current) {\n this.constraints = this.resolveRefConstraints();\n }\n };\n const { projection } = this.visualElement;\n const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n if (projection && !projection.layout) {\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n }\n frame.read(measureDragConstraints);\n /**\n * Attach a window resize listener to scale the draggable target within its defined\n * constraints as the window resizes.\n */\n const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n /**\n * If the element's layout changes, calculate the delta and apply that to\n * the drag gesture's origin point.\n */\n const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n if (this.isDragging && hasLayoutChanged) {\n eachAxis((axis) => {\n const motionValue = this.getAxisMotionValue(axis);\n if (!motionValue)\n return;\n this.originPoint[axis] += delta[axis].translate;\n motionValue.set(motionValue.get() + delta[axis].translate);\n });\n this.visualElement.render();\n }\n }));\n return () => {\n stopResizeListener();\n stopPointerListener();\n stopMeasureLayoutListener();\n stopLayoutUpdateListener && stopLayoutUpdateListener();\n };\n }\n getProps() {\n const props = this.visualElement.getProps();\n const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n return {\n ...props,\n drag,\n dragDirectionLock,\n dragPropagation,\n dragConstraints,\n dragElastic,\n dragMomentum,\n };\n }\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n return ((drag === true || drag === direction) &&\n (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n let direction = null;\n if (Math.abs(offset.y) > lockThreshold) {\n direction = \"y\";\n }\n else if (Math.abs(offset.x) > lockThreshold) {\n direction = \"x\";\n }\n return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","import { PanSession } from './PanSession.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n if (handler) {\n frame.postRender(() => handler(event, info));\n }\n};\nclass PanGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removePointerDownListener = noop;\n }\n onPointerDown(pointerDownEvent) {\n this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n transformPagePoint: this.node.getTransformPagePoint(),\n contextWindow: getContextWindow(this.node),\n });\n }\n createPanHandlers() {\n const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n return {\n onSessionStart: asyncHandler(onPanSessionStart),\n onStart: asyncHandler(onPanStart),\n onMove: onPan,\n onEnd: (event, info) => {\n delete this.session;\n if (onPanEnd) {\n frame.postRender(() => onPanEnd(event, info));\n }\n },\n };\n }\n mount() {\n this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n }\n update() {\n this.session && this.session.updateHandlers(this.createPanHandlers());\n }\n unmount() {\n this.removePointerDownListener();\n this.session && this.session.end();\n }\n}\n\nexport { PanGesture };\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 */\nconst 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};\n\nexport { globalProjectionState };\n","import { px } from '../../value/types/numbers/units.mjs';\n\nfunction pixelsToPercent(pixels, axis) {\n if (axis.max === axis.min)\n return 0;\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n correct: (latest, node) => {\n if (!node.target)\n return latest;\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n const x = pixelsToPercent(latest, node.target.x);\n const y = pixelsToPercent(latest, node.target.y);\n return `${x}% ${y}%`;\n },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n const shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n const template = complex.createTransformer(latest);\n const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n const xScale = projectionDelta.x.scale * treeScale.x;\n const yScale = projectionDelta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n const averageScale = mixNumber(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n return template(shadow);\n },\n};\n\nexport { correctBoxShadow };\n","import { jsx } from 'react/jsx-runtime';\nimport { useContext, Component } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\nimport { microtask } from '../../../frameloop/microtask.mjs';\nimport { frame } from '../../../frameloop/frame.mjs';\n\nclass MeasureLayoutWithContext extends Component {\n /**\n * This only mounts projection nodes for components that\n * need measuring, we might want to do it for all components\n * in order to incorporate transforms\n */\n componentDidMount() {\n const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n const { projection } = visualElement;\n addScaleCorrector(defaultScaleCorrectors);\n if (projection) {\n if (layoutGroup.group)\n layoutGroup.group.add(projection);\n if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n switchLayoutGroup.register(projection);\n }\n projection.root.didUpdate();\n projection.addEventListener(\"animationComplete\", () => {\n this.safeToRemove();\n });\n projection.setOptions({\n ...projection.options,\n onExitComplete: () => this.safeToRemove(),\n });\n }\n globalProjectionState.hasEverUpdated = true;\n }\n getSnapshotBeforeUpdate(prevProps) {\n const { layoutDependency, visualElement, drag, isPresent } = this.props;\n const projection = visualElement.projection;\n if (!projection)\n return null;\n /**\n * TODO: We use this data in relegate to determine whether to\n * promote a previous element. There's no guarantee its presence data\n * will have updated by this point - if a bug like this arises it will\n * have to be that we markForRelegation and then find a new lead some other way,\n * perhaps in didUpdate\n */\n projection.isPresent = isPresent;\n if (drag ||\n prevProps.layoutDependency !== layoutDependency ||\n layoutDependency === undefined) {\n projection.willUpdate();\n }\n else {\n this.safeToRemove();\n }\n if (prevProps.isPresent !== isPresent) {\n if (isPresent) {\n projection.promote();\n }\n else if (!projection.relegate()) {\n /**\n * If there's another stack member taking over from this one,\n * it's in charge of the exit animation and therefore should\n * be in charge of the safe to remove. Otherwise we call it here.\n */\n frame.postRender(() => {\n const stack = projection.getStack();\n if (!stack || !stack.members.length) {\n this.safeToRemove();\n }\n });\n }\n }\n return null;\n }\n componentDidUpdate() {\n const { projection } = this.props.visualElement;\n if (projection) {\n projection.root.didUpdate();\n microtask.postRender(() => {\n if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\n }\n });\n }\n }\n componentWillUnmount() {\n const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n const { projection } = visualElement;\n if (projection) {\n projection.scheduleCheckAfterUnmount();\n if (layoutGroup && layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext && promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n }\n safeToRemove() {\n const { safeToRemove } = this.props;\n safeToRemove && safeToRemove();\n }\n render() {\n return null;\n }\n}\nfunction MeasureLayout(props) {\n const [isPresent, safeToRemove] = usePresence();\n const layoutGroup = useContext(LayoutGroupContext);\n return (jsx(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\nconst defaultScaleCorrectors = {\n borderRadius: {\n ...correctBorderRadius,\n applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ],\n },\n borderTopLeftRadius: correctBorderRadius,\n borderTopRightRadius: correctBorderRadius,\n borderBottomLeftRadius: correctBorderRadius,\n borderBottomRightRadius: correctBorderRadius,\n boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","import { useContext, useId, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n const id = useId();\n useEffect(() => register(id), []);\n const safeToRemove = () => onExitComplete && onExitComplete(id);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","import { circOut } from '../../easing/circ.mjs';\nimport { progress } from '../../utils/progress.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { percent, px } from '../../value/types/numbers/units.mjs';\n\nconst borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nconst numBorders = borders.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n if (shouldCrossfadeOpacity) {\n target.opacity = mixNumber(0, \n // TODO Reinstate this if only child\n lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n target.opacityExit = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, lead.opacity !== undefined ? lead.opacity : 1, progress);\n }\n /**\n * Mix border radius\n */\n for (let i = 0; i < numBorders; i++) {\n const borderLabel = `border${borders[i]}Radius`;\n let followRadius = getRadius(follow, borderLabel);\n let leadRadius = getRadius(lead, borderLabel);\n if (followRadius === undefined && leadRadius === undefined)\n continue;\n followRadius || (followRadius = 0);\n leadRadius || (leadRadius = 0);\n const canMix = followRadius === 0 ||\n leadRadius === 0 ||\n isPx(followRadius) === isPx(leadRadius);\n if (canMix) {\n target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n if (percent.test(leadRadius) || percent.test(followRadius)) {\n target[borderLabel] += \"%\";\n }\n }\n else {\n target[borderLabel] = leadRadius;\n }\n }\n /**\n * Mix rotation\n */\n if (follow.rotate || lead.rotate) {\n target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress);\n }\n}\nfunction getRadius(values, radiusName) {\n return values[radiusName] !== undefined\n ? values[radiusName]\n : values.borderRadius;\n}\n// /**\n// * We only want to mix the background color if there's a follow element\n// * that we're not crossfading opacity between. For instance with switch\n// * AnimateSharedLayout animations, this helps the illusion of a continuous\n// * element being animated but also cuts down on the number of paints triggered\n// * for elements where opacity is doing that work for us.\n// */\n// if (\n// !hasFollowElement &&\n// latestLeadValues.backgroundColor &&\n// latestFollowValues.backgroundColor\n// ) {\n// /**\n// * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n// * We could probably create a mixer that runs at the start of the animation but\n// * the idea behind the crossfader is that it runs dynamically between two potentially\n// * changing targets (ie opacity or borderRadius may be animating independently via variants)\n// */\n// leadState.backgroundColor = followState.backgroundColor = mixColor(\n// latestFollowValues.backgroundColor as string,\n// latestLeadValues.backgroundColor as string\n// )(p)\n// }\nconst easeCrossfadeIn = compress(0, 0.5, circOut);\nconst easeCrossfadeOut = compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n return (p) => {\n // Could replace ifs with clamp\n if (p < min)\n return 0;\n if (p > max)\n return 1;\n return easing(progress(min, max, p));\n };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n axis.min = originAxis.min;\n axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n copyAxisInto(box.x, originBox.x);\n copyAxisInto(box.y, originBox.y);\n}\n\nexport { copyAxisInto, copyBoxInto };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n point -= translate;\n point = scalePoint(point, 1 / scale, originPoint);\n if (boxScale !== undefined) {\n point = scalePoint(point, 1 / boxScale, originPoint);\n }\n return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n if (percent.test(translate)) {\n translate = parseFloat(translate);\n const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n translate = relativeProgress - sourceAxis.min;\n }\n if (typeof translate !== \"number\")\n return;\n let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n if (axis === originAxis)\n originPoint -= translate;\n axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined);\n removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","import { calcLength } from './delta-calc.mjs';\n\nfunction isAxisDeltaZero(delta) {\n return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction boxEquals(a, b) {\n return (a.x.min === b.x.min &&\n a.x.max === b.x.max &&\n a.y.min === b.y.min &&\n a.y.max === b.y.max);\n}\nfunction boxEqualsRounded(a, b) {\n return (Math.round(a.x.min) === Math.round(b.x.min) &&\n Math.round(a.x.max) === Math.round(b.x.max) &&\n Math.round(a.y.min) === Math.round(b.y.min) &&\n Math.round(a.y.max) === Math.round(b.y.max));\n}\nfunction aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\n\nexport { aspectRatio, boxEquals, boxEqualsRounded, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nclass NodeStack {\n constructor() {\n this.members = [];\n }\n add(node) {\n addUniqueItem(this.members, node);\n node.scheduleRender();\n }\n remove(node) {\n removeItem(this.members, node);\n if (node === this.prevLead) {\n this.prevLead = undefined;\n }\n if (node === this.lead) {\n const prevLead = this.members[this.members.length - 1];\n if (prevLead) {\n this.promote(prevLead);\n }\n }\n }\n relegate(node) {\n const indexOfNode = this.members.findIndex((member) => node === member);\n if (indexOfNode === 0)\n return false;\n /**\n * Find the next projection node that is present\n */\n let prevLead;\n for (let i = indexOfNode; i >= 0; i--) {\n const member = this.members[i];\n if (member.isPresent !== false) {\n prevLead = member;\n break;\n }\n }\n if (prevLead) {\n this.promote(prevLead);\n return true;\n }\n else {\n return false;\n }\n }\n promote(node, preserveFollowOpacity) {\n const prevLead = this.lead;\n if (node === prevLead)\n return;\n this.prevLead = prevLead;\n this.lead = node;\n node.show();\n if (prevLead) {\n prevLead.instance && prevLead.scheduleRender();\n node.scheduleRender();\n node.resumeFrom = prevLead;\n if (preserveFollowOpacity) {\n node.resumeFrom.preserveOpacity = true;\n }\n if (prevLead.snapshot) {\n node.snapshot = prevLead.snapshot;\n node.snapshot.latestValues =\n prevLead.animationValues || prevLead.latestValues;\n }\n if (node.root && node.root.isUpdating) {\n node.isLayoutDirty = true;\n }\n const { crossfade } = node.options;\n if (crossfade === false) {\n prevLead.hide();\n }\n /**\n * TODO:\n * - Test border radius when previous node was deleted\n * - boxShadow mixing\n * - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n * - Shared between element A in transformed container and element B (transform stays the same or changes)\n * - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n * ---\n * - Crossfade opacity of root nodes\n * - layoutId changes after animation\n * - layoutId changes mid animation\n */\n }\n }\n exitAnimationComplete() {\n this.members.forEach((node) => {\n const { options, resumingFrom } = node;\n options.onExitComplete && options.onExitComplete();\n if (resumingFrom) {\n resumingFrom.options.onExitComplete &&\n resumingFrom.options.onExitComplete();\n }\n });\n }\n scheduleRender() {\n this.members.forEach((node) => {\n node.instance && node.scheduleRender(false);\n });\n }\n /**\n * Clear any leads that have been removed this render to prevent them from being\n * used in future animations and to prevent memory leaks\n */\n removeLeadSnapshot() {\n if (this.lead && this.lead.snapshot) {\n this.lead.snapshot = undefined;\n }\n }\n}\n\nexport { NodeStack };\n","function buildProjectionTransform(delta, treeScale, latestTransform) {\n let transform = \"\";\n /**\n * The translations we use to calculate are always relative to the viewport coordinate space.\n * But when we apply scales, we also scale the coordinate space of an element and its children.\n * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n */\n const xTranslate = delta.x.translate / treeScale.x;\n const yTranslate = delta.y.translate / treeScale.y;\n const zTranslate = (latestTransform === null || latestTransform === void 0 ? void 0 : latestTransform.z) || 0;\n if (xTranslate || yTranslate || zTranslate) {\n transform = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n }\n /**\n * Apply scale correction for the tree transform.\n * This will apply scale to the screen-orientated axes.\n */\n if (treeScale.x !== 1 || treeScale.y !== 1) {\n transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n }\n if (latestTransform) {\n const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY } = latestTransform;\n if (transformPerspective)\n transform = `perspective(${transformPerspective}px) ${transform}`;\n if (rotate)\n transform += `rotate(${rotate}deg) `;\n if (rotateX)\n transform += `rotateX(${rotateX}deg) `;\n if (rotateY)\n transform += `rotateY(${rotateY}deg) `;\n if (skewX)\n transform += `skewX(${skewX}deg) `;\n if (skewY)\n transform += `skewY(${skewY}deg) `;\n }\n /**\n * Apply scale to match the size of the element to the size we want it.\n * This will apply scale to the element-orientated axes.\n */\n const elementScaleX = delta.x.scale * treeScale.x;\n const elementScaleY = delta.y.scale * treeScale.y;\n if (elementScaleX !== 1 || elementScaleY !== 1) {\n transform += `scale(${elementScaleX}, ${elementScaleY})`;\n }\n return transform || \"none\";\n}\n\nexport { buildProjectionTransform };\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n constructor() {\n this.children = [];\n this.isDirty = false;\n }\n add(child) {\n addUniqueItem(this.children, child);\n this.isDirty = true;\n }\n remove(child) {\n removeItem(this.children, child);\n this.isDirty = true;\n }\n forEach(callback) {\n this.isDirty && this.children.sort(compareByDepth);\n this.isDirty = false;\n this.children.forEach(callback);\n }\n}\n\nexport { FlatTree };\n","import { 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, isNear } 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 { boxEqualsRounded, isDeltaZero, aspectRatio, boxEquals } 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, has2DTranslate } from '../utils/has-transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { globalProjectionState } from './state.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { record } from '../../debug/record.mjs';\nimport { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { animateSingleValue } from '../../animation/interfaces/single-value.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { cancelFrame, frameData, steps, frame } from '../../frameloop/frame.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { time } from '../../frameloop/sync-time.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { getOptimisedAppearId } from '../../animation/optimized-appear/get-appear-id.mjs';\n\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nconst hiddenVisibility = { visibility: \"hidden\" };\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 */\nconst animationTarget = 1000;\nlet id = 0;\n/**\n * Use a mutable data object for debug data so as to not create a new\n * object every frame.\n */\nconst projectionFrameData = {\n type: \"projectionFrame\",\n totalNodes: 0,\n resolvedTargetDeltas: 0,\n recalculatedProjection: 0,\n};\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n const { latestValues } = visualElement;\n // Record the distorting transform and then temporarily set it to 0\n if (latestValues[key]) {\n values[key] = latestValues[key];\n visualElement.setStaticValue(key, 0);\n if (sharedAnimationValues) {\n sharedAnimationValues[key] = 0;\n }\n }\n}\nfunction isOptimisedAppearTree(projectionNode) {\n projectionNode.hasCheckedOptimisedAppear = true;\n if (projectionNode.root === projectionNode)\n return false;\n const { visualElement } = projectionNode.options;\n if (!visualElement) {\n return false;\n }\n else if (getOptimisedAppearId(visualElement)) {\n return true;\n }\n else if (projectionNode.parent &&\n !projectionNode.parent.hasCheckedOptimisedAppear) {\n return isOptimisedAppearTree(projectionNode.parent);\n }\n else {\n return false;\n }\n}\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n /**\n * A unique ID generated for every projection node.\n */\n this.id = id++;\n /**\n * An id that represents a unique session instigated by startUpdate.\n */\n this.animationId = 0;\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 * Flag to true if we think the projection calculations for this node needs\n * recalculating as a result of an updated transform or layout animation.\n */\n this.isProjectionDirty = false;\n /**\n * Flag to true if the layout *or* transform has changed. This then gets propagated\n * throughout the projection tree, forcing any element below to recalculate on the next frame.\n */\n this.isSharedProjectionDirty = false;\n /**\n * Flag transform dirty. This gets propagated throughout the whole tree but is only\n * respected by shared nodes.\n */\n this.isTransformDirty = 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 * Store whether this node has been checked for optimised appear animations. As\n * effects fire bottom-up, and we want to look up the tree for appear animations,\n * this makes sure we only check each path once, stopping at nodes that\n * have already been checked.\n */\n this.hasCheckedOptimisedAppear = 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 layoutly\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 this.hasTreeAnimated = false;\n // Note: Currently only running on root node\n this.updateScheduled = false;\n this.scheduleUpdate = () => this.update();\n this.projectionUpdateScheduled = false;\n this.checkUpdateFailed = () => {\n if (this.isUpdating) {\n this.isUpdating = false;\n this.clearAllSnapshots();\n }\n };\n /**\n * This is a multi-step process as shared nodes might be of different depths. Nodes\n * are sorted by depth order, so we need to resolve the entire tree before moving to\n * the next step.\n */\n this.updateProjection = () => {\n this.projectionUpdateScheduled = false;\n /**\n * Reset debug counts. Manually resetting rather than creating a new\n * object each frame.\n */\n projectionFrameData.totalNodes =\n projectionFrameData.resolvedTargetDeltas =\n projectionFrameData.recalculatedProjection =\n 0;\n this.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n this.nodes.forEach(cleanDirtyNodes);\n record(projectionFrameData);\n };\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? [...parent.path, parent] : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n for (let 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 addEventListener(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 notifyListeners(name, ...args) {\n const subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager && subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n /**\n * Lifecycles\n */\n mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n if (this.instance)\n return;\n this.isSVG = isSVGElement(instance);\n this.instance = instance;\n const { layoutId, layout, visualElement } = this.options;\n if (visualElement && !visualElement.current) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n this.parent && this.parent.children.add(this);\n if (isLayoutDirty && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n let cancelDelay;\n const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n attachResizeListener(instance, () => {\n this.root.updateBlockedByResize = true;\n cancelDelay && cancelDelay();\n cancelDelay = delay(resizeUnblockUpdate, 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\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout, }) => {\n if (this.isTreeAnimationBlocked()) {\n this.target = undefined;\n this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n const layoutTransition = this.options.transition ||\n visualElement.getDefaultTransition() ||\n defaultLayoutTransition;\n const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n const targetChanged = !this.targetLayout ||\n !boxEqualsRounded(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 const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n if (this.options.layoutRoot ||\n (this.resumeFrom && this.resumeFrom.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 const animationOptions = {\n ...getValueTransition(layoutTransition, \"layout\"),\n onPlay: onLayoutAnimationStart,\n onComplete: onLayoutAnimationComplete,\n };\n if (visualElement.shouldReduceMotion ||\n this.options.layoutRoot) {\n animationOptions.delay = 0;\n animationOptions.type = false;\n }\n this.startAnimation(animationOptions);\n }\n else {\n /**\n * If the layout hasn't changed and we have an animation that hasn't started yet,\n * finish it immediately. Otherwise it will be animating from a location\n * that was probably never commited to screen and look like a jumpy box.\n */\n if (!hasLayoutChanged) {\n finishAnimation(this);\n }\n if (this.isLead() && this.options.onExitComplete) {\n this.options.onExitComplete();\n }\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n const stack = this.getStack();\n stack && stack.remove(this);\n this.parent && this.parent.children.delete(this);\n this.instance = undefined;\n cancelFrame(this.updateProjection);\n }\n // only on the root\n blockUpdate() {\n this.updateManuallyBlocked = true;\n }\n unblockUpdate() {\n this.updateManuallyBlocked = false;\n }\n isUpdateBlocked() {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n }\n isTreeAnimationBlocked() {\n return (this.isAnimationBlocked ||\n (this.parent && this.parent.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n this.nodes && this.nodes.forEach(resetSkewAndRotation);\n this.animationId++;\n }\n getTransformTemplate() {\n const { visualElement } = this.options;\n return visualElement && visualElement.getProps().transformTemplate;\n }\n willUpdate(shouldNotifyListeners = true) {\n this.root.hasTreeAnimated = true;\n if (this.root.isUpdateBlocked()) {\n this.options.onExitComplete && this.options.onExitComplete();\n return;\n }\n /**\n * If we're running optimised appear animations then these must be\n * cancelled before measuring the DOM. This is so we can measure\n * the true layout of the element rather than the WAAPI animation\n * which will be unaffected by the resetSkewAndRotate step.\n *\n * Note: This is a DOM write. Worst case scenario is this is sandwiched\n * between other snapshot reads which will cause unnecessary style recalculations.\n * This has to happen here though, as we don't yet know which nodes will need\n * snapshots in startUpdate(), but we only want to cancel optimised animations\n * if a layout animation measurement is actually going to be affected by them.\n */\n if (window.HandoffCancelAllAnimations &&\n isOptimisedAppearTree(this)) {\n window.HandoffCancelAllAnimations();\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.shouldResetTransform = true;\n node.updateScroll(\"snapshot\");\n if (node.options.layoutRoot) {\n node.willUpdate(false);\n }\n }\n const { layoutId, layout } = this.options;\n if (layoutId === undefined && !layout)\n return;\n const transformTemplate = this.getTransformTemplate();\n this.prevTransformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n update() {\n this.updateScheduled = false;\n const 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 this.nodes.forEach(clearIsLayoutDirty);\n }\n this.isUpdating = false;\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 /**\n * Manually flush any pending updates. Ideally\n * we could leave this to the following requestAnimationFrame but this seems\n * to leave a flash of incorrectly styled content.\n */\n const now = time.now();\n frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n frameData.timestamp = now;\n frameData.isProcessing = true;\n steps.update.process(frameData);\n steps.preRender.process(frameData);\n steps.render.process(frameData);\n frameData.isProcessing = false;\n }\n didUpdate() {\n if (!this.updateScheduled) {\n this.updateScheduled = true;\n microtask.read(this.scheduleUpdate);\n }\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n if (!this.projectionUpdateScheduled) {\n this.projectionUpdateScheduled = true;\n frame.preRender(this.updateProjection, false, true);\n }\n }\n scheduleCheckAfterUnmount() {\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 frame.postRender(() => {\n if (this.isLayoutDirty) {\n this.root.didUpdate();\n }\n else {\n this.root.checkUpdateFailed();\n }\n });\n }\n /**\n * Update measurements\n */\n updateSnapshot() {\n if (this.snapshot || !this.instance)\n return;\n this.snapshot = this.measure();\n }\n updateLayout() {\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 (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.updateScroll();\n }\n }\n const prevLayout = this.layout;\n this.layout = this.measure(false);\n this.layoutCorrected = createBox();\n this.isLayoutDirty = false;\n this.projectionDelta = undefined;\n this.notifyListeners(\"measure\", this.layout.layoutBox);\n const { visualElement } = this.options;\n visualElement &&\n visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined);\n }\n updateScroll(phase = \"measure\") {\n let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n if (this.scroll &&\n this.scroll.animationId === this.root.animationId &&\n this.scroll.phase === phase) {\n needsMeasurement = false;\n }\n if (needsMeasurement) {\n this.scroll = {\n animationId: this.root.animationId,\n phase,\n isRoot: checkIsScrollRoot(this.instance),\n offset: measureScroll(this.instance),\n };\n }\n }\n resetTransform() {\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty ||\n this.shouldResetTransform ||\n this.options.alwaysMeasureLayout;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplate = this.getTransformTemplate();\n const transformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n const 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 measure(removeTransform = true) {\n const pageBox = this.measurePageBox();\n let layoutBox = this.removeElementScroll(pageBox);\n /**\n * Measurements taken during the pre-render stage\n * still have transforms applied so we remove them\n * via calculation.\n */\n if (removeTransform) {\n layoutBox = this.removeTransform(layoutBox);\n }\n roundBox(layoutBox);\n return {\n animationId: this.root.animationId,\n measuredBox: pageBox,\n layoutBox,\n latestValues: {},\n source: this.id,\n };\n }\n measurePageBox() {\n const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\n // Remove viewport scroll to give page-relative coordinates\n const { scroll } = this.root;\n if (scroll) {\n translateAxis(box.x, scroll.offset.x);\n translateAxis(box.y, scroll.offset.y);\n }\n return box;\n }\n removeElementScroll(box) {\n const 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 (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n const { scroll, options } = node;\n if (node !== this.root && scroll && options.layoutScroll) {\n /**\n * If this is a new scroll root, we want to remove all previous scrolls\n * from the viewport box.\n */\n if (scroll.isRoot) {\n copyBoxInto(boxWithoutScroll, box);\n const { scroll: rootScroll } = this.root;\n /**\n * Undo the application of page scroll that was originally added\n * to the measured bounding box.\n */\n if (rootScroll) {\n translateAxis(boxWithoutScroll.x, -rootScroll.offset.x);\n translateAxis(boxWithoutScroll.y, -rootScroll.offset.y);\n }\n }\n translateAxis(boxWithoutScroll.x, scroll.offset.x);\n translateAxis(boxWithoutScroll.y, scroll.offset.y);\n }\n }\n return boxWithoutScroll;\n }\n applyTransform(box, transformOnly = false) {\n const withTransforms = createBox();\n copyBoxInto(withTransforms, box);\n for (let i = 0; i < this.path.length; i++) {\n const 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.offset.x,\n y: -node.scroll.offset.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 removeTransform(box) {\n const boxWithoutTransform = createBox();\n copyBoxInto(boxWithoutTransform, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!node.instance)\n continue;\n if (!hasTransform(node.latestValues))\n continue;\n hasScale(node.latestValues) && node.updateSnapshot();\n const sourceBox = createBox();\n const nodeBox = node.measurePageBox();\n copyBoxInto(sourceBox, nodeBox);\n removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : undefined, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n }\n setTargetDelta(delta) {\n this.targetDelta = delta;\n this.root.scheduleUpdateProjection();\n this.isProjectionDirty = true;\n }\n setOptions(options) {\n this.options = {\n ...this.options,\n ...options,\n crossfade: options.crossfade !== undefined ? options.crossfade : true,\n };\n }\n clearMeasurements() {\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 forceRelativeParentToResolveTarget() {\n if (!this.relativeParent)\n return;\n /**\n * If the parent target isn't up-to-date, force it to update.\n * This is an unfortunate de-optimisation as it means any updating relative\n * projection will cause all the relative parents to recalculate back\n * up the tree.\n */\n if (this.relativeParent.resolvedRelativeTargetAt !==\n frameData.timestamp) {\n this.relativeParent.resolveTargetDelta(true);\n }\n }\n resolveTargetDelta(forceRecalculation = false) {\n var _a;\n /**\n * Once the dirty status of nodes has been spread through the tree, we also\n * need to check if we have a shared node of a different depth that has itself\n * been dirtied.\n */\n const lead = this.getLead();\n this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n /**\n * We don't use transform for this step of processing so we don't\n * need to check whether any nodes have changed transform.\n */\n const canSkip = !(forceRecalculation ||\n (isShared && this.isSharedProjectionDirty) ||\n this.isProjectionDirty ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) ||\n this.attemptToResolveRelativeTarget);\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\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 this.resolvedRelativeTargetAt = frameData.timestamp;\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 if (!this.targetDelta && !this.relativeTarget) {\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n relativeParent.layout &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\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 this.relativeParent &&\n this.relativeParent.target) {\n this.forceRelativeParentToResolveTarget();\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.layoutBox);\n }\n else {\n copyBoxInto(this.target, this.layout.layoutBox);\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.layoutBox);\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 const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n Boolean(relativeParent.resumingFrom) ===\n Boolean(this.resumingFrom) &&\n !relativeParent.options.layoutScroll &&\n relativeParent.target &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * Increase debug counter for resolved target deltas\n */\n projectionFrameData.resolvedTargetDeltas++;\n }\n getClosestProjectingParent() {\n if (!this.parent ||\n hasScale(this.parent.latestValues) ||\n has2DTranslate(this.parent.latestValues)) {\n return undefined;\n }\n if (this.parent.isProjecting()) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n }\n isProjecting() {\n return Boolean((this.relativeTarget ||\n this.targetDelta ||\n this.options.layoutRoot) &&\n this.layout);\n }\n calcProjection() {\n var _a;\n const lead = this.getLead();\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n let canSkip = true;\n /**\n * If this is a normal layout animation and neither this node nor its nearest projecting\n * is dirty then we can't skip.\n */\n if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n canSkip = false;\n }\n /**\n * If this is a shared layout animation and this node's shared projection is dirty then\n * we can't skip.\n */\n if (isShared &&\n (this.isSharedProjectionDirty || this.isTransformDirty)) {\n canSkip = false;\n }\n /**\n * If we have resolved the target this frame we must recalculate the\n * projection to ensure it visually represents the internal calculations.\n */\n if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n canSkip = false;\n }\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\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((this.parent && this.parent.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 /**\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.layoutBox);\n /**\n * Record previous tree scales before updating.\n */\n const prevTreeScaleX = this.treeScale.x;\n const prevTreeScaleY = this.treeScale.y;\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, isShared);\n /**\n * If this layer needs to perform scale correction but doesn't have a target,\n * use the layout as the target.\n */\n if (lead.layout &&\n !lead.target &&\n (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n lead.target = lead.layout.layoutBox;\n lead.targetWithTransforms = createBox();\n }\n const { target } = lead;\n if (!target) {\n /**\n * If we don't have a target to project into, but we were previously\n * projecting, we want to remove the stored transform and schedule\n * a render to ensure the elements reflect the removed transform.\n */\n if (this.projectionTransform) {\n this.projectionDelta = createDelta();\n this.projectionTransform = \"none\";\n this.scheduleRender();\n }\n return;\n }\n if (!this.projectionDelta) {\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n const 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 * Increase debug counter for recalculated projections\n */\n projectionFrameData.recalculatedProjection++;\n }\n hide() {\n this.isVisible = false;\n // TODO: Schedule render\n }\n show() {\n this.isVisible = true;\n // TODO: Schedule render\n }\n scheduleRender(notifyAll = true) {\n this.options.scheduleRender && this.options.scheduleRender();\n if (notifyAll) {\n const stack = this.getStack();\n stack && stack.scheduleRender();\n }\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n }\n setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n const snapshot = this.snapshot;\n const snapshotLatestValues = snapshot\n ? snapshot.latestValues\n : {};\n const mixedValues = { ...this.latestValues };\n const targetDelta = createDelta();\n if (!this.relativeParent ||\n !this.relativeParent.options.layoutRoot) {\n this.relativeTarget = this.relativeTargetOrigin = undefined;\n }\n this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n const relativeLayout = createBox();\n const snapshotSource = snapshot ? snapshot.source : undefined;\n const layoutSource = this.layout ? this.layout.source : undefined;\n const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n const stack = this.getStack();\n const isOnlyMember = !stack || stack.members.length <= 1;\n const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n let prevRelativeTarget;\n this.mixTargetDelta = (latest) => {\n const 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 this.relativeParent &&\n this.relativeParent.layout) {\n calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n /**\n * If this is an unchanged relative target we can consider the\n * projection not dirty.\n */\n if (prevRelativeTarget &&\n boxEquals(this.relativeTarget, prevRelativeTarget)) {\n this.isProjectionDirty = false;\n }\n if (!prevRelativeTarget)\n prevRelativeTarget = createBox();\n copyBoxInto(prevRelativeTarget, this.relativeTarget);\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 this.animationProgress = progress;\n };\n this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0);\n }\n startAnimation(options) {\n this.notifyListeners(\"animationStart\");\n this.currentAnimation && this.currentAnimation.stop();\n if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n this.resumingFrom.currentAnimation.stop();\n }\n if (this.pendingAnimation) {\n cancelFrame(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 = frame.update(() => {\n globalProjectionState.hasAnimatedSinceResize = true;\n this.currentAnimation = animateSingleValue(0, animationTarget, {\n ...options,\n onUpdate: (latest) => {\n this.mixTargetDelta(latest);\n options.onUpdate && options.onUpdate(latest);\n },\n onComplete: () => {\n options.onComplete && options.onComplete();\n this.completeAnimation();\n },\n });\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = this.currentAnimation;\n }\n this.pendingAnimation = undefined;\n });\n }\n completeAnimation() {\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n const stack = this.getStack();\n stack && stack.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n }\n finishAnimation() {\n if (this.currentAnimation) {\n this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n this.currentAnimation.stop();\n }\n this.completeAnimation();\n }\n applyTransformsToTarget() {\n const lead = this.getLead();\n let { targetWithTransforms, target, layout, latestValues } = lead;\n if (!targetWithTransforms || !target || !layout)\n return;\n /**\n * If we're only animating position, and this element isn't the lead element,\n * then instead of projecting into the lead box we instead want to calculate\n * a new target that aligns the two boxes but maintains the layout shape.\n */\n if (this !== lead &&\n this.layout &&\n layout &&\n shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n target = this.target || createBox();\n const xLength = calcLength(this.layout.layoutBox.x);\n target.x.min = lead.target.x.min;\n target.x.max = target.x.min + xLength;\n const yLength = calcLength(this.layout.layoutBox.y);\n target.y.min = lead.target.y.min;\n target.y.max = target.y.min + yLength;\n }\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 layout layout\n * into the desired bounding box.\n */\n calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n }\n registerSharedNode(layoutId, node) {\n if (!this.sharedNodes.has(layoutId)) {\n this.sharedNodes.set(layoutId, new NodeStack());\n }\n const stack = this.sharedNodes.get(layoutId);\n stack.add(node);\n const config = node.options.initialPromotionConfig;\n node.promote({\n transition: config ? config.transition : undefined,\n preserveFollowOpacity: config && config.shouldPreserveFollowOpacity\n ? config.shouldPreserveFollowOpacity(node)\n : undefined,\n });\n }\n isLead() {\n const stack = this.getStack();\n return stack ? stack.lead === this : true;\n }\n getLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n }\n getPrevLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n }\n getStack() {\n const { layoutId } = this.options;\n if (layoutId)\n return this.root.sharedNodes.get(layoutId);\n }\n promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n const 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 });\n }\n relegate() {\n const stack = this.getStack();\n if (stack) {\n return stack.relegate(this);\n }\n else {\n return false;\n }\n }\n resetSkewAndRotation() {\n const { visualElement } = this.options;\n if (!visualElement)\n return;\n // If there's no detected skew or rotation values, we can early return without a forced render.\n let hasDistortingTransform = false;\n /**\n * An unrolled check for rotation values. Most elements don't have any rotation and\n * skipping the nested loop and new object creation is 50% faster.\n */\n const { latestValues } = visualElement;\n if (latestValues.z ||\n latestValues.rotate ||\n latestValues.rotateX ||\n latestValues.rotateY ||\n latestValues.rotateZ ||\n latestValues.skewX ||\n latestValues.skewY) {\n hasDistortingTransform = true;\n }\n // If there's no distorting values, we don't need to do any more.\n if (!hasDistortingTransform)\n return;\n const resetValues = {};\n if (latestValues.z) {\n resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n }\n // Check the skew and rotate value of all axes and reset to 0\n for (let i = 0; i < transformAxes.length; i++) {\n resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n }\n // Force a render of this element to apply the transform with all skews and rotations\n // set to 0.\n visualElement.render();\n // Put back all the values we reset\n for (const key in resetValues) {\n visualElement.setStaticValue(key, resetValues[key]);\n if (this.animationValues) {\n this.animationValues[key] = resetValues[key];\n }\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 getProjectionStyles(styleProp) {\n var _a, _b;\n if (!this.instance || this.isSVG)\n return undefined;\n if (!this.isVisible) {\n return hiddenVisibility;\n }\n const styles = {\n visibility: \"\",\n };\n const transformTemplate = this.getTransformTemplate();\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n styles.transform = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : \"none\";\n return styles;\n }\n const lead = this.getLead();\n if (!this.projectionDelta || !this.layout || !lead.target) {\n const emptyStyles = {};\n if (this.options.layoutId) {\n emptyStyles.opacity =\n this.latestValues.opacity !== undefined\n ? this.latestValues.opacity\n : 1;\n emptyStyles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : 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 const 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 const { x, y } = this.projectionDelta;\n styles.transformOrigin = `${x.origin * 100}% ${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 ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 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 layout\n * opacity and other components to hidden.\n */\n styles.opacity =\n lead === this\n ? valuesToRender.opacity !== undefined\n ? valuesToRender.opacity\n : \"\"\n : valuesToRender.opacityExit !== undefined\n ? valuesToRender.opacityExit\n : 0;\n }\n /**\n * Apply scale correction\n */\n for (const key in scaleCorrectors) {\n if (valuesToRender[key] === undefined)\n continue;\n const { correct, applyTo } = scaleCorrectors[key];\n /**\n * Only apply scale correction to the value if we have an\n * active projection transform. Otherwise these values become\n * vulnerable to distortion if the element changes size without\n * a corresponding layout animation.\n */\n const corrected = styles.transform === \"none\"\n ? valuesToRender[key]\n : correct(valuesToRender[key], lead);\n if (applyTo) {\n const num = applyTo.length;\n for (let 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 === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\"\n : \"none\";\n }\n return styles;\n }\n clearSnapshot() {\n this.resumeFrom = this.snapshot = undefined;\n }\n // Only run on root\n resetTree() {\n this.root.nodes.forEach((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 };\n}\nfunction updateLayout(node) {\n node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n var _a;\n const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n if (node.isLead() &&\n node.layout &&\n snapshot &&\n node.hasListeners(\"didUpdate\")) {\n const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n const { animationType } = node.options;\n const isShared = snapshot.source !== node.layout.source;\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 (animationType === \"size\") {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(axisSnapshot);\n axisSnapshot.min = layout[axis].min;\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(layout[axis]);\n axisSnapshot.max = axisSnapshot.min + length;\n /**\n * Ensure relative target gets resized and rerendererd\n */\n if (node.relativeTarget && !node.currentAnimation) {\n node.isProjectionDirty = true;\n node.relativeTarget[axis].max =\n node.relativeTarget[axis].min + length;\n }\n });\n }\n const layoutDelta = createDelta();\n calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n const visualDelta = createDelta();\n if (isShared) {\n calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n }\n else {\n calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n }\n const hasLayoutChanged = !isDeltaZero(layoutDelta);\n let hasRelativeTargetChanged = false;\n if (!node.resumeFrom) {\n const 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 (relativeParent && !relativeParent.resumeFrom) {\n const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n if (parentSnapshot && parentLayout) {\n const relativeSnapshot = createBox();\n calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n const relativeLayout = createBox();\n calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);\n if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n hasRelativeTargetChanged = true;\n }\n if (relativeParent.options.layoutRoot) {\n node.relativeTarget = relativeLayout;\n node.relativeTargetOrigin = relativeSnapshot;\n node.relativeParent = relativeParent;\n }\n }\n }\n }\n node.notifyListeners(\"didUpdate\", {\n layout,\n snapshot,\n delta: visualDelta,\n layoutDelta,\n hasLayoutChanged,\n hasRelativeTargetChanged,\n });\n }\n else if (node.isLead()) {\n const { onExitComplete } = node.options;\n onExitComplete && onExitComplete();\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 propagateDirtyNodes(node) {\n /**\n * Increase debug counter for nodes encountered this frame\n */\n projectionFrameData.totalNodes++;\n if (!node.parent)\n return;\n /**\n * If this node isn't projecting, propagate isProjectionDirty. It will have\n * no performance impact but it will allow the next child that *is* projecting\n * but *isn't* dirty to just check its parent to see if *any* ancestor needs\n * correcting.\n */\n if (!node.isProjecting()) {\n node.isProjectionDirty = node.parent.isProjectionDirty;\n }\n /**\n * Propagate isSharedProjectionDirty and isTransformDirty\n * throughout the whole tree. A future revision can take another look at\n * this but for safety we still recalcualte shared nodes.\n */\n node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty ||\n node.parent.isProjectionDirty ||\n node.parent.isSharedProjectionDirty));\n node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n node.isProjectionDirty =\n node.isSharedProjectionDirty =\n node.isTransformDirty =\n false;\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n const { visualElement } = node.options;\n if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n visualElement.notify(\"BeforeLayoutMeasure\");\n }\n node.resetTransform();\n}\nfunction finishAnimation(node) {\n node.finishAnimation();\n node.targetDelta = node.relativeTarget = node.target = undefined;\n node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mixNumber(delta.translate, 0, p);\n output.scale = mixNumber(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mixNumber(from.min, to.min, p);\n output.max = mixNumber(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}\nconst defaultLayoutTransition = {\n duration: 0.45,\n ease: [0.4, 0, 0.1, 1],\n};\nconst userAgentContains = (string) => typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().includes(string);\n/**\n * Measured bounding boxes must be rounded in Safari and\n * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements\n * can appear to jump.\n */\nconst roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\")\n ? Math.round\n : noop;\nfunction roundAxis(axis) {\n // Round to the nearest .5 pixels to support subpixel layouts\n axis.min = roundPoint(axis.min);\n axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n roundAxis(box.x);\n roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n return (animationType === \"position\" ||\n (animationType === \"preserve-aspect\" &&\n !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","function record(data) {\n if (window.MotionDebug) {\n window.MotionDebug.record(data);\n }\n}\n\nexport { record };\n","function isSVGElement(element) {\n return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n const start = time.now();\n const checkElapsed = ({ timestamp }) => {\n const elapsed = timestamp - start;\n if (elapsed >= timeout) {\n cancelFrame(checkElapsed);\n callback(elapsed - timeout);\n }\n };\n frame.read(checkElapsed, true);\n return () => cancelFrame(checkElapsed);\n}\n\nexport { delay };\n","import { animateMotionValue } from './motion-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction animateSingleValue(value, keyframes, options) {\n const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n return motionValue$1.animation;\n}\n\nexport { animateSingleValue };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\n\nconst DocumentProjectionNode = createProjectionNode({\n attachResizeListener: (ref, notify) => addDomEvent(ref, \"resize\", notify),\n measureScroll: () => ({\n x: document.documentElement.scrollLeft || document.body.scrollLeft,\n y: document.documentElement.scrollTop || document.body.scrollTop,\n }),\n checkIsScrollRoot: () => true,\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nconst rootProjectionNode = {\n current: undefined,\n};\nconst HTMLProjectionNode = createProjectionNode({\n measureScroll: (instance) => ({\n x: instance.scrollLeft,\n y: instance.scrollTop,\n }),\n defaultParent: () => {\n if (!rootProjectionNode.current) {\n const documentNode = new DocumentProjectionNode({});\n documentNode.mount(window);\n documentNode.setOptions({ layoutScroll: true });\n rootProjectionNode.current = documentNode;\n }\n return rootProjectionNode.current;\n },\n resetTransform: (instance, value) => {\n instance.style.transform = value !== undefined ? value : \"none\";\n },\n checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\"),\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","import { DragGesture } from '../../gestures/drag/index.mjs';\nimport { PanGesture } from '../../gestures/pan/index.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst drag = {\n pan: {\n Feature: PanGesture,\n },\n drag: {\n Feature: DragGesture,\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { drag };\n","import { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\n\nclass DragGesture extends Feature {\n constructor(node) {\n super(node);\n this.removeGroupControls = noop;\n this.removeListeners = noop;\n this.controls = new VisualElementDragControls(node);\n }\n mount() {\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n const { dragControls } = this.node.getProps();\n if (dragControls) {\n this.removeGroupControls = dragControls.subscribe(this.controls);\n }\n this.removeListeners = this.controls.addListeners() || noop;\n }\n unmount() {\n this.removeGroupControls();\n this.removeListeners();\n }\n}\n\nexport { DragGesture };\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { complex } from '../../../value/types/complex/index.mjs';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n","import { createBox } from '../projection/geometry/models.mjs';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isWillChangeMotionValue } from '../value/use-will-change/is.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { transformProps } from './html/utils/transform.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { isVariantLabel } from './utils/is-variant-label.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { variantProps } from './utils/variant-props.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { KeyframeResolver } from './utils/KeyframesResolver.mjs';\nimport { isNumericalString } from '../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../utils/is-zero-value-string.mjs';\nimport { findValueType } from './dom/value-types/find.mjs';\nimport { complex } from '../value/types/complex/index.mjs';\nimport { getAnimatableNone } from './dom/value-types/animatable-none.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nconst propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\nconst numVariantProps = variantProps.length;\n/**\n * A VisualElement is an imperative abstraction around UI elements such as\n * HTMLElement, SVGElement, Three.Object3D etc.\n */\nclass VisualElement {\n /**\n * This method takes React props and returns found MotionValues. For example, HTML\n * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n *\n * This isn't an abstract method as it needs calling in the constructor, but it is\n * intended to be one.\n */\n scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {\n return {};\n }\n constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, visualState, }, options = {}) {\n this.resolveKeyframes = (keyframes, \n // We use an onComplete callback here rather than a Promise as a Promise\n // resolution is a microtask and we want to retain the ability to force\n // the resolution of keyframes synchronously.\n onComplete, name, value) => {\n return new this.KeyframeResolver(keyframes, onComplete, name, value, this);\n };\n /**\n * A reference to the current underlying Instance, e.g. a HTMLElement\n * or Three.Mesh etc.\n */\n this.current = null;\n /**\n * A set containing references to this VisualElement's children.\n */\n this.children = new Set();\n /**\n * Determine what role this visual element should take in the variant tree.\n */\n this.isVariantNode = false;\n this.isControllingVariants = false;\n /**\n * Decides whether this VisualElement should animate in reduced motion\n * mode.\n *\n * TODO: This is currently set on every individual VisualElement but feels\n * like it could be set globally.\n */\n this.shouldReduceMotion = null;\n /**\n * A map of all motion values attached to this visual element. Motion\n * values are source of truth for any given animated value. A motion\n * value might be provided externally by the component via props.\n */\n this.values = new Map();\n this.KeyframeResolver = KeyframeResolver;\n /**\n * Cleanup functions for active features (hover/tap/exit etc)\n */\n this.features = {};\n /**\n * A map of every subscription that binds the provided or generated\n * motion values onChange listeners to this visual element.\n */\n this.valueSubscriptions = new Map();\n /**\n * A reference to the previously-provided motion values as returned\n * from scrapeMotionValuesFromProps. We use the keys in here to determine\n * if any motion values need to be removed after props are updated.\n */\n this.prevMotionValues = {};\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n /**\n * An object containing an unsubscribe function for each prop event subscription.\n * For example, every \"Update\" event can have multiple subscribers via\n * VisualElement.on(), but only one of those can be defined via the onUpdate prop.\n */\n this.propEventSubscriptions = {};\n this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n this.render = () => {\n if (!this.current)\n return;\n this.triggerBuild();\n this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n };\n this.scheduleRender = () => frame.render(this.render, false, true);\n const { latestValues, renderState } = visualState;\n this.latestValues = latestValues;\n this.baseTarget = { ...latestValues };\n this.initialValues = props.initial ? { ...latestValues } : {};\n this.renderState = renderState;\n this.parent = parent;\n this.props = props;\n this.presenceContext = presenceContext;\n this.depth = parent ? parent.depth + 1 : 0;\n this.reducedMotionConfig = reducedMotionConfig;\n this.options = options;\n this.blockInitialAnimation = Boolean(blockInitialAnimation);\n this.isControllingVariants = isControllingVariants(props);\n this.isVariantNode = isVariantNode(props);\n if (this.isVariantNode) {\n this.variantChildren = new Set();\n }\n this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n /**\n * Any motion values that are provided to the element when created\n * aren't yet bound to the element, as this would technically be impure.\n * However, we iterate through the motion values and set them to the\n * initial values for this component.\n *\n * TODO: This is impure and we should look at changing this to run on mount.\n * Doing so will break some tests but this isn't neccessarily a breaking change,\n * more a reflection of the test.\n */\n const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);\n for (const key in initialMotionValues) {\n const value = initialMotionValues[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key], false);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n }\n }\n }\n mount(instance) {\n this.current = instance;\n visualElementStore.set(instance, this);\n if (this.projection && !this.projection.instance) {\n this.projection.mount(instance);\n }\n if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n this.removeFromVariantTree = this.parent.addVariantChild(this);\n }\n this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n if (!hasReducedMotionListener.current) {\n initPrefersReducedMotion();\n }\n this.shouldReduceMotion =\n this.reducedMotionConfig === \"never\"\n ? false\n : this.reducedMotionConfig === \"always\"\n ? true\n : prefersReducedMotion.current;\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n }\n if (this.parent)\n this.parent.children.add(this);\n this.update(this.props, this.presenceContext);\n }\n unmount() {\n visualElementStore.delete(this.current);\n this.projection && this.projection.unmount();\n cancelFrame(this.notifyUpdate);\n cancelFrame(this.render);\n this.valueSubscriptions.forEach((remove) => remove());\n this.removeFromVariantTree && this.removeFromVariantTree();\n this.parent && this.parent.children.delete(this);\n for (const key in this.events) {\n this.events[key].clear();\n }\n for (const key in this.features) {\n const feature = this.features[key];\n if (feature) {\n feature.unmount();\n feature.isMounted = false;\n }\n }\n this.current = null;\n }\n bindToMotionValue(key, value) {\n const valueIsTransform = transformProps.has(key);\n const removeOnChange = value.on(\"change\", (latestValue) => {\n this.latestValues[key] = latestValue;\n this.props.onUpdate && frame.preRender(this.notifyUpdate);\n if (valueIsTransform && this.projection) {\n this.projection.isTransformDirty = true;\n }\n });\n const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n this.valueSubscriptions.set(key, () => {\n removeOnChange();\n removeOnRenderRequest();\n if (value.owner)\n value.stop();\n });\n }\n sortNodePosition(other) {\n /**\n * If these nodes aren't even of the same type we can't compare their depth.\n */\n if (!this.current ||\n !this.sortInstanceNodePosition ||\n this.type !== other.type) {\n return 0;\n }\n return this.sortInstanceNodePosition(this.current, other.current);\n }\n updateFeatures() {\n let key = \"animation\";\n for (key in featureDefinitions) {\n const featureDefinition = featureDefinitions[key];\n if (!featureDefinition)\n continue;\n const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n /**\n * If this feature is enabled but not active, make a new instance.\n */\n if (!this.features[key] &&\n FeatureConstructor &&\n isEnabled(this.props)) {\n this.features[key] = new FeatureConstructor(this);\n }\n /**\n * If we have a feature, mount or update it.\n */\n if (this.features[key]) {\n const feature = this.features[key];\n if (feature.isMounted) {\n feature.update();\n }\n else {\n feature.mount();\n feature.isMounted = true;\n }\n }\n }\n }\n triggerBuild() {\n this.build(this.renderState, this.latestValues, this.options, this.props);\n }\n /**\n * Measure the current viewport box with or without transforms.\n * Only measures axis-aligned boxes, rotate and skew must be manually\n * removed with a re-render to work.\n */\n measureViewportBox() {\n return this.current\n ? this.measureInstanceViewportBox(this.current, this.props)\n : createBox();\n }\n getStaticValue(key) {\n return this.latestValues[key];\n }\n setStaticValue(key, value) {\n this.latestValues[key] = value;\n }\n /**\n * Update the provided props. Ensure any newly-added motion values are\n * added to our map, old ones removed, and listeners updated.\n */\n update(props, presenceContext) {\n if (props.transformTemplate || this.props.transformTemplate) {\n this.scheduleRender();\n }\n this.prevProps = this.props;\n this.props = props;\n this.prevPresenceContext = this.presenceContext;\n this.presenceContext = presenceContext;\n /**\n * Update prop event handlers ie onAnimationStart, onAnimationComplete\n */\n for (let i = 0; i < propEventHandlers.length; i++) {\n const key = propEventHandlers[i];\n if (this.propEventSubscriptions[key]) {\n this.propEventSubscriptions[key]();\n delete this.propEventSubscriptions[key];\n }\n const listenerName = (\"on\" + key);\n const listener = props[listenerName];\n if (listener) {\n this.propEventSubscriptions[key] = this.on(key, listener);\n }\n }\n this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);\n if (this.handleChildMotionValue) {\n this.handleChildMotionValue();\n }\n }\n getProps() {\n return this.props;\n }\n /**\n * Returns the variant definition with a given name.\n */\n getVariant(name) {\n return this.props.variants ? this.props.variants[name] : undefined;\n }\n /**\n * Returns the defined default transition on this component.\n */\n getDefaultTransition() {\n return this.props.transition;\n }\n getTransformPagePoint() {\n return this.props.transformPagePoint;\n }\n getClosestVariantNode() {\n return this.isVariantNode\n ? this\n : this.parent\n ? this.parent.getClosestVariantNode()\n : undefined;\n }\n getVariantContext(startAtParent = false) {\n if (startAtParent) {\n return this.parent ? this.parent.getVariantContext() : undefined;\n }\n if (!this.isControllingVariants) {\n const context = this.parent\n ? this.parent.getVariantContext() || {}\n : {};\n if (this.props.initial !== undefined) {\n context.initial = this.props.initial;\n }\n return context;\n }\n const context = {};\n for (let i = 0; i < numVariantProps; i++) {\n const name = variantProps[i];\n const prop = this.props[name];\n if (isVariantLabel(prop) || prop === false) {\n context[name] = prop;\n }\n }\n return context;\n }\n /**\n * Add a child visual element to our set of children.\n */\n addVariantChild(child) {\n const closestVariantNode = this.getClosestVariantNode();\n if (closestVariantNode) {\n closestVariantNode.variantChildren &&\n closestVariantNode.variantChildren.add(child);\n return () => closestVariantNode.variantChildren.delete(child);\n }\n }\n /**\n * Add a motion value and bind it to this visual element.\n */\n addValue(key, value) {\n // Remove existing value if it exists\n const existingValue = this.values.get(key);\n if (value !== existingValue) {\n if (existingValue)\n this.removeValue(key);\n this.bindToMotionValue(key, value);\n this.values.set(key, value);\n this.latestValues[key] = value.get();\n }\n }\n /**\n * Remove a motion value and unbind any active subscriptions.\n */\n removeValue(key) {\n this.values.delete(key);\n const unsubscribe = this.valueSubscriptions.get(key);\n if (unsubscribe) {\n unsubscribe();\n this.valueSubscriptions.delete(key);\n }\n delete this.latestValues[key];\n this.removeValueFromRenderState(key, this.renderState);\n }\n /**\n * Check whether we have a motion value for this key\n */\n hasValue(key) {\n return this.values.has(key);\n }\n getValue(key, defaultValue) {\n if (this.props.values && this.props.values[key]) {\n return this.props.values[key];\n }\n let value = this.values.get(key);\n if (value === undefined && defaultValue !== undefined) {\n value = motionValue(defaultValue === null ? undefined : defaultValue, { owner: this });\n this.addValue(key, value);\n }\n return value;\n }\n /**\n * If we're trying to animate to a previously unencountered value,\n * we need to check for it in our state and as a last resort read it\n * directly from the instance (which might have performance implications).\n */\n readValue(key, target) {\n var _a;\n let value = this.latestValues[key] !== undefined || !this.current\n ? this.latestValues[key]\n : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);\n if (value !== undefined && value !== null) {\n if (typeof value === \"string\" &&\n (isNumericalString(value) || isZeroValueString(value))) {\n // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n value = parseFloat(value);\n }\n else if (!findValueType(value) && complex.test(target)) {\n value = getAnimatableNone(key, target);\n }\n this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n }\n return isMotionValue(value) ? value.get() : value;\n }\n /**\n * Set the base target to later animate back to. This is currently\n * only hydrated on creation and when we first read a value.\n */\n setBaseTarget(key, value) {\n this.baseTarget[key] = value;\n }\n /**\n * Find the base target for a value thats been removed from all animation\n * props.\n */\n getBaseTarget(key) {\n var _a;\n const { initial } = this.props;\n let valueFromInitial;\n if (typeof initial === \"string\" || typeof initial === \"object\") {\n const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === void 0 ? void 0 : _a.custom);\n if (variant) {\n valueFromInitial = variant[key];\n }\n }\n /**\n * If this value still exists in the current initial variant, read that.\n */\n if (initial && valueFromInitial !== undefined) {\n return valueFromInitial;\n }\n /**\n * Alternatively, if this VisualElement config has defined a getBaseTarget\n * so we can read the value from an alternative source, try that.\n */\n const target = this.getBaseTargetFromProps(this.props, key);\n if (target !== undefined && !isMotionValue(target))\n return target;\n /**\n * If the value was initially defined on initial, but it doesn't any more,\n * return undefined. Otherwise return the value as initially read from the DOM.\n */\n return this.initialValues[key] !== undefined &&\n valueFromInitial === undefined\n ? undefined\n : this.baseTarget[key];\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n return this.events[eventName].add(callback);\n }\n notify(eventName, ...args) {\n if (this.events[eventName]) {\n this.events[eventName].notify(...args);\n }\n }\n}\n\nexport { VisualElement };\n","import { isBrowser } from '../is-browser.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\nfunction initPrefersReducedMotion() {\n hasReducedMotionListener.current = true;\n if (!isBrowser)\n return;\n if (window.matchMedia) {\n const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n motionMediaQuery.addListener(setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.current = false;\n }\n}\n\nexport { initPrefersReducedMotion };\n","import { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n const { willChange } = next;\n for (const key in next) {\n const nextValue = next[key];\n const prevValue = prev[key];\n if (isMotionValue(nextValue)) {\n /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n /**\n * Check the version of the incoming motion value with this version\n * and warn against mismatches.\n */\n if (process.env.NODE_ENV === \"development\") {\n warnOnce(nextValue.version === \"11.2.14\", `Attempting to mix Framer Motion versions ${nextValue.version} with 11.2.14 may not work as expected.`);\n }\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue, { owner: element }));\n if (isWillChangeMotionValue(willChange)) {\n willChange.remove(key);\n }\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n if (existingValue.liveStyle === true) {\n existingValue.jump(nextValue);\n }\n else if (!existingValue.hasAnimated) {\n existingValue.set(nextValue);\n }\n }\n else {\n const latestValue = element.getStaticValue(key);\n element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));\n }\n }\n }\n // Handle removed values\n for (const key in prev) {\n if (next[key] === undefined)\n element.removeValue(key);\n }\n return next;\n}\n\nexport { updateMotionValuesFromProps };\n","import { VisualElement } from '../VisualElement.mjs';\nimport { DOMKeyframesResolver } from './DOMKeyframesResolver.mjs';\n\nclass DOMVisualElement extends VisualElement {\n constructor() {\n super(...arguments);\n this.KeyframeResolver = DOMKeyframesResolver;\n }\n sortInstanceNodePosition(a, b) {\n /**\n * compareDocumentPosition returns a bitmask, by using the bitwise &\n * we're returning true if 2 in that bitmask is set to true. 2 is set\n * to true if b preceeds a.\n */\n return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n }\n getBaseTargetFromProps(props, key) {\n return props.style\n ? props.style[key]\n : undefined;\n }\n removeValueFromRenderState(key, { vars, style }) {\n delete vars[key];\n delete style[key];\n }\n}\n\nexport { DOMVisualElement };\n","import { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { isCSSVariableName } from '../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './utils/transform.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { measureViewportBox } from '../../projection/utils/measure.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction getComputedStyle(element) {\n return window.getComputedStyle(element);\n}\nclass HTMLVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"html\";\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n else {\n const computedStyle = getComputedStyle(instance);\n const value = (isCSSVariableName(key)\n ? computedStyle.getPropertyValue(key)\n : computedStyle[key]) || 0;\n return typeof value === \"string\" ? value.trim() : value;\n }\n }\n measureInstanceViewportBox(instance, { transformPagePoint }) {\n return measureViewportBox(instance, transformPagePoint);\n }\n build(renderState, latestValues, options, props) {\n buildHTMLStyles(renderState, latestValues, options, props.transformTemplate);\n }\n scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n }\n handleChildMotionValue() {\n if (this.childSubscription) {\n this.childSubscription();\n delete this.childSubscription;\n }\n const { children } = this.props;\n if (isMotionValue(children)) {\n this.childSubscription = children.on(\"change\", (latest) => {\n if (this.current)\n this.current.textContent = `${latest}`;\n });\n }\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderHTML(instance, renderState, styleProp, projection);\n }\n}\n\nexport { HTMLVisualElement, getComputedStyle };\n","import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nclass SVGVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"svg\";\n this.isSVGTag = false;\n }\n getBaseTargetFromProps(props, key) {\n return props[key];\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return instance.getAttribute(key);\n }\n measureInstanceViewportBox() {\n return createBox();\n }\n scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n }\n build(renderState, latestValues, options, props) {\n buildSVGAttrs(renderState, latestValues, options, this.isSVGTag, props.transformTemplate);\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderSVG(instance, renderState, styleProp, projection);\n }\n mount(instance) {\n this.isSVGTag = isSVGTag(instance.tagName);\n super.mount(instance);\n }\n}\n\nexport { SVGVisualElement };\n","import { Fragment } from 'react';\nimport { HTMLVisualElement } from '../html/HTMLVisualElement.mjs';\nimport { SVGVisualElement } from '../svg/SVGVisualElement.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n return isSVGComponent(Component)\n ? new SVGVisualElement(options, { enableHardwareAcceleration: false })\n : new HTMLVisualElement(options, {\n allowProjection: Component !== Fragment,\n enableHardwareAcceleration: true,\n });\n};\n\nexport { createDomVisualElement };\n","import { createMotionComponent } from '../../motion/index.mjs';\nimport { createMotionProxy } from './motion-proxy.mjs';\nimport { createDomMotionConfig } from './utils/create-config.mjs';\nimport { gestureAnimations } from '../../motion/features/gestures.mjs';\nimport { animations } from '../../motion/features/animations.mjs';\nimport { drag } from '../../motion/features/drag.mjs';\nimport { createDomVisualElement } from './create-visual-element.mjs';\nimport { layout } from '../../motion/features/layout.mjs';\n\nconst preloadedFeatures = {\n ...animations,\n ...gestureAnimations,\n ...drag,\n ...layout,\n};\n/**\n * HTML & SVG components, optimised for use with gestures and animation. These can be used as\n * drop-in replacements for any HTML & SVG component, all CSS & SVG properties are supported.\n *\n * @public\n */\nconst motion = /*@__PURE__*/ createMotionProxy((Component, config) => createDomMotionConfig(Component, config, preloadedFeatures, createDomVisualElement));\n/**\n * Create a DOM `motion` component with the provided string. This is primarily intended\n * as a full alternative to `motion` for consumers who have to support environments that don't\n * support `Proxy`.\n *\n * ```javascript\n * import { createDomMotionComponent } from \"framer-motion\"\n *\n * const motion = {\n * div: createDomMotionComponent('div')\n * }\n * ```\n *\n * @public\n */\nfunction createDomMotionComponent(key) {\n return createMotionComponent(createDomMotionConfig(key, { forwardMotionProps: false }, preloadedFeatures, createDomVisualElement));\n}\n\nexport { createDomMotionComponent, motion };\n","import { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\n\nconst layout = {\n layout: {\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { layout };\n","import { 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, { forwardMotionProps = false }, preloadedFeatures, createVisualElement) {\n const baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n return {\n ...baseConfig,\n preloadedFeatures,\n useRender: createUseRender(forwardMotionProps),\n createVisualElement,\n Component,\n };\n}\n\nexport { createDomMotionConfig };\n","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n}\n\nexport { useIsMounted };\n","import { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useRef, useContext, useInsertionEffect } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n });\n const { nonce } = useContext(MotionConfigContext);\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n if (nonce)\n style.nonce = nonce;\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n top: ${top}px !important;\n left: ${left}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));\n}\n\nexport { PopChild };\n","import { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: (childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n },\n register: (childId) => {\n presenceChildren.set(childId, false);\n 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 ? [Math.random()] : [isPresent]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => 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(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = jsx(PopChild, { isPresent: isPresent, children: children });\n }\n return (jsx(PresenceContext.Provider, { value: context, children: children }));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { jsx, Fragment } from 'react/jsx-runtime';\nimport { useContext, useRef, cloneElement, Children, isValidElement } from 'react';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { useIsMounted } from '../../utils/use-is-mounted.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { useUnmountEffect } from '../../utils/use-unmount-effect.mjs';\nimport { invariant } from '../../utils/errors.mjs';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction updateChildLookup(children, allChildren) {\n children.forEach((child) => {\n const key = getChildKey(child);\n allChildren.set(key, child);\n });\n}\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (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 */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\", }) => {\n invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\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 const forceRender = useContext(LayoutGroupContext).forceRender || useForceUpdate()[0];\n const isMounted = useIsMounted();\n // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n const filteredChildren = onlyElements(children);\n let childrenToRender = filteredChildren;\n const exitingChildren = useRef(new Map()).current;\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 const presentChildren = useRef(childrenToRender);\n // A lookup table to quickly reference components by key\n const allChildren = useRef(new Map()).current;\n // If this is the initial component render, just deal with logic surrounding whether\n // we play onMount animations or not.\n const isInitialRender = useRef(true);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n updateChildLookup(filteredChildren, allChildren);\n presentChildren.current = childrenToRender;\n });\n useUnmountEffect(() => {\n isInitialRender.current = true;\n allChildren.clear();\n exitingChildren.clear();\n });\n if (isInitialRender.current) {\n return (jsx(Fragment, { children: childrenToRender.map((child) => (jsx(PresenceChild, { isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout, mode: mode, children: child }, getChildKey(child)))) }));\n }\n // If this is a subsequent render, deal with entering and exiting children\n childrenToRender = [...childrenToRender];\n // Diff the keys of the currently-present and target children to update our\n // exiting list.\n const presentKeys = presentChildren.current.map(getChildKey);\n const targetKeys = filteredChildren.map(getChildKey);\n // Diff the present children with our target children and mark those that are exiting\n const numPresent = presentKeys.length;\n for (let i = 0; i < numPresent; i++) {\n const key = presentKeys[i];\n if (targetKeys.indexOf(key) === -1 && !exitingChildren.has(key)) {\n exitingChildren.set(key, undefined);\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 (mode === \"wait\" && exitingChildren.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 exitingChildren.forEach((component, key) => {\n // If this component is actually entering again, early return\n if (targetKeys.indexOf(key) !== -1)\n return;\n const child = allChildren.get(key);\n if (!child)\n return;\n const insertionIndex = presentKeys.indexOf(key);\n let exitingComponent = component;\n if (!exitingComponent) {\n const onExit = () => {\n // clean up the exiting children map\n exitingChildren.delete(key);\n // compute the keys of children that were rendered once but are no longer present\n // this could happen in case of too many fast consequent renderings\n // @link https://github.com/framer/motion/issues/2023\n const leftOverKeys = Array.from(allChildren.keys()).filter((childKey) => !targetKeys.includes(childKey));\n // clean up the all children map\n leftOverKeys.forEach((leftOverKey) => allChildren.delete(leftOverKey));\n // make sure to render only the children that are actually visible\n presentChildren.current = filteredChildren.filter((presentChild) => {\n const presentChildKey = getChildKey(presentChild);\n return (\n // filter out the node exiting\n presentChildKey === key ||\n // filter out the leftover children\n leftOverKeys.includes(presentChildKey));\n });\n // Defer re-rendering until all exiting children have indeed left\n if (!exitingChildren.size) {\n if (isMounted.current === false)\n return;\n forceRender();\n onExitComplete && onExitComplete();\n }\n };\n exitingComponent = (jsx(PresenceChild, { isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, children: child }, getChildKey(child)));\n exitingChildren.set(key, exitingComponent);\n }\n childrenToRender.splice(insertionIndex, 0, exitingComponent);\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((child) => {\n const key = child.key;\n return exitingChildren.has(key) ? (child) : (jsx(PresenceChild, { isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode, children: child }, getChildKey(child)));\n });\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n childrenToRender.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n return (jsx(Fragment, { children: exitingChildren.size\n ? childrenToRender\n : childrenToRender.map((child) => cloneElement(child)) }));\n};\n\nexport { AnimatePresence };\n","import { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction useForceUpdate() {\n const isMounted = useIsMounted();\n const [forcedRenderCount, setForcedRenderCount] = useState(0);\n const forceRender = useCallback(() => {\n isMounted.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 const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\n","import React, { useState } from \"react\";\nimport Lodash, { isEmpty } from \"lodash\";\n// components\n// enums\nimport { EViewType } from \"cms/enums/EViewType\";\n// types\nimport { TRMDRAccordion } from \"../type\";\n//\nimport cn from 'classnames';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport RenderText from \"../../RenderText\";\n\n\nfunction heightCollapse() {\n return {\n from: {\n opacity: 0,\n height: 0,\n transition: {\n ease: [0.04, 0.62, 0.23, 0.98],\n },\n },\n to: {\n opacity: 1,\n height: \"auto\",\n transition: {\n ease: [0.04, 0.62, 0.23, 0.98],\n },\n },\n };\n}\n\n\nfunction Item({\n i,\n expanded,\n setExpanded,\n title,\n content,\n}: any) {\n\n const isOpen = i === expanded;\n\n return (\n \n setExpanded(isOpen ? false : i)}\n className='cursor-pointer flex items-center justify-between transition-colors py-5 md:py-6 px-6 md:px-8 lg:px-10'\n >\n \n {title}\n \n
\n
\n \n
\n \n\n \n {isOpen && (\n \n \n {content}\n
\n \n )}\n \n
\n );\n};\n\nconst RMDRAccordion01 = ( props:TRMDRAccordion ) => {\n console.log(\"RMDRAccordion01.rendered\", props);\n\n const [expanded, setExpanded] = useState(0);\n\n if ( props.languageVersion && !isEmpty(props.languageVersion) && props.languageVersions && !isEmpty(props.languageVersions) && props.languageVersion.viewType === EViewType.ACCORDION ) {\n\n let payloadChild = props.languageVersions.filter((item) => item.parentId === props.languageVersion?.id);\n payloadChild = Lodash.orderBy(payloadChild, ['order'],['asc']);\n\n if ( !isEmpty(payloadChild) ) {\n return (\n
\n {\n payloadChild?.map((item, index) => (\n }\n expanded={expanded}\n setExpanded={setExpanded}\n />\n ))}\n
\n );\n } \n\n }\n\n return null;\n}\n\nconst Component = React.memo(RMDRAccordion01, ( prevProps:TRMDRAccordion, nextProps:TRMDRAccordion ) => {\n console.log(\"RMDRAccordion01.memo\", { prevProps, nextProps });\n\n return !( \n prevProps.isLoading !== nextProps.isLoading\n || prevProps.languageVersion !== nextProps.languageVersion\n )\n});\n\nexport default Component;","import React from \"react\";\nimport Lodash, { isEmpty } from \"lodash\";\n// types\nimport { TRMDRTab } from \"../type\";\nimport { Tab, TabGroup, TabList, TabPanel, TabPanels } from '@headlessui/react'\nimport RenderText from \"../../RenderText\";\nimport { EViewType } from \"cms/enums/EViewType\";\n\n\nconst RMDRTab01 = ( props:TRMDRTab ) => {\n\n if ( props.languageVersion && !isEmpty(props.languageVersion) && props.languageVersion?.viewType === EViewType.TAB ) {\n let payloadChild = props.languageVersions?.filter((item) => item.parentId === props.languageVersion?.id);\n payloadChild = Lodash.orderBy(payloadChild, ['order'],['asc']);\n\n if ( payloadChild && !isEmpty(payloadChild) ) {\n return (\n
\n \n \n {\n payloadChild.map((item) => (\n \n selected ? 'tab-li-selected' : 'tab-li'\n }\n >\n {item.name}\n \n ))\n }\n \n\n \n {\n payloadChild.map((item) => (\n \n \n \n ))\n }\n \n \n
\n );\n }\n }\n\n return null;\n \n}\n\nconst Component = React.memo(RMDRTab01, (prevProps:TRMDRTab, nextProps:TRMDRTab) => {\n console.log(\"RMDRTab01.memo\", { prevProps, nextProps });\n\n return !( \n prevProps.isLoading !== nextProps.isLoading \n || prevProps.languageVersion !== nextProps.languageVersion\n ) \n});\n\nexport default Component;\n","import React from 'react';\nimport { isEmpty, orderBy } from \"lodash\";\n// components\nimport RMDRTextContent from \"components/RMDRTextContent\";\nimport RMDRAccordion01 from \"components/RMDRAccordions/components/RMDRAccordion01\";\nimport RMDRTab01 from \"components/RMDRTabs/components/RMDRTab01\";\n// enums\nimport { EView } from 'cms/enums/EView';\nimport { EContentType } from 'cms/enums/EContentType';\n// interfaces\nimport ILanguageVersionDetail from \"cms/interfaces/ILanguageVersionDetail\"\nimport ILanguageVersionList from \"cms/interfaces/ILanguageVersionList\"\n\ntype TContentRenderer = {\n \n languageVersions?: ILanguageVersionList[] | ILanguageVersionDetail[];\n\n showNameField?:boolean;\n\n titleClassName?:string;\n contentClassName?:string;\n\n}\n\nfunction ContentRenderer(props: TContentRenderer) {\n\n if ( props.languageVersions && !isEmpty(props.languageVersions) ) {\n\n let parentLanguageVersions = props.languageVersions.filter((item) => item.parentId === null && item.view === EView.INNER && item.contentType === EContentType.DEFAULT);\n parentLanguageVersions = orderBy(parentLanguageVersions, ['order'],['asc']);\n\n return (\n <>\n {\n parentLanguageVersions.map(\n (item) => <>\n \n \n \n \n )\n }\n \n )\n\n }\n\n return null;\n\n}\n\nContentRenderer.defaultProps = {\n\n showNameField: false,\n\n}\n\nexport default ContentRenderer;\nexport type {\n TContentRenderer\n};\n","import React, { useEffect } from \"react\";\nimport { connect, ConnectedProps } from \"react-redux\";\n// actions\nimport CoreAction from \"core/actions/common/CoreAction\";\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\nimport { Dispatch } from \"@reduxjs/toolkit\";\nimport { TINNRLayout } from \"../type\";\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\nimport { EView } from \"cms/enums/EView\";\nimport { EViewType } from \"cms/enums/EViewType\";\nimport { EContentType } from \"cms/enums/EContentType\";\nimport ILanguageVersionDetail from \"cms/interfaces/ILanguageVersionDetail\";\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\nimport ContentHeaderRow from \"components/ContentHeaderRow\";\nimport ContentRenderer from \"components/ContentRenderer\";\nimport { EResourceType } from \"cms/enums/EResourceType\";\n\n\nfunction mapStateToProps ( state: any ) {\n console.log(\"INNR001.mapStateToProps: \", state);\n\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\n\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\n\n return {\n\n webApplicationLanguage,\n webApplicationLanguageCode,\n webApplicationLanguageISOCode,\n\n siteSettingDetailPayload,\n\n }\n}\n\nfunction mapDispatchToProps ( dispatch:Dispatch ) {\n console.log(\"INNR001.mapDispatchToProps\");\n\n const coreAction = new CoreAction(dispatch);\n\n return {\n // others\n _hideLoader: () => {\n coreAction.hideLoader()\n },\n\n _showLoader: () => {\n coreAction.showLoader()\n },\n\n _clean: () => {\n\n }\n }\n}\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\n\n/* types */\ntype PropsFromRedux = ConnectedProps\n\n\n/* component */\nfunction INNR001Loader () {\n\n return (\n <>\n )\n\n}\n\nfunction INNR001 ( props:TINNRLayout ) {\n console.log(\"INNR001.rendered: \", props);\n\n const languageVersion = LanguageVersionSelector({\n languageVersions: props.contentDetailPayload.languageVersions,\n filters: [\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\n ],\n type: \"find\"\n });\n\n useEffect(\n () => {\n\n setTimeout(() => { props._hideLoader(); }, 100);\n\n return function clenup() {\n props._showLoader();\n }\n\n }, []\n )\n\n return (\n <>\n \n\n
\n
\n \n
\n
\n \n )\n \n}\n\nconst Component = React.memo(INNR001, ( prevProps: TINNRLayout, nextProps: TINNRLayout ) => {\n return true;\n});\n\nexport default connector(Component);","/*!\n * lightgallery | 2.7.2 | September 20th 2023\n * http://www.lightgalleryjs.com/\n * Copyright (c) 2020 Sachin Neravath;\n * @license GPLv3\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __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\nfunction __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}\n\n/**\r\n * List of lightGallery events\r\n * All events should be documented here\r\n * Below interfaces are used to build the website documentations\r\n * */\r\nvar lGEvents = {\r\n afterAppendSlide: 'lgAfterAppendSlide',\r\n init: 'lgInit',\r\n hasVideo: 'lgHasVideo',\r\n containerResize: 'lgContainerResize',\r\n updateSlides: 'lgUpdateSlides',\r\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\r\n beforeOpen: 'lgBeforeOpen',\r\n afterOpen: 'lgAfterOpen',\r\n slideItemLoad: 'lgSlideItemLoad',\r\n beforeSlide: 'lgBeforeSlide',\r\n afterSlide: 'lgAfterSlide',\r\n posterClick: 'lgPosterClick',\r\n dragStart: 'lgDragStart',\r\n dragMove: 'lgDragMove',\r\n dragEnd: 'lgDragEnd',\r\n beforeNextSlide: 'lgBeforeNextSlide',\r\n beforePrevSlide: 'lgBeforePrevSlide',\r\n beforeClose: 'lgBeforeClose',\r\n afterClose: 'lgAfterClose',\r\n rotateLeft: 'lgRotateLeft',\r\n rotateRight: 'lgRotateRight',\r\n flipHorizontal: 'lgFlipHorizontal',\r\n flipVertical: 'lgFlipVertical',\r\n autoplay: 'lgAutoplay',\r\n autoplayStart: 'lgAutoplayStart',\r\n autoplayStop: 'lgAutoplayStop',\r\n};\n\nvar lightGalleryCoreSettings = {\r\n mode: 'lg-slide',\r\n easing: 'ease',\r\n speed: 400,\r\n licenseKey: '0000-0000-000-0000',\r\n height: '100%',\r\n width: '100%',\r\n addClass: '',\r\n startClass: 'lg-start-zoom',\r\n backdropDuration: 300,\r\n container: '',\r\n startAnimationDuration: 400,\r\n zoomFromOrigin: true,\r\n hideBarsDelay: 0,\r\n showBarsAfter: 10000,\r\n slideDelay: 0,\r\n supportLegacyBrowser: true,\r\n allowMediaOverlap: false,\r\n videoMaxSize: '1280-720',\r\n loadYouTubePoster: true,\r\n defaultCaptionHeight: 0,\r\n ariaLabelledby: '',\r\n ariaDescribedby: '',\r\n resetScrollPosition: true,\r\n hideScrollbar: false,\r\n closable: true,\r\n swipeToClose: true,\r\n closeOnTap: true,\r\n showCloseIcon: true,\r\n showMaximizeIcon: false,\r\n loop: true,\r\n escKey: true,\r\n keyPress: true,\r\n trapFocus: true,\r\n controls: true,\r\n slideEndAnimation: true,\r\n hideControlOnEnd: false,\r\n mousewheel: false,\r\n getCaptionFromTitleOrAlt: true,\r\n appendSubHtmlTo: '.lg-sub-html',\r\n subHtmlSelectorRelative: false,\r\n preload: 2,\r\n numberOfSlideItemsInDom: 10,\r\n selector: '',\r\n selectWithin: '',\r\n nextHtml: '',\r\n prevHtml: '',\r\n index: 0,\r\n iframeWidth: '100%',\r\n iframeHeight: '100%',\r\n iframeMaxWidth: '100%',\r\n iframeMaxHeight: '100%',\r\n download: true,\r\n counter: true,\r\n appendCounterTo: '.lg-toolbar',\r\n swipeThreshold: 50,\r\n enableSwipe: true,\r\n enableDrag: true,\r\n dynamic: false,\r\n dynamicEl: [],\r\n extraProps: [],\r\n exThumbImage: '',\r\n isMobile: undefined,\r\n mobileSettings: {\r\n controls: false,\r\n showCloseIcon: false,\r\n download: false,\r\n },\r\n plugins: [],\r\n strings: {\r\n closeGallery: 'Close gallery',\r\n toggleMaximize: 'Toggle maximize',\r\n previousSlide: 'Previous slide',\r\n nextSlide: 'Next slide',\r\n download: 'Download',\r\n playVideo: 'Play video',\r\n mediaLoadingFailed: 'Oops... Failed to load content...',\r\n },\r\n};\n\nfunction initLgPolyfills() {\r\n (function () {\r\n if (typeof window.CustomEvent === 'function')\r\n return false;\r\n function CustomEvent(event, params) {\r\n params = params || {\r\n bubbles: false,\r\n cancelable: false,\r\n detail: null,\r\n };\r\n var evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\r\n return evt;\r\n }\r\n window.CustomEvent = CustomEvent;\r\n })();\r\n (function () {\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches =\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector;\r\n }\r\n })();\r\n}\r\nvar lgQuery = /** @class */ (function () {\r\n function lgQuery(selector) {\r\n this.cssVenderPrefixes = [\r\n 'TransitionDuration',\r\n 'TransitionTimingFunction',\r\n 'Transform',\r\n 'Transition',\r\n ];\r\n this.selector = this._getSelector(selector);\r\n this.firstElement = this._getFirstEl();\r\n return this;\r\n }\r\n lgQuery.generateUUID = function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n };\r\n lgQuery.prototype._getSelector = function (selector, context) {\r\n if (context === void 0) { context = document; }\r\n if (typeof selector !== 'string') {\r\n return selector;\r\n }\r\n context = context || document;\r\n var fl = selector.substring(0, 1);\r\n if (fl === '#') {\r\n return context.querySelector(selector);\r\n }\r\n else {\r\n return context.querySelectorAll(selector);\r\n }\r\n };\r\n lgQuery.prototype._each = function (func) {\r\n if (!this.selector) {\r\n return this;\r\n }\r\n if (this.selector.length !== undefined) {\r\n [].forEach.call(this.selector, func);\r\n }\r\n else {\r\n func(this.selector, 0);\r\n }\r\n return this;\r\n };\r\n lgQuery.prototype._setCssVendorPrefix = function (el, cssProperty, value) {\r\n // prettier-ignore\r\n var property = cssProperty.replace(/-([a-z])/gi, function (s, group1) {\r\n return group1.toUpperCase();\r\n });\r\n if (this.cssVenderPrefixes.indexOf(property) !== -1) {\r\n el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;\r\n el.style['webkit' + property] = value;\r\n el.style['moz' + property] = value;\r\n el.style['ms' + property] = value;\r\n el.style['o' + property] = value;\r\n }\r\n else {\r\n el.style[property] = value;\r\n }\r\n };\r\n lgQuery.prototype._getFirstEl = function () {\r\n if (this.selector && this.selector.length !== undefined) {\r\n return this.selector[0];\r\n }\r\n else {\r\n return this.selector;\r\n }\r\n };\r\n lgQuery.prototype.isEventMatched = function (event, eventName) {\r\n var eventNamespace = eventName.split('.');\r\n return event\r\n .split('.')\r\n .filter(function (e) { return e; })\r\n .every(function (e) {\r\n return eventNamespace.indexOf(e) !== -1;\r\n });\r\n };\r\n lgQuery.prototype.attr = function (attr, value) {\r\n if (value === undefined) {\r\n if (!this.firstElement) {\r\n return '';\r\n }\r\n return this.firstElement.getAttribute(attr);\r\n }\r\n this._each(function (el) {\r\n el.setAttribute(attr, value);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.find = function (selector) {\r\n return $LG(this._getSelector(selector, this.selector));\r\n };\r\n lgQuery.prototype.first = function () {\r\n if (this.selector && this.selector.length !== undefined) {\r\n return $LG(this.selector[0]);\r\n }\r\n else {\r\n return $LG(this.selector);\r\n }\r\n };\r\n lgQuery.prototype.eq = function (index) {\r\n return $LG(this.selector[index]);\r\n };\r\n lgQuery.prototype.parent = function () {\r\n return $LG(this.selector.parentElement);\r\n };\r\n lgQuery.prototype.get = function () {\r\n return this._getFirstEl();\r\n };\r\n lgQuery.prototype.removeAttr = function (attributes) {\r\n var attrs = attributes.split(' ');\r\n this._each(function (el) {\r\n attrs.forEach(function (attr) { return el.removeAttribute(attr); });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.wrap = function (className) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n var wrapper = document.createElement('div');\r\n wrapper.className = className;\r\n this.firstElement.parentNode.insertBefore(wrapper, this.firstElement);\r\n this.firstElement.parentNode.removeChild(this.firstElement);\r\n wrapper.appendChild(this.firstElement);\r\n return this;\r\n };\r\n lgQuery.prototype.addClass = function (classNames) {\r\n if (classNames === void 0) { classNames = ''; }\r\n this._each(function (el) {\r\n // IE doesn't support multiple arguments\r\n classNames.split(' ').forEach(function (className) {\r\n if (className) {\r\n el.classList.add(className);\r\n }\r\n });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.removeClass = function (classNames) {\r\n this._each(function (el) {\r\n // IE doesn't support multiple arguments\r\n classNames.split(' ').forEach(function (className) {\r\n if (className) {\r\n el.classList.remove(className);\r\n }\r\n });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.hasClass = function (className) {\r\n if (!this.firstElement) {\r\n return false;\r\n }\r\n return this.firstElement.classList.contains(className);\r\n };\r\n lgQuery.prototype.hasAttribute = function (attribute) {\r\n if (!this.firstElement) {\r\n return false;\r\n }\r\n return this.firstElement.hasAttribute(attribute);\r\n };\r\n lgQuery.prototype.toggleClass = function (className) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n if (this.hasClass(className)) {\r\n this.removeClass(className);\r\n }\r\n else {\r\n this.addClass(className);\r\n }\r\n return this;\r\n };\r\n lgQuery.prototype.css = function (property, value) {\r\n var _this = this;\r\n this._each(function (el) {\r\n _this._setCssVendorPrefix(el, property, value);\r\n });\r\n return this;\r\n };\r\n // Need to pass separate namespaces for separate elements\r\n lgQuery.prototype.on = function (events, listener) {\r\n var _this = this;\r\n if (!this.selector) {\r\n return this;\r\n }\r\n events.split(' ').forEach(function (event) {\r\n if (!Array.isArray(lgQuery.eventListeners[event])) {\r\n lgQuery.eventListeners[event] = [];\r\n }\r\n lgQuery.eventListeners[event].push(listener);\r\n _this.selector.addEventListener(event.split('.')[0], listener);\r\n });\r\n return this;\r\n };\r\n // @todo - test this\r\n lgQuery.prototype.once = function (event, listener) {\r\n var _this = this;\r\n this.on(event, function () {\r\n _this.off(event);\r\n listener(event);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.off = function (event) {\r\n var _this = this;\r\n if (!this.selector) {\r\n return this;\r\n }\r\n Object.keys(lgQuery.eventListeners).forEach(function (eventName) {\r\n if (_this.isEventMatched(event, eventName)) {\r\n lgQuery.eventListeners[eventName].forEach(function (listener) {\r\n _this.selector.removeEventListener(eventName.split('.')[0], listener);\r\n });\r\n lgQuery.eventListeners[eventName] = [];\r\n }\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.trigger = function (event, detail) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n var customEvent = new CustomEvent(event.split('.')[0], {\r\n detail: detail || null,\r\n });\r\n this.firstElement.dispatchEvent(customEvent);\r\n return this;\r\n };\r\n // Does not support IE\r\n lgQuery.prototype.load = function (url) {\r\n var _this = this;\r\n fetch(url)\r\n .then(function (res) { return res.text(); })\r\n .then(function (html) {\r\n _this.selector.innerHTML = html;\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.html = function (html) {\r\n if (html === undefined) {\r\n if (!this.firstElement) {\r\n return '';\r\n }\r\n return this.firstElement.innerHTML;\r\n }\r\n this._each(function (el) {\r\n el.innerHTML = html;\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.append = function (html) {\r\n this._each(function (el) {\r\n if (typeof html === 'string') {\r\n el.insertAdjacentHTML('beforeend', html);\r\n }\r\n else {\r\n el.appendChild(html);\r\n }\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.prepend = function (html) {\r\n this._each(function (el) {\r\n el.insertAdjacentHTML('afterbegin', html);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.remove = function () {\r\n this._each(function (el) {\r\n el.parentNode.removeChild(el);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.empty = function () {\r\n this._each(function (el) {\r\n el.innerHTML = '';\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.scrollTop = function (scrollTop) {\r\n if (scrollTop !== undefined) {\r\n document.body.scrollTop = scrollTop;\r\n document.documentElement.scrollTop = scrollTop;\r\n return this;\r\n }\r\n else {\r\n return (window.pageYOffset ||\r\n document.documentElement.scrollTop ||\r\n document.body.scrollTop ||\r\n 0);\r\n }\r\n };\r\n lgQuery.prototype.scrollLeft = function (scrollLeft) {\r\n if (scrollLeft !== undefined) {\r\n document.body.scrollLeft = scrollLeft;\r\n document.documentElement.scrollLeft = scrollLeft;\r\n return this;\r\n }\r\n else {\r\n return (window.pageXOffset ||\r\n document.documentElement.scrollLeft ||\r\n document.body.scrollLeft ||\r\n 0);\r\n }\r\n };\r\n lgQuery.prototype.offset = function () {\r\n if (!this.firstElement) {\r\n return {\r\n left: 0,\r\n top: 0,\r\n };\r\n }\r\n var rect = this.firstElement.getBoundingClientRect();\r\n var bodyMarginLeft = $LG('body').style().marginLeft;\r\n // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value\r\n return {\r\n left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(),\r\n top: rect.top + this.scrollTop(),\r\n };\r\n };\r\n lgQuery.prototype.style = function () {\r\n if (!this.firstElement) {\r\n return {};\r\n }\r\n return (this.firstElement.currentStyle ||\r\n window.getComputedStyle(this.firstElement));\r\n };\r\n // Width without padding and border even if box-sizing is used.\r\n lgQuery.prototype.width = function () {\r\n var style = this.style();\r\n return (this.firstElement.clientWidth -\r\n parseFloat(style.paddingLeft) -\r\n parseFloat(style.paddingRight));\r\n };\r\n // Height without padding and border even if box-sizing is used.\r\n lgQuery.prototype.height = function () {\r\n var style = this.style();\r\n return (this.firstElement.clientHeight -\r\n parseFloat(style.paddingTop) -\r\n parseFloat(style.paddingBottom));\r\n };\r\n lgQuery.eventListeners = {};\r\n return lgQuery;\r\n}());\r\nfunction $LG(selector) {\r\n initLgPolyfills();\r\n return new lgQuery(selector);\r\n}\n\nvar defaultDynamicOptions = [\r\n 'src',\r\n 'sources',\r\n 'subHtml',\r\n 'subHtmlUrl',\r\n 'html',\r\n 'video',\r\n 'poster',\r\n 'slideName',\r\n 'responsive',\r\n 'srcset',\r\n 'sizes',\r\n 'iframe',\r\n 'downloadUrl',\r\n 'download',\r\n 'width',\r\n 'facebookShareUrl',\r\n 'tweetText',\r\n 'iframeTitle',\r\n 'twitterShareUrl',\r\n 'pinterestShareUrl',\r\n 'pinterestText',\r\n 'fbHtml',\r\n 'disqusIdentifier',\r\n 'disqusUrl',\r\n];\r\n// Convert html data-attribute to camalcase\r\nfunction convertToData(attr) {\r\n // FInd a way for lgsize\r\n if (attr === 'href') {\r\n return 'src';\r\n }\r\n attr = attr.replace('data-', '');\r\n attr = attr.charAt(0).toLowerCase() + attr.slice(1);\r\n attr = attr.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\r\n return attr;\r\n}\r\nvar utils = {\r\n /**\r\n * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option\r\n */\r\n getSize: function (el, container, spacing, defaultLgSize) {\r\n if (spacing === void 0) { spacing = 0; }\r\n var LGel = $LG(el);\r\n var lgSize = LGel.attr('data-lg-size') || defaultLgSize;\r\n if (!lgSize) {\r\n return;\r\n }\r\n var isResponsiveSizes = lgSize.split(',');\r\n // if at-least two viewport sizes are available\r\n if (isResponsiveSizes[1]) {\r\n var wWidth = window.innerWidth;\r\n for (var i = 0; i < isResponsiveSizes.length; i++) {\r\n var size_1 = isResponsiveSizes[i];\r\n var responsiveWidth = parseInt(size_1.split('-')[2], 10);\r\n if (responsiveWidth > wWidth) {\r\n lgSize = size_1;\r\n break;\r\n }\r\n // take last item as last option\r\n if (i === isResponsiveSizes.length - 1) {\r\n lgSize = size_1;\r\n }\r\n }\r\n }\r\n var size = lgSize.split('-');\r\n var width = parseInt(size[0], 10);\r\n var height = parseInt(size[1], 10);\r\n var cWidth = container.width();\r\n var cHeight = container.height() - spacing;\r\n var maxWidth = Math.min(cWidth, width);\r\n var maxHeight = Math.min(cHeight, height);\r\n var ratio = Math.min(maxWidth / width, maxHeight / height);\r\n return { width: width * ratio, height: height * ratio };\r\n },\r\n /**\r\n * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option\r\n * @param {jQuery Element}\r\n * @returns {String} Transform CSS string\r\n */\r\n getTransform: function (el, container, top, bottom, imageSize) {\r\n if (!imageSize) {\r\n return;\r\n }\r\n var LGel = $LG(el).find('img').first();\r\n if (!LGel.get()) {\r\n return;\r\n }\r\n var containerRect = container.get().getBoundingClientRect();\r\n var wWidth = containerRect.width;\r\n // using innerWidth to include mobile safari bottom bar\r\n var wHeight = container.height() - (top + bottom);\r\n var elWidth = LGel.width();\r\n var elHeight = LGel.height();\r\n var elStyle = LGel.style();\r\n var x = (wWidth - elWidth) / 2 -\r\n LGel.offset().left +\r\n (parseFloat(elStyle.paddingLeft) || 0) +\r\n (parseFloat(elStyle.borderLeft) || 0) +\r\n $LG(window).scrollLeft() +\r\n containerRect.left;\r\n var y = (wHeight - elHeight) / 2 -\r\n LGel.offset().top +\r\n (parseFloat(elStyle.paddingTop) || 0) +\r\n (parseFloat(elStyle.borderTop) || 0) +\r\n $LG(window).scrollTop() +\r\n top;\r\n var scX = elWidth / imageSize.width;\r\n var scY = elHeight / imageSize.height;\r\n var transform = 'translate3d(' +\r\n (x *= -1) +\r\n 'px, ' +\r\n (y *= -1) +\r\n 'px, 0) scale3d(' +\r\n scX +\r\n ', ' +\r\n scY +\r\n ', 1)';\r\n return transform;\r\n },\r\n getIframeMarkup: function (iframeWidth, iframeHeight, iframeMaxWidth, iframeMaxHeight, src, iframeTitle) {\r\n var title = iframeTitle ? 'title=\"' + iframeTitle + '\"' : '';\r\n return \"
\\n \\n
\";\r\n },\r\n getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) {\r\n var srcsetAttr = srcset ? \"srcset=\\\"\" + srcset + \"\\\"\" : '';\r\n var sizesAttr = sizes ? \"sizes=\\\"\" + sizes + \"\\\"\" : '';\r\n var imgMarkup = \"\";\r\n var sourceTag = '';\r\n if (sources) {\r\n var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources;\r\n sourceTag = sourceObj.map(function (source) {\r\n var attrs = '';\r\n Object.keys(source).forEach(function (key) {\r\n // Do not remove the first space as it is required to separate the attributes\r\n attrs += \" \" + key + \"=\\\"\" + source[key] + \"\\\"\";\r\n });\r\n return \"\";\r\n });\r\n }\r\n return \"\" + sourceTag + imgMarkup;\r\n },\r\n // Get src from responsive src\r\n getResponsiveSrc: function (srcItms) {\r\n var rsWidth = [];\r\n var rsSrc = [];\r\n var src = '';\r\n for (var i = 0; i < srcItms.length; i++) {\r\n var _src = srcItms[i].split(' ');\r\n // Manage empty space\r\n if (_src[0] === '') {\r\n _src.splice(0, 1);\r\n }\r\n rsSrc.push(_src[0]);\r\n rsWidth.push(_src[1]);\r\n }\r\n var wWidth = window.innerWidth;\r\n for (var j = 0; j < rsWidth.length; j++) {\r\n if (parseInt(rsWidth[j], 10) > wWidth) {\r\n src = rsSrc[j];\r\n break;\r\n }\r\n }\r\n return src;\r\n },\r\n isImageLoaded: function (img) {\r\n if (!img)\r\n return false;\r\n // During the onload event, IE correctly identifies any images that\r\n // weren’t downloaded as not complete. Others should too. Gecko-based\r\n // browsers act like NS4 in that they report this incorrectly.\r\n if (!img.complete) {\r\n return false;\r\n }\r\n // However, they do have two very useful properties: naturalWidth and\r\n // naturalHeight. These give the true size of the image. If it failed\r\n // to load, either of these should be zero.\r\n if (img.naturalWidth === 0) {\r\n return false;\r\n }\r\n // No other way of checking: assume it’s ok.\r\n return true;\r\n },\r\n getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, playVideoString, _isVideo) {\r\n var videoClass = '';\r\n if (_isVideo && _isVideo.youtube) {\r\n videoClass = 'lg-has-youtube';\r\n }\r\n else if (_isVideo && _isVideo.vimeo) {\r\n videoClass = 'lg-has-vimeo';\r\n }\r\n else {\r\n videoClass = 'lg-has-html5';\r\n }\r\n return \"
\\n
\\n \\n \" + playVideoString + \"\\n \\n \\n \\n \\n \\n \\n \\n
\\n \" + (dummyImg || '') + \"\\n \\n
\";\r\n },\r\n getFocusableElements: function (container) {\r\n var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])');\r\n var visibleElements = [].filter.call(elements, function (element) {\r\n var style = window.getComputedStyle(element);\r\n return style.display !== 'none' && style.visibility !== 'hidden';\r\n });\r\n return visibleElements;\r\n },\r\n /**\r\n * @desc Create dynamic elements array from gallery items when dynamic option is false\r\n * It helps to avoid frequent DOM interaction\r\n * and avoid multiple checks for dynamic elments\r\n *\r\n * @returns {Array} dynamicEl\r\n */\r\n getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) {\r\n var dynamicElements = [];\r\n var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps);\r\n [].forEach.call(items, function (item) {\r\n var dynamicEl = {};\r\n for (var i = 0; i < item.attributes.length; i++) {\r\n var attr = item.attributes[i];\r\n if (attr.specified) {\r\n var dynamicAttr = convertToData(attr.name);\r\n var label = '';\r\n if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {\r\n label = dynamicAttr;\r\n }\r\n if (label) {\r\n dynamicEl[label] = attr.value;\r\n }\r\n }\r\n }\r\n var currentItem = $LG(item);\r\n var alt = currentItem.find('img').first().attr('alt');\r\n var title = currentItem.attr('title');\r\n var thumb = exThumbImage\r\n ? currentItem.attr(exThumbImage)\r\n : currentItem.find('img').first().attr('src');\r\n dynamicEl.thumb = thumb;\r\n if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {\r\n dynamicEl.subHtml = title || alt || '';\r\n }\r\n dynamicEl.alt = alt || title || '';\r\n dynamicElements.push(dynamicEl);\r\n });\r\n return dynamicElements;\r\n },\r\n isMobile: function () {\r\n return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\r\n },\r\n /**\r\n * @desc Check the given src is video\r\n * @param {String} src\r\n * @return {Object} video type\r\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\r\n *\r\n * @todo - this information can be moved to dynamicEl to avoid frequent calls\r\n */\r\n isVideo: function (src, isHTML5VIdeo, index) {\r\n if (!src) {\r\n if (isHTML5VIdeo) {\r\n return {\r\n html5: true,\r\n };\r\n }\r\n else {\r\n console.error('lightGallery :- data-src is not provided on slide item ' +\r\n (index + 1) +\r\n '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/');\r\n return;\r\n }\r\n }\r\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)([\\&|?][\\S]*)*/i);\r\n var vimeo = src.match(/\\/\\/(?:www\\.)?(?:player\\.)?vimeo.com\\/(?:video\\/)?([0-9a-z\\-_]+)(.*)?/i);\r\n var wistia = src.match(/https?:\\/\\/(.+)?(wistia\\.com|wi\\.st)\\/(medias|embed)\\/([0-9a-z\\-_]+)(.*)/);\r\n if (youtube) {\r\n return {\r\n youtube: youtube,\r\n };\r\n }\r\n else if (vimeo) {\r\n return {\r\n vimeo: vimeo,\r\n };\r\n }\r\n else if (wistia) {\r\n return {\r\n wistia: wistia,\r\n };\r\n }\r\n },\r\n};\n\n// @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio\r\n// @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html\r\n// Unique id for each gallery\r\nvar lgId = 0;\r\nvar LightGallery = /** @class */ (function () {\r\n function LightGallery(element, options) {\r\n this.lgOpened = false;\r\n this.index = 0;\r\n // lightGallery modules\r\n this.plugins = [];\r\n // false when lightGallery load first slide content;\r\n this.lGalleryOn = false;\r\n // True when a slide animation is in progress\r\n this.lgBusy = false;\r\n this.currentItemsInDom = [];\r\n // Scroll top value before lightGallery is opened\r\n this.prevScrollTop = 0;\r\n this.bodyPaddingRight = 0;\r\n this.isDummyImageRemoved = false;\r\n this.dragOrSwipeEnabled = false;\r\n this.mediaContainerPosition = {\r\n top: 0,\r\n bottom: 0,\r\n };\r\n if (!element) {\r\n return this;\r\n }\r\n lgId++;\r\n this.lgId = lgId;\r\n this.el = element;\r\n this.LGel = $LG(element);\r\n this.generateSettings(options);\r\n this.buildModules();\r\n // When using dynamic mode, ensure dynamicEl is an array\r\n if (this.settings.dynamic &&\r\n this.settings.dynamicEl !== undefined &&\r\n !Array.isArray(this.settings.dynamicEl)) {\r\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\r\n }\r\n this.galleryItems = this.getItems();\r\n this.normalizeSettings();\r\n // Gallery items\r\n this.init();\r\n this.validateLicense();\r\n return this;\r\n }\r\n LightGallery.prototype.generateSettings = function (options) {\r\n // lightGallery settings\r\n this.settings = __assign(__assign({}, lightGalleryCoreSettings), options);\r\n if (this.settings.isMobile &&\r\n typeof this.settings.isMobile === 'function'\r\n ? this.settings.isMobile()\r\n : utils.isMobile()) {\r\n var mobileSettings = __assign(__assign({}, this.settings.mobileSettings), this.settings.mobileSettings);\r\n this.settings = __assign(__assign({}, this.settings), mobileSettings);\r\n }\r\n };\r\n LightGallery.prototype.normalizeSettings = function () {\r\n if (this.settings.slideEndAnimation) {\r\n this.settings.hideControlOnEnd = false;\r\n }\r\n if (!this.settings.closable) {\r\n this.settings.swipeToClose = false;\r\n }\r\n // And reset it on close to get the correct value next time\r\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\r\n // At the moment, Zoom from image doesn't support dynamic options\r\n // @todo add zoomFromOrigin support for dynamic images\r\n if (this.settings.dynamic) {\r\n this.zoomFromOrigin = false;\r\n }\r\n if (!this.settings.container) {\r\n this.settings.container = document.body;\r\n }\r\n // settings.preload should not be grater than $item.length\r\n this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length);\r\n };\r\n LightGallery.prototype.init = function () {\r\n var _this = this;\r\n this.addSlideVideoInfo(this.galleryItems);\r\n this.buildStructure();\r\n this.LGel.trigger(lGEvents.init, {\r\n instance: this,\r\n });\r\n if (this.settings.keyPress) {\r\n this.keyPress();\r\n }\r\n setTimeout(function () {\r\n _this.enableDrag();\r\n _this.enableSwipe();\r\n _this.triggerPosterClick();\r\n }, 50);\r\n this.arrow();\r\n if (this.settings.mousewheel) {\r\n this.mousewheel();\r\n }\r\n if (!this.settings.dynamic) {\r\n this.openGalleryOnItemClick();\r\n }\r\n };\r\n LightGallery.prototype.openGalleryOnItemClick = function () {\r\n var _this = this;\r\n var _loop_1 = function (index) {\r\n var element = this_1.items[index];\r\n var $element = $LG(element);\r\n // Using different namespace for click because click event should not unbind if selector is same object('this')\r\n // @todo manage all event listners - should have namespace that represent element\r\n var uuid = lgQuery.generateUUID();\r\n $element\r\n .attr('data-lg-id', uuid)\r\n .on(\"click.lgcustom-item-\" + uuid, function (e) {\r\n e.preventDefault();\r\n var currentItemIndex = _this.settings.index || index;\r\n _this.openGallery(currentItemIndex, element);\r\n });\r\n };\r\n var this_1 = this;\r\n // Using for loop instead of using bubbling as the items can be any html element.\r\n for (var index = 0; index < this.items.length; index++) {\r\n _loop_1(index);\r\n }\r\n };\r\n /**\r\n * Module constructor\r\n * Modules are build incrementally.\r\n * Gallery should be opened only once all the modules are initialized.\r\n * use moduleBuildTimeout to make sure this\r\n */\r\n LightGallery.prototype.buildModules = function () {\r\n var _this = this;\r\n this.settings.plugins.forEach(function (plugin) {\r\n _this.plugins.push(new plugin(_this, $LG));\r\n });\r\n };\r\n LightGallery.prototype.validateLicense = function () {\r\n if (!this.settings.licenseKey) {\r\n console.error('Please provide a valid license key');\r\n }\r\n else if (this.settings.licenseKey === '0000-0000-000-0000') {\r\n console.warn(\"lightGallery: \" + this.settings.licenseKey + \" license key is not valid for production use\");\r\n }\r\n };\r\n LightGallery.prototype.getSlideItem = function (index) {\r\n return $LG(this.getSlideItemId(index));\r\n };\r\n LightGallery.prototype.getSlideItemId = function (index) {\r\n return \"#lg-item-\" + this.lgId + \"-\" + index;\r\n };\r\n LightGallery.prototype.getIdName = function (id) {\r\n return id + \"-\" + this.lgId;\r\n };\r\n LightGallery.prototype.getElementById = function (id) {\r\n return $LG(\"#\" + this.getIdName(id));\r\n };\r\n LightGallery.prototype.manageSingleSlideClassName = function () {\r\n if (this.galleryItems.length < 2) {\r\n this.outer.addClass('lg-single-item');\r\n }\r\n else {\r\n this.outer.removeClass('lg-single-item');\r\n }\r\n };\r\n LightGallery.prototype.buildStructure = function () {\r\n var _this = this;\r\n var container = this.$container && this.$container.get();\r\n if (container) {\r\n return;\r\n }\r\n var controls = '';\r\n var subHtmlCont = '';\r\n // Create controls\r\n if (this.settings.controls) {\r\n controls = \"\\n \";\r\n }\r\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\r\n subHtmlCont =\r\n '
';\r\n }\r\n var addClasses = '';\r\n if (this.settings.allowMediaOverlap) {\r\n // Do not remove space before last single quote\r\n addClasses += 'lg-media-overlap ';\r\n }\r\n var ariaLabelledby = this.settings.ariaLabelledby\r\n ? 'aria-labelledby=\"' + this.settings.ariaLabelledby + '\"'\r\n : '';\r\n var ariaDescribedby = this.settings.ariaDescribedby\r\n ? 'aria-describedby=\"' + this.settings.ariaDescribedby + '\"'\r\n : '';\r\n var containerClassName = \"lg-container \" + this.settings.addClass + \" \" + (document.body !== this.settings.container ? 'lg-inline' : '');\r\n var closeIcon = this.settings.closable && this.settings.showCloseIcon\r\n ? \"\"\r\n : '';\r\n var maximizeIcon = this.settings.showMaximizeIcon\r\n ? \"\"\r\n : '';\r\n var template = \"\\n
\\n
\\n\\n
\\n\\n
\\n
\\n
\\n \" + controls + \"\\n
\\n
\\n \" + maximizeIcon + \"\\n \" + closeIcon + \"\\n
\\n \" + (this.settings.appendSubHtmlTo === '.lg-outer'\r\n ? subHtmlCont\r\n : '') + \"\\n
\\n \" + (this.settings.appendSubHtmlTo === '.lg-sub-html'\r\n ? subHtmlCont\r\n : '') + \"\\n
\\n
\\n
\\n \";\r\n $LG(this.settings.container).append(template);\r\n if (document.body !== this.settings.container) {\r\n $LG(this.settings.container).css('position', 'relative');\r\n }\r\n this.outer = this.getElementById('lg-outer');\r\n this.$lgComponents = this.getElementById('lg-components');\r\n this.$backdrop = this.getElementById('lg-backdrop');\r\n this.$container = this.getElementById('lg-container');\r\n this.$inner = this.getElementById('lg-inner');\r\n this.$content = this.getElementById('lg-content');\r\n this.$toolbar = this.getElementById('lg-toolbar');\r\n this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms');\r\n var outerClassNames = this.settings.mode + \" \";\r\n this.manageSingleSlideClassName();\r\n if (this.settings.enableDrag) {\r\n outerClassNames += 'lg-grab ';\r\n }\r\n this.outer.addClass(outerClassNames);\r\n this.$inner.css('transition-timing-function', this.settings.easing);\r\n this.$inner.css('transition-duration', this.settings.speed + 'ms');\r\n if (this.settings.download) {\r\n this.$toolbar.append(\"\");\r\n }\r\n this.counter();\r\n $LG(window).on(\"resize.lg.global\" + this.lgId + \" orientationchange.lg.global\" + this.lgId, function () {\r\n _this.refreshOnResize();\r\n });\r\n this.hideBars();\r\n this.manageCloseGallery();\r\n this.toggleMaximize();\r\n this.initModules();\r\n };\r\n LightGallery.prototype.refreshOnResize = function () {\r\n if (this.lgOpened) {\r\n var currentGalleryItem = this.galleryItems[this.index];\r\n var __slideVideoInfo = currentGalleryItem.__slideVideoInfo;\r\n this.mediaContainerPosition = this.getMediaContainerPosition();\r\n var _a = this.mediaContainerPosition, top_1 = _a.top, bottom = _a.bottom;\r\n this.currentImageSize = utils.getSize(this.items[this.index], this.outer, top_1 + bottom, __slideVideoInfo && this.settings.videoMaxSize);\r\n if (__slideVideoInfo) {\r\n this.resizeVideoSlide(this.index, this.currentImageSize);\r\n }\r\n if (this.zoomFromOrigin && !this.isDummyImageRemoved) {\r\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\r\n this.outer\r\n .find('.lg-current .lg-dummy-img')\r\n .first()\r\n .attr('style', imgStyle);\r\n }\r\n this.LGel.trigger(lGEvents.containerResize);\r\n }\r\n };\r\n LightGallery.prototype.resizeVideoSlide = function (index, imageSize) {\r\n var lgVideoStyle = this.getVideoContStyle(imageSize);\r\n var currentSlide = this.getSlideItem(index);\r\n currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle);\r\n };\r\n /**\r\n * Update slides dynamically.\r\n * Add, edit or delete slides dynamically when lightGallery is opened.\r\n * Modify the current gallery items and pass it via updateSlides method\r\n * @note\r\n * - Do not mutate existing lightGallery items directly.\r\n * - Always pass new list of gallery items\r\n * - You need to take care of thumbnails outside the gallery if any\r\n * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method.\r\n * @param items Gallery items\r\n * @param index After the update operation, which slide gallery should navigate to\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n *\r\n * // Adding slides dynamically\r\n * let galleryItems = [\r\n * // Access existing lightGallery items\r\n * // galleryItems are automatically generated internally from the gallery HTML markup\r\n * // or directly from galleryItems when dynamic gallery is used\r\n * ...plugin.galleryItems,\r\n * ...[\r\n * {\r\n * src: 'img/img-1.png',\r\n * thumb: 'img/thumb1.png',\r\n * },\r\n * ],\r\n * ];\r\n * plugin.updateSlides(\r\n * galleryItems,\r\n * plugin.index,\r\n * );\r\n *\r\n *\r\n * // Remove slides dynamically\r\n * galleryItems = JSON.parse(\r\n * JSON.stringify(updateSlideInstance.galleryItems),\r\n * );\r\n * galleryItems.shift();\r\n * updateSlideInstance.updateSlides(galleryItems, 1);\r\n * @see Demo\r\n */\r\n LightGallery.prototype.updateSlides = function (items, index) {\r\n if (this.index > items.length - 1) {\r\n this.index = items.length - 1;\r\n }\r\n if (items.length === 1) {\r\n this.index = 0;\r\n }\r\n if (!items.length) {\r\n this.closeGallery();\r\n return;\r\n }\r\n var currentSrc = this.galleryItems[index].src;\r\n this.galleryItems = items;\r\n this.updateControls();\r\n this.$inner.empty();\r\n this.currentItemsInDom = [];\r\n var _index = 0;\r\n // Find the current index based on source value of the slide\r\n this.galleryItems.some(function (galleryItem, itemIndex) {\r\n if (galleryItem.src === currentSrc) {\r\n _index = itemIndex;\r\n return true;\r\n }\r\n return false;\r\n });\r\n this.currentItemsInDom = this.organizeSlideItems(_index, -1);\r\n this.loadContent(_index, true);\r\n this.getSlideItem(_index).addClass('lg-current');\r\n this.index = _index;\r\n this.updateCurrentCounter(_index);\r\n this.LGel.trigger(lGEvents.updateSlides);\r\n };\r\n // Get gallery items based on multiple conditions\r\n LightGallery.prototype.getItems = function () {\r\n // Gallery items\r\n this.items = [];\r\n if (!this.settings.dynamic) {\r\n if (this.settings.selector === 'this') {\r\n this.items.push(this.el);\r\n }\r\n else if (this.settings.selector) {\r\n if (typeof this.settings.selector === 'string') {\r\n if (this.settings.selectWithin) {\r\n var selectWithin = $LG(this.settings.selectWithin);\r\n this.items = selectWithin\r\n .find(this.settings.selector)\r\n .get();\r\n }\r\n else {\r\n this.items = this.el.querySelectorAll(this.settings.selector);\r\n }\r\n }\r\n else {\r\n this.items = this.settings.selector;\r\n }\r\n }\r\n else {\r\n this.items = this.el.children;\r\n }\r\n return utils.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage);\r\n }\r\n else {\r\n return this.settings.dynamicEl || [];\r\n }\r\n };\r\n LightGallery.prototype.shouldHideScrollbar = function () {\r\n return (this.settings.hideScrollbar &&\r\n document.body === this.settings.container);\r\n };\r\n LightGallery.prototype.hideScrollbar = function () {\r\n if (!this.shouldHideScrollbar()) {\r\n return;\r\n }\r\n this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight);\r\n var bodyRect = document.documentElement.getBoundingClientRect();\r\n var scrollbarWidth = window.innerWidth - bodyRect.width;\r\n $LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px');\r\n $LG(document.body).addClass('lg-overlay-open');\r\n };\r\n LightGallery.prototype.resetScrollBar = function () {\r\n if (!this.shouldHideScrollbar()) {\r\n return;\r\n }\r\n $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');\r\n $LG(document.body).removeClass('lg-overlay-open');\r\n };\r\n /**\r\n * Open lightGallery.\r\n * Open gallery with specific slide by passing index of the slide as parameter.\r\n * @category lGPublicMethods\r\n * @param {Number} index - index of the slide\r\n * @param {HTMLElement} element - Which image lightGallery should zoom from\r\n *\r\n * @example\r\n * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');\r\n * const dynamicGallery = lightGallery($dynamicGallery, {\r\n * dynamic: true,\r\n * dynamicEl: [\r\n * {\r\n * src: 'img/1.jpg',\r\n * thumb: 'img/thumb-1.jpg',\r\n * subHtml: '

Image 1 title

Image 1 descriptions.

',\r\n * },\r\n * ...\r\n * ],\r\n * });\r\n * $dynamicGallery.addEventListener('click', function () {\r\n * // Starts with third item.(Optional).\r\n * // This is useful if you want use dynamic mode with\r\n * // custom thumbnails (thumbnails outside gallery),\r\n * dynamicGallery.openGallery(2);\r\n * });\r\n *\r\n */\r\n LightGallery.prototype.openGallery = function (index, element) {\r\n var _this = this;\r\n if (index === void 0) { index = this.settings.index; }\r\n // prevent accidental double execution\r\n if (this.lgOpened)\r\n return;\r\n this.lgOpened = true;\r\n this.outer.removeClass('lg-hide-items');\r\n this.hideScrollbar();\r\n // Add display block, but still has opacity 0\r\n this.$container.addClass('lg-show');\r\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index);\r\n this.currentItemsInDom = itemsToBeInsertedToDom;\r\n var items = '';\r\n itemsToBeInsertedToDom.forEach(function (item) {\r\n items = items + (\"
\");\r\n });\r\n this.$inner.append(items);\r\n this.addHtml(index);\r\n var transform = '';\r\n this.mediaContainerPosition = this.getMediaContainerPosition();\r\n var _a = this.mediaContainerPosition, top = _a.top, bottom = _a.bottom;\r\n if (!this.settings.allowMediaOverlap) {\r\n this.setMediaContainerPosition(top, bottom);\r\n }\r\n var __slideVideoInfo = this.galleryItems[index].__slideVideoInfo;\r\n if (this.zoomFromOrigin && element) {\r\n this.currentImageSize = utils.getSize(element, this.outer, top + bottom, __slideVideoInfo && this.settings.videoMaxSize);\r\n transform = utils.getTransform(element, this.outer, top, bottom, this.currentImageSize);\r\n }\r\n if (!this.zoomFromOrigin || !transform) {\r\n this.outer.addClass(this.settings.startClass);\r\n this.getSlideItem(index).removeClass('lg-complete');\r\n }\r\n var timeout = this.settings.zoomFromOrigin\r\n ? 100\r\n : this.settings.backdropDuration;\r\n setTimeout(function () {\r\n _this.outer.addClass('lg-components-open');\r\n }, timeout);\r\n this.index = index;\r\n this.LGel.trigger(lGEvents.beforeOpen);\r\n // add class lg-current to remove initial transition\r\n this.getSlideItem(index).addClass('lg-current');\r\n this.lGalleryOn = false;\r\n // Store the current scroll top value to scroll back after closing the gallery..\r\n this.prevScrollTop = $LG(window).scrollTop();\r\n setTimeout(function () {\r\n // Need to check both zoomFromOrigin and transform values as we need to set set the\r\n // default opening animation if user missed to add the lg-size attribute\r\n if (_this.zoomFromOrigin && transform) {\r\n var currentSlide_1 = _this.getSlideItem(index);\r\n currentSlide_1.css('transform', transform);\r\n setTimeout(function () {\r\n currentSlide_1\r\n .addClass('lg-start-progress lg-start-end-progress')\r\n .css('transition-duration', _this.settings.startAnimationDuration + 'ms');\r\n _this.outer.addClass('lg-zoom-from-image');\r\n });\r\n setTimeout(function () {\r\n currentSlide_1.css('transform', 'translate3d(0, 0, 0)');\r\n }, 100);\r\n }\r\n setTimeout(function () {\r\n _this.$backdrop.addClass('in');\r\n _this.$container.addClass('lg-show-in');\r\n }, 10);\r\n setTimeout(function () {\r\n if (_this.settings.trapFocus &&\r\n document.body === _this.settings.container) {\r\n _this.trapFocus();\r\n }\r\n }, _this.settings.backdropDuration + 50);\r\n // lg-visible class resets gallery opacity to 1\r\n if (!_this.zoomFromOrigin || !transform) {\r\n setTimeout(function () {\r\n _this.outer.addClass('lg-visible');\r\n }, _this.settings.backdropDuration);\r\n }\r\n // initiate slide function\r\n _this.slide(index, false, false, false);\r\n _this.LGel.trigger(lGEvents.afterOpen);\r\n });\r\n if (document.body === this.settings.container) {\r\n $LG('html').addClass('lg-on');\r\n }\r\n };\r\n /**\r\n * Note - Changing the position of the media on every slide transition creates a flickering effect.\r\n * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.\r\n * if you have dynamic captions for each media,\r\n * you can provide an appropriate height for the captions via allowMediaOverlap option\r\n */\r\n LightGallery.prototype.getMediaContainerPosition = function () {\r\n if (this.settings.allowMediaOverlap) {\r\n return {\r\n top: 0,\r\n bottom: 0,\r\n };\r\n }\r\n var top = this.$toolbar.get().clientHeight || 0;\r\n var subHtml = this.outer.find('.lg-components .lg-sub-html').get();\r\n var captionHeight = this.settings.defaultCaptionHeight ||\r\n (subHtml && subHtml.clientHeight) ||\r\n 0;\r\n var thumbContainer = this.outer.find('.lg-thumb-outer').get();\r\n var thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0;\r\n var bottom = thumbHeight + captionHeight;\r\n return {\r\n top: top,\r\n bottom: bottom,\r\n };\r\n };\r\n LightGallery.prototype.setMediaContainerPosition = function (top, bottom) {\r\n if (top === void 0) { top = 0; }\r\n if (bottom === void 0) { bottom = 0; }\r\n this.$content.css('top', top + 'px').css('bottom', bottom + 'px');\r\n };\r\n LightGallery.prototype.hideBars = function () {\r\n var _this = this;\r\n // Hide controllers if mouse doesn't move for some period\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-hide-items');\r\n if (_this.settings.hideBarsDelay > 0) {\r\n _this.outer.on('mousemove.lg click.lg touchstart.lg', function () {\r\n _this.outer.removeClass('lg-hide-items');\r\n clearTimeout(_this.hideBarTimeout);\r\n // Timeout will be cleared on each slide movement also\r\n _this.hideBarTimeout = setTimeout(function () {\r\n _this.outer.addClass('lg-hide-items');\r\n }, _this.settings.hideBarsDelay);\r\n });\r\n _this.outer.trigger('mousemove.lg');\r\n }\r\n }, this.settings.showBarsAfter);\r\n };\r\n LightGallery.prototype.initPictureFill = function ($img) {\r\n if (this.settings.supportLegacyBrowser) {\r\n try {\r\n picturefill({\r\n elements: [$img.get()],\r\n });\r\n }\r\n catch (e) {\r\n console.warn('lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.');\r\n }\r\n }\r\n };\r\n /**\r\n * @desc Create image counter\r\n * Ex: 1/10\r\n */\r\n LightGallery.prototype.counter = function () {\r\n if (this.settings.counter) {\r\n var counterHtml = \"
\\n \" + (this.index + 1) + \" /\\n \" + this.galleryItems.length + \"
\";\r\n this.outer.find(this.settings.appendCounterTo).append(counterHtml);\r\n }\r\n };\r\n /**\r\n * @desc add sub-html into the slide\r\n * @param {Number} index - index of the slide\r\n */\r\n LightGallery.prototype.addHtml = function (index) {\r\n var subHtml;\r\n var subHtmlUrl;\r\n if (this.galleryItems[index].subHtmlUrl) {\r\n subHtmlUrl = this.galleryItems[index].subHtmlUrl;\r\n }\r\n else {\r\n subHtml = this.galleryItems[index].subHtml;\r\n }\r\n if (!subHtmlUrl) {\r\n if (subHtml) {\r\n // get first letter of sub-html\r\n // if first letter starts with . or # get the html form the jQuery object\r\n var fL = subHtml.substring(0, 1);\r\n if (fL === '.' || fL === '#') {\r\n if (this.settings.subHtmlSelectorRelative &&\r\n !this.settings.dynamic) {\r\n subHtml = $LG(this.items)\r\n .eq(index)\r\n .find(subHtml)\r\n .first()\r\n .html();\r\n }\r\n else {\r\n subHtml = $LG(subHtml).first().html();\r\n }\r\n }\r\n }\r\n else {\r\n subHtml = '';\r\n }\r\n }\r\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\r\n if (subHtmlUrl) {\r\n this.outer.find('.lg-sub-html').load(subHtmlUrl);\r\n }\r\n else {\r\n this.outer.find('.lg-sub-html').html(subHtml);\r\n }\r\n }\r\n else {\r\n var currentSlide = $LG(this.getSlideItemId(index));\r\n if (subHtmlUrl) {\r\n currentSlide.load(subHtmlUrl);\r\n }\r\n else {\r\n currentSlide.append(\"
\" + subHtml + \"
\");\r\n }\r\n }\r\n // Add lg-empty-html class if title doesn't exist\r\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\r\n if (subHtml === '') {\r\n this.outer\r\n .find(this.settings.appendSubHtmlTo)\r\n .addClass('lg-empty-html');\r\n }\r\n else {\r\n this.outer\r\n .find(this.settings.appendSubHtmlTo)\r\n .removeClass('lg-empty-html');\r\n }\r\n }\r\n this.LGel.trigger(lGEvents.afterAppendSubHtml, {\r\n index: index,\r\n });\r\n };\r\n /**\r\n * @desc Preload slides\r\n * @param {Number} index - index of the slide\r\n * @todo preload not working for the first slide, Also, should work for the first and last slide as well\r\n */\r\n LightGallery.prototype.preload = function (index) {\r\n for (var i = 1; i <= this.settings.preload; i++) {\r\n if (i >= this.galleryItems.length - index) {\r\n break;\r\n }\r\n this.loadContent(index + i, false);\r\n }\r\n for (var j = 1; j <= this.settings.preload; j++) {\r\n if (index - j < 0) {\r\n break;\r\n }\r\n this.loadContent(index - j, false);\r\n }\r\n };\r\n LightGallery.prototype.getDummyImgStyles = function (imageSize) {\r\n if (!imageSize)\r\n return '';\r\n return \"width:\" + imageSize.width + \"px;\\n margin-left: -\" + imageSize.width / 2 + \"px;\\n margin-top: -\" + imageSize.height / 2 + \"px;\\n height:\" + imageSize.height + \"px\";\r\n };\r\n LightGallery.prototype.getVideoContStyle = function (imageSize) {\r\n if (!imageSize)\r\n return '';\r\n return \"width:\" + imageSize.width + \"px;\\n height:\" + imageSize.height + \"px\";\r\n };\r\n LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) {\r\n var $currentItem;\r\n if (!this.settings.dynamic) {\r\n $currentItem = $LG(this.items).eq(index);\r\n }\r\n if ($currentItem) {\r\n var _dummyImgSrc = void 0;\r\n if (!this.settings.exThumbImage) {\r\n _dummyImgSrc = $currentItem.find('img').first().attr('src');\r\n }\r\n else {\r\n _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);\r\n }\r\n if (!_dummyImgSrc)\r\n return '';\r\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\r\n var dummyImgContent = \"\";\r\n $currentSlide.addClass('lg-first-slide');\r\n this.outer.addClass('lg-first-slide-loading');\r\n return dummyImgContent;\r\n }\r\n return '';\r\n };\r\n LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) {\r\n var currentGalleryItem = this.galleryItems[index];\r\n var alt = currentGalleryItem.alt, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\r\n // Use the thumbnail as dummy image which will be resized to actual image size and\r\n // displayed on top of actual image\r\n var imgContent = '';\r\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\r\n if (this.isFirstSlideWithZoomAnimation()) {\r\n imgContent = this.getDummyImageContent($currentSlide, index, altAttr);\r\n }\r\n else {\r\n imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources);\r\n }\r\n var imgMarkup = \" \" + imgContent + \"\";\r\n $currentSlide.prepend(imgMarkup);\r\n };\r\n LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) {\r\n var mediaObject = $slide.find('.lg-object').first();\r\n if (utils.isImageLoaded(mediaObject.get()) ||\r\n isHTML5VideoWithoutPoster) {\r\n onLoad();\r\n }\r\n else {\r\n mediaObject.on('load.lg error.lg', function () {\r\n onLoad && onLoad();\r\n });\r\n mediaObject.on('error.lg', function () {\r\n onError && onError();\r\n });\r\n }\r\n };\r\n /**\r\n *\r\n * @param $el Current slide item\r\n * @param index\r\n * @param delay Delay is 0 except first time\r\n * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin\r\n * @param isFirstSlide\r\n */\r\n LightGallery.prototype.onLgObjectLoad = function (currentSlide, index, delay, speed, isFirstSlide, isHTML5VideoWithoutPoster) {\r\n var _this = this;\r\n this.onSlideObjectLoad(currentSlide, isHTML5VideoWithoutPoster, function () {\r\n _this.triggerSlideItemLoad(currentSlide, index, delay, speed, isFirstSlide);\r\n }, function () {\r\n currentSlide.addClass('lg-complete lg-complete_');\r\n currentSlide.html('' +\r\n _this.settings.strings['mediaLoadingFailed'] +\r\n '');\r\n });\r\n };\r\n LightGallery.prototype.triggerSlideItemLoad = function ($currentSlide, index, delay, speed, isFirstSlide) {\r\n var _this = this;\r\n var currentGalleryItem = this.galleryItems[index];\r\n // Adding delay for video slides without poster for better performance and user experience\r\n // Videos should start playing once once the gallery is completely loaded\r\n var _speed = isFirstSlide &&\r\n this.getSlideType(currentGalleryItem) === 'video' &&\r\n !currentGalleryItem.poster\r\n ? speed\r\n : 0;\r\n setTimeout(function () {\r\n $currentSlide.addClass('lg-complete lg-complete_');\r\n _this.LGel.trigger(lGEvents.slideItemLoad, {\r\n index: index,\r\n delay: delay || 0,\r\n isFirstSlide: isFirstSlide,\r\n });\r\n }, _speed);\r\n };\r\n LightGallery.prototype.isFirstSlideWithZoomAnimation = function () {\r\n return !!(!this.lGalleryOn &&\r\n this.zoomFromOrigin &&\r\n this.currentImageSize);\r\n };\r\n // Add video slideInfo\r\n LightGallery.prototype.addSlideVideoInfo = function (items) {\r\n var _this = this;\r\n items.forEach(function (element, index) {\r\n element.__slideVideoInfo = utils.isVideo(element.src, !!element.video, index);\r\n if (element.__slideVideoInfo &&\r\n _this.settings.loadYouTubePoster &&\r\n !element.poster &&\r\n element.__slideVideoInfo.youtube) {\r\n element.poster = \"//img.youtube.com/vi/\" + element.__slideVideoInfo.youtube[1] + \"/maxresdefault.jpg\";\r\n }\r\n });\r\n };\r\n /**\r\n * Load slide content into slide.\r\n * This is used to load content into slides that is not visible too\r\n * @param {Number} index - index of the slide.\r\n * @param {Boolean} rec - if true call loadcontent() function again.\r\n */\r\n LightGallery.prototype.loadContent = function (index, rec) {\r\n var _this = this;\r\n var currentGalleryItem = this.galleryItems[index];\r\n var $currentSlide = $LG(this.getSlideItemId(index));\r\n var poster = currentGalleryItem.poster, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\r\n var src = currentGalleryItem.src;\r\n var video = currentGalleryItem.video;\r\n var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video;\r\n if (currentGalleryItem.responsive) {\r\n var srcDyItms = currentGalleryItem.responsive.split(',');\r\n src = utils.getResponsiveSrc(srcDyItms) || src;\r\n }\r\n var videoInfo = currentGalleryItem.__slideVideoInfo;\r\n var lgVideoStyle = '';\r\n var iframe = !!currentGalleryItem.iframe;\r\n var isFirstSlide = !this.lGalleryOn;\r\n // delay for adding complete class. it is 0 except first time.\r\n var delay = 0;\r\n if (isFirstSlide) {\r\n if (this.zoomFromOrigin && this.currentImageSize) {\r\n delay = this.settings.startAnimationDuration + 10;\r\n }\r\n else {\r\n delay = this.settings.backdropDuration + 10;\r\n }\r\n }\r\n if (!$currentSlide.hasClass('lg-loaded')) {\r\n if (videoInfo) {\r\n var _a = this.mediaContainerPosition, top_2 = _a.top, bottom = _a.bottom;\r\n var videoSize = utils.getSize(this.items[index], this.outer, top_2 + bottom, videoInfo && this.settings.videoMaxSize);\r\n lgVideoStyle = this.getVideoContStyle(videoSize);\r\n }\r\n if (iframe) {\r\n var markup = utils.getIframeMarkup(this.settings.iframeWidth, this.settings.iframeHeight, this.settings.iframeMaxWidth, this.settings.iframeMaxHeight, src, currentGalleryItem.iframeTitle);\r\n $currentSlide.prepend(markup);\r\n }\r\n else if (poster) {\r\n var dummyImg = '';\r\n var hasStartAnimation = isFirstSlide &&\r\n this.zoomFromOrigin &&\r\n this.currentImageSize;\r\n if (hasStartAnimation) {\r\n dummyImg = this.getDummyImageContent($currentSlide, index, '');\r\n }\r\n var markup = utils.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, this.settings.strings['playVideo'], videoInfo);\r\n $currentSlide.prepend(markup);\r\n }\r\n else if (videoInfo) {\r\n var markup = \"
\";\r\n $currentSlide.prepend(markup);\r\n }\r\n else {\r\n this.setImgMarkup(src, $currentSlide, index);\r\n if (srcset || sources) {\r\n var $img = $currentSlide.find('.lg-object');\r\n this.initPictureFill($img);\r\n }\r\n }\r\n if (poster || videoInfo) {\r\n this.LGel.trigger(lGEvents.hasVideo, {\r\n index: index,\r\n src: src,\r\n html5Video: _html5Video,\r\n hasPoster: !!poster,\r\n });\r\n }\r\n this.LGel.trigger(lGEvents.afterAppendSlide, { index: index });\r\n if (this.lGalleryOn &&\r\n this.settings.appendSubHtmlTo === '.lg-item') {\r\n this.addHtml(index);\r\n }\r\n }\r\n // For first time add some delay for displaying the start animation.\r\n var _speed = 0;\r\n // Do not change the delay value because it is required for zoom plugin.\r\n // If gallery opened from direct url (hash) speed value should be 0\r\n if (delay && !$LG(document.body).hasClass('lg-from-hash')) {\r\n _speed = delay;\r\n }\r\n // Only for first slide and zoomFromOrigin is enabled\r\n if (this.isFirstSlideWithZoomAnimation()) {\r\n setTimeout(function () {\r\n $currentSlide\r\n .removeClass('lg-start-end-progress lg-start-progress')\r\n .removeAttr('style');\r\n }, this.settings.startAnimationDuration + 100);\r\n if (!$currentSlide.hasClass('lg-loaded')) {\r\n setTimeout(function () {\r\n if (_this.getSlideType(currentGalleryItem) === 'image') {\r\n var alt = currentGalleryItem.alt;\r\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\r\n $currentSlide\r\n .find('.lg-img-wrap')\r\n .append(utils.getImgMarkup(index, src, altAttr, srcset, sizes, currentGalleryItem.sources));\r\n if (srcset || sources) {\r\n var $img = $currentSlide.find('.lg-object');\r\n _this.initPictureFill($img);\r\n }\r\n }\r\n if (_this.getSlideType(currentGalleryItem) === 'image' ||\r\n (_this.getSlideType(currentGalleryItem) === 'video' &&\r\n poster)) {\r\n _this.onLgObjectLoad($currentSlide, index, delay, _speed, true, false);\r\n // load remaining slides once the slide is completely loaded\r\n _this.onSlideObjectLoad($currentSlide, !!(videoInfo && videoInfo.html5 && !poster), function () {\r\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\r\n }, function () {\r\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\r\n });\r\n }\r\n }, this.settings.startAnimationDuration + 100);\r\n }\r\n }\r\n // SLide content has been added to dom\r\n $currentSlide.addClass('lg-loaded');\r\n if (!this.isFirstSlideWithZoomAnimation() ||\r\n (this.getSlideType(currentGalleryItem) === 'video' && !poster)) {\r\n this.onLgObjectLoad($currentSlide, index, delay, _speed, isFirstSlide, !!(videoInfo && videoInfo.html5 && !poster));\r\n }\r\n // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling\r\n if ((!this.zoomFromOrigin || !this.currentImageSize) &&\r\n $currentSlide.hasClass('lg-complete_') &&\r\n !this.lGalleryOn) {\r\n setTimeout(function () {\r\n $currentSlide.addClass('lg-complete');\r\n }, this.settings.backdropDuration);\r\n }\r\n // Content loaded\r\n // Need to set lGalleryOn before calling preload function\r\n this.lGalleryOn = true;\r\n if (rec === true) {\r\n if (!$currentSlide.hasClass('lg-complete_')) {\r\n $currentSlide\r\n .find('.lg-object')\r\n .first()\r\n .on('load.lg error.lg', function () {\r\n _this.preload(index);\r\n });\r\n }\r\n else {\r\n this.preload(index);\r\n }\r\n }\r\n };\r\n /**\r\n * @desc Remove dummy image content and load next slides\r\n * Called only for the first time if zoomFromOrigin animation is enabled\r\n * @param index\r\n * @param $currentSlide\r\n * @param speed\r\n */\r\n LightGallery.prototype.loadContentOnFirstSlideLoad = function (index, $currentSlide, speed) {\r\n var _this = this;\r\n setTimeout(function () {\r\n $currentSlide.find('.lg-dummy-img').remove();\r\n $currentSlide.removeClass('lg-first-slide');\r\n _this.outer.removeClass('lg-first-slide-loading');\r\n _this.isDummyImageRemoved = true;\r\n _this.preload(index);\r\n }, speed + 300);\r\n };\r\n LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) {\r\n var _this = this;\r\n if (numberOfItems === void 0) { numberOfItems = 0; }\r\n var itemsToBeInsertedToDom = [];\r\n // Minimum 2 items should be there\r\n var possibleNumberOfItems = Math.max(numberOfItems, 3);\r\n possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length);\r\n var prevIndexItem = \"lg-item-\" + this.lgId + \"-\" + prevIndex;\r\n if (this.galleryItems.length <= 3) {\r\n this.galleryItems.forEach(function (_element, index) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + _this.lgId + \"-\" + index);\r\n });\r\n return itemsToBeInsertedToDom;\r\n }\r\n if (index < (this.galleryItems.length - 1) / 2) {\r\n for (var idx = index; idx > index - possibleNumberOfItems / 2 && idx >= 0; idx--) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\r\n }\r\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\r\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index + idx + 1));\r\n }\r\n }\r\n else {\r\n for (var idx = index; idx <= this.galleryItems.length - 1 &&\r\n idx < index + possibleNumberOfItems / 2; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\r\n }\r\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\r\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index - idx - 1));\r\n }\r\n }\r\n if (this.settings.loop) {\r\n if (index === this.galleryItems.length - 1) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + 0);\r\n }\r\n else if (index === 0) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (this.galleryItems.length - 1));\r\n }\r\n }\r\n if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + prevIndex);\r\n }\r\n return itemsToBeInsertedToDom;\r\n };\r\n LightGallery.prototype.organizeSlideItems = function (index, prevIndex) {\r\n var _this = this;\r\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, prevIndex, this.settings.numberOfSlideItemsInDom);\r\n itemsToBeInsertedToDom.forEach(function (item) {\r\n if (_this.currentItemsInDom.indexOf(item) === -1) {\r\n _this.$inner.append(\"
\");\r\n }\r\n });\r\n this.currentItemsInDom.forEach(function (item) {\r\n if (itemsToBeInsertedToDom.indexOf(item) === -1) {\r\n $LG(\"#\" + item).remove();\r\n }\r\n });\r\n return itemsToBeInsertedToDom;\r\n };\r\n /**\r\n * Get previous index of the slide\r\n */\r\n LightGallery.prototype.getPreviousSlideIndex = function () {\r\n var prevIndex = 0;\r\n try {\r\n var currentItemId = this.outer\r\n .find('.lg-current')\r\n .first()\r\n .attr('id');\r\n prevIndex = parseInt(currentItemId.split('-')[3]) || 0;\r\n }\r\n catch (error) {\r\n prevIndex = 0;\r\n }\r\n return prevIndex;\r\n };\r\n LightGallery.prototype.setDownloadValue = function (index) {\r\n if (this.settings.download) {\r\n var currentGalleryItem = this.galleryItems[index];\r\n var hideDownloadBtn = currentGalleryItem.downloadUrl === false ||\r\n currentGalleryItem.downloadUrl === 'false';\r\n if (hideDownloadBtn) {\r\n this.outer.addClass('lg-hide-download');\r\n }\r\n else {\r\n var $download = this.getElementById('lg-download');\r\n this.outer.removeClass('lg-hide-download');\r\n $download.attr('href', currentGalleryItem.downloadUrl ||\r\n currentGalleryItem.src);\r\n if (currentGalleryItem.download) {\r\n $download.attr('download', currentGalleryItem.download);\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) {\r\n var _this = this;\r\n if (this.lGalleryOn) {\r\n previousSlideItem.addClass('lg-slide-progress');\r\n }\r\n setTimeout(function () {\r\n // remove all transitions\r\n _this.outer.addClass('lg-no-trans');\r\n _this.outer\r\n .find('.lg-item')\r\n .removeClass('lg-prev-slide lg-next-slide');\r\n if (direction === 'prev') {\r\n //prevslide\r\n currentSlideItem.addClass('lg-prev-slide');\r\n previousSlideItem.addClass('lg-next-slide');\r\n }\r\n else {\r\n // next slide\r\n currentSlideItem.addClass('lg-next-slide');\r\n previousSlideItem.addClass('lg-prev-slide');\r\n }\r\n // give 50 ms for browser to add/remove class\r\n setTimeout(function () {\r\n _this.outer.find('.lg-item').removeClass('lg-current');\r\n currentSlideItem.addClass('lg-current');\r\n // reset all transitions\r\n _this.outer.removeClass('lg-no-trans');\r\n }, 50);\r\n }, this.lGalleryOn ? this.settings.slideDelay : 0);\r\n };\r\n /**\r\n * Goto a specific slide.\r\n * @param {Number} index - index of the slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\r\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\r\n * @param {String} direction - Direction of the slide(next/prev)\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * // to go to 3rd slide\r\n * plugin.slide(2);\r\n *\r\n */\r\n LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) {\r\n var _this = this;\r\n var prevIndex = this.getPreviousSlideIndex();\r\n this.currentItemsInDom = this.organizeSlideItems(index, prevIndex);\r\n // Prevent multiple call, Required for hsh plugin\r\n if (this.lGalleryOn && prevIndex === index) {\r\n return;\r\n }\r\n var numberOfGalleryItems = this.galleryItems.length;\r\n if (!this.lgBusy) {\r\n if (this.settings.counter) {\r\n this.updateCurrentCounter(index);\r\n }\r\n var currentSlideItem = this.getSlideItem(index);\r\n var previousSlideItem_1 = this.getSlideItem(prevIndex);\r\n var currentGalleryItem = this.galleryItems[index];\r\n var videoInfo = currentGalleryItem.__slideVideoInfo;\r\n this.outer.attr('data-lg-slide-type', this.getSlideType(currentGalleryItem));\r\n this.setDownloadValue(index);\r\n if (videoInfo) {\r\n var _a = this.mediaContainerPosition, top_3 = _a.top, bottom = _a.bottom;\r\n var videoSize = utils.getSize(this.items[index], this.outer, top_3 + bottom, videoInfo && this.settings.videoMaxSize);\r\n this.resizeVideoSlide(index, videoSize);\r\n }\r\n this.LGel.trigger(lGEvents.beforeSlide, {\r\n prevIndex: prevIndex,\r\n index: index,\r\n fromTouch: !!fromTouch,\r\n fromThumb: !!fromThumb,\r\n });\r\n this.lgBusy = true;\r\n clearTimeout(this.hideBarTimeout);\r\n this.arrowDisable(index);\r\n if (!direction) {\r\n if (index < prevIndex) {\r\n direction = 'prev';\r\n }\r\n else if (index > prevIndex) {\r\n direction = 'next';\r\n }\r\n }\r\n if (!fromTouch) {\r\n this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1);\r\n }\r\n else {\r\n this.outer\r\n .find('.lg-item')\r\n .removeClass('lg-prev-slide lg-current lg-next-slide');\r\n var touchPrev = void 0;\r\n var touchNext = void 0;\r\n if (numberOfGalleryItems > 2) {\r\n touchPrev = index - 1;\r\n touchNext = index + 1;\r\n if (index === 0 && prevIndex === numberOfGalleryItems - 1) {\r\n // next slide\r\n touchNext = 0;\r\n touchPrev = numberOfGalleryItems - 1;\r\n }\r\n else if (index === numberOfGalleryItems - 1 &&\r\n prevIndex === 0) {\r\n // prev slide\r\n touchNext = 0;\r\n touchPrev = numberOfGalleryItems - 1;\r\n }\r\n }\r\n else {\r\n touchPrev = 0;\r\n touchNext = 1;\r\n }\r\n if (direction === 'prev') {\r\n this.getSlideItem(touchNext).addClass('lg-next-slide');\r\n }\r\n else {\r\n this.getSlideItem(touchPrev).addClass('lg-prev-slide');\r\n }\r\n currentSlideItem.addClass('lg-current');\r\n }\r\n // Do not put load content in set timeout as it needs to load immediately when the gallery is opened\r\n if (!this.lGalleryOn) {\r\n this.loadContent(index, true);\r\n }\r\n else {\r\n setTimeout(function () {\r\n _this.loadContent(index, true);\r\n // Add title if this.settings.appendSubHtmlTo === lg-sub-html\r\n if (_this.settings.appendSubHtmlTo !== '.lg-item') {\r\n _this.addHtml(index);\r\n }\r\n }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay));\r\n }\r\n setTimeout(function () {\r\n _this.lgBusy = false;\r\n previousSlideItem_1.removeClass('lg-slide-progress');\r\n _this.LGel.trigger(lGEvents.afterSlide, {\r\n prevIndex: prevIndex,\r\n index: index,\r\n fromTouch: fromTouch,\r\n fromThumb: fromThumb,\r\n });\r\n }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay));\r\n }\r\n this.index = index;\r\n };\r\n LightGallery.prototype.updateCurrentCounter = function (index) {\r\n this.getElementById('lg-counter-current').html(index + 1 + '');\r\n };\r\n LightGallery.prototype.updateCounterTotal = function () {\r\n this.getElementById('lg-counter-all').html(this.galleryItems.length + '');\r\n };\r\n LightGallery.prototype.getSlideType = function (item) {\r\n if (item.__slideVideoInfo) {\r\n return 'video';\r\n }\r\n else if (item.iframe) {\r\n return 'iframe';\r\n }\r\n else {\r\n return 'image';\r\n }\r\n };\r\n LightGallery.prototype.touchMove = function (startCoords, endCoords, e) {\r\n var distanceX = endCoords.pageX - startCoords.pageX;\r\n var distanceY = endCoords.pageY - startCoords.pageY;\r\n var allowSwipe = false;\r\n if (this.swipeDirection) {\r\n allowSwipe = true;\r\n }\r\n else {\r\n if (Math.abs(distanceX) > 15) {\r\n this.swipeDirection = 'horizontal';\r\n allowSwipe = true;\r\n }\r\n else if (Math.abs(distanceY) > 15) {\r\n this.swipeDirection = 'vertical';\r\n allowSwipe = true;\r\n }\r\n }\r\n if (!allowSwipe) {\r\n return;\r\n }\r\n var $currentSlide = this.getSlideItem(this.index);\r\n if (this.swipeDirection === 'horizontal') {\r\n e === null || e === void 0 ? void 0 : e.preventDefault();\r\n // reset opacity and transition duration\r\n this.outer.addClass('lg-dragging');\r\n // move current slide\r\n this.setTranslate($currentSlide, distanceX, 0);\r\n // move next and prev slide with current slide\r\n var width = $currentSlide.get().offsetWidth;\r\n var slideWidthAmount = (width * 15) / 100;\r\n var gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100);\r\n this.setTranslate(this.outer.find('.lg-prev-slide').first(), -width + distanceX - gutter, 0);\r\n this.setTranslate(this.outer.find('.lg-next-slide').first(), width + distanceX + gutter, 0);\r\n }\r\n else if (this.swipeDirection === 'vertical') {\r\n if (this.settings.swipeToClose) {\r\n e === null || e === void 0 ? void 0 : e.preventDefault();\r\n this.$container.addClass('lg-dragging-vertical');\r\n var opacity = 1 - Math.abs(distanceY) / window.innerHeight;\r\n this.$backdrop.css('opacity', opacity);\r\n var scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2);\r\n this.setTranslate($currentSlide, 0, distanceY, scale, scale);\r\n if (Math.abs(distanceY) > 100) {\r\n this.outer\r\n .addClass('lg-hide-items')\r\n .removeClass('lg-components-open');\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) {\r\n var _this = this;\r\n var distance;\r\n // keep slide animation for any mode while dragg/swipe\r\n if (this.settings.mode !== 'lg-slide') {\r\n this.outer.addClass('lg-slide');\r\n }\r\n // set transition duration\r\n setTimeout(function () {\r\n _this.$container.removeClass('lg-dragging-vertical');\r\n _this.outer\r\n .removeClass('lg-dragging lg-hide-items')\r\n .addClass('lg-components-open');\r\n var triggerClick = true;\r\n if (_this.swipeDirection === 'horizontal') {\r\n distance = endCoords.pageX - startCoords.pageX;\r\n var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX);\r\n if (distance < 0 &&\r\n distanceAbs > _this.settings.swipeThreshold) {\r\n _this.goToNextSlide(true);\r\n triggerClick = false;\r\n }\r\n else if (distance > 0 &&\r\n distanceAbs > _this.settings.swipeThreshold) {\r\n _this.goToPrevSlide(true);\r\n triggerClick = false;\r\n }\r\n }\r\n else if (_this.swipeDirection === 'vertical') {\r\n distance = Math.abs(endCoords.pageY - startCoords.pageY);\r\n if (_this.settings.closable &&\r\n _this.settings.swipeToClose &&\r\n distance > 100) {\r\n _this.closeGallery();\r\n return;\r\n }\r\n else {\r\n _this.$backdrop.css('opacity', 1);\r\n }\r\n }\r\n _this.outer.find('.lg-item').removeAttr('style');\r\n if (triggerClick &&\r\n Math.abs(endCoords.pageX - startCoords.pageX) < 5) {\r\n // Trigger click if distance is less than 5 pix\r\n var target = $LG(event.target);\r\n if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n }\r\n _this.swipeDirection = undefined;\r\n });\r\n // remove slide class once drag/swipe is completed if mode is not slide\r\n setTimeout(function () {\r\n if (!_this.outer.hasClass('lg-dragging') &&\r\n _this.settings.mode !== 'lg-slide') {\r\n _this.outer.removeClass('lg-slide');\r\n }\r\n }, this.settings.speed + 100);\r\n };\r\n LightGallery.prototype.enableSwipe = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isMoved = false;\r\n var isSwiping = false;\r\n if (this.settings.enableSwipe) {\r\n this.$inner.on('touchstart.lg', function (e) {\r\n _this.dragOrSwipeEnabled = true;\r\n var $item = _this.getSlideItem(_this.index);\r\n if (($LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) &&\r\n !_this.outer.hasClass('lg-zoomed') &&\r\n !_this.lgBusy &&\r\n e.touches.length === 1) {\r\n isSwiping = true;\r\n _this.touchAction = 'swipe';\r\n _this.manageSwipeClass();\r\n startCoords = {\r\n pageX: e.touches[0].pageX,\r\n pageY: e.touches[0].pageY,\r\n };\r\n }\r\n });\r\n this.$inner.on('touchmove.lg', function (e) {\r\n if (isSwiping &&\r\n _this.touchAction === 'swipe' &&\r\n e.touches.length === 1) {\r\n endCoords = {\r\n pageX: e.touches[0].pageX,\r\n pageY: e.touches[0].pageY,\r\n };\r\n _this.touchMove(startCoords, endCoords, e);\r\n isMoved = true;\r\n }\r\n });\r\n this.$inner.on('touchend.lg', function (event) {\r\n if (_this.touchAction === 'swipe') {\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords, startCoords, event);\r\n }\r\n else if (isSwiping) {\r\n var target = $LG(event.target);\r\n if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n }\r\n _this.touchAction = undefined;\r\n isSwiping = false;\r\n }\r\n });\r\n }\r\n };\r\n LightGallery.prototype.enableDrag = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isDraging = false;\r\n var isMoved = false;\r\n if (this.settings.enableDrag) {\r\n this.outer.on('mousedown.lg', function (e) {\r\n _this.dragOrSwipeEnabled = true;\r\n var $item = _this.getSlideItem(_this.index);\r\n if ($LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) {\r\n if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) {\r\n e.preventDefault();\r\n if (!_this.lgBusy) {\r\n _this.manageSwipeClass();\r\n startCoords = {\r\n pageX: e.pageX,\r\n pageY: e.pageY,\r\n };\r\n isDraging = true;\r\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\r\n _this.outer.get().scrollLeft += 1;\r\n _this.outer.get().scrollLeft -= 1;\r\n // *\r\n _this.outer\r\n .removeClass('lg-grab')\r\n .addClass('lg-grabbing');\r\n _this.LGel.trigger(lGEvents.dragStart);\r\n }\r\n }\r\n }\r\n });\r\n $LG(window).on(\"mousemove.lg.global\" + this.lgId, function (e) {\r\n if (isDraging && _this.lgOpened) {\r\n isMoved = true;\r\n endCoords = {\r\n pageX: e.pageX,\r\n pageY: e.pageY,\r\n };\r\n _this.touchMove(startCoords, endCoords);\r\n _this.LGel.trigger(lGEvents.dragMove);\r\n }\r\n });\r\n $LG(window).on(\"mouseup.lg.global\" + this.lgId, function (event) {\r\n if (!_this.lgOpened) {\r\n return;\r\n }\r\n var target = $LG(event.target);\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords, startCoords, event);\r\n _this.LGel.trigger(lGEvents.dragEnd);\r\n }\r\n else if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n // Prevent execution on click\r\n if (isDraging) {\r\n isDraging = false;\r\n _this.outer.removeClass('lg-grabbing').addClass('lg-grab');\r\n }\r\n });\r\n }\r\n };\r\n LightGallery.prototype.triggerPosterClick = function () {\r\n var _this = this;\r\n this.$inner.on('click.lg', function (event) {\r\n if (!_this.dragOrSwipeEnabled &&\r\n _this.isPosterElement($LG(event.target))) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n });\r\n };\r\n LightGallery.prototype.manageSwipeClass = function () {\r\n var _touchNext = this.index + 1;\r\n var _touchPrev = this.index - 1;\r\n if (this.settings.loop && this.galleryItems.length > 2) {\r\n if (this.index === 0) {\r\n _touchPrev = this.galleryItems.length - 1;\r\n }\r\n else if (this.index === this.galleryItems.length - 1) {\r\n _touchNext = 0;\r\n }\r\n }\r\n this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');\r\n if (_touchPrev > -1) {\r\n this.getSlideItem(_touchPrev).addClass('lg-prev-slide');\r\n }\r\n this.getSlideItem(_touchNext).addClass('lg-next-slide');\r\n };\r\n /**\r\n * Go to next slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.goToNextSlide();\r\n * @see Demo\r\n */\r\n LightGallery.prototype.goToNextSlide = function (fromTouch) {\r\n var _this = this;\r\n var _loop = this.settings.loop;\r\n if (fromTouch && this.galleryItems.length < 3) {\r\n _loop = false;\r\n }\r\n if (!this.lgBusy) {\r\n if (this.index + 1 < this.galleryItems.length) {\r\n this.index++;\r\n this.LGel.trigger(lGEvents.beforeNextSlide, {\r\n index: this.index,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'next');\r\n }\r\n else {\r\n if (_loop) {\r\n this.index = 0;\r\n this.LGel.trigger(lGEvents.beforeNextSlide, {\r\n index: this.index,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'next');\r\n }\r\n else if (this.settings.slideEndAnimation && !fromTouch) {\r\n this.outer.addClass('lg-right-end');\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-right-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Go to previous slides\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery({});\r\n * plugin.goToPrevSlide();\r\n * @see Demo\r\n *\r\n */\r\n LightGallery.prototype.goToPrevSlide = function (fromTouch) {\r\n var _this = this;\r\n var _loop = this.settings.loop;\r\n if (fromTouch && this.galleryItems.length < 3) {\r\n _loop = false;\r\n }\r\n if (!this.lgBusy) {\r\n if (this.index > 0) {\r\n this.index--;\r\n this.LGel.trigger(lGEvents.beforePrevSlide, {\r\n index: this.index,\r\n fromTouch: fromTouch,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'prev');\r\n }\r\n else {\r\n if (_loop) {\r\n this.index = this.galleryItems.length - 1;\r\n this.LGel.trigger(lGEvents.beforePrevSlide, {\r\n index: this.index,\r\n fromTouch: fromTouch,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'prev');\r\n }\r\n else if (this.settings.slideEndAnimation && !fromTouch) {\r\n this.outer.addClass('lg-left-end');\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-left-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.keyPress = function () {\r\n var _this = this;\r\n $LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\r\n if (_this.lgOpened &&\r\n _this.settings.escKey === true &&\r\n e.keyCode === 27) {\r\n e.preventDefault();\r\n if (_this.settings.allowMediaOverlap &&\r\n _this.outer.hasClass('lg-can-toggle') &&\r\n _this.outer.hasClass('lg-components-open')) {\r\n _this.outer.removeClass('lg-components-open');\r\n }\r\n else {\r\n _this.closeGallery();\r\n }\r\n }\r\n if (_this.lgOpened && _this.galleryItems.length > 1) {\r\n if (e.keyCode === 37) {\r\n e.preventDefault();\r\n _this.goToPrevSlide();\r\n }\r\n if (e.keyCode === 39) {\r\n e.preventDefault();\r\n _this.goToNextSlide();\r\n }\r\n }\r\n });\r\n };\r\n LightGallery.prototype.arrow = function () {\r\n var _this = this;\r\n this.getElementById('lg-prev').on('click.lg', function () {\r\n _this.goToPrevSlide();\r\n });\r\n this.getElementById('lg-next').on('click.lg', function () {\r\n _this.goToNextSlide();\r\n });\r\n };\r\n LightGallery.prototype.arrowDisable = function (index) {\r\n // Disable arrows if settings.hideControlOnEnd is true\r\n if (!this.settings.loop && this.settings.hideControlOnEnd) {\r\n var $prev = this.getElementById('lg-prev');\r\n var $next = this.getElementById('lg-next');\r\n if (index + 1 === this.galleryItems.length) {\r\n $next.attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n else {\r\n $next.removeAttr('disabled').removeClass('disabled');\r\n }\r\n if (index === 0) {\r\n $prev.attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n else {\r\n $prev.removeAttr('disabled').removeClass('disabled');\r\n }\r\n }\r\n };\r\n LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) {\r\n if (scaleX === void 0) { scaleX = 1; }\r\n if (scaleY === void 0) { scaleY = 1; }\r\n $el.css('transform', 'translate3d(' +\r\n xValue +\r\n 'px, ' +\r\n yValue +\r\n 'px, 0px) scale3d(' +\r\n scaleX +\r\n ', ' +\r\n scaleY +\r\n ', 1)');\r\n };\r\n LightGallery.prototype.mousewheel = function () {\r\n var _this = this;\r\n var lastCall = 0;\r\n this.outer.on('wheel.lg', function (e) {\r\n if (!e.deltaY || _this.galleryItems.length < 2) {\r\n return;\r\n }\r\n e.preventDefault();\r\n var now = new Date().getTime();\r\n if (now - lastCall < 1000) {\r\n return;\r\n }\r\n lastCall = now;\r\n if (e.deltaY > 0) {\r\n _this.goToNextSlide();\r\n }\r\n else if (e.deltaY < 0) {\r\n _this.goToPrevSlide();\r\n }\r\n });\r\n };\r\n LightGallery.prototype.isSlideElement = function (target) {\r\n return (target.hasClass('lg-outer') ||\r\n target.hasClass('lg-item') ||\r\n target.hasClass('lg-img-wrap'));\r\n };\r\n LightGallery.prototype.isPosterElement = function (target) {\r\n var playButton = this.getSlideItem(this.index)\r\n .find('.lg-video-play-button')\r\n .get();\r\n return (target.hasClass('lg-video-poster') ||\r\n target.hasClass('lg-video-play-button') ||\r\n (playButton && playButton.contains(target.get())));\r\n };\r\n /**\r\n * Maximize minimize inline gallery.\r\n * @category lGPublicMethods\r\n */\r\n LightGallery.prototype.toggleMaximize = function () {\r\n var _this = this;\r\n this.getElementById('lg-maximize').on('click.lg', function () {\r\n _this.$container.toggleClass('lg-inline');\r\n _this.refreshOnResize();\r\n });\r\n };\r\n LightGallery.prototype.invalidateItems = function () {\r\n for (var index = 0; index < this.items.length; index++) {\r\n var element = this.items[index];\r\n var $element = $LG(element);\r\n $element.off(\"click.lgcustom-item-\" + $element.attr('data-lg-id'));\r\n }\r\n };\r\n LightGallery.prototype.trapFocus = function () {\r\n var _this = this;\r\n this.$container.get().focus({\r\n preventScroll: true,\r\n });\r\n $LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\r\n if (!_this.lgOpened) {\r\n return;\r\n }\r\n var isTabPressed = e.key === 'Tab' || e.keyCode === 9;\r\n if (!isTabPressed) {\r\n return;\r\n }\r\n var focusableEls = utils.getFocusableElements(_this.$container.get());\r\n var firstFocusableEl = focusableEls[0];\r\n var lastFocusableEl = focusableEls[focusableEls.length - 1];\r\n if (e.shiftKey) {\r\n if (document.activeElement === firstFocusableEl) {\r\n lastFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n else {\r\n if (document.activeElement === lastFocusableEl) {\r\n firstFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n };\r\n LightGallery.prototype.manageCloseGallery = function () {\r\n var _this = this;\r\n if (!this.settings.closable)\r\n return;\r\n var mousedown = false;\r\n this.getElementById('lg-close').on('click.lg', function () {\r\n _this.closeGallery();\r\n });\r\n if (this.settings.closeOnTap) {\r\n // If you drag the slide and release outside gallery gets close on chrome\r\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\r\n this.outer.on('mousedown.lg', function (e) {\r\n var target = $LG(e.target);\r\n if (_this.isSlideElement(target)) {\r\n mousedown = true;\r\n }\r\n else {\r\n mousedown = false;\r\n }\r\n });\r\n this.outer.on('mousemove.lg', function () {\r\n mousedown = false;\r\n });\r\n this.outer.on('mouseup.lg', function (e) {\r\n var target = $LG(e.target);\r\n if (_this.isSlideElement(target) && mousedown) {\r\n if (!_this.outer.hasClass('lg-dragging')) {\r\n _this.closeGallery();\r\n }\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Close lightGallery if it is opened.\r\n *\r\n * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery\r\n * @return returns the estimated time to close gallery completely including the close animation duration\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.closeGallery();\r\n *\r\n */\r\n LightGallery.prototype.closeGallery = function (force) {\r\n var _this = this;\r\n if (!this.lgOpened || (!this.settings.closable && !force)) {\r\n return 0;\r\n }\r\n this.LGel.trigger(lGEvents.beforeClose);\r\n if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {\r\n $LG(window).scrollTop(this.prevScrollTop);\r\n }\r\n var currentItem = this.items[this.index];\r\n var transform;\r\n if (this.zoomFromOrigin && currentItem) {\r\n var _a = this.mediaContainerPosition, top_4 = _a.top, bottom = _a.bottom;\r\n var _b = this.galleryItems[this.index], __slideVideoInfo = _b.__slideVideoInfo, poster = _b.poster;\r\n var imageSize = utils.getSize(currentItem, this.outer, top_4 + bottom, __slideVideoInfo && poster && this.settings.videoMaxSize);\r\n transform = utils.getTransform(currentItem, this.outer, top_4, bottom, imageSize);\r\n }\r\n if (this.zoomFromOrigin && transform) {\r\n this.outer.addClass('lg-closing lg-zoom-from-image');\r\n this.getSlideItem(this.index)\r\n .addClass('lg-start-end-progress')\r\n .css('transition-duration', this.settings.startAnimationDuration + 'ms')\r\n .css('transform', transform);\r\n }\r\n else {\r\n this.outer.addClass('lg-hide-items');\r\n // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true\r\n // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts\r\n this.outer.removeClass('lg-zoom-from-image');\r\n }\r\n // Unbind all events added by lightGallery\r\n // @todo\r\n //this.$el.off('.lg.tm');\r\n this.destroyModules();\r\n this.lGalleryOn = false;\r\n this.isDummyImageRemoved = false;\r\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\r\n clearTimeout(this.hideBarTimeout);\r\n this.hideBarTimeout = false;\r\n $LG('html').removeClass('lg-on');\r\n this.outer.removeClass('lg-visible lg-components-open');\r\n // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity.\r\n this.$backdrop.removeClass('in').css('opacity', 0);\r\n var removeTimeout = this.zoomFromOrigin && transform\r\n ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration)\r\n : this.settings.backdropDuration;\r\n this.$container.removeClass('lg-show-in');\r\n // Once the closign animation is completed and gallery is invisible\r\n setTimeout(function () {\r\n if (_this.zoomFromOrigin && transform) {\r\n _this.outer.removeClass('lg-zoom-from-image');\r\n }\r\n _this.$container.removeClass('lg-show');\r\n // Reset scrollbar\r\n _this.resetScrollBar();\r\n // Need to remove inline opacity as it is used in the stylesheet as well\r\n _this.$backdrop\r\n .removeAttr('style')\r\n .css('transition-duration', _this.settings.backdropDuration + 'ms');\r\n _this.outer.removeClass(\"lg-closing \" + _this.settings.startClass);\r\n _this.getSlideItem(_this.index).removeClass('lg-start-end-progress');\r\n _this.$inner.empty();\r\n if (_this.lgOpened) {\r\n _this.LGel.trigger(lGEvents.afterClose, {\r\n instance: _this,\r\n });\r\n }\r\n if (_this.$container.get()) {\r\n _this.$container.get().blur();\r\n }\r\n _this.lgOpened = false;\r\n }, removeTimeout + 100);\r\n return removeTimeout + 100;\r\n };\r\n LightGallery.prototype.initModules = function () {\r\n this.plugins.forEach(function (module) {\r\n try {\r\n module.init();\r\n }\r\n catch (err) {\r\n console.warn(\"lightGallery:- make sure lightGallery module is properly initiated\");\r\n }\r\n });\r\n };\r\n LightGallery.prototype.destroyModules = function (destroy) {\r\n this.plugins.forEach(function (module) {\r\n try {\r\n if (destroy) {\r\n module.destroy();\r\n }\r\n else {\r\n module.closeGallery && module.closeGallery();\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"lightGallery:- make sure lightGallery module is properly destroyed\");\r\n }\r\n });\r\n };\r\n /**\r\n * Refresh lightGallery with new set of children.\r\n *\r\n * @description This is useful to update the gallery when the child elements are changed without calling destroy method.\r\n *\r\n * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery\r\n * @see Demo\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * // Delete or add children, then call\r\n * plugin.refresh();\r\n *\r\n */\r\n LightGallery.prototype.refresh = function (galleryItems) {\r\n if (!this.settings.dynamic) {\r\n this.invalidateItems();\r\n }\r\n if (galleryItems) {\r\n this.galleryItems = galleryItems;\r\n }\r\n else {\r\n this.galleryItems = this.getItems();\r\n }\r\n this.updateControls();\r\n this.openGalleryOnItemClick();\r\n this.LGel.trigger(lGEvents.updateSlides);\r\n };\r\n LightGallery.prototype.updateControls = function () {\r\n this.addSlideVideoInfo(this.galleryItems);\r\n this.updateCounterTotal();\r\n this.manageSingleSlideClassName();\r\n };\r\n LightGallery.prototype.destroyGallery = function () {\r\n this.destroyModules(true);\r\n if (!this.settings.dynamic) {\r\n this.invalidateItems();\r\n }\r\n $LG(window).off(\".lg.global\" + this.lgId);\r\n this.LGel.off('.lg');\r\n this.$container.remove();\r\n };\r\n /**\r\n * Destroy lightGallery.\r\n * Destroy lightGallery and its plugin instances completely\r\n *\r\n * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance.\r\n * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed.\r\n * You can use refresh method most of the times.\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.destroy();\r\n *\r\n */\r\n LightGallery.prototype.destroy = function () {\r\n var closeTimeout = this.closeGallery(true);\r\n if (closeTimeout) {\r\n setTimeout(this.destroyGallery.bind(this), closeTimeout);\r\n }\r\n else {\r\n this.destroyGallery();\r\n }\r\n return closeTimeout;\r\n };\r\n return LightGallery;\r\n}());\n\nfunction lightGallery(el, options) {\r\n return new LightGallery(el, options);\r\n}\n\nexport default lightGallery;\n//# sourceMappingURL=lightgallery.es5.js.map\n","interface ThumbnailStrings {\n toggleThumbnails: string;\n}\n\nexport interface ThumbnailsSettings {\n /**\n * Enable thumbnails for the gallery\n */\n thumbnail: boolean;\n\n /*\n * Enable thumbnail animation.\n */\n animateThumb: boolean;\n\n /**\n * Position of selected thumbnail.\n */\n currentPagerPosition: 'left' | 'middle' | 'right';\n\n /**\n * Position of thumbnails when the width of all thumbnails combined is less than the gallery's width.\n *\n */\n alignThumbnails: 'left' | 'middle' | 'right';\n\n /**\n * Width of each thumbnails.\n */\n thumbWidth: number;\n\n /**\n * Height of each thumbnails.\n */\n thumbHeight: string;\n\n /**\n * Spacing between each thumbnails\n */\n thumbMargin: number;\n\n /**\n * control where the thumbnails should be appended.\n * By default, thumbnails are appended to '.lg-components' which has inbuilt open close transitions\n * If you don't want initial thumbnails transitions, or want to do more customization,\n * you can append thumbnails to the lightGalley outer div -\n * Demo\n */\n appendThumbnailsTo: '.lg-outer' | '.lg-components';\n\n /**\n * Enable toggle captions and thumbnails.\n * @description not applicable if allowMediaOverlap is false\n */\n toggleThumb: boolean;\n\n /**\n * Enables desktop mouse drag support for thumbnails.\n */\n enableThumbDrag: boolean;\n\n /**\n * Enables thumbnail touch/swipe support for touch devices\n */\n enableThumbSwipe: boolean;\n\n /**\n * By setting the thumbnailSwipeThreshold (in px) you can set how far the user must swipe for the next/prev slide.\n */\n thumbnailSwipeThreshold: number;\n\n /**\n * You can automatically load thumbnails for YouTube videos from YouTube by setting loadYouTubeThumbnail true\n */\n loadYouTubeThumbnail: boolean;\n\n /**\n * You can specify the thumbnail size by setting respective number.\n */\n //@todo add demo\n youTubeThumbSize: number;\n\n /**\n * Custom translation strings for aria-labels\n */\n thumbnailPluginStrings: ThumbnailStrings;\n}\n\nexport const thumbnailsSettings: ThumbnailsSettings = {\n thumbnail: true,\n\n animateThumb: true,\n currentPagerPosition: 'middle',\n alignThumbnails: 'middle',\n\n thumbWidth: 100,\n thumbHeight: '80px',\n thumbMargin: 5,\n\n appendThumbnailsTo: '.lg-components',\n toggleThumb: false,\n\n enableThumbDrag: true,\n enableThumbSwipe: true,\n thumbnailSwipeThreshold: 10,\n\n loadYouTubeThumbnail: true,\n youTubeThumbSize: 1,\n\n thumbnailPluginStrings: {\n toggleThumbnails: 'Toggle thumbnails',\n } as ThumbnailStrings,\n};\n","import { LightGallery } from './lightgallery';\nimport { VideoSource } from './plugins/video/types';\n\n/**\n * List of lightGallery events\n * All events should be documented here\n * Below interfaces are used to build the website documentations\n * */\nexport const lGEvents: {\n [key: string]: string;\n} = {\n afterAppendSlide: 'lgAfterAppendSlide',\n init: 'lgInit',\n hasVideo: 'lgHasVideo',\n containerResize: 'lgContainerResize',\n updateSlides: 'lgUpdateSlides',\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\n beforeOpen: 'lgBeforeOpen',\n afterOpen: 'lgAfterOpen',\n slideItemLoad: 'lgSlideItemLoad',\n beforeSlide: 'lgBeforeSlide',\n afterSlide: 'lgAfterSlide',\n posterClick: 'lgPosterClick',\n dragStart: 'lgDragStart',\n dragMove: 'lgDragMove',\n dragEnd: 'lgDragEnd',\n beforeNextSlide: 'lgBeforeNextSlide',\n beforePrevSlide: 'lgBeforePrevSlide',\n beforeClose: 'lgBeforeClose',\n afterClose: 'lgAfterClose',\n rotateLeft: 'lgRotateLeft',\n rotateRight: 'lgRotateRight',\n flipHorizontal: 'lgFlipHorizontal',\n flipVertical: 'lgFlipVertical',\n autoplay: 'lgAutoplay',\n autoplayStart: 'lgAutoplayStart',\n autoplayStop: 'lgAutoplayStop',\n};\n\n// Follow the below format for the event documentation\n// @method is the method name when event is used with Angular/React components\n\n/**\n * Fired only once when lightGallery is initialized\n * @name lgInit\n * @method onInit\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action on lightGallery initialization.\n * // Init event returns the plugin instance that can be used to call any lightGalley public method\n * let pluginInstance = null;\n * lg.addEventListener('lgInit', (event) => {\n * pluginInstance = event.detail.instance;\n * });\n * lightGallery(lg);\n * @see Methods\n */\nexport interface InitDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired when the slide content has been inserted into it's slide container.\n * @name lgAfterAppendSlide\n * @method onAfterAppendSlide\n */\nexport interface AfterAppendSlideEventDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired immediately before opening the gallery\n * @name lgBeforeOpen\n * @method onBeforeOpen\n */\nexport interface BeforeOpenDetail {}\n\n/**\n * Fired immediately after opening the gallery\n * @name lgAfterOpen\n * @method onAfterOpen\n */\nexport interface AfterOpenDetail {}\n\n/**\n * Fired once the media inside the slide has been completely loaded .\n * @name lgSlideItemLoad\n * @method onSlideItemLoad\n */\nexport interface SlideItemLoadDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * For the first slide, lightGallery adds some delay for displaying the loaded slide item.\n * This delay is required for the transition effect when the slide item is displayed\n * Respect the delay when you use this event\n */\n delay: number;\n\n // Will be true for the first slide\n isFirstSlide: boolean;\n}\n\n/**\n * Fired immediately before each slide transition.\n * @name lgBeforeSlide\n * @method onBeforeSlide\n * @example\n * const lg = document.getElementById('custom-events-demo');\n * // Perform any action before each slide transition\n * lg.addEventListener('lgBeforeSlide', (event) => {\n * const { index, prevIndex } = event.detail;\n * alert(index, prevIndex);\n * });\n * lightGallery(lg);\n */\nexport interface BeforeSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired immediately after each slide transition.\n * @name lgAfterSlide\n * @method onAfterSlide\n */\nexport interface AfterSlideDetail {\n /**\n * Index of the previous slide\n */\n prevIndex: number;\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n /**\n * true if slide function called via thumbnail click\n */\n fromThumb: boolean;\n}\n\n/**\n * Fired when the video poster is clicked.\n * @name lgPosterClick\n * @method onPosterClick\n */\nexport interface PosterClickDetail {}\n\n/**\n * Fired when the drag event to move to different slide starts.\n * @name lgDragStart\n * @method onDragStart\n */\nexport interface DragStartDetail {}\n\n/**\n * Fired periodically during the drag operation.\n * @name lgDragMove\n * @method onDragMove\n */\nexport interface DragMoveDetail {}\n\n/**\n * Fired when the user has finished the drag operation\n * @name lgDragEnd\n * @method onDragEnd\n */\nexport interface DragEndDetail {}\n\n/**\n * Fired immediately before the start of the close process.\n * @name lgBeforeClose\n * @method onBeforeClose\n */\nexport interface BeforeCloseDetail {}\n\n/**\n * Fired immediately once lightGallery is closed.\n * @name lgAfterClose\n * @method onAfterClose\n */\nexport interface AfterCloseDetail {\n /**\n * lightGallery plugin instance\n */\n instance: LightGallery;\n}\n\n/**\n * Fired immediately before each \"next\" slide transition\n * @name lgBeforeNextSlide\n * @method onBeforeNextSlide\n */\nexport interface BeforeNextSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired immediately before each \"prev\" slide transition\n * @name lgBeforePrevSlide\n * @method onBeforePrevSlide\n */\nexport interface BeforePrevSlideDetail {\n /**\n * Index of the slide\n */\n index: number;\n /**\n * true if slide function called via touch event or mouse drag\n */\n fromTouch: boolean;\n}\n\n/**\n * Fired when the sub-html content (ex : title/ description) has been appended into the slide.\n * @name lgAfterAppendSubHtml\n * @method onAfterAppendSubHtml\n */\nexport interface AfterAppendSubHtmlDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the lightGallery container has been resized.\n * @name lgContainerResize\n * @method onContainerResize\n */\nexport interface ContainerResizeDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when lightGallery detects video slide\n * @name lgHasVideo\n * @method onHasVideo\n */\nexport interface HasVideoDetail {\n /**\n * Index of the slide,\n */\n index: number;\n /**\n * Video source\n */\n src: string;\n /**\n * HTML5 video source if available\n *

\n HTML5 video source = source: {\n src: string;\n type: string;\n }[];\n attributes: HTMLVideoElement;\n *

\n */\n html5Video: VideoSource;\n /**\n * True if video has poster\n */\n hasPoster: boolean;\n}\n\n/**\n * Fired when the image is rotated in anticlockwise direction\n * @name lgRotateLeft\n * @method onRotateLeft\n */\nexport interface RotateLeftDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is rotated in clockwise direction\n * @name lgRotateRight\n * @method onRotateRight\n */\nexport interface RotateRightDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped horizontally\n * @name lgFlipHorizontal\n * @method onFlipHorizontal\n */\nexport interface FlipHorizontalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n\n/**\n * Fired when the image is flipped vertically\n * @name lgFlipVertical\n * @method onFlipVertical\n */\nexport interface FlipVerticalDetail {\n /**\n * Index of the slide\n */\n index: number;\n}\n","import {\n ThumbnailsSettings,\n thumbnailsSettings,\n} from './lg-thumbnail-settings';\nimport { LgQuery, lgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { GalleryItem } from '../../lg-utils';\nimport { lGEvents } from '../../lg-events';\n\ninterface ThumbDragUtils {\n cords: {\n startX: number;\n endX: number;\n };\n isMoved: boolean;\n newTranslateX: number;\n startTime: Date;\n endTime: Date;\n touchMoveTime: number;\n}\ninterface ThumbnailGalleryItem extends GalleryItem {\n thumb: string;\n}\nexport default class Thumbnail {\n private core: LightGallery;\n private $thumbOuter!: lgQuery;\n private $lgThumb!: lgQuery;\n private thumbOuterWidth = 0;\n private thumbTotalWidth = 0;\n private translateX = 0;\n private thumbClickable = false;\n private settings!: ThumbnailsSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n return this;\n }\n\n init(): void {\n // extend module default settings with lightGallery core settings\n this.settings = {\n ...thumbnailsSettings,\n ...this.core.settings,\n };\n this.thumbOuterWidth = 0;\n this.thumbTotalWidth =\n this.core.galleryItems.length *\n (this.settings.thumbWidth + this.settings.thumbMargin);\n\n // Thumbnail animation value\n this.translateX = 0;\n\n this.setAnimateThumbStyles();\n\n if (!this.core.settings.allowMediaOverlap) {\n this.settings.toggleThumb = false;\n }\n\n if (this.settings.thumbnail) {\n this.build();\n if (this.settings.animateThumb) {\n if (this.settings.enableThumbDrag) {\n this.enableThumbDrag();\n }\n\n if (this.settings.enableThumbSwipe) {\n this.enableThumbSwipe();\n }\n\n this.thumbClickable = false;\n } else {\n this.thumbClickable = true;\n }\n\n this.toggleThumbBar();\n this.thumbKeyPress();\n }\n }\n\n build(): void {\n this.setThumbMarkup();\n this.manageActiveClassOnSlideChange();\n this.$lgThumb.first().on('click.lg touchend.lg', (e: CustomEvent) => {\n const $target = this.$LG(e.target);\n if (!$target.hasAttribute('data-lg-item-id')) {\n return;\n }\n setTimeout(() => {\n // In IE9 and bellow touch does not support\n // Go to slide if browser does not support css transitions\n if (this.thumbClickable && !this.core.lgBusy) {\n const index = parseInt($target.attr('data-lg-item-id'));\n this.core.slide(index, false, true, false);\n }\n }, 50);\n });\n\n this.core.LGel.on(`${lGEvents.beforeSlide}.thumb`, (event) => {\n const { index } = event.detail;\n this.animateThumb(index);\n });\n this.core.LGel.on(`${lGEvents.beforeOpen}.thumb`, () => {\n this.thumbOuterWidth = this.core.outer.get().offsetWidth;\n });\n\n this.core.LGel.on(`${lGEvents.updateSlides}.thumb`, () => {\n this.rebuildThumbnails();\n });\n this.core.LGel.on(`${lGEvents.containerResize}.thumb`, () => {\n if (!this.core.lgOpened) return;\n setTimeout(() => {\n this.thumbOuterWidth = this.core.outer.get().offsetWidth;\n this.animateThumb(this.core.index);\n this.thumbOuterWidth = this.core.outer.get().offsetWidth;\n }, 50);\n });\n }\n\n setThumbMarkup(): void {\n let thumbOuterClassNames = 'lg-thumb-outer ';\n\n if (this.settings.alignThumbnails) {\n thumbOuterClassNames += `lg-thumb-align-${this.settings.alignThumbnails}`;\n }\n\n const html = `
\n
\n
\n
`;\n\n this.core.outer.addClass('lg-has-thumb');\n\n if (this.settings.appendThumbnailsTo === '.lg-components') {\n this.core.$lgComponents.append(html);\n } else {\n this.core.outer.append(html);\n }\n\n this.$thumbOuter = this.core.outer.find('.lg-thumb-outer').first();\n this.$lgThumb = this.core.outer.find('.lg-thumb').first();\n\n if (this.settings.animateThumb) {\n this.core.outer\n .find('.lg-thumb')\n .css('transition-duration', this.core.settings.speed + 'ms')\n .css('width', this.thumbTotalWidth + 'px')\n .css('position', 'relative');\n }\n\n this.setThumbItemHtml(\n (this.core.galleryItems as unknown) as ThumbnailGalleryItem[],\n );\n }\n\n enableThumbDrag(): void {\n let thumbDragUtils: ThumbDragUtils = {\n cords: {\n startX: 0,\n endX: 0,\n },\n isMoved: false,\n newTranslateX: 0,\n startTime: new Date(),\n endTime: new Date(),\n touchMoveTime: 0,\n };\n\n let isDragging = false;\n\n this.$thumbOuter.addClass('lg-grab');\n\n this.core.outer\n .find('.lg-thumb')\n .first()\n .on('mousedown.lg.thumb', (e) => {\n if (this.thumbTotalWidth > this.thumbOuterWidth) {\n // execute only on .lg-object\n e.preventDefault();\n thumbDragUtils.cords.startX = e.pageX;\n\n thumbDragUtils.startTime = new Date();\n this.thumbClickable = false;\n\n isDragging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n this.core.outer.get().scrollLeft += 1;\n this.core.outer.get().scrollLeft -= 1;\n\n // *\n this.$thumbOuter\n .removeClass('lg-grab')\n .addClass('lg-grabbing');\n }\n });\n\n this.$LG(window).on(\n `mousemove.lg.thumb.global${this.core.lgId}`,\n (e) => {\n if (!this.core.lgOpened) return;\n if (isDragging) {\n thumbDragUtils.cords.endX = e.pageX;\n\n thumbDragUtils = this.onThumbTouchMove(thumbDragUtils);\n }\n },\n );\n\n this.$LG(window).on(`mouseup.lg.thumb.global${this.core.lgId}`, () => {\n if (!this.core.lgOpened) return;\n if (thumbDragUtils.isMoved) {\n thumbDragUtils = this.onThumbTouchEnd(thumbDragUtils);\n } else {\n this.thumbClickable = true;\n }\n\n if (isDragging) {\n isDragging = false;\n this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab');\n }\n });\n }\n\n enableThumbSwipe(): void {\n let thumbDragUtils: ThumbDragUtils = {\n cords: {\n startX: 0,\n endX: 0,\n },\n isMoved: false,\n newTranslateX: 0,\n startTime: new Date(),\n endTime: new Date(),\n touchMoveTime: 0,\n };\n\n this.$lgThumb.on('touchstart.lg', (e: TouchEvent) => {\n if (this.thumbTotalWidth > this.thumbOuterWidth) {\n e.preventDefault();\n thumbDragUtils.cords.startX = e.targetTouches[0].pageX;\n this.thumbClickable = false;\n thumbDragUtils.startTime = new Date();\n }\n });\n\n this.$lgThumb.on('touchmove.lg', (e: TouchEvent) => {\n if (this.thumbTotalWidth > this.thumbOuterWidth) {\n e.preventDefault();\n thumbDragUtils.cords.endX = e.targetTouches[0].pageX;\n thumbDragUtils = this.onThumbTouchMove(thumbDragUtils);\n }\n });\n\n this.$lgThumb.on('touchend.lg', () => {\n if (thumbDragUtils.isMoved) {\n thumbDragUtils = this.onThumbTouchEnd(thumbDragUtils);\n } else {\n this.thumbClickable = true;\n }\n });\n }\n\n // Rebuild thumbnails\n rebuildThumbnails(): void {\n // Remove transitions\n this.$thumbOuter.addClass('lg-rebuilding-thumbnails');\n setTimeout(() => {\n this.thumbTotalWidth =\n this.core.galleryItems.length *\n (this.settings.thumbWidth + this.settings.thumbMargin);\n this.$lgThumb.css('width', this.thumbTotalWidth + 'px');\n this.$lgThumb.empty();\n this.setThumbItemHtml(\n (this.core.galleryItems as unknown) as ThumbnailGalleryItem[],\n );\n this.animateThumb(this.core.index);\n }, 50);\n setTimeout(() => {\n this.$thumbOuter.removeClass('lg-rebuilding-thumbnails');\n }, 200);\n }\n\n // @ts-check\n\n setTranslate(value: number): void {\n this.$lgThumb.css(\n 'transform',\n 'translate3d(-' + value + 'px, 0px, 0px)',\n );\n }\n\n getPossibleTransformX(left: number): number {\n if (left > this.thumbTotalWidth - this.thumbOuterWidth) {\n left = this.thumbTotalWidth - this.thumbOuterWidth;\n }\n\n if (left < 0) {\n left = 0;\n }\n return left;\n }\n\n animateThumb(index: number): void {\n this.$lgThumb.css(\n 'transition-duration',\n this.core.settings.speed + 'ms',\n );\n if (this.settings.animateThumb) {\n let position = 0;\n switch (this.settings.currentPagerPosition) {\n case 'left':\n position = 0;\n break;\n case 'middle':\n position =\n this.thumbOuterWidth / 2 - this.settings.thumbWidth / 2;\n break;\n case 'right':\n position = this.thumbOuterWidth - this.settings.thumbWidth;\n }\n this.translateX =\n (this.settings.thumbWidth + this.settings.thumbMargin) * index -\n 1 -\n position;\n if (this.translateX > this.thumbTotalWidth - this.thumbOuterWidth) {\n this.translateX = this.thumbTotalWidth - this.thumbOuterWidth;\n }\n\n if (this.translateX < 0) {\n this.translateX = 0;\n }\n\n this.setTranslate(this.translateX);\n }\n }\n\n onThumbTouchMove(thumbDragUtils: ThumbDragUtils): ThumbDragUtils {\n thumbDragUtils.newTranslateX = this.translateX;\n thumbDragUtils.isMoved = true;\n\n thumbDragUtils.touchMoveTime = new Date().valueOf();\n\n thumbDragUtils.newTranslateX -=\n thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;\n\n thumbDragUtils.newTranslateX = this.getPossibleTransformX(\n thumbDragUtils.newTranslateX,\n );\n\n // move current slide\n this.setTranslate(thumbDragUtils.newTranslateX);\n this.$thumbOuter.addClass('lg-dragging');\n\n return thumbDragUtils;\n }\n\n onThumbTouchEnd(thumbDragUtils: ThumbDragUtils): ThumbDragUtils {\n thumbDragUtils.isMoved = false;\n thumbDragUtils.endTime = new Date();\n this.$thumbOuter.removeClass('lg-dragging');\n\n const touchDuration =\n thumbDragUtils.endTime.valueOf() -\n thumbDragUtils.startTime.valueOf();\n let distanceXnew =\n thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;\n let speedX = Math.abs(distanceXnew) / touchDuration;\n // Some magical numbers\n // Can be improved\n if (\n speedX > 0.15 &&\n thumbDragUtils.endTime.valueOf() - thumbDragUtils.touchMoveTime < 30\n ) {\n speedX += 1;\n\n if (speedX > 2) {\n speedX += 1;\n }\n speedX =\n speedX +\n speedX * (Math.abs(distanceXnew) / this.thumbOuterWidth);\n this.$lgThumb.css(\n 'transition-duration',\n Math.min(speedX - 1, 2) + 'settings',\n );\n\n distanceXnew = distanceXnew * speedX;\n\n this.translateX = this.getPossibleTransformX(\n this.translateX - distanceXnew,\n );\n this.setTranslate(this.translateX);\n } else {\n this.translateX = thumbDragUtils.newTranslateX;\n }\n if (\n Math.abs(thumbDragUtils.cords.endX - thumbDragUtils.cords.startX) <\n this.settings.thumbnailSwipeThreshold\n ) {\n this.thumbClickable = true;\n }\n\n return thumbDragUtils;\n }\n\n getThumbHtml(thumb: string, index: number, alt?: string): string {\n const slideVideoInfo =\n this.core.galleryItems[index].__slideVideoInfo || {};\n let thumbImg;\n\n if (slideVideoInfo.youtube) {\n if (this.settings.loadYouTubeThumbnail) {\n thumbImg =\n '//img.youtube.com/vi/' +\n slideVideoInfo.youtube[1] +\n '/' +\n this.settings.youTubeThumbSize +\n '.jpg';\n } else {\n thumbImg = thumb;\n }\n } else {\n thumbImg = thumb;\n }\n\n const altAttr = alt ? 'alt=\"' + alt + '\"' : '';\n\n return `
\n \n
`;\n }\n\n getThumbItemHtml(items: ThumbnailGalleryItem[]): string {\n let thumbList = '';\n for (let i = 0; i < items.length; i++) {\n thumbList += this.getThumbHtml(items[i].thumb, i, items[i].alt);\n }\n\n return thumbList;\n }\n\n setThumbItemHtml(items: ThumbnailGalleryItem[]): void {\n const thumbList = this.getThumbItemHtml(items);\n this.$lgThumb.html(thumbList);\n }\n\n setAnimateThumbStyles(): void {\n if (this.settings.animateThumb) {\n this.core.outer.addClass('lg-animate-thumb');\n }\n }\n\n // Manage thumbnail active calss\n manageActiveClassOnSlideChange(): void {\n // manage active class for thumbnail\n this.core.LGel.on(\n `${lGEvents.beforeSlide}.thumb`,\n (event: CustomEvent) => {\n const $thumb = this.core.outer.find('.lg-thumb-item');\n const { index } = event.detail;\n $thumb.removeClass('active');\n $thumb.eq(index).addClass('active');\n },\n );\n }\n\n // Toggle thumbnail bar\n toggleThumbBar(): void {\n if (this.settings.toggleThumb) {\n this.core.outer.addClass('lg-can-toggle');\n this.core.$toolbar.append(\n '',\n );\n this.core.outer\n .find('.lg-toggle-thumb')\n .first()\n .on('click.lg', () => {\n this.core.outer.toggleClass('lg-components-open');\n });\n }\n }\n\n thumbKeyPress(): void {\n this.$LG(window).on(`keydown.lg.thumb.global${this.core.lgId}`, (e) => {\n if (!this.core.lgOpened || !this.settings.toggleThumb) return;\n\n if (e.keyCode === 38) {\n e.preventDefault();\n this.core.outer.addClass('lg-components-open');\n } else if (e.keyCode === 40) {\n e.preventDefault();\n this.core.outer.removeClass('lg-components-open');\n }\n });\n }\n\n destroy(): void {\n if (this.settings.thumbnail) {\n this.$LG(window).off(`.lg.thumb.global${this.core.lgId}`);\n this.core.LGel.off('.lg.thumb');\n this.core.LGel.off('.thumb');\n this.$thumbOuter.remove();\n this.core.outer.removeClass('lg-has-thumb');\n }\n }\n}\n","export interface ActualSizeIcons {\n zoomIn: 'lg-zoom-in' | 'lg-actual-size';\n zoomOut: 'lg-zoom-out' | 'lg-actual-size';\n}\n\nexport interface ZoomStrings {\n zoomIn: string;\n zoomOut: string;\n viewActualSize: string;\n}\n\nexport interface ZoomSettings {\n /**\n * Value of zoom should be incremented/decremented\n */\n scale: number;\n\n /**\n * Enable/Disable zoom option\n */\n zoom: boolean;\n\n /**\n * Enable/Disable infinite zoom\n * @description If you set this to true, you can zoom in more than the original size of the image.\n */\n infiniteZoom: boolean;\n\n /**\n * Enable actual size icon.\n */\n actualSize: boolean;\n\n /**\n * Once the slide transition is completed, how much time should take zoom plugin to activate\n * @description Some css styles will be added to the images if zoom is enabled.\n * So it might conflict if you add any custom styles to the images such as the initial transition while opening the gallery.\n * So you can delay adding zoom related styles to the images by changing the value of enableZoomAfter.\n */\n enableZoomAfter: number;\n\n /**\n * Show zoom in, zoom out icons\n */\n showZoomInOutIcons: boolean;\n\n /**\n * Actual size icons classnames.\n * Specify classnames for both ZoomIn and ZoomOut states\n * You can use `actualSizeIcons: { zoomIn: 'lg-actual-size', zoomOut: 'lg-zoom-out' }`\n * to show actual size icons instead of zoom in and zoom out icons.\n */\n actualSizeIcons: ActualSizeIcons;\n\n /**\n * Custom translation strings for aria-labels\n */\n zoomPluginStrings: ZoomStrings;\n}\n\nexport const zoomSettings: ZoomSettings = {\n scale: 1,\n zoom: true,\n infiniteZoom: true,\n actualSize: true,\n showZoomInOutIcons: false,\n actualSizeIcons: {\n zoomIn: 'lg-zoom-in',\n zoomOut: 'lg-zoom-out',\n } as ActualSizeIcons,\n enableZoomAfter: 300,\n zoomPluginStrings: {\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n viewActualSize: 'View actual size',\n } as ZoomStrings,\n};\n","import { ZoomSettings, zoomSettings } from './lg-zoom-settings';\nimport { LgQuery, lgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { lGEvents } from '../../lg-events';\n\ninterface Coords {\n x: number;\n y: number;\n}\n\ninterface DragAllowedAxises {\n allowX: boolean;\n allowY: boolean;\n}\ninterface ZoomTouchEvent {\n pageX: number;\n touches: { pageY: number; pageX: number }[];\n pageY: number;\n}\ninterface PossibleCords {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n}\n\nconst ZOOM_TRANSITION_DURATION = 500;\n\nexport default class Zoom {\n private core: LightGallery;\n private settings: ZoomSettings;\n private $LG!: LgQuery;\n private imageReset!: number | boolean;\n zoomableTimeout: any;\n positionChanged!: boolean;\n zoomInProgress!: boolean;\n pageX!: number;\n pageY!: number;\n scale!: number;\n\n containerRect!: ClientRect;\n dragAllowedAxises!: DragAllowedAxises;\n top!: number;\n left!: number;\n scrollTop!: number;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n this.settings = { ...zoomSettings, ...this.core.settings };\n\n return this;\n }\n\n // Append Zoom controls. Actual size, Zoom-in, Zoom-out\n buildTemplates(): void {\n let zoomIcons = this.settings.showZoomInOutIcons\n ? ``\n : '';\n\n if (this.settings.actualSize) {\n zoomIcons += ``;\n }\n\n this.core.outer.addClass('lg-use-transition-for-zoom');\n\n this.core.$toolbar.first().append(zoomIcons);\n }\n\n /**\n * @desc Enable zoom option only once the image is completely loaded\n * If zoomFromOrigin is true, Zoom is enabled once the dummy image has been inserted\n *\n * Zoom styles are defined under lg-zoomable CSS class.\n */\n enableZoom(event: CustomEvent): void {\n // delay will be 0 except first time\n let _speed = this.settings.enableZoomAfter + event.detail.delay;\n\n // set _speed value 0 if gallery opened from direct url and if it is first slide\n if (\n this.$LG('body').first().hasClass('lg-from-hash') &&\n event.detail.delay\n ) {\n // will execute only once\n _speed = 0;\n } else {\n // Remove lg-from-hash to enable starting animation.\n this.$LG('body').first().removeClass('lg-from-hash');\n }\n\n this.zoomableTimeout = setTimeout(() => {\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n this.core.getSlideItem(event.detail.index).addClass('lg-zoomable');\n if (event.detail.index === this.core.index) {\n this.setZoomEssentials();\n }\n }, _speed + 30);\n }\n\n enableZoomOnSlideItemLoad(): void {\n // Add zoomable class\n this.core.LGel.on(\n `${lGEvents.slideItemLoad}.zoom`,\n this.enableZoom.bind(this),\n );\n }\n\n getDragCords(e: MouseEvent): Coords {\n return {\n x: e.pageX,\n y: e.pageY,\n };\n }\n getSwipeCords(e: TouchEvent): Coords {\n const x = e.touches[0].pageX;\n const y = e.touches[0].pageY;\n return {\n x,\n y,\n };\n }\n\n getDragAllowedAxises(scale: number, scaleDiff?: number): DragAllowedAxises {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first()\n .get();\n\n let height = 0;\n let width = 0;\n const rect = $image.getBoundingClientRect();\n if (scale) {\n height = $image.offsetHeight * scale;\n width = $image.offsetWidth * scale;\n } else if (scaleDiff) {\n height = rect.height + scaleDiff * rect.height;\n width = rect.width + scaleDiff * rect.width;\n } else {\n height = rect.height;\n width = rect.width;\n }\n const allowY = height > this.containerRect.height;\n const allowX = width > this.containerRect.width;\n return {\n allowX,\n allowY,\n };\n }\n\n setZoomEssentials(): void {\n this.containerRect = this.core.$content.get().getBoundingClientRect();\n }\n\n /**\n * @desc Image zoom\n * Translate the wrap and scale the image to get better user experience\n *\n * @param {String} scale - Zoom decrement/increment value\n */\n zoomImage(\n scale: number,\n scaleDiff: number,\n reposition: boolean,\n resetToMax: boolean,\n ): void {\n if (Math.abs(scaleDiff) <= 0) return;\n\n const offsetX = this.containerRect.width / 2 + this.containerRect.left;\n\n const offsetY =\n this.containerRect.height / 2 +\n this.containerRect.top +\n this.scrollTop;\n\n let originalX;\n let originalY;\n\n if (scale === 1) {\n this.positionChanged = false;\n }\n\n const dragAllowedAxises = this.getDragAllowedAxises(0, scaleDiff);\n\n const { allowY, allowX } = dragAllowedAxises;\n if (this.positionChanged) {\n originalX = this.left / (this.scale - scaleDiff);\n originalY = this.top / (this.scale - scaleDiff);\n this.pageX = offsetX - originalX;\n this.pageY = offsetY - originalY;\n\n this.positionChanged = false;\n }\n\n const possibleSwipeCords = this.getPossibleSwipeDragCords(scaleDiff);\n\n let x;\n let y;\n let _x = offsetX - this.pageX;\n let _y = offsetY - this.pageY;\n\n if (scale - scaleDiff > 1) {\n const scaleVal = (scale - scaleDiff) / Math.abs(scaleDiff);\n _x =\n (scaleDiff < 0 ? -_x : _x) +\n this.left * (scaleVal + (scaleDiff < 0 ? -1 : 1));\n _y =\n (scaleDiff < 0 ? -_y : _y) +\n this.top * (scaleVal + (scaleDiff < 0 ? -1 : 1));\n x = _x / scaleVal;\n y = _y / scaleVal;\n } else {\n const scaleVal = (scale - scaleDiff) * scaleDiff;\n x = _x * scaleVal;\n y = _y * scaleVal;\n }\n\n if (reposition) {\n if (allowX) {\n if (this.isBeyondPossibleLeft(x, possibleSwipeCords.minX)) {\n x = possibleSwipeCords.minX;\n } else if (\n this.isBeyondPossibleRight(x, possibleSwipeCords.maxX)\n ) {\n x = possibleSwipeCords.maxX;\n }\n } else {\n if (scale > 1) {\n if (x < possibleSwipeCords.minX) {\n x = possibleSwipeCords.minX;\n } else if (x > possibleSwipeCords.maxX) {\n x = possibleSwipeCords.maxX;\n }\n }\n }\n // @todo fix this\n if (allowY) {\n if (this.isBeyondPossibleTop(y, possibleSwipeCords.minY)) {\n y = possibleSwipeCords.minY;\n } else if (\n this.isBeyondPossibleBottom(y, possibleSwipeCords.maxY)\n ) {\n y = possibleSwipeCords.maxY;\n }\n } else {\n // If the translate value based on index of beyond the viewport, utilize the available space to prevent image being cut out\n if (scale > 1) {\n //If image goes beyond viewport top, use the minim possible translate value\n if (y < possibleSwipeCords.minY) {\n y = possibleSwipeCords.minY;\n } else if (y > possibleSwipeCords.maxY) {\n y = possibleSwipeCords.maxY;\n }\n }\n }\n }\n\n this.setZoomStyles({\n x: x,\n y: y,\n scale,\n });\n\n this.left = x;\n this.top = y;\n\n if (resetToMax) {\n this.setZoomImageSize();\n }\n }\n\n resetImageTranslate(index: number): void {\n if (!this.isImageSlide(index)) {\n return;\n }\n const $image = this.core.getSlideItem(index).find('.lg-image').first();\n this.imageReset = false;\n $image.removeClass(\n 'reset-transition reset-transition-y reset-transition-x',\n );\n this.core.outer.removeClass('lg-actual-size');\n $image.css('width', 'auto').css('height', 'auto');\n setTimeout(() => {\n $image.removeClass('no-transition');\n }, 10);\n }\n\n setZoomImageSize(): void {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n\n setTimeout(() => {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n\n if (this.scale >= actualSizeScale) {\n $image.addClass('no-transition');\n this.imageReset = true;\n }\n }, ZOOM_TRANSITION_DURATION);\n\n setTimeout(() => {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n\n if (this.scale >= actualSizeScale) {\n const dragAllowedAxises = this.getDragAllowedAxises(this.scale);\n\n $image\n .css(\n 'width',\n ($image.get() as HTMLImageElement).naturalWidth + 'px',\n )\n .css(\n 'height',\n ($image.get() as HTMLImageElement).naturalHeight + 'px',\n );\n\n this.core.outer.addClass('lg-actual-size');\n\n if (dragAllowedAxises.allowX && dragAllowedAxises.allowY) {\n $image.addClass('reset-transition');\n } else if (\n dragAllowedAxises.allowX &&\n !dragAllowedAxises.allowY\n ) {\n $image.addClass('reset-transition-x');\n } else if (\n !dragAllowedAxises.allowX &&\n dragAllowedAxises.allowY\n ) {\n $image.addClass('reset-transition-y');\n }\n }\n }, ZOOM_TRANSITION_DURATION + 50);\n }\n\n /**\n * @desc apply scale3d to image and translate to image wrap\n * @param {style} X,Y and scale\n */\n setZoomStyles(style: { x: number; y: number; scale: number }): void {\n const $imageWrap = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n const $dummyImage = this.core.outer\n .find('.lg-current .lg-dummy-img')\n .first();\n this.scale = style.scale;\n $image.css(\n 'transform',\n 'scale3d(' + style.scale + ', ' + style.scale + ', 1)',\n );\n\n $dummyImage.css(\n 'transform',\n 'scale3d(' + style.scale + ', ' + style.scale + ', 1)',\n );\n\n const transform =\n 'translate3d(' + style.x + 'px, ' + style.y + 'px, 0)';\n $imageWrap.css('transform', transform);\n }\n\n /**\n * @param index - Index of the current slide\n * @param event - event will be available only if the function is called on clicking/taping the imags\n */\n setActualSize(index: number, event?: ZoomTouchEvent): void {\n if (this.zoomInProgress) {\n return;\n }\n this.zoomInProgress = true;\n const currentItem = this.core.galleryItems[this.core.index];\n this.resetImageTranslate(index);\n setTimeout(() => {\n // Allow zoom only on image\n if (\n !currentItem.src ||\n this.core.outer.hasClass('lg-first-slide-loading')\n ) {\n return;\n }\n const scale = this.getCurrentImageActualSizeScale();\n const prevScale = this.scale;\n if (this.core.outer.hasClass('lg-zoomed')) {\n this.scale = 1;\n } else {\n this.scale = this.getScale(scale);\n }\n this.setPageCords(event);\n\n this.beginZoom(this.scale);\n this.zoomImage(this.scale, this.scale - prevScale, true, true);\n }, 50);\n setTimeout(() => {\n this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');\n }, 60);\n setTimeout(() => {\n this.zoomInProgress = false;\n }, ZOOM_TRANSITION_DURATION + 110);\n }\n\n getNaturalWidth(index: number): number {\n const $image = this.core.getSlideItem(index).find('.lg-image').first();\n\n const naturalWidth = this.core.galleryItems[index].width;\n return naturalWidth\n ? parseFloat(naturalWidth)\n : undefined || ($image.get() as any).naturalWidth;\n }\n\n getActualSizeScale(naturalWidth: number, width: number): number {\n let _scale;\n let scale;\n if (naturalWidth >= width) {\n _scale = naturalWidth / width;\n scale = _scale || 2;\n } else {\n scale = 1;\n }\n return scale;\n }\n\n getCurrentImageActualSizeScale(): number {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n const width = $image.get().offsetWidth;\n const naturalWidth = this.getNaturalWidth(this.core.index) || width;\n return this.getActualSizeScale(naturalWidth, width);\n }\n\n getPageCords(event?: ZoomTouchEvent): Coords {\n const cords: Coords = {} as Coords;\n if (event) {\n cords.x = event.pageX || event.touches[0].pageX;\n cords.y = event.pageY || event.touches[0].pageY;\n } else {\n const containerRect = this.core.$content\n .get()\n .getBoundingClientRect();\n cords.x = containerRect.width / 2 + containerRect.left;\n cords.y =\n containerRect.height / 2 + this.scrollTop + containerRect.top;\n }\n return cords;\n }\n\n setPageCords(event?: ZoomTouchEvent): void {\n const pageCords = this.getPageCords(event);\n\n this.pageX = pageCords.x;\n this.pageY = pageCords.y;\n }\n\n manageActualPixelClassNames(): void {\n const $actualSize = this.core.getElementById('lg-actual-size');\n $actualSize\n .removeClass(this.settings.actualSizeIcons.zoomIn)\n .addClass(this.settings.actualSizeIcons.zoomOut);\n }\n\n // If true, zoomed - in else zoomed out\n beginZoom(scale: number): boolean {\n this.core.outer.removeClass('lg-zoom-drag-transition lg-zoom-dragging');\n if (scale > 1) {\n this.core.outer.addClass('lg-zoomed');\n this.manageActualPixelClassNames();\n } else {\n this.resetZoom();\n }\n return scale > 1;\n }\n\n getScale(scale: number): number {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n if (scale < 1) {\n scale = 1;\n } else if (scale > actualSizeScale) {\n scale = actualSizeScale;\n }\n return scale;\n }\n\n init(): void {\n if (!this.settings.zoom) {\n return;\n }\n this.buildTemplates();\n this.enableZoomOnSlideItemLoad();\n\n let tapped: ReturnType | null = null;\n\n this.core.outer.on('dblclick.lg', (event) => {\n if (!this.$LG(event.target).hasClass('lg-image')) {\n return;\n }\n this.setActualSize(this.core.index, event);\n });\n\n this.core.outer.on('touchstart.lg', (event) => {\n const $target = this.$LG(event.target);\n if (event.touches.length === 1 && $target.hasClass('lg-image')) {\n if (!tapped) {\n tapped = setTimeout(() => {\n tapped = null;\n }, 300);\n } else {\n clearTimeout(tapped);\n tapped = null;\n event.preventDefault();\n this.setActualSize(this.core.index, event);\n }\n }\n });\n\n this.core.LGel.on(\n `${lGEvents.containerResize}.zoom ${lGEvents.rotateRight}.zoom ${lGEvents.rotateLeft}.zoom ${lGEvents.flipHorizontal}.zoom ${lGEvents.flipVertical}.zoom`,\n () => {\n if (\n !this.core.lgOpened ||\n !this.isImageSlide(this.core.index) ||\n this.core.touchAction\n ) {\n return;\n }\n const _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n this.top = 0;\n this.left = 0;\n this.setZoomEssentials();\n this.setZoomSwipeStyles(_LGel, { x: 0, y: 0 });\n this.positionChanged = true;\n },\n );\n // Update zoom on resize and orientationchange\n this.$LG(window).on(`scroll.lg.zoom.global${this.core.lgId}`, () => {\n if (!this.core.lgOpened) return;\n this.scrollTop = this.$LG(window).scrollTop();\n });\n\n this.core.getElementById('lg-zoom-out').on('click.lg', () => {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n\n let timeout = 0;\n if (this.imageReset) {\n this.resetImageTranslate(this.core.index);\n timeout = 50;\n }\n setTimeout(() => {\n let scale = this.scale - this.settings.scale;\n\n if (scale < 1) {\n scale = 1;\n }\n this.beginZoom(scale);\n this.zoomImage(\n scale,\n -this.settings.scale,\n true,\n !this.settings.infiniteZoom,\n );\n }, timeout);\n });\n\n this.core.getElementById('lg-zoom-in').on('click.lg', () => {\n this.zoomIn();\n });\n\n this.core.getElementById('lg-actual-size').on('click.lg', () => {\n this.setActualSize(this.core.index);\n });\n\n this.core.LGel.on(`${lGEvents.beforeOpen}.zoom`, () => {\n this.core.outer.find('.lg-item').removeClass('lg-zoomable');\n });\n this.core.LGel.on(`${lGEvents.afterOpen}.zoom`, () => {\n this.scrollTop = this.$LG(window).scrollTop();\n\n // Set the initial value center\n this.pageX = this.core.outer.width() / 2;\n this.pageY = this.core.outer.height() / 2 + this.scrollTop;\n\n this.scale = 1;\n });\n\n // Reset zoom on slide change\n this.core.LGel.on(\n `${lGEvents.afterSlide}.zoom`,\n (event: CustomEvent) => {\n const { prevIndex } = event.detail;\n this.scale = 1;\n this.positionChanged = false;\n this.zoomInProgress = false;\n this.resetZoom(prevIndex);\n this.resetImageTranslate(prevIndex);\n if (this.isImageSlide(this.core.index)) {\n this.setZoomEssentials();\n }\n },\n );\n\n // Drag option after zoom\n this.zoomDrag();\n\n this.pinchZoom();\n\n this.zoomSwipe();\n\n // Store the zoomable timeout value just to clear it while closing\n this.zoomableTimeout = false;\n this.positionChanged = false;\n this.zoomInProgress = false;\n }\n\n zoomIn(): void {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n\n let scale = this.scale + this.settings.scale;\n\n if (!this.settings.infiniteZoom) {\n scale = this.getScale(scale);\n }\n this.beginZoom(scale);\n this.zoomImage(\n scale,\n Math.min(this.settings.scale, scale - this.scale),\n true,\n !this.settings.infiniteZoom,\n );\n }\n\n // Reset zoom effect\n resetZoom(index?: number): void {\n this.core.outer.removeClass('lg-zoomed lg-zoom-drag-transition');\n const $actualSize = this.core.getElementById('lg-actual-size');\n const $item = this.core.getSlideItem(\n index !== undefined ? index : this.core.index,\n );\n $actualSize\n .removeClass(this.settings.actualSizeIcons.zoomOut)\n .addClass(this.settings.actualSizeIcons.zoomIn);\n $item.find('.lg-img-wrap').first().removeAttr('style');\n $item.find('.lg-image').first().removeAttr('style');\n this.scale = 1;\n this.left = 0;\n this.top = 0;\n\n // Reset pagx pagy values to center\n this.setPageCords();\n }\n\n getTouchDistance(e: TouchEvent): number {\n return Math.sqrt(\n (e.touches[0].pageX - e.touches[1].pageX) *\n (e.touches[0].pageX - e.touches[1].pageX) +\n (e.touches[0].pageY - e.touches[1].pageY) *\n (e.touches[0].pageY - e.touches[1].pageY),\n );\n }\n\n pinchZoom(): void {\n let startDist = 0;\n let pinchStarted = false;\n let initScale = 1;\n let prevScale = 0;\n\n let $item = this.core.getSlideItem(this.core.index);\n\n this.core.outer.on('touchstart.lg', (e) => {\n $item = this.core.getSlideItem(this.core.index);\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n if (e.touches.length === 2) {\n e.preventDefault();\n if (this.core.outer.hasClass('lg-first-slide-loading')) {\n return;\n }\n initScale = this.scale || 1;\n this.core.outer.removeClass(\n 'lg-zoom-drag-transition lg-zoom-dragging',\n );\n\n this.setPageCords(e);\n this.resetImageTranslate(this.core.index);\n\n this.core.touchAction = 'pinch';\n\n startDist = this.getTouchDistance(e);\n }\n });\n\n this.core.$inner.on('touchmove.lg', (e) => {\n if (\n e.touches.length === 2 &&\n this.core.touchAction === 'pinch' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n e.preventDefault();\n const endDist = this.getTouchDistance(e);\n\n const distance = startDist - endDist;\n if (!pinchStarted && Math.abs(distance) > 5) {\n pinchStarted = true;\n }\n if (pinchStarted) {\n prevScale = this.scale;\n const _scale = Math.max(1, initScale + -distance * 0.02);\n this.scale =\n Math.round((_scale + Number.EPSILON) * 100) / 100;\n const diff = this.scale - prevScale;\n this.zoomImage(\n this.scale,\n Math.round((diff + Number.EPSILON) * 100) / 100,\n false,\n false,\n );\n }\n }\n });\n\n this.core.$inner.on('touchend.lg', (e) => {\n if (\n this.core.touchAction === 'pinch' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n pinchStarted = false;\n startDist = 0;\n if (this.scale <= 1) {\n this.resetZoom();\n } else {\n const actualSizeScale = this.getCurrentImageActualSizeScale();\n\n if (this.scale >= actualSizeScale) {\n let scaleDiff = actualSizeScale - this.scale;\n if (scaleDiff === 0) {\n scaleDiff = 0.01;\n }\n this.zoomImage(actualSizeScale, scaleDiff, false, true);\n }\n this.manageActualPixelClassNames();\n\n this.core.outer.addClass('lg-zoomed');\n }\n this.core.touchAction = undefined;\n }\n });\n }\n\n touchendZoom(\n startCoords: Coords,\n endCoords: Coords,\n allowX: boolean,\n allowY: boolean,\n touchDuration: number,\n ): void {\n let distanceXnew = endCoords.x - startCoords.x;\n let distanceYnew = endCoords.y - startCoords.y;\n\n let speedX = Math.abs(distanceXnew) / touchDuration + 1;\n let speedY = Math.abs(distanceYnew) / touchDuration + 1;\n\n if (speedX > 2) {\n speedX += 1;\n }\n\n if (speedY > 2) {\n speedY += 1;\n }\n\n distanceXnew = distanceXnew * speedX;\n distanceYnew = distanceYnew * speedY;\n\n const _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n const distance: Coords = {} as Coords;\n\n distance.x = this.left + distanceXnew;\n distance.y = this.top + distanceYnew;\n\n const possibleSwipeCords = this.getPossibleSwipeDragCords();\n\n if (Math.abs(distanceXnew) > 15 || Math.abs(distanceYnew) > 15) {\n if (allowY) {\n if (\n this.isBeyondPossibleTop(\n distance.y,\n possibleSwipeCords.minY,\n )\n ) {\n distance.y = possibleSwipeCords.minY;\n } else if (\n this.isBeyondPossibleBottom(\n distance.y,\n possibleSwipeCords.maxY,\n )\n ) {\n distance.y = possibleSwipeCords.maxY;\n }\n }\n\n if (allowX) {\n if (\n this.isBeyondPossibleLeft(\n distance.x,\n possibleSwipeCords.minX,\n )\n ) {\n distance.x = possibleSwipeCords.minX;\n } else if (\n this.isBeyondPossibleRight(\n distance.x,\n possibleSwipeCords.maxX,\n )\n ) {\n distance.x = possibleSwipeCords.maxX;\n }\n }\n\n if (allowY) {\n this.top = distance.y;\n } else {\n distance.y = this.top;\n }\n\n if (allowX) {\n this.left = distance.x;\n } else {\n distance.x = this.left;\n }\n\n this.setZoomSwipeStyles(_LGel, distance);\n\n this.positionChanged = true;\n }\n }\n\n getZoomSwipeCords(\n startCoords: Coords,\n endCoords: Coords,\n allowX: boolean,\n allowY: boolean,\n possibleSwipeCords: PossibleCords,\n ): Coords {\n const distance: Coords = {} as Coords;\n if (allowY) {\n distance.y = this.top + (endCoords.y - startCoords.y);\n if (this.isBeyondPossibleTop(distance.y, possibleSwipeCords.minY)) {\n const diffMinY = possibleSwipeCords.minY - distance.y;\n distance.y = possibleSwipeCords.minY - diffMinY / 6;\n } else if (\n this.isBeyondPossibleBottom(distance.y, possibleSwipeCords.maxY)\n ) {\n const diffMaxY = distance.y - possibleSwipeCords.maxY;\n distance.y = possibleSwipeCords.maxY + diffMaxY / 6;\n }\n } else {\n distance.y = this.top;\n }\n\n if (allowX) {\n distance.x = this.left + (endCoords.x - startCoords.x);\n if (\n this.isBeyondPossibleLeft(distance.x, possibleSwipeCords.minX)\n ) {\n const diffMinX = possibleSwipeCords.minX - distance.x;\n distance.x = possibleSwipeCords.minX - diffMinX / 6;\n } else if (\n this.isBeyondPossibleRight(distance.x, possibleSwipeCords.maxX)\n ) {\n const difMaxX = distance.x - possibleSwipeCords.maxX;\n distance.x = possibleSwipeCords.maxX + difMaxX / 6;\n }\n } else {\n distance.x = this.left;\n }\n\n return distance;\n }\n\n private isBeyondPossibleLeft(x: number, minX: number) {\n return x >= minX;\n }\n private isBeyondPossibleRight(x: number, maxX: number) {\n return x <= maxX;\n }\n private isBeyondPossibleTop(y: number, minY: number) {\n return y >= minY;\n }\n private isBeyondPossibleBottom(y: number, maxY: number) {\n return y <= maxY;\n }\n\n isImageSlide(index: number): boolean {\n const currentItem = this.core.galleryItems[index];\n return this.core.getSlideType(currentItem) === 'image';\n }\n\n getPossibleSwipeDragCords(scale?: number): PossibleCords {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-image')\n .first();\n\n const { bottom } = this.core.mediaContainerPosition;\n\n const imgRect = $image.get().getBoundingClientRect();\n\n let imageHeight = imgRect.height;\n let imageWidth = imgRect.width;\n\n if (scale) {\n imageHeight = imageHeight + scale * imageHeight;\n imageWidth = imageWidth + scale * imageWidth;\n }\n\n const minY = (imageHeight - this.containerRect.height) / 2;\n const maxY = (this.containerRect.height - imageHeight) / 2 + bottom;\n\n const minX = (imageWidth - this.containerRect.width) / 2;\n\n const maxX = (this.containerRect.width - imageWidth) / 2;\n\n const possibleSwipeCords = {\n minY: minY,\n maxY: maxY,\n minX: minX,\n maxX: maxX,\n };\n return possibleSwipeCords;\n }\n\n setZoomSwipeStyles(\n LGel: lgQuery,\n distance: { x: number; y: number },\n ): void {\n LGel.css(\n 'transform',\n 'translate3d(' + distance.x + 'px, ' + distance.y + 'px, 0)',\n );\n }\n\n zoomSwipe(): void {\n let startCoords = {} as Coords;\n let endCoords = {} as Coords;\n let isMoved = false;\n\n // Allow x direction drag\n let allowX = false;\n\n // Allow Y direction drag\n let allowY = false;\n\n let startTime: Date = new Date();\n let endTime: Date = new Date();\n let possibleSwipeCords: PossibleCords;\n\n let _LGel: lgQuery;\n\n let $item = this.core.getSlideItem(this.core.index);\n\n this.core.$inner.on('touchstart.lg', (e) => {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n $item = this.core.getSlideItem(this.core.index);\n if (\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)) &&\n e.touches.length === 1 &&\n this.core.outer.hasClass('lg-zoomed')\n ) {\n e.preventDefault();\n startTime = new Date();\n this.core.touchAction = 'zoomSwipe';\n _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n\n const dragAllowedAxises = this.getDragAllowedAxises(0);\n\n allowY = dragAllowedAxises.allowY;\n allowX = dragAllowedAxises.allowX;\n if (allowX || allowY) {\n startCoords = this.getSwipeCords(e);\n }\n\n possibleSwipeCords = this.getPossibleSwipeDragCords();\n\n // reset opacity and transition duration\n this.core.outer.addClass(\n 'lg-zoom-dragging lg-zoom-drag-transition',\n );\n }\n });\n\n this.core.$inner.on('touchmove.lg', (e) => {\n if (\n e.touches.length === 1 &&\n this.core.touchAction === 'zoomSwipe' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n e.preventDefault();\n this.core.touchAction = 'zoomSwipe';\n\n endCoords = this.getSwipeCords(e);\n\n const distance = this.getZoomSwipeCords(\n startCoords,\n endCoords,\n allowX,\n allowY,\n possibleSwipeCords,\n );\n\n if (\n Math.abs(endCoords.x - startCoords.x) > 15 ||\n Math.abs(endCoords.y - startCoords.y) > 15\n ) {\n isMoved = true;\n this.setZoomSwipeStyles(_LGel, distance);\n }\n }\n });\n\n this.core.$inner.on('touchend.lg', (e) => {\n if (\n this.core.touchAction === 'zoomSwipe' &&\n (this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target))\n ) {\n e.preventDefault();\n this.core.touchAction = undefined;\n this.core.outer.removeClass('lg-zoom-dragging');\n if (!isMoved) {\n return;\n }\n isMoved = false;\n endTime = new Date();\n const touchDuration = endTime.valueOf() - startTime.valueOf();\n this.touchendZoom(\n startCoords,\n endCoords,\n allowX,\n allowY,\n touchDuration,\n );\n }\n });\n }\n\n zoomDrag(): void {\n let startCoords: Coords = {} as Coords;\n let endCoords: Coords = {} as Coords;\n let isDragging = false;\n let isMoved = false;\n\n // Allow x direction drag\n let allowX = false;\n\n // Allow Y direction drag\n let allowY = false;\n\n let startTime: number | Date;\n let endTime;\n\n let possibleSwipeCords: PossibleCords;\n\n let _LGel: lgQuery;\n\n this.core.outer.on('mousedown.lg.zoom', (e) => {\n // Allow zoom only on image\n if (!this.isImageSlide(this.core.index)) {\n return;\n }\n const $item = this.core.getSlideItem(this.core.index);\n if (\n this.$LG(e.target).hasClass('lg-item') ||\n $item.get().contains(e.target)\n ) {\n startTime = new Date();\n _LGel = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-wrap')\n .first();\n\n const dragAllowedAxises = this.getDragAllowedAxises(0);\n\n allowY = dragAllowedAxises.allowY;\n allowX = dragAllowedAxises.allowX;\n\n if (this.core.outer.hasClass('lg-zoomed')) {\n if (\n this.$LG(e.target).hasClass('lg-object') &&\n (allowX || allowY)\n ) {\n e.preventDefault();\n startCoords = this.getDragCords(e);\n\n possibleSwipeCords = this.getPossibleSwipeDragCords();\n\n isDragging = true;\n\n this.core.outer\n .removeClass('lg-grab')\n .addClass(\n 'lg-grabbing lg-zoom-drag-transition lg-zoom-dragging',\n );\n // reset opacity and transition duration\n }\n }\n }\n });\n\n this.$LG(window).on(\n `mousemove.lg.zoom.global${this.core.lgId}`,\n (e) => {\n if (isDragging) {\n isMoved = true;\n endCoords = this.getDragCords(e);\n\n const distance = this.getZoomSwipeCords(\n startCoords,\n endCoords,\n allowX,\n allowY,\n possibleSwipeCords,\n );\n\n this.setZoomSwipeStyles(_LGel, distance);\n }\n },\n );\n\n this.$LG(window).on(`mouseup.lg.zoom.global${this.core.lgId}`, (e) => {\n if (isDragging) {\n endTime = new Date();\n isDragging = false;\n this.core.outer.removeClass('lg-zoom-dragging');\n\n // Fix for chrome mouse move on click\n if (\n isMoved &&\n (startCoords.x !== endCoords.x ||\n startCoords.y !== endCoords.y)\n ) {\n endCoords = this.getDragCords(e);\n\n const touchDuration =\n endTime.valueOf() - startTime.valueOf();\n this.touchendZoom(\n startCoords,\n endCoords,\n allowX,\n allowY,\n touchDuration,\n );\n }\n\n isMoved = false;\n }\n\n this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');\n });\n }\n\n closeGallery(): void {\n this.resetZoom();\n this.zoomInProgress = false;\n }\n\n destroy(): void {\n // Unbind all events added by lightGallery zoom plugin\n this.$LG(window).off(`.lg.zoom.global${this.core.lgId}`);\n this.core.LGel.off('.lg.zoom');\n this.core.LGel.off('.zoom');\n clearTimeout(this.zoomableTimeout);\n this.zoomableTimeout = false;\n }\n}\n","export interface RotateStrings {\n flipVertical: string;\n flipHorizontal: string;\n rotateLeft: string;\n rotateRight: string;\n}\n\nexport interface RotateSettings {\n /**\n * Enable/Disable rotate option\n */\n rotate: boolean;\n\n /**\n * Rotate speed in milliseconds\n */\n rotateSpeed: number;\n\n /**\n * Enable rotate left.\n */\n rotateLeft: boolean;\n\n /**\n * Enable rotate right.\n */\n rotateRight: boolean;\n\n /**\n * Enable flip horizontal.\n */\n flipHorizontal: boolean;\n\n /**\n * Enable flip vertical.\n */\n flipVertical: boolean;\n\n /**\n * Custom translation strings for aria-labels\n */\n rotatePluginStrings: RotateStrings;\n}\nexport const rotateSettings = {\n rotate: true,\n rotateSpeed: 400,\n rotateLeft: true,\n rotateRight: true,\n flipHorizontal: true,\n flipVertical: true,\n rotatePluginStrings: {\n flipVertical: 'Flip vertical',\n flipHorizontal: 'Flip horizontal',\n rotateLeft: 'Rotate left',\n rotateRight: 'Rotate right',\n } as RotateStrings,\n};\n","import { lGEvents } from '../../lg-events';\nimport { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport { rotateSettings, RotateSettings } from './lg-rotate-settings';\n\nexport default class Rotate {\n core: LightGallery;\n settings: RotateSettings;\n rotateValuesList!: {\n [key: string]: any;\n };\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n // extend module default settings with lightGallery core settings\n this.settings = {\n ...rotateSettings,\n ...this.core.settings,\n };\n\n return this;\n }\n buildTemplates(): void {\n let rotateIcons = '';\n if (this.settings.flipVertical) {\n rotateIcons += ``;\n }\n if (this.settings.flipHorizontal) {\n rotateIcons += ``;\n }\n if (this.settings.rotateLeft) {\n rotateIcons += ``;\n }\n if (this.settings.rotateRight) {\n rotateIcons += ``;\n }\n this.core.$toolbar.append(rotateIcons);\n }\n\n init(): void {\n if (!this.settings.rotate) {\n return;\n }\n this.buildTemplates();\n\n // Save rotate config for each item to persist its rotate, flip values\n // even after navigating to diferent slides\n this.rotateValuesList = {};\n\n // event triggered after appending slide content\n this.core.LGel.on(`${lGEvents.slideItemLoad}.rotate`, (event) => {\n const { index } = event.detail;\n\n const rotateEl = this.core\n .getSlideItem(index)\n .find('.lg-img-rotate')\n .get();\n if (!rotateEl) {\n const imageWrap = this.core\n .getSlideItem(index)\n .find('.lg-object')\n .first();\n\n imageWrap.wrap('lg-img-rotate');\n //this.rotateValuesList[this.core.index]\n this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .css(\n 'transition-duration',\n this.settings.rotateSpeed + 'ms',\n );\n }\n });\n\n this.core.outer\n .find('#lg-rotate-left')\n .first()\n .on('click.lg', this.rotateLeft.bind(this));\n\n this.core.outer\n .find('#lg-rotate-right')\n .first()\n .on('click.lg', this.rotateRight.bind(this));\n\n this.core.outer\n .find('#lg-flip-hor')\n .first()\n .on('click.lg', this.flipHorizontal.bind(this));\n\n this.core.outer\n .find('#lg-flip-ver')\n .first()\n .on('click.lg', this.flipVertical.bind(this));\n\n // Reset rotate on slide change\n this.core.LGel.on(`${lGEvents.beforeSlide}.rotate`, (event) => {\n if (!this.rotateValuesList[event.detail.index]) {\n this.rotateValuesList[event.detail.index] = {\n rotate: 0,\n flipHorizontal: 1,\n flipVertical: 1,\n };\n }\n });\n }\n\n applyStyles(): void {\n const $image = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first();\n\n $image.css(\n 'transform',\n 'rotate(' +\n this.rotateValuesList[this.core.index].rotate +\n 'deg)' +\n ' scale3d(' +\n this.rotateValuesList[this.core.index].flipHorizontal +\n ', ' +\n this.rotateValuesList[this.core.index].flipVertical +\n ', 1)',\n );\n }\n\n rotateLeft(): void {\n this.rotateValuesList[this.core.index].rotate -= 90;\n this.applyStyles();\n this.triggerEvents(lGEvents.rotateLeft, {\n rotate: this.rotateValuesList[this.core.index].rotate,\n });\n }\n\n rotateRight(): void {\n this.rotateValuesList[this.core.index].rotate += 90;\n this.applyStyles();\n this.triggerEvents(lGEvents.rotateRight, {\n rotate: this.rotateValuesList[this.core.index].rotate,\n });\n }\n\n getCurrentRotation(el: HTMLElement): number {\n if (!el) {\n return 0;\n }\n const st = this.$LG(el).style();\n const tm =\n st.getPropertyValue('-webkit-transform') ||\n st.getPropertyValue('-moz-transform') ||\n st.getPropertyValue('-ms-transform') ||\n st.getPropertyValue('-o-transform') ||\n st.getPropertyValue('transform') ||\n 'none';\n if (tm !== 'none') {\n const values = tm.split('(')[1].split(')')[0].split(',') as any;\n if (values) {\n const angle = Math.round(\n Math.atan2(values[1], values[0]) * (180 / Math.PI),\n );\n return angle < 0 ? angle + 360 : angle;\n }\n }\n return 0;\n }\n\n flipHorizontal(): void {\n const rotateEl = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first()\n .get();\n const currentRotation = this.getCurrentRotation(rotateEl);\n let rotateAxis = 'flipHorizontal';\n if (currentRotation === 90 || currentRotation === 270) {\n rotateAxis = 'flipVertical';\n }\n this.rotateValuesList[this.core.index][rotateAxis] *= -1;\n this.applyStyles();\n this.triggerEvents(lGEvents.flipHorizontal, {\n flipHorizontal: this.rotateValuesList[this.core.index][rotateAxis],\n });\n }\n\n flipVertical(): void {\n const rotateEl = this.core\n .getSlideItem(this.core.index)\n .find('.lg-img-rotate')\n .first()\n .get();\n const currentRotation = this.getCurrentRotation(rotateEl);\n let rotateAxis = 'flipVertical';\n if (currentRotation === 90 || currentRotation === 270) {\n rotateAxis = 'flipHorizontal';\n }\n this.rotateValuesList[this.core.index][rotateAxis] *= -1;\n\n this.applyStyles();\n\n this.triggerEvents(lGEvents.flipVertical, {\n flipVertical: this.rotateValuesList[this.core.index][rotateAxis],\n });\n }\n\n triggerEvents(event: string, detail: any): void {\n setTimeout(() => {\n this.core.LGel.trigger(event, detail);\n }, this.settings.rotateSpeed + 10);\n }\n\n isImageOrientationChanged(): boolean {\n const rotateValue = this.rotateValuesList[this.core.index];\n const isRotated = Math.abs(rotateValue.rotate) % 360 !== 0;\n const ifFlippedHor = rotateValue.flipHorizontal < 0;\n const ifFlippedVer = rotateValue.flipVertical < 0;\n return isRotated || ifFlippedHor || ifFlippedVer;\n }\n\n closeGallery(): void {\n if (this.isImageOrientationChanged()) {\n this.core.getSlideItem(this.core.index).css('opacity', 0);\n }\n this.rotateValuesList = {};\n }\n\n destroy(): void {\n // Unbind all events added by lightGallery rotate plugin\n this.core.LGel.off('.lg.rotate');\n this.core.LGel.off('.rotate');\n }\n}\n","export interface FullscreenStrings {\n toggleFullscreen: string;\n}\nexport interface FullscreenSettings {\n /**\n * Enable/Disable fullscreen option\n */\n fullScreen: boolean;\n\n /**\n * Custom translation strings for aria-labels\n */\n fullscreenPluginStrings: FullscreenStrings;\n}\n\nexport const fullscreenSettings: FullscreenSettings = {\n fullScreen: true,\n fullscreenPluginStrings: {\n toggleFullscreen: 'Toggle Fullscreen',\n } as FullscreenStrings,\n};\n","import { LgQuery } from '../../lgQuery';\nimport { LightGallery } from '../../lightgallery';\nimport {\n FullscreenSettings,\n fullscreenSettings,\n} from './lg-fullscreen-settings';\n\ndeclare let document: any;\n\nexport default class FullScreen {\n core: LightGallery;\n settings: FullscreenSettings;\n private $LG!: LgQuery;\n constructor(instance: LightGallery, $LG: LgQuery) {\n // get lightGallery core plugin instance\n this.core = instance;\n this.$LG = $LG;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...fullscreenSettings, ...this.core.settings };\n\n return this;\n }\n\n public init(): void {\n let fullScreen = '';\n if (this.settings.fullScreen) {\n // check for fullscreen browser support\n if (\n !document.fullscreenEnabled &&\n !document.webkitFullscreenEnabled &&\n !document.mozFullScreenEnabled &&\n !document.msFullscreenEnabled\n ) {\n return;\n } else {\n fullScreen = ``;\n this.core.$toolbar.append(fullScreen);\n this.fullScreen();\n }\n }\n }\n\n private isFullScreen(): boolean {\n return (\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement\n );\n }\n\n private requestFullscreen(): void {\n const el = document.documentElement;\n if (el.requestFullscreen) {\n el.requestFullscreen();\n } else if (el.msRequestFullscreen) {\n el.msRequestFullscreen();\n } else if (el.mozRequestFullScreen) {\n el.mozRequestFullScreen();\n } else if (el.webkitRequestFullscreen) {\n el.webkitRequestFullscreen();\n }\n }\n\n private exitFullscreen(): void {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode\n private fullScreen(): void {\n this.$LG(document).on(\n `fullscreenchange.lg.global${this.core.lgId} \n webkitfullscreenchange.lg.global${this.core.lgId} \n mozfullscreenchange.lg.global${this.core.lgId} \n MSFullscreenChange.lg.global${this.core.lgId}`,\n () => {\n if (!this.core.lgOpened) return;\n this.core.outer.toggleClass('lg-fullscreen-on');\n },\n );\n\n this.core.outer\n .find('.lg-fullscreen')\n .first()\n .on('click.lg', () => {\n if (this.isFullScreen()) {\n this.exitFullscreen();\n } else {\n this.requestFullscreen();\n }\n });\n }\n\n closeGallery(): void {\n // exit from fullscreen if activated\n if (this.isFullScreen()) {\n this.exitFullscreen();\n }\n }\n\n destroy(): void {\n this.$LG(document).off(\n `fullscreenchange.lg.global${this.core.lgId} \n webkitfullscreenchange.lg.global${this.core.lgId} \n mozfullscreenchange.lg.global${this.core.lgId} \n MSFullscreenChange.lg.global${this.core.lgId}`,\n );\n }\n}\n","import { ShareOption } from './types';\n\nexport interface ShareStrings {\n share: string;\n}\n\nexport interface ShareSettings {\n /**\n * Enable/Disable share options\n */\n share: boolean;\n\n /**\n * Enable Facebook share.\n */\n facebook: boolean;\n\n /**\n * Facebook dropdown text.\n */\n facebookDropdownText: string;\n\n /**\n * Enable twitter share.\n */\n twitter: boolean;\n\n /**\n * Twitter dropdown text\n */\n twitterDropdownText: string;\n\n /**\n * Enable pinterest share.\n */\n pinterest: boolean;\n\n /**\n * Pinterest dropdown text\n\n */\n pinterestDropdownText: string;\n\n /**\n * Array of additional share options\n *\n * This can be used to build additional share options.\n *
Demo\n */\n additionalShareOptions: ShareOption[];\n\n /**\n * Custom translation strings for aria-labels\n */\n sharePluginStrings: ShareStrings;\n}\n\nexport const shareSettings = {\n share: true,\n facebook: true,\n facebookDropdownText: 'Facebook',\n twitter: true,\n twitterDropdownText: 'Twitter',\n pinterest: true,\n pinterestDropdownText: 'Pinterest',\n additionalShareOptions: [],\n sharePluginStrings: { share: 'Share' } as ShareStrings,\n};\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getFacebookShareLink(galleryItem: GalleryItem): string {\n const facebookBaseUrl = '//www.facebook.com/sharer/sharer.php?u=';\n return (\n facebookBaseUrl +\n encodeURIComponent(galleryItem.facebookShareUrl || window.location.href)\n );\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getTwitterShareLink(galleryItem: GalleryItem): string {\n const twitterBaseUrl = '//twitter.com/intent/tweet?text=';\n const url = encodeURIComponent(\n galleryItem.twitterShareUrl || window.location.href,\n );\n const text = galleryItem.tweetText;\n return twitterBaseUrl + text + '&url=' + url;\n}\n","import { GalleryItem } from '../../lg-utils';\n\nexport function getPinterestShareLink(galleryItem: GalleryItem): string {\n const pinterestBaseUrl = 'http://www.pinterest.com/pin/create/button/?url=';\n const description = galleryItem.pinterestText;\n const media = encodeURIComponent(galleryItem.src as string);\n const url = encodeURIComponent(\n galleryItem.pinterestShareUrl || window.location.href,\n );\n return (\n pinterestBaseUrl +\n url +\n '&media=' +\n media +\n '&description=' +\n description\n );\n}\n","import { ShareSettings, shareSettings } from './lg-share-settings';\n\nimport { getFacebookShareLink } from './lg-fb-share-utils';\nimport { getTwitterShareLink } from './lg-twitter-share-utils';\nimport { getPinterestShareLink } from './lg-pinterest-share-utils';\nimport { LightGallery } from '../../lightgallery';\nimport { lGEvents } from '../../lg-events';\nimport { ShareOption } from './types';\n\ninterface DefaultShareOptions extends ShareOption {\n type: string;\n}\nexport default class Share {\n core: LightGallery;\n settings: ShareSettings;\n private shareOptions: ShareOption[] = [];\n constructor(instance: LightGallery) {\n // get lightGallery core plugin instance\n this.core = instance;\n\n // extend module default settings with lightGallery core settings\n this.settings = { ...shareSettings, ...this.core.settings };\n return this;\n }\n\n public init(): void {\n if (!this.settings.share) {\n return;\n }\n this.shareOptions = [\n ...this.getDefaultShareOptions(),\n ...this.settings.additionalShareOptions,\n ];\n this.setLgShareMarkup();\n this.core.outer\n .find('.lg-share .lg-dropdown')\n .append(this.getShareListHtml());\n\n this.core.LGel.on(\n `${lGEvents.afterSlide}.share`,\n this.onAfterSlide.bind(this),\n );\n }\n\n private getShareListHtml() {\n let shareHtml = '';\n this.shareOptions.forEach((shareOption) => {\n shareHtml += shareOption.dropdownHTML;\n });\n\n return shareHtml;\n }\n\n setLgShareMarkup(): void {\n this.core.$toolbar.append(\n ``,\n );\n\n this.core.outer.append('
');\n const $shareButton = this.core.outer.find('.lg-share');\n $shareButton.first().on('click.lg', () => {\n this.core.outer.toggleClass('lg-dropdown-active');\n if (this.core.outer.hasClass('lg-dropdown-active')) {\n this.core.outer.attr('aria-expanded', true);\n } else {\n this.core.outer.attr('aria-expanded', false);\n }\n });\n\n this.core.outer\n .find('.lg-dropdown-overlay')\n .first()\n .on('click.lg', () => {\n this.core.outer.removeClass('lg-dropdown-active');\n this.core.outer.attr('aria-expanded', false);\n });\n }\n\n private onAfterSlide(event: CustomEvent) {\n const { index } = event.detail;\n const currentItem = this.core.galleryItems[index];\n setTimeout(() => {\n this.shareOptions.forEach((shareOption) => {\n const selector = shareOption.selector;\n this.core.outer\n .find(selector)\n .attr('href', shareOption.generateLink(currentItem));\n });\n }, 100);\n }\n\n private getShareListItemHTML(type: string, text: string): string {\n return `
  • ${text}
  • `;\n }\n\n private getDefaultShareOptions(): DefaultShareOptions[] {\n return [\n ...(this.settings.facebook\n ? [\n {\n type: 'facebook',\n generateLink: getFacebookShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'facebook',\n this.settings.facebookDropdownText,\n ),\n selector: '.lg-share-facebook',\n },\n ]\n : []),\n ...(this.settings.twitter\n ? [\n {\n type: 'twitter',\n generateLink: getTwitterShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'twitter',\n this.settings.twitterDropdownText,\n ),\n selector: '.lg-share-twitter',\n },\n ]\n : []),\n ...(this.settings.pinterest\n ? [\n {\n type: 'pinterest',\n generateLink: getPinterestShareLink,\n dropdownHTML: this.getShareListItemHTML(\n 'pinterest',\n this.settings.pinterestDropdownText,\n ),\n selector: '.lg-share-pinterest',\n },\n ]\n : []),\n ];\n }\n\n public destroy(): void {\n this.core.outer.find('.lg-dropdown-overlay').remove();\n this.core.outer.find('.lg-share').remove();\n this.core.LGel.off('.lg.share');\n this.core.LGel.off('.share');\n }\n}\n","import CoreDefault from \"core/Defaults\";\nimport LightGallery from 'lightgallery/react';\nimport lgThumbnail from 'lightgallery/plugins/thumbnail';\nimport lgZoom from 'lightgallery/plugins/zoom';\nimport lgRotate from 'lightgallery/plugins/rotate';\nimport lgFullscreen from 'lightgallery/plugins/fullscreen';\nimport lgShare from 'lightgallery/plugins/share';\n// actions\nimport { TGallery } from \"../type\";\nimport \"../../RMDRGallery/Gallery01Style.scss\";\nimport { FaSearch } from \"react-icons/fa\";\nimport { useState } from \"react\";\nimport IApplicationDocument from \"cms/interfaces/IApplicationDocument\";\nimport IApplicationDocumentList from \"cms/interfaces/IApplicationDocumentList\";\n\n\nfunction Gallery01 ( props:TGallery ) {\n console.log(\"Gallery01.rendered: \", props);\n\n const [ images ] = useState(props.resources?.filter((item) => item.resourceTypeId === props.resourceType)?.map((item) => item.applicationDocument));\n\n return (\n <>\n \n {\n images ? (\n
    \n \n {\n images.map((item, index) => (\n \n ))\n }\n \n
    \n ) :null\n }\n \n )\n \n}\n\nexport default Gallery01;\n","import React, { useEffect } from \"react\";\r\nimport { connect, ConnectedProps } from \"react-redux\";\r\n// actions\r\nimport CoreAction from \"core/actions/common/CoreAction\";\r\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\r\nimport { Dispatch } from \"@reduxjs/toolkit\";\r\nimport { TINNRLayout } from \"../type\";\r\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\r\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\r\nimport ILanguageVersionDetail from \"cms/interfaces/ILanguageVersionDetail\";\r\nimport { EView } from \"cms/enums/EView\";\r\nimport { EViewType } from \"cms/enums/EViewType\";\r\nimport { EContentType } from \"cms/enums/EContentType\";\r\nimport ContentHeaderRow from \"components/ContentHeaderRow\";\r\nimport { EResourceType } from \"cms/enums/EResourceType\";\r\nimport ContentRenderer from \"components/ContentRenderer\";\r\nimport Gallery01 from \"components/RMDRGallery/components/Gallery01\";\r\nimport RMDRImage from \"components/RMDRImage\";\r\n\r\nfunction mapStateToProps ( state: any ) {\r\n console.log(\"INNR002.mapStateToProps: \", state);\r\n\r\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\r\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\r\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\r\n\r\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\r\n\r\n return {\r\n\r\n webApplicationLanguage,\r\n webApplicationLanguageCode,\r\n webApplicationLanguageISOCode,\r\n\r\n siteSettingDetailPayload,\r\n\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps ( dispatch:Dispatch ) {\r\n console.log(\"INNR002.mapDispatchToProps\");\r\n\r\n const coreAction = new CoreAction(dispatch);\r\n\r\n return {\r\n // others\r\n _hideLoader: () => {\r\n coreAction.hideLoader()\r\n },\r\n\r\n _showLoader: () => {\r\n coreAction.showLoader()\r\n },\r\n\r\n _clean: () => {\r\n\r\n }\r\n }\r\n}\r\n\r\nconst connector = connect(mapStateToProps, mapDispatchToProps);\r\n\r\n\r\n/* types */\r\ntype PropsFromRedux = ConnectedProps\r\n\r\n\r\n/* component */\r\nfunction INNR002Loader () {\r\n\r\n return (\r\n <>\r\n )\r\n\r\n}\r\n\r\nfunction INNR002 ( props:TINNRLayout ) {\r\n console.log(\"INNR002.rendered: \", props);\r\n\r\n const languageVersion = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload.languageVersions,\r\n filters: [\r\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n\r\n useEffect(\r\n () => {\r\n\r\n setTimeout(() => { props._hideLoader(); }, 100);\r\n\r\n return function clenup() {\r\n props._showLoader();\r\n }\r\n\r\n }, []\r\n )\r\n\r\n return (\r\n <>\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n \r\n}\r\n\r\nconst Component = React.memo(INNR002, ( prevProps: TINNRLayout, nextProps: TINNRLayout ) => {\r\n return true;\r\n});\r\n\r\nexport default connector(Component);\r\n","import _ContactUsServiceAction from \"cms/actions/services/ContactUsServiceAction\";\n\n\nconst screenCode = \"202\";\nclass ContactUsServiceAction extends _ContactUsServiceAction {\n\n constructor( dispatch:any ) {\n super( dispatch, screenCode);\n }\n\n}\n\nexport default ContactUsServiceAction;\n","import React, { useEffect, useRef } from \"react\";\r\nimport { connect, ConnectedProps } from \"react-redux\";\r\n// actions\r\nimport CoreAction from \"core/actions/common/CoreAction\";\r\n// interfaces\r\nimport ILanguageVersionDetail from \"cms/interfaces/ILanguageVersionDetail\";\r\n// enums\r\nimport { EView } from \"cms/enums/EView\";\r\nimport { EViewType } from \"cms/enums/EViewType\";\r\nimport { EContentType } from \"cms/enums/EContentType\";\r\nimport IClientLanguage from \"core/interfaces/IClientLanguage\";\r\nimport { Dispatch } from \"@reduxjs/toolkit\";\r\nimport IClientSiteSettingDetail from \"cms/interfaces/IClientSiteSettingDetail\";\r\nimport LanguageVersionSelector from \"cms/utilities/LanguageVersionSelector\";\r\nimport { TINNRLayout } from \"../type\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ContentHeaderRow from \"components/ContentHeaderRow\";\r\nimport { EResourceType } from \"cms/enums/EResourceType\";\r\nimport RMDRImage from \"components/RMDRImage\";\r\nimport { FaYoutube } from \"react-icons/fa\";\r\nimport ContactUsServiceAction from \"cms/actions/components/InnerLayouts/INNR003/ContactUsServiceAction\"\r\nimport ContactForm from \"components/ContactForm\";\r\n\r\n\r\nfunction mapStateToProps ( state: any ) {\r\n console.log(\"INNR003.mapStateToProps: \", state);\r\n\r\n const webApplicationLanguage:IClientLanguage = state.CoreStore.language?.payload;\r\n const webApplicationLanguageCode:string = webApplicationLanguage.code;\r\n const webApplicationLanguageISOCode:string = state.CoreStore.languageCode?.payload;\r\n\r\n const siteSettingDetailPayload:IClientSiteSettingDetail = state.SiteSettingStore.details?.payload;\r\n\r\n return {\r\n\r\n webApplicationLanguage,\r\n webApplicationLanguageCode,\r\n webApplicationLanguageISOCode,\r\n\r\n siteSettingDetailPayload\r\n \r\n }\r\n}\r\n\r\nfunction mapDispatchToProps ( dispatch: Dispatch ) {\r\n console.log(\"INNR003.mapDispatchToProps\");\r\n\r\n const coreAction = new CoreAction(dispatch);\r\n const contactUsServiceAction = new ContactUsServiceAction(dispatch);\r\n\r\n return {\r\n // others\r\n _showLoader: () => { \r\n coreAction.showLoader() \r\n },\r\n\r\n _hideLoader: () => { \r\n coreAction.hideLoader() \r\n },\r\n\r\n _clean: () => {\r\n\r\n contactUsServiceAction.postClean();\r\n\r\n }\r\n }\r\n}\r\n\r\nconst connector = connect ( mapStateToProps, mapDispatchToProps );\r\n\r\n\r\n/* types */\r\ntype PropsFromRedux = ConnectedProps\r\n\r\n\r\n/* component */\r\nfunction INNR003Loader () {\r\n\r\n return (\r\n <>\r\n )\r\n\r\n}\r\n\r\nfunction INNR003 ( props:TINNRLayout ) {\r\n console.log(\"INNR003.rendered: \", props);\r\n\r\n const languageVersion = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.OUTTER, viewType: EViewType.NAME_DESCRIPTION, contentType: EContentType.DEFAULT }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const googleMaps = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"googleMaps\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const letUsKnowAboutYourNextProject = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"letUsKnowAboutYourNextProject\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const addressString = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"addressString\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const address = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"address\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const phoneNumberString = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"phoneNumberString\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const phone01 = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"phone01\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const phone02 = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"phone02\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const emailString = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"emailString\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const email = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"email\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const youtube = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"youtube\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const linkedin = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"linkedin\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const instagram = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"instagram\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const getInTouchString = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"getInTouchString\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n const sendUsMessageString = LanguageVersionSelector({\r\n languageVersions: props.contentDetailPayload?.languageVersions,\r\n filters: [\r\n { view: EView.META_DATA, viewType: EViewType.TEXT, contentType: EContentType.DEFAULT, name: \"sendUsMessageString\" }\r\n ],\r\n type: \"find\"\r\n });\r\n\r\n useEffect(\r\n () => {\r\n\r\n setTimeout(() => { props._hideLoader(); }, 100);\r\n\r\n return () => {\r\n props._showLoader();\r\n props._clean();\r\n }\r\n\r\n }, []\r\n )\r\n\r\n return (\r\n <>\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {letUsKnowAboutYourNextProject?.value}

    \r\n
      \r\n
    • \r\n
      \r\n \r\n
      \r\n
      \r\n

      {addressString?.value}

      \r\n

      {address?.value}

      \r\n
      \r\n
    • \r\n
    • \r\n
      \r\n \r\n
      \r\n
      \r\n

      {phoneNumberString?.value}

      \r\n

      {phone01?.value}

      \r\n

      {phone02?.value}

      \r\n
      \r\n
    • \r\n
    • \r\n
      \r\n \r\n
      \r\n
      \r\n

      {emailString?.value}

      \r\n

      {email?.value}

      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {\r\n googleMaps && googleMaps?.value ? (\r\n
    \r\n \r\n\r\n
    \r\n ): null\r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {getInTouchString?.value}\r\n
    \r\n

    {sendUsMessageString?.value}

    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nconst Component = React.memo(INNR003, ( prevProps:TINNRLayout, nextProps:TINNRLayout ) => {\r\n // return !(\r\n // prevProps.contactUsPostPayload !== nextProps.contactUsPostPayload\r\n // || prevProps.contactUsPostError !== nextProps.contactUsPostError\r\n // );\r\n return !(true);\r\n});\r\n\r\nexport default connector(Component);\r\n\r\n","import IApplicationDocument from 'cms/interfaces/IApplicationDocument';\nimport ApplicationDocumentSelector, { TApplicationDocumentSelector } from 'cms/utilities/ApplicationDocumentSelector';\nimport CoreDefault from 'core/Defaults';\nimport { isEmpty } from 'lodash';\n\n\ntype TRMDRPDFViever = {\n\n width?:string;\n height?:string;\n className?:string;\n\n} & TApplicationDocumentSelector;\n\n\nfunction RMDRPDFViever ( props:TRMDRPDFViever ) {\n console.log(\"RMDRPDFViever: \", props);\n\n const applicationDocument = ApplicationDocumentSelector({\n resources: props.resources,\n resourceType: props.resourceType,\n type: \"find\"\n })\n\n if ( applicationDocument && !isEmpty(applicationDocument) ) {\n\n return (\n